diff options
Diffstat (limited to 'model')
-rw-r--r-- | model/Room.php | 20 | ||||
-rw-r--r-- | model/Schedule.php | 9 |
2 files changed, 29 insertions, 0 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/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()); |