diff options
author | MaZderMind | 2018-05-12 01:57:14 +0200 |
---|---|---|
committer | MaZderMind | 2018-05-12 01:57:14 +0200 |
commit | 888bff1972e18a7f32d55fcc23cd4900d03c7d61 (patch) | |
tree | 5d4168fb824b5bac202c424682605deb1745b13b | |
parent | 2cf00ac475500f007bce90cf81d8d582208650c9 (diff) |
migrate logic to select current & upcoming talk into the Room class
-rw-r--r-- | model/Room.php | 20 | ||||
-rw-r--r-- | template/overview.phtml | 2 | ||||
-rw-r--r-- | 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 @@ <? endif ?> <? if($room->hasSchedule()): ?> - <? $upcoming = @$upcomingTalksPerRoom[ $room->getScheduleName() ] ?: [] ?> + <? $upcoming = @$upcomingTalksPerRoom[ $room->getSlug() ] ?: [] ?> <div class="program-schedule"> <div class="talk current-talk" title="<?=h(@$upcoming['current']['title'] ?: 'none') ?>"> <strong>Now (since <?=date('G:i', @$upcoming['current']['start']) ?>):</strong><br/> 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', |