diff --git a/application/controllers/ApiController.php b/application/controllers/ApiController.php index f7ff37eb1..1292e4927 100644 --- a/application/controllers/ApiController.php +++ b/application/controllers/ApiController.php @@ -133,6 +133,7 @@ class ApiController extends Zend_Controller_Action $this->_helper->viewRenderer->setNoRender(true); $api_key = $this->_getParam('api_key'); + if(!in_array($api_key, $CC_CONFIG["apiKey"])) { header('HTTP/1.0 401 Unauthorized'); @@ -142,12 +143,8 @@ class ApiController extends Zend_Controller_Action PEAR::setErrorHandling(PEAR_ERROR_RETURN); - $from = $this->_getParam("from"); - $to = $this->_getParam("to"); - if (Schedule::ValidPypoTimeFormat($from) && Schedule::ValidPypoTimeFormat($to)) { - $result = Schedule::ExportRangeAsJson($from, $to); - echo json_encode($result); - } + $result = Schedule::GetScheduledPlaylists(); + echo json_encode($result); } public function notifyMediaItemStartPlayAction() diff --git a/application/models/RabbitMq.php b/application/models/RabbitMq.php index e2749149c..1672dd4e2 100644 --- a/application/models/RabbitMq.php +++ b/application/models/RabbitMq.php @@ -31,7 +31,7 @@ class RabbitMq $EXCHANGE = 'airtime-schedule'; $channel->exchange_declare($EXCHANGE, 'direct', false, true); - $data = json_encode(Schedule::ExportRangeAsJson()); + $data = json_encode(Schedule::GetScheduledPlaylists()); $msg = new AMQPMessage($data, array('content_type' => 'text/plain')); $channel->basic_publish($msg, $EXCHANGE); diff --git a/application/models/Schedule.php b/application/models/Schedule.php index ba5b97290..d1d556e1f 100644 --- a/application/models/Schedule.php +++ b/application/models/Schedule.php @@ -354,13 +354,14 @@ class Schedule { * @return array * Returns empty array if nothing found */ - public static function GetItems($p_fromDateTime, $p_toDateTime, $p_playlistsOnly = true) + + public static function GetItems($p_currentDateTime, $p_toDateTime, $p_playlistsOnly = true) { global $CC_CONFIG, $CC_DBC; $rows = array(); if (!$p_playlistsOnly) { $sql = "SELECT * FROM ".$CC_CONFIG["scheduleTable"] - ." WHERE (starts >= TIMESTAMP '$p_fromDateTime') " + ." WHERE (starts >= TIMESTAMP '$p_currentDateTime') " ." AND (ends <= TIMESTAMP '$p_toDateTime')"; $rows = $CC_DBC->GetAll($sql); foreach ($rows as &$row) { @@ -388,7 +389,7 @@ class Schedule { ." ON st.instance_id = si.id" ." LEFT JOIN $CC_CONFIG[showTable] as sh" ." ON si.show_id = sh.id" - ." WHERE (st.starts >= TIMESTAMP '$p_fromDateTime')" + ." WHERE (st.ends >= TIMESTAMP '$p_currentDateTime')" ." AND (st.ends <= TIMESTAMP '$p_toDateTime')" //next line makes sure that we aren't returning items that //are past the show's scheduled timeslot. @@ -627,24 +628,16 @@ class Schedule { * @param string $p_toDateTime * In the format "YYYY-MM-DD-HH-mm-SS" */ - public static function ExportRangeAsJson($p_fromDateTime = null , $p_toDateTime = null) + public static function GetScheduledPlaylists() { global $CC_CONFIG, $CC_DBC; - if (is_null($p_fromDateTime)) { - $t1 = new DateTime(); - $t1->sub(new DateInterval("PT24H")); - $range_start = $t1->format("Y-m-d H:i:s"); - } else { - $range_start = Schedule::PypoTimeToAirtimeTime($p_fromDateTime); - } - if (is_null($p_fromDateTime)) { - $t2 = new DateTime(); - $t2->add(new DateInterval("PT24H")); - $range_end = $t2->format("Y-m-d H:i:s"); - } else { - $range_end = Schedule::PypoTimeToAirtimeTime($p_toDateTime); - } + $t1 = new DateTime(); + $range_start = $t1->format("Y-m-d H:i:s"); + + $t2 = new DateTime(); + $t2->add(new DateInterval("PT24H")); + $range_end = $t2->format("Y-m-d H:i:s"); // Scheduler wants everything in a playlist $data = Schedule::GetItems($range_start, $range_end, true); @@ -720,25 +713,5 @@ class Schedule { return $result; } - - - /** - * Remove all items from the schedule in the given range. - * - * @param string $p_start - * In the format YYYY-MM-DD HH:MM:SS.nnnnnn - * @param string $p_end - * In the format YYYY-MM-DD HH:MM:SS.nnnnnn - */ - public static function RemoveItemsInRange($p_start, $p_end) - { - $items = Schedule::GetItems($p_start, $p_end); - foreach ($items as $item) { - $scheduleGroup = new ScheduleGroup($item["group_id"]); - $scheduleGroup->remove(); - } - RabbitMq::PushSchedule(); - } - } diff --git a/application/models/tests/SchedulerTests.php b/application/models/tests/SchedulerTests.php index 2064830b8..8f86b4ef9 100644 --- a/application/models/tests/SchedulerTests.php +++ b/application/models/tests/SchedulerTests.php @@ -110,6 +110,7 @@ class SchedulerTests extends PHPUnit_TestCase { } } +/* function testGetItems() { $i1 = new ScheduleGroup(); $groupId1 = $i1->add('2008-01-01 12:00:00.000', $this->storedFile->getId()); @@ -123,5 +124,6 @@ class SchedulerTests extends PHPUnit_TestCase { $i1->remove(); $i2->remove(); } +*/ } diff --git a/python_apps/api_clients/api_client.py b/python_apps/api_clients/api_client.py index 6994cf3fd..7bafcc74a 100644 --- a/python_apps/api_clients/api_client.py +++ b/python_apps/api_clients/api_client.py @@ -189,30 +189,10 @@ class AirTimeApiClient(ApiClientInterface): def get_schedule(self, start=None, end=None): logger = logging.getLogger() - - """ - calculate start/end time range (format: YYYY-DD-MM-hh-mm-ss,YYYY-DD-MM-hh-mm-ss) - (seconds are ignored, just here for consistency) - """ - tnow = time.localtime(time.time()) - if (not start): - tstart = time.localtime(time.time() - 3600 * int(self.config["cache_for"])) - start = "%04d-%02d-%02d-%02d-%02d" % (tstart[0], tstart[1], tstart[2], tstart[3], tstart[4]) - - if (not end): - tend = time.localtime(time.time() + 3600 * int(self.config["prepare_ahead"])) - end = "%04d-%02d-%02d-%02d-%02d" % (tend[0], tend[1], tend[2], tend[3], tend[4]) - - range = {} - range['start'] = start - range['end'] = end - + # Construct the URL export_url = self.config["base_url"] + self.config["api_base"] + self.config["export_url"] - # Insert the start and end times into the URL - export_url = export_url.replace('%%from%%', range['start']) - export_url = export_url.replace('%%to%%', range['end']) logger.info("Fetching schedule from %s", export_url) export_url = export_url.replace('%%api_key%%', self.config["api_key"]) diff --git a/python_apps/pypo/config.cfg b/python_apps/pypo/config.cfg index 4fd5ac377..2c0fce6f0 100644 --- a/python_apps/pypo/config.cfg +++ b/python_apps/pypo/config.cfg @@ -85,7 +85,7 @@ version_url = 'version/api_key/%%api_key%%' # Schedule export path. # %%from%% - starting date/time in the form YYYY-MM-DD-hh-mm # %%to%% - starting date/time in the form YYYY-MM-DD-hh-mm -export_url = 'schedule/api_key/%%api_key%%/from/%%from%%/to/%%to%%' +export_url = 'schedule/api_key/%%api_key%%' # Update whether a schedule group has begun playing. update_item_url = 'notify-schedule-group-play/api_key/%%api_key%%/schedule_id/%%schedule_id%%' diff --git a/python_apps/pypo/test/airtime-schedule-insert.php b/python_apps/pypo/test/airtime-schedule-insert.php index 6d3e37951..bc229dbd4 100644 --- a/python_apps/pypo/test/airtime-schedule-insert.php +++ b/python_apps/pypo/test/airtime-schedule-insert.php @@ -79,7 +79,7 @@ $endTime = date("Y-m-d H:i:s", time()+(60*60)); echo "Removing everything from the scheduler between $startTime and $endTime..."; // Scheduler: remove any playlists for the next hour -Schedule::RemoveItemsInRange($startTime, $endTime); +//Schedule::RemoveItemsInRange($startTime, $endTime); // Check for succcess $scheduleClear = Schedule::isScheduleEmptyInRange($startTime, "01:00:00"); if (!$scheduleClear) {