From efe1f83a7cc419df700dfe36ef11da20607d8eae Mon Sep 17 00:00:00 2001 From: MaZderMind Date: Sun, 8 Nov 2015 14:40:30 +0100 Subject: implement mandator handling, supporting different styles per mandantor --- model/Conferences.php | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 model/Conferences.php (limited to 'model/Conferences.php') diff --git a/model/Conferences.php b/model/Conferences.php new file mode 100644 index 0000000..05d3c52 --- /dev/null +++ b/model/Conferences.php @@ -0,0 +1,59 @@ +isClosed(); + unset($GLOBALS['CONFIG']); + + if(isset($saved_config)) + $GLOBALS['CONFIG'] = $saved_config; + + return $active; + } + + public static function hasCustomStyles($mandator) { + return file_exists(Conferences::getCustomStyles($mandator)); + } + public static function getCustomStyles($mandator) { + return forceslash(Conferences::getCustomStylesDir($mandator)).'main.less'; + } + public static function getCustomStylesDir($mandator) { + return forceslash(Conferences::MANDATOR_DIR).forceslash($mandator); + } + + public static function load($mandator) { + $GLOBALS['MANDATOR'] = $mandator; + include(forceslash(Conferences::MANDATOR_DIR).forceslash($mandator).'config.php'); + } +} -- cgit v1.3.1 From a0b2129479ba10561811847c0651df8b55c8a6ba Mon Sep 17 00:00:00 2001 From: MaZderMind Date: Sun, 8 Nov 2015 15:15:53 +0100 Subject: Support an All-Conference-Closed Screen and mutliple Schedules & Relive-URLs --- assets/css/_closed.less | 1 + assets/js/lustiges-script.js | 2 +- configs/conferences/31c3/config.php | 6 ++-- configs/conferences/31c3/download.sh | 7 ++++ configs/download.sh | 14 +++++--- index.php | 22 +++++++++++- model/Conferences.php | 2 +- model/GenericConference.php | 67 ++++++++++++++++++++++++++++++++++++ template/allclosed.phtml | 14 ++++++++ template/assemblies/header.phtml | 2 +- template/assemblies/upcoming.phtml | 21 +++++++++++ template/closed.phtml | 22 +----------- template/embed.phtml | 2 +- template/page.phtml | 28 ++++++++------- view/allclosed.php | 12 +++++++ 15 files changed, 175 insertions(+), 47 deletions(-) create mode 100755 configs/conferences/31c3/download.sh create mode 100644 model/GenericConference.php create mode 100644 template/allclosed.phtml create mode 100644 template/assemblies/upcoming.phtml create mode 100644 view/allclosed.php (limited to 'model/Conferences.php') diff --git a/assets/css/_closed.less b/assets/css/_closed.less index 8aeeb78..ff55b75 100644 --- a/assets/css/_closed.less +++ b/assets/css/_closed.less @@ -1,4 +1,5 @@ body.closed, +body.allclosed, body.not-started { p { margin-top: 50px; diff --git a/assets/js/lustiges-script.js b/assets/js/lustiges-script.js index 15f0358..38dc3ae 100644 --- a/assets/js/lustiges-script.js +++ b/assets/js/lustiges-script.js @@ -558,7 +558,7 @@ $(function() { // closed-countdown $(function() { var - $el = $('.closed .countdown'), + $el = $('.countdown'), dt = moment($el.data('dt')); $el.attr('title', 'on '+dt.format('dddd, MMM Do YYYY')) diff --git a/configs/conferences/31c3/config.php b/configs/conferences/31c3/config.php index a0f6383..1ad5709 100644 --- a/configs/conferences/31c3/config.php +++ b/configs/conferences/31c3/config.php @@ -106,7 +106,7 @@ $GLOBALS['CONFIG']['CONFERENCE'] = array( * * Wird diese Zeile auskommentiert, wird der Link nicht angezeigt */ - 'RELIVE_JSON' => 'configs/vod.json', + 'RELIVE_JSON' => 'configs/conferences/31c3/vod.json', ); /** @@ -486,12 +486,12 @@ $GLOBALS['CONFIG']['SCHEDULE'] = array( /** * URL zum Fahrplan-XML * - * Diese URL muss immer verfügbar sein, sonst können kann die Programm-Ansicht + * Diese URL muss immer verfügbar sein, sonst könnte die Programm-Ansicht * aufhören zu funktionieren. Üblicherweise wird diese daher Datei über * das Script configs/download.sh heruntergeladen, welches von einem * Cronjob regelmäßig getriggert wird. */ - 'URL' => 'configs/schedule.xml', + 'URL' => 'configs/conferences/31c3/schedule.xml', /** * Nur die angegebenen Räume aus dem Fahrplan beachten diff --git a/configs/conferences/31c3/download.sh b/configs/conferences/31c3/download.sh new file mode 100755 index 0000000..81d5ad7 --- /dev/null +++ b/configs/conferences/31c3/download.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +# fahrplan +wget --no-check-certificate -q "http://events.ccc.de/congress/2014/Fahrplan/schedule.xml" -O /tmp/schedule.xml && mv /tmp/schedule.xml schedule.xml + +# vod json +wget -q "http://cdn.c3voc.de/releases/relive/index.json" -O /tmp/vod.json && mv /tmp/vod.json vod.json diff --git a/configs/download.sh b/configs/download.sh index 8808ff0..c2a2b3e 100755 --- a/configs/download.sh +++ b/configs/download.sh @@ -1,10 +1,14 @@ #!/bin/sh -# fahrplan -wget --no-check-certificate -q "http://events.ccc.de/congress/2014/Fahrplan/schedule.xml" -O /tmp/schedule.xml && mv /tmp/schedule.xml schedule.xml - -# vod json -wget -q "http://cdn.c3voc.de/releases/relive/index.json" -O /tmp/vod.json && mv /tmp/vod.json vod.json +# conferences +wd=`pwd` +for d in conferences/*; do + if [ -x $d/download.sh ]; then + cd $d + ./download.sh + cd $wd + fi +done # eventkalender upcoming wget -q --no-check-certificate "https://c3voc.de/eventkalender/events.json?filter=upcoming&streaming=yes" -O /tmp/upcoming.json && mv /tmp/upcoming.json upcoming.json diff --git a/index.php b/index.php index f12d914..cdd58a7 100644 --- a/index.php +++ b/index.php @@ -12,6 +12,7 @@ require_once('lib/less.php/Less.php'); require_once('model/ModelBase.php'); require_once('model/Conferences.php'); require_once('model/Conference.php'); +require_once('model/GenericConference.php'); require_once('model/Feedback.php'); require_once('model/Schedule.php'); require_once('model/Overview.php'); @@ -26,17 +27,35 @@ require_once('model/Upcoming.php'); $route = @$_GET['route']; $route = rtrim($route, '/'); +// GLOBAL CSS (for conferences overview) +if($route == 'gen/main.css') +{ + handle_lesscss_request('assets/css/main.less', '../assets/css/'); + exit; +} + @list($mandator, $route) = explode('/', $route, 2); if(!$mandator) { // root requested + $tpl = new PhpTemplate('template/page.phtml'); + $tpl->set(array( + 'baseurl' => forceslash(baseurl()), + 'route' => $route, + 'canonicalurl' => forceslash(baseurl()).forceslash($route), + 'assemblies' => './template/assemblies/', + 'assets' => 'assets/', + + 'conference' => new GenericConference(), + )); + if(Conferences::getActiveConferencesCount() == 0) { // no clients // error - var_dump('no clients'); + require('view/allclosed.php'); exit; } else if(Conferences::getActiveConferencesCount() == 1) @@ -79,6 +98,7 @@ $tpl->set(array( 'route' => $route, 'canonicalurl' => forceslash(baseurl()).forceslash($route), 'assemblies' => './template/assemblies/', + 'assets' => '../assets/', 'conference' => $conference, 'feedback' => new Feedback(), diff --git a/model/Conferences.php b/model/Conferences.php index 05d3c52..9f87388 100644 --- a/model/Conferences.php +++ b/model/Conferences.php @@ -54,6 +54,6 @@ class Conferences extends ModelBase public static function load($mandator) { $GLOBALS['MANDATOR'] = $mandator; - include(forceslash(Conferences::MANDATOR_DIR).forceslash($mandator).'config.php'); + require(forceslash(Conferences::MANDATOR_DIR).forceslash($mandator).'config.php'); } } diff --git a/model/GenericConference.php b/model/GenericConference.php new file mode 100644 index 0000000..949766f --- /dev/null +++ b/model/GenericConference.php @@ -0,0 +1,67 @@ + + +

See you soon at

+ + + +

+ You can watch most of our Recordings at getReleasesUrl())?>. +

+ +


+ + + diff --git a/template/assemblies/header.phtml b/template/assemblies/header.phtml index f57054c..a213dd3 100644 --- a/template/assemblies/header.phtml +++ b/template/assemblies/header.phtml @@ -15,7 +15,7 @@ - hasEnded() && $feedback->isEnabled()): ?> + hasEnded() && isset($feedback) && $feedback->isEnabled()): ?> diff --git a/template/assemblies/upcoming.phtml b/template/assemblies/upcoming.phtml new file mode 100644 index 0000000..7d9ffac --- /dev/null +++ b/template/assemblies/upcoming.phtml @@ -0,0 +1,21 @@ + +
+ +
+
+ + + + + + + +
+
+
+ +
+
+ +
+ diff --git a/template/closed.phtml b/template/closed.phtml index 6ca7416..0b56e74 100644 --- a/template/closed.phtml +++ b/template/closed.phtml @@ -29,25 +29,5 @@


- -
- -
-
- - - - - - - -
-
-
- -
-
- -
- + diff --git a/template/embed.phtml b/template/embed.phtml index dd8629a..f99ece1 100644 --- a/template/embed.phtml +++ b/template/embed.phtml @@ -1 +1 @@ -getPlayerType().'.phtml') ?> +getPlayerType().'.phtml') ?> diff --git a/template/page.phtml b/template/page.phtml index 37f192a..ac639a2 100644 --- a/template/page.phtml +++ b/template/page.phtml @@ -29,20 +29,20 @@ - - + + - + - - - - - + + + + + - - + + @@ -55,8 +55,10 @@ - + + + diff --git a/view/allclosed.php b/view/allclosed.php new file mode 100644 index 0000000..869cbc1 --- /dev/null +++ b/view/allclosed.php @@ -0,0 +1,12 @@ +getNextEvents(); + +echo $tpl->render(array( + 'page' => 'allclosed', + 'title' => 'See you soon … somewhere else!', + + 'next' => @$events[0], + 'events' => $events, +)); -- cgit v1.3.1 From 0d91cc5f111fac882f1bb375c2bf426195c9cae2 Mon Sep 17 00:00:00 2001 From: MaZderMind Date: Sun, 8 Nov 2015 16:31:29 +0100 Subject: finish overview-page --- assets/css/_allconferences.less | 25 +++++++++++++++++++++++++ assets/css/_structure.less | 1 + configs/conferences/31c3/main.less | 21 +++++++++++++++++++++ index.php | 31 +++++++++++++++---------------- model/Conferences.php | 32 ++++++++++++++++++++++++-------- template/about.phtml | 2 +- template/allconferences.phtml | 33 +++++++++++++++++++++++++++++++++ view/allconferences.php | 8 ++++++++ 8 files changed, 128 insertions(+), 25 deletions(-) create mode 100644 assets/css/_allconferences.less create mode 100644 configs/conferences/31c3/main.less create mode 100644 template/allconferences.phtml create mode 100644 view/allconferences.php (limited to 'model/Conferences.php') diff --git a/assets/css/_allconferences.less b/assets/css/_allconferences.less new file mode 100644 index 0000000..d8a14aa --- /dev/null +++ b/assets/css/_allconferences.less @@ -0,0 +1,25 @@ +body.allconferences { + text-align: center; + + .conference { + a { + font-size: @jumbo-font-size; + line-height: @jumbo-line-height; + + @media (max-width: @screen-xs-min) { + font-size: @jumbo-font-size-xs; + } + + display: block; + text-align: center; + + &:hover { + text-decoration: none; + } + } + + p { + margin-top: @line-height-computed; + } + } +} diff --git a/assets/css/_structure.less b/assets/css/_structure.less index 2082e38..d6e4257 100644 --- a/assets/css/_structure.less +++ b/assets/css/_structure.less @@ -88,3 +88,4 @@ body { @import "_closed.less"; @import "_embed.less"; @import "_feedback.less"; +@import "_allconferences.less"; diff --git a/configs/conferences/31c3/main.less b/configs/conferences/31c3/main.less new file mode 100644 index 0000000..a60d3b4 --- /dev/null +++ b/configs/conferences/31c3/main.less @@ -0,0 +1,21 @@ +@import "../../../assets/css/_structure.less"; + +// conference specific styles here + +// often configured values (and their defaults): +// +// @brand-primary: #337ab7; +// @text-color: @gray-dark; +// +// @link-color: @brand-primary; +// @link-hover-color: darken(@link-color, 15%); +// +// @navbar-default-color: #777777; +// @navbar-default-bg: #f8f8f8; +// +// @navbar-default-link-color: #777; +// @navbar-default-link-hover-color: #333; + +body { + background-color: red; +} diff --git a/index.php b/index.php index cdd58a7..a26f391 100644 --- a/index.php +++ b/index.php @@ -34,22 +34,23 @@ if($route == 'gen/main.css') exit; } +// generic template +$tpl = new PhpTemplate('template/page.phtml'); +$tpl->set(array( + 'baseurl' => forceslash(baseurl()), + 'route' => $route, + 'canonicalurl' => forceslash(baseurl()).forceslash($route), + 'assemblies' => './template/assemblies/', + 'assets' => 'assets/', + + 'conference' => new GenericConference(), +)); + @list($mandator, $route) = explode('/', $route, 2); if(!$mandator) { // root requested - $tpl = new PhpTemplate('template/page.phtml'); - $tpl->set(array( - 'baseurl' => forceslash(baseurl()), - 'route' => $route, - 'canonicalurl' => forceslash(baseurl()).forceslash($route), - 'assemblies' => './template/assemblies/', - 'assets' => 'assets/', - - 'conference' => new GenericConference(), - )); - if(Conferences::getActiveConferencesCount() == 0) { // no clients @@ -72,10 +73,7 @@ if(!$mandator) // multiple clients // show overview - // TODO Template - $clients = Conferences::getActiveConferences(); - var_dump('multiple clients'); - var_dump($clients); + require('view/allconferences.php'); exit; } } @@ -83,7 +81,8 @@ else if(!Conferences::exists($mandator)) { // old url OR wrong client OR // -> error - die('unknown conference '.$mandator); + require('view/404.php'); + exit; } Conferences::load($mandator); diff --git a/model/Conferences.php b/model/Conferences.php index 9f87388..10a3172 100644 --- a/model/Conferences.php +++ b/model/Conferences.php @@ -5,9 +5,16 @@ class Conferences extends ModelBase const MANDATOR_DIR = 'configs/conferences/'; public static function getConferences() { - return array_values(array_filter(scandir(forceslash(Conferences::MANDATOR_DIR)), function($el) { - return $el[0] != '.'; - })); + $conferences = []; + foreach(scandir(forceslash(Conferences::MANDATOR_DIR)) as $el) + { + if($el[0] == '.') + continue; + + $conferences[$el] = Conferences::getConferenceInformation($el); + } + + return $conferences; } public static function getConferencesCount() { return count(Conferences::getConferences()); @@ -15,7 +22,10 @@ class Conferences extends ModelBase public static function getActiveConferences() { return array_values(array_filter( - Conferences::getConferences(), ['Conferences', 'isActive'] + Conferences::getConferences(), + function($info) { + return $info['active']; + } )); } @@ -24,22 +34,28 @@ class Conferences extends ModelBase } public static function exists($mandator) { - return in_array($mandator, Conferences::getConferences()); + return array_key_exists($mandator, Conferences::getConferences()); } - public static function isActive($mandator) { + public static function getConferenceInformation($mandator) { if(isset($GLOBALS['CONFIG'])) $saved_config = $GLOBALS['CONFIG']; Conferences::load($mandator); $conf = new Conference(); - $active = !$conf->isClosed(); + $info = [ + 'slug' => $mandator, + 'link' => forceslash($mandator), + 'active' => !$conf->isClosed(), + 'title' => $conf->getTitle(), + 'description' => $conf->getDescription(), + ]; unset($GLOBALS['CONFIG']); if(isset($saved_config)) $GLOBALS['CONFIG'] = $saved_config; - return $active; + return $info; } public static function hasCustomStyles($mandator) { diff --git a/template/about.phtml b/template/about.phtml index 68aa2fb..eee4896 100644 --- a/template/about.phtml +++ b/template/about.phtml @@ -6,7 +6,7 @@

If you like what we're doing, you can flattr us:

- Flattr this + Flattr this

diff --git a/template/allconferences.phtml b/template/allconferences.phtml new file mode 100644 index 0000000..2d47b82 --- /dev/null +++ b/template/allconferences.phtml @@ -0,0 +1,33 @@ +
+

+

We are currently active on multiple Conferences. Please choose which one you want access.

+ +

+ +
+ + $info): ?> + + +
+
+
+ +

+
+
+
+ +
+
diff --git a/view/allconferences.php b/view/allconferences.php new file mode 100644 index 0000000..8cce073 --- /dev/null +++ b/view/allconferences.php @@ -0,0 +1,8 @@ +render(array( + 'page' => 'allconferences', + 'title' => 'Multiple Conferences', + + 'conferences' => Conferences::getActiveConferences(), +)); -- cgit v1.3.1 From aec65f8a241d3810d5e7a029f861bc6090b65cb9 Mon Sep 17 00:00:00 2001 From: MaZderMind Date: Sun, 8 Nov 2015 17:17:16 +0100 Subject: better exception-handling in mandator-code --- index.php | 104 +++++++++++++++++++++++++++----------------------- model/Conferences.php | 4 +- 2 files changed, 59 insertions(+), 49 deletions(-) (limited to 'model/Conferences.php') diff --git a/index.php b/index.php index a26f391..b7fe5da 100644 --- a/index.php +++ b/index.php @@ -24,71 +24,81 @@ require_once('model/Relive.php'); require_once('model/Upcoming.php'); -$route = @$_GET['route']; -$route = rtrim($route, '/'); - -// GLOBAL CSS (for conferences overview) -if($route == 'gen/main.css') -{ - handle_lesscss_request('assets/css/main.less', '../assets/css/'); - exit; -} +ob_start(); +try { + $route = @$_GET['route']; + $route = rtrim($route, '/'); -// generic template -$tpl = new PhpTemplate('template/page.phtml'); -$tpl->set(array( - 'baseurl' => forceslash(baseurl()), - 'route' => $route, - 'canonicalurl' => forceslash(baseurl()).forceslash($route), - 'assemblies' => './template/assemblies/', - 'assets' => 'assets/', + // GLOBAL CSS (for conferences overview) + if($route == 'gen/main.css') + { + handle_lesscss_request('assets/css/main.less', '../assets/css/'); + exit; + } - 'conference' => new GenericConference(), -)); + // generic template + $tpl = new PhpTemplate('template/page.phtml'); + $tpl->set(array( + 'baseurl' => forceslash(baseurl()), + 'route' => $route, + 'canonicalurl' => forceslash(baseurl()).forceslash($route), + 'assemblies' => './template/assemblies/', + 'assets' => 'assets/', -@list($mandator, $route) = explode('/', $route, 2); -if(!$mandator) -{ - // root requested + 'conference' => new GenericConference(), + )); - if(Conferences::getActiveConferencesCount() == 0) + @list($mandator, $route) = explode('/', $route, 2); + if(!$mandator) { - // no clients - // error + // root requested - require('view/allclosed.php'); - exit; - } - else if(Conferences::getActiveConferencesCount() == 1) - { - // one client - // redirect + if(Conferences::getActiveConferencesCount() == 0) + { + // no clients + // error - $clients = Conferences::getActiveConferences(); - header('Location: '.forceslash( baseurl() . $clients[0] )); - exit; + require('view/allclosed.php'); + exit; + } + else if(Conferences::getActiveConferencesCount() == 1) + { + // one client + // redirect + + $clients = Conferences::getActiveConferences(); + header('Location: '.forceslash( baseurl() . $clients[0]['link'] )); + exit; + } + else + { + // multiple clients + // show overview + + require('view/allconferences.php'); + exit; + } } - else + else if(!Conferences::exists($mandator)) { - // multiple clients - // show overview - - require('view/allconferences.php'); + // old url OR wrong client OR + // -> error + require('view/404.php'); exit; } + + Conferences::load($mandator); } -else if(!Conferences::exists($mandator)) +catch(Exception $e) { - // old url OR wrong client OR - // -> error - require('view/404.php'); - exit; + ob_clean(); + require('view/500.php'); } -Conferences::load($mandator); // PER-CONFERENCE CODE +$GLOBALS['MANDATOR'] = $mandator; $conference = new Conference(); $tpl = new PhpTemplate('template/page.phtml'); diff --git a/model/Conferences.php b/model/Conferences.php index 10a3172..885c2c8 100644 --- a/model/Conferences.php +++ b/model/Conferences.php @@ -69,7 +69,7 @@ class Conferences extends ModelBase } public static function load($mandator) { - $GLOBALS['MANDATOR'] = $mandator; - require(forceslash(Conferences::MANDATOR_DIR).forceslash($mandator).'config.php'); + include(forceslash(Conferences::MANDATOR_DIR).forceslash($mandator).'config.php'); + return isset($GLOBALS['CONFIG']); } } -- cgit v1.3.1 From 61c9cf52b0c015951351b47148cdecb47c680bfa Mon Sep 17 00:00:00 2001 From: MaZderMind Date: Sun, 8 Nov 2015 20:36:34 +0100 Subject: global streams api --- index.php | 15 +++-- model/Conferences.php | 2 + view/streams-json-v1.php | 164 +++++++++++++++++++++++++---------------------- 3 files changed, 100 insertions(+), 81 deletions(-) (limited to 'model/Conferences.php') diff --git a/index.php b/index.php index b7fe5da..c3199ee 100644 --- a/index.php +++ b/index.php @@ -29,13 +29,21 @@ try { $route = @$_GET['route']; $route = rtrim($route, '/'); - // GLOBAL CSS (for conferences overview) + // GLOBAL ROUTES if($route == 'gen/main.css') { + // global css (for conferences overview) handle_lesscss_request('assets/css/main.less', '../assets/css/'); exit; } + else if($route == 'streams/v1.json') + { + require('view/streams-json-v1.php'); + exit; + } + + // generic template $tpl = new PhpTemplate('template/page.phtml'); $tpl->set(array( @@ -136,11 +144,6 @@ try { require('view/schedule-json.php'); } - else if($route == 'streams/v1.json') - { - require('view/streams-json-v1.php'); - } - else if($route == 'gen/main.css') { if(Conferences::hasCustomStyles($mandator)) diff --git a/model/Conferences.php b/model/Conferences.php index 885c2c8..9396a48 100644 --- a/model/Conferences.php +++ b/model/Conferences.php @@ -49,6 +49,8 @@ class Conferences extends ModelBase 'active' => !$conf->isClosed(), 'title' => $conf->getTitle(), 'description' => $conf->getDescription(), + + 'CONFIG' => $GLOBALS['CONFIG'], ]; unset($GLOBALS['CONFIG']); diff --git a/view/streams-json-v1.php b/view/streams-json-v1.php index c705bd7..af0909b 100644 --- a/view/streams-json-v1.php +++ b/view/streams-json-v1.php @@ -2,97 +2,111 @@ header('Content-Type: application/json'); -if($conference->isClosed()) -{ - echo '[]'; - return; -} - -$overview = new Overview(); +$conferences = Conferences::getActiveConferences(); $struct = array(); -foreach($overview->getGroups() as $group => $rooms) +if(isset($GLOBALS['CONFIG'])) + $saved_config = $GLOBALS['CONFIG']; + +foreach ($conferences as $conference) { - $roomstruct = array(); - foreach($rooms as $room) + /* + ok. das ist so hacky. EIGENTLICH müsste man aus ModelBase + das $GLOBALS tilgen und von der api ne v2 releasen, welche + conferences als eigenes Objekt betrachtet + */ + $GLOBALS['CONFIG'] = $conference['CONFIG']; + $GLOBALS['MANDATOR'] = $conference['slug']; + + $overview = new Overview(); + + foreach($overview->getGroups() as $group => $rooms) { - $streams = array(); - foreach($room->getStreams() as $stream) + $roomstruct = array(); + foreach($rooms as $room) { - $key = $stream->getSelection().'-'.$stream->getLanguage(); - - $urls = array(); - switch($stream->getPlayerType()) + $streams = array(); + foreach($room->getStreams() as $stream) { - case 'video': - foreach ($stream->getVideoProtos() as $proto => $display) - { - $urls[$proto] = array( - 'display' => $display, - 'tech' => $stream->getVideoTech($proto), - 'url' => $stream->getVideoUrl($proto), - ); - } - break; + $key = $stream->getSelection().'-'.$stream->getLanguage(); + + $urls = array(); + switch($stream->getPlayerType()) + { + case 'video': + foreach ($stream->getVideoProtos() as $proto => $display) + { + $urls[$proto] = array( + 'display' => $display, + 'tech' => $stream->getVideoTech($proto), + 'url' => $stream->getVideoUrl($proto), + ); + } + break; + + case 'slides': + foreach ($stream->getSlidesProtos() as $proto => $display) + { + $urls[$proto] = array( + 'display' => $display, + 'tech' => $stream->getSlidesTech($proto), + 'url' => $stream->getSlidesUrl($proto), + ); + } + break; - case 'slides': - foreach ($stream->getSlidesProtos() as $proto => $display) - { - $urls[$proto] = array( - 'display' => $display, - 'tech' => $stream->getSlidesTech($proto), - 'url' => $stream->getSlidesUrl($proto), - ); - } - break; + case 'audio': + foreach ($stream->getAudioProtos() as $proto => $display) + { + $urls[$proto] = array( + 'display' => $display, + 'tech' => $stream->getAudioTech($proto), + 'url' => $stream->getAudioUrl($proto), + ); + } + break; - case 'audio': - foreach ($stream->getAudioProtos() as $proto => $display) - { - $urls[$proto] = array( - 'display' => $display, - 'tech' => $stream->getAudioTech($proto), - 'url' => $stream->getAudioUrl($proto), - ); - } - break; + case 'music': + foreach ($stream->getMusicProtos() as $proto => $display) + { + $urls[$proto] = array( + 'display' => $display, + 'tech' => $stream->getMusicTech($proto), + 'url' => $stream->getMusicUrl($proto), + ); + } + break; + } - case 'music': - foreach ($stream->getMusicProtos() as $proto => $display) - { - $urls[$proto] = array( - 'display' => $display, - 'tech' => $stream->getMusicTech($proto), - 'url' => $stream->getMusicUrl($proto), - ); - } - break; + $streams[] = array( + 'slug' => $key, + 'display' => $stream->getDisplay(), + 'type' => $stream->getPlayerType(), + 'isTranslated' => $stream->isTranslated(), + 'videoSize' => $stream->getVideoSize(), + 'urls' => $urls, + ); } - $streams[] = array( - 'slug' => $key, - 'display' => $stream->getDisplay(), - 'type' => $stream->getPlayerType(), - 'isTranslated' => $stream->isTranslated(), - 'videoSize' => $stream->getVideoSize(), - 'urls' => $urls, + $roomstruct[] = array( + 'slug' => $room->getSlug(), + 'schedulename' => $room->getScheduleName(), + 'thumb' => forceslash(baseurl()).$room->getThumb(), + 'link' => forceslash(baseurl()).$room->getLink(), + 'display' => $room->getDisplay(), + 'streams' => $streams, ); } - $roomstruct[] = array( - 'slug' => $room->getSlug(), - 'schedulename' => $room->getScheduleName(), - 'thumb' => forceslash(baseurl()).$room->getThumb(), - 'link' => forceslash(baseurl()).$room->getLink(), - 'display' => $room->getDisplay(), - 'streams' => $streams, + $struct[] = array( + 'conference' => $conference['title'], + 'group' => $group, + 'rooms' => $roomstruct, ); } - - $struct[] = array( - 'group' => $group, - 'rooms' => $roomstruct, - ); } +if(isset($saved_config)) + $GLOBALS['CONFIG'] = $saved_config; + echo json_encode($struct, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE); -- cgit v1.3.1