diff options
Diffstat (limited to '')
-rw-r--r-- | model/Room.php | 85 |
1 files changed, 35 insertions, 50 deletions
diff --git a/model/Room.php b/model/Room.php index df3d92c..aa72630 100644 --- a/model/Room.php +++ b/model/Room.php @@ -1,107 +1,92 @@ <?php -class Room extends ModelBase +class Room { private $slug; + private $conference; - public function __construct($slug) + public function __construct(Conference $conference, $slug) { + $this->conference = $conference; + if(preg_match('/[^a-z0-9_\-]/i', $slug)) throw new Exception('Room Slug contains invalid Characters: "'.$slug.'"'); - if(! $this->has('ROOMS.'.$slug)) + if(!$this->getConference()->hasRoom($slug)) throw new NotFoundException('Room '.$slug); $this->slug = $slug; } - public static function exists($slug) - { - return ModelBase::staticHas('ROOMS.'.$slug); - } - - public static function createIfExists($room) - { - if(Room::exists($room)) - return new Room($room); - - return null; - } - - public static function rooms() - { - $rooms = array(); - foreach(ModelBase::staticGet('ROOMS') as $slug => $room) - $rooms[] = new Room($slug); - return $rooms; + public function getConference() { + return $this->conference; } - public function getSlug() { return $this->slug; } public function getThumb() { - return '../thumbs/'.$this->getStream().'.png'; + return joinpath(['/', 'thumbs', $this->getStream().'.png']); } public function getLink() { - return rawurlencode($this->getSlug()).'/'.url_params(); + return joinpath([$this->getConference()->getSlug(), $this->getSlug()]).url_params(); } public function getStream() { - return $this->get('ROOMS.'.$this->getSlug().'.STREAM', $this->getSlug()); + return $this->getConference()->get('ROOMS.'.$this->getSlug().'.STREAM', $this->getSlug()); } public function getScheduleName() { - return $this->get('ROOMS.'.$this->getSlug().'.SCHEDULE_NAME', $this->getSlug()); + return $this->getConference()->get('ROOMS.'.$this->getSlug().'.SCHEDULE_NAME', $this->getSlug()); } public function getDisplay() { - return $this->get('ROOMS.'.$this->getSlug().'.DISPLAY', $this->getSlug()); + return $this->getConference()->get('ROOMS.'.$this->getSlug().'.DISPLAY', $this->getSlug()); } public function hasStereo() { - return $this->get('ROOMS.'.$this->getSlug().'.STEREO'); + return $this->getConference()->get('ROOMS.'.$this->getSlug().'.STEREO'); } public function hasPreview() { - return $this->get('ROOMS.'.$this->getSlug().'.PREVIEW'); + return $this->getConference()->get('ROOMS.'.$this->getSlug().'.PREVIEW'); } public function requestsWide() { - return $this->get('ROOMS.'.$this->getSlug().'.WIDE'); + return $this->getConference()->get('ROOMS.'.$this->getSlug().'.WIDE'); } public function hasSchedule() { - return $this->get('ROOMS.'.$this->getSlug().'.SCHEDULE') && $this->has('SCHEDULE'); + return $this->getConference()->get('ROOMS.'.$this->getSlug().'.SCHEDULE') && $this->getConference()->has('SCHEDULE'); } public function hasSubtitles() { return - $this->get('ROOMS.'.$this->getSlug().'.SUBTITLES') && - $this->has('ROOMS.'.$this->getSlug().'.SUBTITLES_ROOM_ID') && - $this->has('SUBTITLES'); + $this->getConference()->get('ROOMS.'.$this->getSlug().'.SUBTITLES') && + $this->getConference()->has('ROOMS.'.$this->getSlug().'.SUBTITLES_ROOM_ID') && + $this->getConference()->has('SUBTITLES'); } public function getSubtitlesRoomId() { - return $this->get('ROOMS.'.$this->getSlug().'.SUBTITLES_ROOM_ID'); + return $this->getConference()->get('ROOMS.'.$this->getSlug().'.SUBTITLES_ROOM_ID'); } public function hasFeedback() { - return $this->get('ROOMS.'.$this->getSlug().'.FEEDBACK') && $this->has('FEEDBACK'); + return $this->getConference()->get('ROOMS.'.$this->getSlug().'.FEEDBACK') && $this->getConference()->has('FEEDBACK'); } public function hasTwitter() { - return $this->get('ROOMS.'.$this->getSlug().'.TWITTER') && $this->has('TWITTER'); + return $this->getConference()->get('ROOMS.'.$this->getSlug().'.TWITTER') && $this->getConference()->has('TWITTER'); } public function getTwitterDisplay() { return sprintf( - $this->get('ROOMS.'.$this->getSlug().'.TWITTER_CONFIG.DISPLAY', $this->get('TWITTER.DISPLAY')), + $this->getConference()->get('ROOMS.'.$this->getSlug().'.TWITTER_CONFIG.DISPLAY', $this->getConference()->get('TWITTER.DISPLAY')), $this->getSlug() ); } @@ -115,26 +100,26 @@ class Room extends ModelBase public function getTwitterText() { return sprintf( - $this->get('ROOMS.'.$this->getSlug().'.TWITTER_CONFIG.TEXT', $this->get('TWITTER.TEXT')), + $this->getConference()->get('ROOMS.'.$this->getSlug().'.TWITTER_CONFIG.TEXT', $this->getConference()->get('TWITTER.TEXT')), $this->getSlug() ); } public function hasIrc() { - return $this->get('ROOMS.'.$this->getSlug().'.IRC') && $this->has('IRC'); + return $this->getConference()->get('ROOMS.'.$this->getSlug().'.IRC') && $this->getConference()->has('IRC'); } public function getIrcDisplay() { return sprintf( - $this->get('ROOMS.'.$this->getSlug().'.IRC_CONFIG.DISPLAY', $this->get('IRC.DISPLAY')), + $this->getConference()->get('ROOMS.'.$this->getSlug().'.IRC_CONFIG.DISPLAY', $this->getConference()->get('IRC.DISPLAY')), $this->getSlug() ); } public function getIrcUrl() { return sprintf( - $this->get('ROOMS.'.$this->getSlug().'.IRC_CONFIG.URL', $this->get('IRC.URL')), + $this->getConference()->get('ROOMS.'.$this->getSlug().'.IRC_CONFIG.URL', $this->getConference()->get('IRC.URL')), rawurlencode($this->getSlug()) ); } @@ -146,16 +131,16 @@ class Room extends ModelBase public function hasEmbed() { - return $this->get('ROOMS.'.$this->getSlug().'.EMBED') && $this->get('EMBED'); + return $this->getConference()->get('ROOMS.'.$this->getSlug().'.EMBED') && $this->getConference()->get('EMBED'); } public function hasSdVideo() { - return $this->get('ROOMS.'.$this->getSlug().'.SD_VIDEO'); + return $this->getConference()->get('ROOMS.'.$this->getSlug().'.SD_VIDEO'); } public function hasHdVideo() { - return $this->get('ROOMS.'.$this->getSlug().'.HD_VIDEO'); + return $this->getConference()->get('ROOMS.'.$this->getSlug().'.HD_VIDEO'); } public function hasVideo() { @@ -163,19 +148,19 @@ class Room extends ModelBase } public function hasAudio() { - return $this->get('ROOMS.'.$this->getSlug().'.AUDIO'); + return $this->getConference()->get('ROOMS.'.$this->getSlug().'.AUDIO'); } public function hasSlides() { - return $this->get('ROOMS.'.$this->getSlug().'.SLIDES'); + return $this->getConference()->get('ROOMS.'.$this->getSlug().'.SLIDES'); } public function hasMusic() { - return $this->get('ROOMS.'.$this->getSlug().'.MUSIC'); + return $this->getConference()->get('ROOMS.'.$this->getSlug().'.MUSIC'); } public function hasTranslation() { - return $this->get('ROOMS.'.$this->getSlug().'.TRANSLATION'); + return $this->getConference()->get('ROOMS.'.$this->getSlug().'.TRANSLATION'); } public function getSelectionNames() |