From 888bff1972e18a7f32d55fcc23cd4900d03c7d61 Mon Sep 17 00:00:00 2001 From: MaZderMind Date: Sat, 12 May 2018 01:57:14 +0200 Subject: migrate logic to select current & upcoming talk into the Room class --- model/Room.php | 20 ++++++++++++++++++++ template/overview.phtml | 2 +- view/overview.php | 17 ++++++----------- 3 files changed, 27 insertions(+), 12 deletions(-) diff --git a/model/Room.php b/model/Room.php index 7089532..3552f60 100644 --- a/model/Room.php +++ b/model/Room.php @@ -4,6 +4,7 @@ class Room { private $slug; private $conference; + private $talks; public function __construct(Conference $conference, $slug) { @@ -16,8 +17,27 @@ class Room throw new NotFoundException('Room '.$slug); $this->slug = $slug; + + $schedule = $conference->getSchedule(); + $talksPerRoom = $schedule->getSchedule(); + $scheduleName = $this->getScheduleName(); + + $this->talks = isset($talksPerRoom[$scheduleName]) ? $talksPerRoom[$scheduleName] : []; } + public function getCurrentTalk($now) + { + return array_filter_last($this->talks, function($talk) use ($now) { + return $talk['start'] < $now && $talk['end'] > $now; + }); + } + + public function getNextTalk($now) + { + return array_filter_first($this->talks, function($talk) use ($now) { + return !isset($talk['special']) && $talk['start'] > $now; + }); + } public function getConference() { return $this->conference; diff --git a/template/overview.phtml b/template/overview.phtml index 513f8e5..71414ec 100644 --- a/template/overview.phtml +++ b/template/overview.phtml @@ -65,7 +65,7 @@ hasSchedule()): ?> - getScheduleName() ] ?: [] ?> + getSlug() ] ?: [] ?>
Now (since ):
diff --git a/view/overview.php b/view/overview.php index adc8d5f..e5032c4 100644 --- a/view/overview.php +++ b/view/overview.php @@ -2,19 +2,14 @@ $schedule = $conference->getSchedule(); -$talksPerRoom = $schedule->getSchedule(); $now = time() + $schedule->getSimulationOffset(); - -$upcomingTalksPerRoom = array_map(function($talks) use($now) { - return [ - 'current' => array_filter_last($talks, function($talk) use ($now) { - return $talk['start'] < $now && $talk['end'] > $now; - }), - 'next' => array_filter_first($talks, function($talk) use ($now) { - return !isset($talk['special']) && $talk['start'] > $now; - }), +$upcomingTalksPerRoom = []; +foreach ($conference->getRooms() as $room) { + $upcomingTalksPerRoom[$room->getSlug()] = [ + 'current' => $room->getCurrentTalk($now), + 'next' => $room->getNextTalk($now), ]; -}, $talksPerRoom); +}; echo $tpl->render(array( 'page' => 'overview', -- cgit v1.2.3 From 91a653392c0e66f1941036e2b17d8fa6b162cde0 Mon Sep 17 00:00:00 2001 From: MaZderMind Date: Sat, 12 May 2018 02:00:51 +0200 Subject: migrate logic for calculating schedule display time into schedule class --- model/Schedule.php | 9 +++++++++ view/overview.php | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/model/Schedule.php b/model/Schedule.php index ec4ddc7..4b5d25e 100644 --- a/model/Schedule.php +++ b/model/Schedule.php @@ -44,6 +44,15 @@ class Schedule return $this->getConference()->getRoomIfExists( @$mapping[$scheduleRoom] ); } + public function getScheduleDisplayTime($basetime = null) + { + if(is_null($basetime)) { + $basetime = time(); + } + + return $basetime + $this->getSimulationOffset(); + } + private function fetchSchedule() { $schedule = @file_get_contents($this->getScheduleCache()); diff --git a/view/overview.php b/view/overview.php index e5032c4..fb9d15d 100644 --- a/view/overview.php +++ b/view/overview.php @@ -2,7 +2,7 @@ $schedule = $conference->getSchedule(); -$now = time() + $schedule->getSimulationOffset(); +$now = $schedule->getScheduleDisplayTime(); $upcomingTalksPerRoom = []; foreach ($conference->getRooms() as $room) { $upcomingTalksPerRoom[$room->getSlug()] = [ -- cgit v1.2.3 From 622b1f030c5c931704b7e997918dad2dcfd48551 Mon Sep 17 00:00:00 2001 From: MaZderMind Date: Sat, 12 May 2018 02:06:16 +0200 Subject: expose current & next talk in json-api --- view/streams-json-v2.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/view/streams-json-v2.php b/view/streams-json-v2.php index 114e73e..591e309 100644 --- a/view/streams-json-v2.php +++ b/view/streams-json-v2.php @@ -2,9 +2,11 @@ header('Content-Type: application/json'); +$basetime = time(); $struct = []; foreach (Conferences::getActiveConferences() as $conference) { + $now = $conference->getSchedule()->getScheduleDisplayTime($basetime); $overview = $conference->getOverview(); $groupstruct = array(); @@ -91,6 +93,10 @@ foreach (Conferences::getActiveConferences() as $conference) 'link' => forceslash(baseurl()).$room->getLink(), 'display' => $room->getDisplay(), 'stream' => $room->getStream(), + 'talks' => [ + 'current' => $room->getCurrentTalk($now), + 'next' => $room->getNextTalk($now), + ], 'streams' => $streams, ); } -- cgit v1.2.3