From f6c0270d40f6730fe1e1820f2866b08792df1db6 Mon Sep 17 00:00:00 2001 From: MaZderMind Date: Sat, 10 Dec 2016 18:22:34 +0100 Subject: rewrite data-model so that every configuration option is accessed through the conference --- model/Relive.php | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'model/Relive.php') diff --git a/model/Relive.php b/model/Relive.php index d0e7522..ca32f19 100644 --- a/model/Relive.php +++ b/model/Relive.php @@ -1,16 +1,27 @@ conference = $conference; + } + + public function getConference() { + return $this->conference; + } + public function isEnabled() { // having CONFERENCE.RELIVE is not enough! - return $this->has('CONFERENCE.RELIVE_JSON'); + return $this->getConference()->has('CONFERENCE.RELIVE_JSON'); } public function getJsonUrl() { - return $this->get('CONFERENCE.RELIVE_JSON'); + return $this->getConference()->get('CONFERENCE.RELIVE_JSON'); } public function getTalks() -- cgit v1.3.1 From b137ccc18be2f8addf10b0db5257da8c3767dba9 Mon Sep 17 00:00:00 2001 From: MaZderMind Date: Sat, 10 Dec 2016 18:24:03 +0100 Subject: repair indentation --- model/Relive.php | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) (limited to 'model/Relive.php') diff --git a/model/Relive.php b/model/Relive.php index ca32f19..7f0e747 100644 --- a/model/Relive.php +++ b/model/Relive.php @@ -34,22 +34,22 @@ class Relive $mapping = $this->getScheduleToRoomMapping(); - usort($talks, function($a, $b) { - // first, make sure that live talks are always on top - if($a['status'] == 'live' && $b['status'] != 'live') { - return -1; - } else if($a['status'] != 'live' && $b['status'] == 'live') { - return 1; - } else if($a['status'] == 'live' && $b['status'] == 'live') { - // sort live talks by room - - return strcmp($a['room'], $b['room']); - } - - // all other talks get sorted by their name - - return strcmp($a['title'], $b['title']); - }); + usort($talks, function($a, $b) { + // first, make sure that live talks are always on top + if($a['status'] == 'live' && $b['status'] != 'live') { + return -1; + } + else if($a['status'] != 'live' && $b['status'] == 'live') { + return 1; + } + else if($a['status'] == 'live' && $b['status'] == 'live') { + // sort live talks by room + return strcmp($a['room'], $b['room']); + } + + // all other talks get sorted by their name + return strcmp($a['title'], $b['title']); + }); $talks_by_id = array(); foreach ($talks as $talk) -- cgit v1.3.1 From 284878f0f9917b55359cd464b86508cacc472653 Mon Sep 17 00:00:00 2001 From: MaZderMind Date: Sun, 11 Dec 2016 21:46:01 +0100 Subject: add cache-file getters and download preparations --- command/download.php | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++ model/Conference.php | 4 ++++ model/Relive.php | 5 ++++ model/Schedule.php | 7 +++++- 4 files changed, 83 insertions(+), 1 deletion(-) (limited to 'model/Relive.php') diff --git a/command/download.php b/command/download.php index d0999b4..8deb454 100644 --- a/command/download.php +++ b/command/download.php @@ -54,4 +54,72 @@ stdout(''); foreach ($conferences as $conference) { stdout('== %s ==', $conference->getSlug()); + + $relive = $conference->getRelive(); + if($relive->isEnabled()) + { + download( + 'relive-json', + $conference, + $relive->getJsonUrl(), + $relive->getJsonCache() + ); + } + + $schedule = $conference->getSchedule(); + if($schedule->isEnabled()) + { + download( + 'schedule-xml', + $conference, + $schedule->getScheduleUrl(), + $schedule->getScheduleCache() + ); + } + + foreach($conference->getExtraFiles() as $file) + { + download( + 'extra-file', + $conference, + $file, + get_file_cache($conference, $file) + ); + } +} + + + + +function get_file_cache($conference, $url) +{ + $info = parse_url($url); + $host = trim(preg_replace('/[^a-z0-9]/i', '_', $info['host']), '_'); + $path = trim(preg_replace('/[^a-z0-9]/i', '_', $info['path']), '_'); + return sprintf('/tmp/file-cache-%s_%s_%s-%s', $conference->getSlug(), $host, $path, md5($url)); +} + +function download($what, $conference, $url, $cache) +{ + stdout( + ' downloading %s from %s to %s', + $what, + $url, + $cache + ); + if(!do_download($url, $cache)) + { + stderr( + '!! download %s for conference %s from %s to %s failed miserably !!', + $what, + $conference->getSlug(), + $url, + $cache + ); + } +} + +function do_download($url, $cache) +{ + return true; } diff --git a/model/Conference.php b/model/Conference.php index be62fdb..6c14746 100644 --- a/model/Conference.php +++ b/model/Conference.php @@ -221,4 +221,8 @@ class Conference extends ModelBase public function getRelive() { return new Relive($this); } + + public function getExtraFiles() { + return $this->get('EXTRA_FILES', []); + } } diff --git a/model/Relive.php b/model/Relive.php index 7f0e747..5676b62 100644 --- a/model/Relive.php +++ b/model/Relive.php @@ -24,6 +24,11 @@ class Relive return $this->getConference()->get('CONFERENCE.RELIVE_JSON'); } + public function getJsonCache() + { + return sprintf('/tmp/relive-cache-%s', $this->getConference()->getSlug()); + } + public function getTalks() { if(!file_exists($this->getJsonUrl())) diff --git a/model/Schedule.php b/model/Schedule.php index eb9fe05..4032ecb 100644 --- a/model/Schedule.php +++ b/model/Schedule.php @@ -265,11 +265,16 @@ class Schedule return ((int)$parts[0] * 60 + (int)$parts[1]) * 60; } - private function getScheduleUrl() + public function getScheduleUrl() { return $this->getConference()->get('SCHEDULE.URL'); } + public function getScheduleCache() + { + return sprintf('/tmp/schedule-cache-%s', $this->getConference()->getSlug()); + } + public function getScheduleToRoomSlugMapping() { $mapping = array(); -- cgit v1.3.1 From 3384e963da66e9089b71c546750c8981be8c6ed8 Mon Sep 17 00:00:00 2001 From: MaZderMind Date: Sat, 17 Dec 2016 14:11:47 +0100 Subject: change storage paths according to issue description --- command/download.php | 13 +++++-------- index.php | 3 +++ model/Relive.php | 2 +- model/Schedule.php | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) (limited to 'model/Relive.php') diff --git a/command/download.php b/command/download.php index 8deb454..17ae7c9 100644 --- a/command/download.php +++ b/command/download.php @@ -77,13 +77,13 @@ foreach ($conferences as $conference) ); } - foreach($conference->getExtraFiles() as $file) + foreach($conference->getExtraFiles() as $filename => $url) { download( 'extra-file', $conference, - $file, - get_file_cache($conference, $file) + $url, + get_file_cache($conference, $filename) ); } } @@ -91,12 +91,9 @@ foreach ($conferences as $conference) -function get_file_cache($conference, $url) +function get_file_cache($conference, $filename) { - $info = parse_url($url); - $host = trim(preg_replace('/[^a-z0-9]/i', '_', $info['host']), '_'); - $path = trim(preg_replace('/[^a-z0-9]/i', '_', $info['path']), '_'); - return sprintf('/tmp/file-cache-%s_%s_%s-%s', $conference->getSlug(), $host, $path, md5($url)); + return joinpath([$GLOBALS['BASEDIR'], 'configs/conferences', $conference->getSlug(), $filename]); } function download($what, $conference, $url, $cache) diff --git a/index.php b/index.php index 9b4689c..ca0a6d4 100644 --- a/index.php +++ b/index.php @@ -3,6 +3,9 @@ if(!ini_get('short_open_tag')) die("`short_open_tag = On` is required\n"); +$GLOBALS['BASEDIR'] = dirname(__FILE__); +chdir($GLOBALS['BASEDIR']); + require_once('config.php'); require_once('lib/helper.php'); diff --git a/model/Relive.php b/model/Relive.php index 5676b62..1e8266a 100644 --- a/model/Relive.php +++ b/model/Relive.php @@ -26,7 +26,7 @@ class Relive public function getJsonCache() { - return sprintf('/tmp/relive-cache-%s', $this->getConference()->getSlug()); + return sprintf('/tmp/relive-cache-%s.json', $this->getConference()->getSlug()); } public function getTalks() diff --git a/model/Schedule.php b/model/Schedule.php index 4032ecb..6536864 100644 --- a/model/Schedule.php +++ b/model/Schedule.php @@ -272,7 +272,7 @@ class Schedule public function getScheduleCache() { - return sprintf('/tmp/schedule-cache-%s', $this->getConference()->getSlug()); + return sprintf('/tmp/schedule-cache-%s.xml', $this->getConference()->getSlug()); } public function getScheduleToRoomSlugMapping() -- cgit v1.3.1 From da739f3b60a30d5dd5c7877742f8b5c292f25f46 Mon Sep 17 00:00:00 2001 From: MaZderMind Date: Sun, 18 Dec 2016 10:37:10 +0100 Subject: use the new cache-files for viewing --- model/Relive.php | 2 +- model/Schedule.php | 11 ++--------- 2 files changed, 3 insertions(+), 10 deletions(-) (limited to 'model/Relive.php') diff --git a/model/Relive.php b/model/Relive.php index 1e8266a..542836d 100644 --- a/model/Relive.php +++ b/model/Relive.php @@ -31,7 +31,7 @@ class Relive public function getTalks() { - if(!file_exists($this->getJsonUrl())) + if(!file_exists($this->getJsonCache())) return array(); $talks = file_get_contents($this->getJsonUrl()); diff --git a/model/Schedule.php b/model/Schedule.php index 6536864..b54709e 100644 --- a/model/Schedule.php +++ b/model/Schedule.php @@ -36,17 +36,10 @@ class Schedule private function fetchSchedule() { - $opts = array( - 'http' => array( - 'timeout' => 2, - 'user_agent' => 'C3VOC Universal Streaming-Website Backend @ '.$_SERVER['HTTP_HOST'], - ) - ); - $context = stream_context_create($opts); - $schedule = file_get_contents($this->getScheduleUrl(), false, $context); + $schedule = file_get_contents($this->getScheduleCache()); if(!$schedule) - throw new ScheduleException("Error Downloading Schedule from ".$this->getConference()->getScheduleUrl()); + throw new ScheduleException("Error Loading Schedule from ".$this->getScheduleCache()); return simplexml_load_string($schedule); } -- cgit v1.3.1