diff --git a/airtime_mvc/application/controllers/AudiopreviewController.php b/airtime_mvc/application/controllers/AudiopreviewController.php index c66539c37..bd7505595 100644 --- a/airtime_mvc/application/controllers/AudiopreviewController.php +++ b/airtime_mvc/application/controllers/AudiopreviewController.php @@ -21,9 +21,9 @@ class AudiopreviewController extends Zend_Controller_Action { global $CC_CONFIG; - $audioFileID = $this->_getParam('audioFileID'); + $audioFileID = $this->_getParam('audioFileID'); $audioFileArtist = $this->_getParam('audioFileArtist'); - $audioFileTitle = $this->_getParam('audioFileTitle'); + $audioFileTitle = $this->_getParam('audioFileTitle'); $type = $this->_getParam('type'); $request = $this->getRequest(); @@ -47,23 +47,23 @@ class AudiopreviewController extends Zend_Controller_Action } if ($type == "audioclip") { - $uri = "/api/get-media/file/".$audioFileID; + $uri = "/api/get-media/file/".$audioFileID; $media = Application_Model_StoredFile::Recall($audioFileID); - $mime = $media->getPropelOrm()->getDbMime(); + $mime = $media->getPropelOrm()->getDbMime(); } elseif ($type == "stream") { $webstream = CcWebstreamQuery::create()->findPk($audioFileID); - $uri = $webstream->getDbUrl(); - $mime = $webstream->getDbMime(); + $uri = $webstream->getDbUrl(); + $mime = $webstream->getDbMime(); } else { - throw new Exception("Unknown type for audio preview!"); + throw new Exception("Unknown type for audio preview!.Type=$type"); } - $this->view->uri = $uri; - $this->view->mime = $mime; - $this->view->audioFileID = $audioFileID; + $this->view->uri = $uri; + $this->view->mime = $mime; + $this->view->audioFileID = $audioFileID; $this->view->audioFileArtist = $audioFileArtist; - $this->view->audioFileTitle = $audioFileTitle; - $this->view->type = $type; + $this->view->audioFileTitle = $audioFileTitle; + $this->view->type = $type; $this->_helper->viewRenderer->setRender('audio-preview'); } diff --git a/airtime_mvc/application/controllers/ScheduleController.php b/airtime_mvc/application/controllers/ScheduleController.php index 41e1b5125..e061d3d5d 100644 --- a/airtime_mvc/application/controllers/ScheduleController.php +++ b/airtime_mvc/application/controllers/ScheduleController.php @@ -825,13 +825,11 @@ class ScheduleController extends Zend_Controller_Action $this->view->newForm = $this->view->render( 'schedule/add-show-form.phtml'); Logging::debug("Show creation succeeded"); - Logging::debug_sparse( $data ); } else { $this->view->addNewShow = true; $this->view->form = $this->view->render( 'schedule/add-show-form.phtml'); Logging::debug("Show creation failed"); - Logging::debug_sparse( $data ); } } @@ -872,8 +870,6 @@ class ScheduleController extends Zend_Controller_Action } catch (Exception $e) { $this->view->error = $e->getMessage(); Logging::info($e->getMessage()); - Logging::info("{$e->getFile()}"); - Logging::info("{$e->getLine()}"); } } } diff --git a/airtime_mvc/application/controllers/ShowbuilderController.php b/airtime_mvc/application/controllers/ShowbuilderController.php index 413afbb70..23c3fd55b 100644 --- a/airtime_mvc/application/controllers/ShowbuilderController.php +++ b/airtime_mvc/application/controllers/ShowbuilderController.php @@ -229,45 +229,42 @@ class ShowbuilderController extends Zend_Controller_Action public function checkBuilderFeedAction() { - $request = $this->getRequest(); + $request = $this->getRequest(); $current_time = time(); $starts_epoch = $request->getParam("start", $current_time); //default ends is 24 hours after starts. - $ends_epoch = $request->getParam("end", $current_time + (60*60*24)); + $ends_epoch = $request->getParam("end", $current_time + (60*60*24)); $show_filter = intval($request->getParam("showFilter", 0)); - $my_shows = intval($request->getParam("myShows", 0)); - $timestamp = intval($request->getParam("timestamp", -1)); - $instances = $request->getParam("instances", array()); + $my_shows = intval($request->getParam("myShows", 0)); + $timestamp = intval($request->getParam("timestamp", -1)); + $instances = $request->getParam("instances", array()); $startsDT = DateTime::createFromFormat("U", $starts_epoch, new DateTimeZone("UTC")); - $endsDT = DateTime::createFromFormat("U", $ends_epoch, new DateTimeZone("UTC")); + $endsDT = DateTime::createFromFormat("U", $ends_epoch, new DateTimeZone("UTC")); - $opts = array("myShows" => $my_shows, "showFilter" => $show_filter); + $opts = array("myShows" => $my_shows, "showFilter" => $show_filter); $showBuilder = new Application_Model_ShowBuilder($startsDT, $endsDT, $opts); //only send the schedule back if updates have been made. // -1 default will always call the schedule to be sent back if no timestamp is defined. - if ($showBuilder->hasBeenUpdatedSince($timestamp, $instances)) { - $this->view->update = true; - } else { - $this->view->update = false; - } + $this->view->update = $showBuilder->hasBeenUpdatedSince( + $timestamp, $instances); } public function builderFeedAction() { - $request = $this->getRequest(); + $request = $this->getRequest(); $current_time = time(); $starts_epoch = $request->getParam("start", $current_time); //default ends is 24 hours after starts. - $ends_epoch = $request->getParam("end", $current_time + (60*60*24)); + $ends_epoch = $request->getParam("end", $current_time + (60*60*24)); $show_filter = intval($request->getParam("showFilter", 0)); - $my_shows = intval($request->getParam("myShows", 0)); + $my_shows = intval($request->getParam("myShows", 0)); $startsDT = DateTime::createFromFormat("U", $starts_epoch, new DateTimeZone("UTC")); - $endsDT = DateTime::createFromFormat("U", $ends_epoch, new DateTimeZone("UTC")); + $endsDT = DateTime::createFromFormat("U", $ends_epoch, new DateTimeZone("UTC")); $opts = array("myShows" => $my_shows, "showFilter" => $show_filter); $showBuilder = new Application_Model_ShowBuilder($startsDT, $endsDT, $opts); @@ -290,13 +287,9 @@ class ShowbuilderController extends Zend_Controller_Action } catch (OutDatedScheduleException $e) { $this->view->error = $e->getMessage(); Logging::info($e->getMessage()); - Logging::info("{$e->getFile()}"); - Logging::info("{$e->getLine()}"); } catch (Exception $e) { $this->view->error = $e->getMessage(); Logging::info($e->getMessage()); - Logging::info("{$e->getFile()}"); - Logging::info("{$e->getLine()}"); } } diff --git a/airtime_mvc/application/models/ShowBuilder.php b/airtime_mvc/application/models/ShowBuilder.php index b854572d6..e1e2382aa 100644 --- a/airtime_mvc/application/models/ShowBuilder.php +++ b/airtime_mvc/application/models/ShowBuilder.php @@ -133,7 +133,8 @@ class Application_Model_ShowBuilder */ private function getScheduledStatus($p_epochItemStart, $p_epochItemEnd, &$row) { - if ($row["footer"] === true && $this->epoch_now > $p_epochItemStart && $this->epoch_now > $p_epochItemEnd) { + if ($row["footer"] === true && $this->epoch_now > $p_epochItemStart && + $this->epoch_now > $p_epochItemEnd) { $row["scheduled"] = 0; } elseif ($row["footer"] === true && $this->epoch_now < $p_epochItemEnd) { $row["scheduled"] = 2; @@ -179,7 +180,7 @@ class Application_Model_ShowBuilder $showStartDT = new DateTime($p_item["si_starts"], new DateTimeZone("UTC")); $showStartDT->setTimezone(new DateTimeZone($this->timezone)); $startsEpoch = floatval($showStartDT->format("U.u")); - $showEndDT = new DateTime($p_item["si_ends"], new DateTimeZone("UTC")); + $showEndDT = new DateTime($p_item["si_ends"], new DateTimeZone("UTC")); $showEndDT->setTimezone(new DateTimeZone($this->timezone)); $endsEpoch = floatval($showEndDT->format("U.u")); @@ -188,8 +189,8 @@ class Application_Model_ShowBuilder $row["rebroadcast"] = true; $parentInstance = CcShowInstancesQuery::create()->findPk($p_item["parent_show"]); - $name = $parentInstance->getCcShow()->getDbName(); - $dt = $parentInstance->getDbStarts(null); + $name = $parentInstance->getCcShow()->getDbName(); + $dt = $parentInstance->getDbStarts(null); $dt->setTimezone(new DateTimeZone($this->timezone)); $time = $dt->format("Y-m-d H:i"); @@ -198,8 +199,6 @@ class Application_Model_ShowBuilder $row["record"] = true; if (Application_Model_Preference::GetUploadToSoundcloudOption()) { - Logging::info('$p_item contains:'); - Logging::info($p_item); $file = Application_Model_StoredFile::Recall( $p_item['si_file_id']); if (isset($file)) { @@ -242,9 +241,11 @@ class Application_Model_ShowBuilder if (isset($p_item["sched_starts"])) { - $schedStartDT = new DateTime($p_item["sched_starts"], new DateTimeZone("UTC")); + $schedStartDT = new DateTime($p_item["sched_starts"], + new DateTimeZone("UTC")); $schedStartDT->setTimezone(new DateTimeZone($this->timezone)); - $schedEndDT = new DateTime($p_item["sched_ends"], new DateTimeZone("UTC")); + $schedEndDT = new DateTime($p_item["sched_ends"], + new DateTimeZone("UTC")); $schedEndDT->setTimezone(new DateTimeZone($this->timezone)); $showEndDT = new DateTime($p_item["si_ends"], new DateTimeZone("UTC")); @@ -314,18 +315,18 @@ class Application_Model_ShowBuilder private function makeFooterRow($p_item) { - $row = $this->defaultRowArray; - $row["footer"] = true; + $row = $this->defaultRowArray; + $row["footer"] = true; $row["instance"] = intval($p_item["si_id"]); $this->getRowTimestamp($p_item, $row); - $showEndDT = new DateTime($p_item["si_ends"], new DateTimeZone("UTC")); - $contentDT = $this->contentDT; + $showEndDT = new DateTime($p_item["si_ends"], new DateTimeZone("UTC")); + $contentDT = $this->contentDT; - $runtime = bcsub($contentDT->format("U.u"), $showEndDT->format("U.u"), 6); - $row["runtime"] = $runtime; + $runtime = bcsub($contentDT->format("U.u"), $showEndDT->format("U.u"), 6); + $row["runtime"] = $runtime; - $timeFilled = new TimeFilledFormatter($runtime); + $timeFilled = new TimeFilledFormatter($runtime); $row["fRuntime"] = $timeFilled->format(); $showStartDT = new DateTime($p_item["si_starts"], new DateTimeZone("UTC")); @@ -354,7 +355,8 @@ class Application_Model_ShowBuilder /* * @param int $timestamp Unix timestamp in seconds. * - * @return boolean whether the schedule in the show builder's range has been updated. + * @return boolean whether the schedule in the show builder's range has + * been updated. * */ public function hasBeenUpdatedSince($timestamp, $instances) @@ -378,23 +380,26 @@ class Application_Model_ShowBuilder $currentInstances[] = $show["instance_id"]; if (isset($show["last_scheduled"])) { - $dt = new DateTime($show["last_scheduled"], new DateTimeZone("UTC")); + $dt = new DateTime($show["last_scheduled"], + new DateTimeZone("UTC")); } else { - $dt = new DateTime($show["created"], new DateTimeZone("UTC")); + $dt = new DateTime($show["created"], + new DateTimeZone("UTC")); } //check if any of the shows have a more recent timestamp. $showTimeStamp = intval($dt->format("U")); if ($timestamp < $showTimeStamp) { - Logging::debug("timestamp is {$timestamp} show timestamp is {$showTimeStamp}"); $outdated = true; break; } } } - //see if the displayed show instances have changed. (deleted, empty schedule etc) - if ($outdated === false && count($instances) !== count($currentInstances)) { + //see if the displayed show instances have changed. (deleted, + //empty schedule etc) + if ($outdated === false && count($instances) + !== count($currentInstances)) { Logging::debug("show instances have changed."); $outdated = true; } @@ -415,14 +420,17 @@ class Application_Model_ShowBuilder $shows[] = $this->opts["showFilter"]; } - $scheduled_items = Application_Model_Schedule::GetScheduleDetailItems($this->startDT->format("Y-m-d H:i:s"), $this->endDT->format("Y-m-d H:i:s"), $shows); + $scheduled_items = Application_Model_Schedule::GetScheduleDetailItems( + $this->startDT->format("Y-m-d H:i:s"), $this->endDT->format( + "Y-m-d H:i:s"), $shows); for ($i = 0, $rows = count($scheduled_items); $i < $rows; $i++) { $item = $scheduled_items[$i]; //don't send back data for filler rows. - if (isset($item["playout_status"]) && $item["playout_status"] < 0) { + if (isset($item["playout_status"]) && + $item["playout_status"] < 0) { continue; } @@ -431,8 +439,10 @@ class Application_Model_ShowBuilder //make a footer row. if ($current_id !== -1) { - //pass in the previous row as it's the last row for the previous show. - $display_items[] = $this->makeFooterRow($scheduled_items[$i-1]); + // pass in the previous row as it's the last row for + // the previous show. + $display_items[] = $this->makeFooterRow( + $scheduled_items[$i-1]); } $display_items[] = $this->makeHeaderRow($item); @@ -449,7 +459,8 @@ class Application_Model_ShowBuilder $display_items[] = $row; } - if ($current_id !== -1 && !in_array($current_id, $this->showInstances)) { + if ($current_id !== -1 && + !in_array($current_id, $this->showInstances)) { $this->showInstances[] = $current_id; } } diff --git a/airtime_mvc/application/models/ShowInstance.php b/airtime_mvc/application/models/ShowInstance.php index f88a1d63a..f782ae076 100644 --- a/airtime_mvc/application/models/ShowInstance.php +++ b/airtime_mvc/application/models/ShowInstance.php @@ -590,9 +590,7 @@ SQL; $rebroad = new Application_Model_ShowInstance($rebroadcast->getDbId()); $rebroad->addFileToShow($file_id, false); } catch (Exception $e) { - Logging::info("{$e->getFile()}"); - Logging::info("{$e->getLine()}"); - Logging::info("{$e->getMessage()}"); + Logging::info($e->getMessage()); } } } diff --git a/airtime_mvc/application/models/StoredFile.php b/airtime_mvc/application/models/StoredFile.php index 420510953..dd945d328 100644 --- a/airtime_mvc/application/models/StoredFile.php +++ b/airtime_mvc/application/models/StoredFile.php @@ -399,6 +399,17 @@ SQL; $this->_file->save(); } + + public function getRealFileExtension() { + $path = $this->_file->getDbFilepath(); + $path_elements = explode('.', $path); + if (count($path_elements) < 2) { + return ""; + } else { + return $path_elements[count($path_elements) - 1]; + } + } + /** * Return suitable extension. * @@ -407,9 +418,15 @@ SQL; */ public function getFileExtension() { - return ""; - // TODO : what's the point of having this function? Can we not just use - // the extension from the file_path column from cc_files? + $possible_ext = $this->getRealFileExtension(); + if ($possible_ext !== "") { + return $possible_ext; + } + + + // We fallback to guessing the extension from the mimetype if we + // cannot extract it from the file name + $mime = $this->_file->getDbMime(); if ($mime == "audio/ogg" || $mime == "application/ogg") { diff --git a/airtime_mvc/public/js/airtime/buttons/buttons.js b/airtime_mvc/public/js/airtime/buttons/buttons.js index 23a904001..a8db230b1 100644 --- a/airtime_mvc/public/js/airtime/buttons/buttons.js +++ b/airtime_mvc/public/js/airtime/buttons/buttons.js @@ -6,8 +6,11 @@ var AIRTIME = (function(AIRTIME) { } mod = AIRTIME.button; - mod.isDisabled = function(c) { + mod.isDisabled = function(c, useParent) { var button = $("." + c); + if (useParent) { + button = button.parent(); + } if (button.hasClass(DISABLED_CLASS)) { return true; @@ -25,6 +28,7 @@ var AIRTIME = (function(AIRTIME) { if (button.hasClass(DISABLED_CLASS)) { button.removeClass(DISABLED_CLASS); + button.removeAttr('disabled'); } }; @@ -37,6 +41,7 @@ var AIRTIME = (function(AIRTIME) { if (!button.hasClass(DISABLED_CLASS)) { button.addClass(DISABLED_CLASS); + button.attr('disabled', 'disabled'); } }; diff --git a/airtime_mvc/public/js/airtime/library/events/library_playlistbuilder.js b/airtime_mvc/public/js/airtime/library/events/library_playlistbuilder.js index 17aa3bb4e..751024e24 100644 --- a/airtime_mvc/public/js/airtime/library/events/library_playlistbuilder.js +++ b/airtime_mvc/public/js/airtime/library/events/library_playlistbuilder.js @@ -16,10 +16,21 @@ var AIRTIME = (function(AIRTIME) { } if (check === true) { - AIRTIME.button.enableButton("btn-group #library-plus", true); + AIRTIME.button.enableButton("btn-group #library-plus", false); } else { - AIRTIME.button.disableButton("btn-group #library-plus", true); + AIRTIME.button.disableButton("btn-group #library-plus", false); } + + var objType = $('#obj_type').val(), + btnText; + if (objType === 'playlist') { + btnText = ' Add to current playlist'; + } else if (objType === 'block') { + btnText = ' Add to current smart block'; + } else { + btnText = ' Add to current playlist'; + } + AIRTIME.library.changeAddButtonText($('.btn-group #library-plus #lib-plus-text'), btnText); }; mod.fnRowCallback = function(nRow, aData, iDisplayIndex, iDisplayIndexFull) { diff --git a/airtime_mvc/public/js/airtime/library/events/library_showbuilder.js b/airtime_mvc/public/js/airtime/library/events/library_showbuilder.js index 7bddd8049..67151e869 100644 --- a/airtime_mvc/public/js/airtime/library/events/library_showbuilder.js +++ b/airtime_mvc/public/js/airtime/library/events/library_showbuilder.js @@ -16,10 +16,12 @@ var AIRTIME = (function(AIRTIME) { } if (check === true) { - AIRTIME.button.enableButton("btn-group #library-plus", true); + AIRTIME.button.enableButton("btn-group #library-plus", false); } else { - AIRTIME.button.disableButton("btn-group #library-plus", true); + AIRTIME.button.disableButton("btn-group #library-plus", false); } + + AIRTIME.library.changeAddButtonText($('.btn-group #library-plus #lib-plus-text'), ' Add to selected show'); }; mod.fnRowCallback = function(nRow, aData, iDisplayIndex, iDisplayIndexFull) { diff --git a/airtime_mvc/public/js/airtime/library/library.js b/airtime_mvc/public/js/airtime/library/library.js index 3fea72940..e5cae78e0 100644 --- a/airtime_mvc/public/js/airtime/library/library.js +++ b/airtime_mvc/public/js/airtime/library/library.js @@ -98,6 +98,10 @@ var AIRTIME = (function(AIRTIME) { return count; }; + mod.changeAddButtonText = function($button, btnText) { + $button.text(btnText); + } + mod.createToolbarButtons = function() { $menu = $("
"); $menu @@ -113,7 +117,8 @@ var AIRTIME = (function(AIRTIME) { "") .append("