Merge branch 'devel' of dev.sourcefabric.org:airtime into devel
Conflicts: python_apps/pypo/pypopush.py
This commit is contained in:
commit
29afb6e191
29 changed files with 496 additions and 266 deletions
|
@ -34,7 +34,7 @@ $ccAcl->add(new Zend_Acl_Resource('library'))
|
||||||
$ccAcl->allow('G', 'index')
|
$ccAcl->allow('G', 'index')
|
||||||
->allow('G', 'login')
|
->allow('G', 'login')
|
||||||
->allow('G', 'error')
|
->allow('G', 'error')
|
||||||
->allow('G', 'nowplaying')
|
->allow('G', 'showbuilder')
|
||||||
->allow('G', 'api')
|
->allow('G', 'api')
|
||||||
->allow('G', 'auth')
|
->allow('G', 'auth')
|
||||||
->allow('G', 'recorder')
|
->allow('G', 'recorder')
|
||||||
|
@ -45,7 +45,6 @@ $ccAcl->allow('G', 'index')
|
||||||
->allow('H', 'library')
|
->allow('H', 'library')
|
||||||
->allow('H', 'search')
|
->allow('H', 'search')
|
||||||
->allow('H', 'playlist')
|
->allow('H', 'playlist')
|
||||||
->allow('H', 'showbuilder')
|
|
||||||
->allow('A', 'playouthistory')
|
->allow('A', 'playouthistory')
|
||||||
->allow('A', 'user')
|
->allow('A', 'user')
|
||||||
->allow('A', 'systemstatus')
|
->allow('A', 'systemstatus')
|
||||||
|
|
|
@ -29,46 +29,16 @@ class LibraryController extends Zend_Controller_Action
|
||||||
|
|
||||||
public function indexAction() {
|
public function indexAction() {
|
||||||
|
|
||||||
global $CC_CONFIG;
|
|
||||||
|
|
||||||
$this->_helper->layout->setLayout('library');
|
$this->_helper->layout->setLayout('library');
|
||||||
|
|
||||||
$request = $this->getRequest();
|
|
||||||
$baseUrl = $request->getBaseUrl();
|
|
||||||
|
|
||||||
$this->view->headScript()->appendFile($this->view->baseUrl('/js/airtime/library/events/library_playlistbuilder.js'),'text/javascript');
|
|
||||||
|
|
||||||
$this->_helper->actionStack('library', 'library');
|
$this->_helper->actionStack('library', 'library');
|
||||||
$this->_helper->actionStack('index', 'playlist');
|
$this->_helper->actionStack('index', 'playlist');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function libraryAction()
|
public function libraryAction()
|
||||||
{
|
{
|
||||||
global $CC_CONFIG;
|
|
||||||
|
|
||||||
$this->_helper->viewRenderer->setResponseSegment('library');
|
$this->_helper->viewRenderer->setResponseSegment('library');
|
||||||
|
|
||||||
$request = $this->getRequest();
|
|
||||||
$baseUrl = $request->getBaseUrl();
|
|
||||||
|
|
||||||
$this->view->headScript()->appendFile($baseUrl.'/js/contextmenu/jquery.contextMenu.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
|
|
||||||
$this->view->headScript()->appendFile($baseUrl.'/js/datatables/js/jquery.dataTables.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
|
|
||||||
$this->view->headScript()->appendFile($baseUrl.'/js/datatables/plugin/dataTables.pluginAPI.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
|
|
||||||
$this->view->headScript()->appendFile($baseUrl.'/js/datatables/plugin/dataTables.fnSetFilteringDelay.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
|
|
||||||
$this->view->headScript()->appendFile($baseUrl.'/js/datatables/plugin/dataTables.ColVis.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
|
|
||||||
$this->view->headScript()->appendFile($baseUrl.'/js/datatables/plugin/dataTables.ColReorder.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
|
|
||||||
$this->view->headScript()->appendFile($baseUrl.'/js/datatables/plugin/dataTables.FixedColumns.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
|
|
||||||
$this->view->headScript()->appendFile($baseUrl.'/js/datatables/plugin/dataTables.TableTools.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
|
|
||||||
|
|
||||||
$this->view->headScript()->appendFile($baseUrl.'/js/airtime/buttons/buttons.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
|
|
||||||
$this->view->headScript()->appendFile($baseUrl.'/js/airtime/utilities/utilities.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
|
|
||||||
$this->view->headScript()->appendFile($baseUrl.'/js/airtime/library/library.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
|
|
||||||
|
|
||||||
$this->view->headLink()->appendStylesheet($baseUrl.'/css/media_library.css?'.$CC_CONFIG['airtime_version']);
|
|
||||||
$this->view->headLink()->appendStylesheet($baseUrl.'/css/jquery.contextMenu.css?'.$CC_CONFIG['airtime_version']);
|
|
||||||
$this->view->headLink()->appendStylesheet($baseUrl.'/css/datatables/css/ColVis.css?'.$CC_CONFIG['airtime_version']);
|
|
||||||
$this->view->headLink()->appendStylesheet($baseUrl.'/css/datatables/css/ColReorder.css?'.$CC_CONFIG['airtime_version']);
|
|
||||||
$this->view->headLink()->appendStylesheet($baseUrl.'/css/TableTools.css?'.$CC_CONFIG['airtime_version']);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function contextMenuAction()
|
public function contextMenuAction()
|
||||||
|
|
|
@ -113,6 +113,26 @@ class PlaylistController extends Zend_Controller_Action
|
||||||
$request = $this->getRequest();
|
$request = $this->getRequest();
|
||||||
$baseUrl = $request->getBaseUrl();
|
$baseUrl = $request->getBaseUrl();
|
||||||
|
|
||||||
|
$this->view->headScript()->appendFile($baseUrl.'/js/contextmenu/jquery.contextMenu.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
|
||||||
|
$this->view->headScript()->appendFile($baseUrl.'/js/datatables/js/jquery.dataTables.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
|
||||||
|
$this->view->headScript()->appendFile($baseUrl.'/js/datatables/plugin/dataTables.pluginAPI.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
|
||||||
|
$this->view->headScript()->appendFile($baseUrl.'/js/datatables/plugin/dataTables.fnSetFilteringDelay.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
|
||||||
|
$this->view->headScript()->appendFile($baseUrl.'/js/datatables/plugin/dataTables.ColVis.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
|
||||||
|
$this->view->headScript()->appendFile($baseUrl.'/js/datatables/plugin/dataTables.ColReorder.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
|
||||||
|
$this->view->headScript()->appendFile($baseUrl.'/js/datatables/plugin/dataTables.FixedColumns.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
|
||||||
|
$this->view->headScript()->appendFile($baseUrl.'/js/datatables/plugin/dataTables.TableTools.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
|
||||||
|
|
||||||
|
$this->view->headScript()->appendFile($baseUrl.'/js/airtime/buttons/buttons.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
|
||||||
|
$this->view->headScript()->appendFile($baseUrl.'/js/airtime/utilities/utilities.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
|
||||||
|
$this->view->headScript()->appendFile($baseUrl.'/js/airtime/library/library.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
|
||||||
|
$this->view->headScript()->appendFile($this->view->baseUrl('/js/airtime/library/events/library_playlistbuilder.js'),'text/javascript');
|
||||||
|
|
||||||
|
$this->view->headLink()->appendStylesheet($baseUrl.'/css/media_library.css?'.$CC_CONFIG['airtime_version']);
|
||||||
|
$this->view->headLink()->appendStylesheet($baseUrl.'/css/jquery.contextMenu.css?'.$CC_CONFIG['airtime_version']);
|
||||||
|
$this->view->headLink()->appendStylesheet($baseUrl.'/css/datatables/css/ColVis.css?'.$CC_CONFIG['airtime_version']);
|
||||||
|
$this->view->headLink()->appendStylesheet($baseUrl.'/css/datatables/css/ColReorder.css?'.$CC_CONFIG['airtime_version']);
|
||||||
|
$this->view->headLink()->appendStylesheet($baseUrl.'/css/TableTools.css?'.$CC_CONFIG['airtime_version']);
|
||||||
|
|
||||||
$this->view->headScript()->appendFile($baseUrl.'/js/airtime/library/spl.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
|
$this->view->headScript()->appendFile($baseUrl.'/js/airtime/library/spl.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
|
||||||
$this->view->headLink()->appendStylesheet($baseUrl.'/css/playlist_builder.css?'.$CC_CONFIG['airtime_version']);
|
$this->view->headLink()->appendStylesheet($baseUrl.'/css/playlist_builder.css?'.$CC_CONFIG['airtime_version']);
|
||||||
|
|
||||||
|
|
|
@ -18,16 +18,37 @@ class ShowbuilderController extends Zend_Controller_Action
|
||||||
|
|
||||||
public function indexAction() {
|
public function indexAction() {
|
||||||
|
|
||||||
$this->_helper->layout->setLayout('builder');
|
|
||||||
$this->_helper->viewRenderer->setResponseSegment('dialog');
|
|
||||||
|
|
||||||
global $CC_CONFIG;
|
global $CC_CONFIG;
|
||||||
|
|
||||||
$request = $this->getRequest();
|
$request = $this->getRequest();
|
||||||
$baseUrl = $request->getBaseUrl();
|
$baseUrl = $request->getBaseUrl();
|
||||||
|
|
||||||
|
$this->view->headScript()->appendFile($baseUrl.'/js/contextmenu/jquery.contextMenu.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
|
||||||
|
$this->view->headScript()->appendFile($baseUrl.'/js/datatables/js/jquery.dataTables.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
|
||||||
|
$this->view->headScript()->appendFile($baseUrl.'/js/datatables/plugin/dataTables.pluginAPI.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
|
||||||
|
$this->view->headScript()->appendFile($baseUrl.'/js/datatables/plugin/dataTables.fnSetFilteringDelay.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
|
||||||
|
$this->view->headScript()->appendFile($baseUrl.'/js/datatables/plugin/dataTables.ColVis.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
|
||||||
|
$this->view->headScript()->appendFile($baseUrl.'/js/datatables/plugin/dataTables.ColReorder.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
|
||||||
|
$this->view->headScript()->appendFile($baseUrl.'/js/datatables/plugin/dataTables.FixedColumns.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
|
||||||
|
$this->view->headScript()->appendFile($baseUrl.'/js/datatables/plugin/dataTables.TableTools.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
|
||||||
|
|
||||||
|
$this->view->headScript()->appendFile($baseUrl.'/js/airtime/buttons/buttons.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
|
||||||
|
$this->view->headScript()->appendFile($baseUrl.'/js/airtime/utilities/utilities.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
|
||||||
|
$this->view->headScript()->appendFile($baseUrl.'/js/airtime/library/library.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
|
||||||
|
|
||||||
|
$this->view->headLink()->appendStylesheet($baseUrl.'/css/media_library.css?'.$CC_CONFIG['airtime_version']);
|
||||||
|
$this->view->headLink()->appendStylesheet($baseUrl.'/css/jquery.contextMenu.css?'.$CC_CONFIG['airtime_version']);
|
||||||
|
$this->view->headLink()->appendStylesheet($baseUrl.'/css/datatables/css/ColVis.css?'.$CC_CONFIG['airtime_version']);
|
||||||
|
$this->view->headLink()->appendStylesheet($baseUrl.'/css/datatables/css/ColReorder.css?'.$CC_CONFIG['airtime_version']);
|
||||||
|
$this->view->headLink()->appendStylesheet($baseUrl.'/css/TableTools.css?'.$CC_CONFIG['airtime_version']);
|
||||||
|
|
||||||
$this->view->headScript()->appendFile($this->view->baseUrl('/js/airtime/library/events/library_showbuilder.js?'.$CC_CONFIG['airtime_version']),'text/javascript');
|
$this->view->headScript()->appendFile($this->view->baseUrl('/js/airtime/library/events/library_showbuilder.js?'.$CC_CONFIG['airtime_version']),'text/javascript');
|
||||||
|
|
||||||
|
$this->_helper->layout->setLayout('builder');
|
||||||
|
$this->_helper->viewRenderer->setResponseSegment('dialog');
|
||||||
|
|
||||||
|
$user = Application_Model_User::GetCurrentUser();
|
||||||
|
|
||||||
$refer_sses = new Zend_Session_Namespace('referrer');
|
$refer_sses = new Zend_Session_Namespace('referrer');
|
||||||
$userInfo = Zend_Auth::getInstance()->getStorage()->read();
|
$userInfo = Zend_Auth::getInstance()->getStorage()->read();
|
||||||
$user = new Application_Model_User($userInfo->id);
|
$user = new Application_Model_User($userInfo->id);
|
||||||
|
@ -92,7 +113,19 @@ class ShowbuilderController extends Zend_Controller_Action
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$data = Application_Model_Preference::GetValue("nowplaying_screen", true);
|
||||||
|
if ($data != "") {
|
||||||
|
$settings = unserialize($data);
|
||||||
|
|
||||||
|
if ($settings["library"] == "true") {
|
||||||
|
$this->view->headScript()->appendScript("AIRTIME.showLib = true;");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$user->isGuest()) {
|
||||||
$this->_helper->actionStack('library', 'library');
|
$this->_helper->actionStack('library', 'library');
|
||||||
|
}
|
||||||
|
|
||||||
$this->_helper->actionStack('builder', 'showbuilder');
|
$this->_helper->actionStack('builder', 'showbuilder');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -161,6 +194,14 @@ class ShowbuilderController extends Zend_Controller_Action
|
||||||
|
|
||||||
$this->view->headLink()->appendStylesheet($baseUrl.'/css/jquery.ui.timepicker.css?'.$CC_CONFIG['airtime_version']);
|
$this->view->headLink()->appendStylesheet($baseUrl.'/css/jquery.ui.timepicker.css?'.$CC_CONFIG['airtime_version']);
|
||||||
$this->view->headLink()->appendStylesheet($baseUrl.'/css/showbuilder.css?'.$CC_CONFIG['airtime_version']);
|
$this->view->headLink()->appendStylesheet($baseUrl.'/css/showbuilder.css?'.$CC_CONFIG['airtime_version']);
|
||||||
|
|
||||||
|
$user = Application_Model_User::GetCurrentUser();
|
||||||
|
if (!$user->isGuest()) {
|
||||||
|
$this->view->toggleLib = true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$this->view->toggleLib = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function builderDialogAction() {
|
public function builderDialogAction() {
|
||||||
|
@ -206,9 +247,6 @@ class ShowbuilderController extends Zend_Controller_Action
|
||||||
$startsDT = DateTime::createFromFormat("U", $starts_epoch, new DateTimeZone("UTC"));
|
$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"));
|
||||||
|
|
||||||
Logging::log("showbuilder starts {$startsDT->format("Y-m-d H:i:s")}");
|
|
||||||
Logging::log("showbuilder ends {$endsDT->format("Y-m-d H:i:s")}");
|
|
||||||
|
|
||||||
$opts = array("myShows" => $my_shows, "showFilter" => $show_filter);
|
$opts = array("myShows" => $my_shows, "showFilter" => $show_filter);
|
||||||
$showBuilder = new Application_Model_ShowBuilder($startsDT, $endsDT, $opts);
|
$showBuilder = new Application_Model_ShowBuilder($startsDT, $endsDT, $opts);
|
||||||
|
|
||||||
|
@ -251,11 +289,11 @@ class ShowbuilderController extends Zend_Controller_Action
|
||||||
|
|
||||||
$request = $this->getRequest();
|
$request = $this->getRequest();
|
||||||
$mediaItems = $request->getParam("mediaIds", array());
|
$mediaItems = $request->getParam("mediaIds", array());
|
||||||
$scheduledIds = $request->getParam("schedIds", array());
|
$scheduledItems = $request->getParam("schedIds", array());
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$scheduler = new Application_Model_Scheduler();
|
$scheduler = new Application_Model_Scheduler();
|
||||||
$scheduler->scheduleAfter($scheduledIds, $mediaItems);
|
$scheduler->scheduleAfter($scheduledItems, $mediaItems);
|
||||||
}
|
}
|
||||||
catch (OutDatedScheduleException $e) {
|
catch (OutDatedScheduleException $e) {
|
||||||
$this->view->error = $e->getMessage();
|
$this->view->error = $e->getMessage();
|
||||||
|
@ -297,12 +335,12 @@ class ShowbuilderController extends Zend_Controller_Action
|
||||||
public function scheduleMoveAction() {
|
public function scheduleMoveAction() {
|
||||||
|
|
||||||
$request = $this->getRequest();
|
$request = $this->getRequest();
|
||||||
$selectedItem = $request->getParam("selectedItem");
|
$selectedItems = $request->getParam("selectedItem");
|
||||||
$afterItem = $request->getParam("afterItem");
|
$afterItem = $request->getParam("afterItem");
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$scheduler = new Application_Model_Scheduler();
|
$scheduler = new Application_Model_Scheduler();
|
||||||
$scheduler->moveItem($selectedItem, $afterItem);
|
$scheduler->moveItem($selectedItems, $afterItem);
|
||||||
}
|
}
|
||||||
catch (OutDatedScheduleException $e) {
|
catch (OutDatedScheduleException $e) {
|
||||||
$this->view->error = $e->getMessage();
|
$this->view->error = $e->getMessage();
|
||||||
|
@ -324,46 +362,4 @@ class ShowbuilderController extends Zend_Controller_Action
|
||||||
|
|
||||||
$showInstance = $request->getParam("instanceId");
|
$showInstance = $request->getParam("instanceId");
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* make sure any incoming requests for scheduling are ligit.
|
|
||||||
*
|
|
||||||
* @param array $items, an array containing pks of cc_schedule items.
|
|
||||||
*/
|
|
||||||
private function filterSelected($items) {
|
|
||||||
|
|
||||||
$allowed = array();
|
|
||||||
$user = Application_Model_User::GetCurrentUser();
|
|
||||||
$type = $user->getType();
|
|
||||||
|
|
||||||
//item must be within the host's show.
|
|
||||||
if ($type === UTYPE_HOST) {
|
|
||||||
|
|
||||||
$hosted = CcShowHostsQuery::create()
|
|
||||||
->filterByDbHost($user->getId())
|
|
||||||
->find();
|
|
||||||
|
|
||||||
$allowed_shows = array();
|
|
||||||
foreach ($hosted as $host) {
|
|
||||||
$allowed_shows[] = $host->getDbShow();
|
|
||||||
}
|
|
||||||
|
|
||||||
for ($i = 0; $i < count($items); $i++) {
|
|
||||||
|
|
||||||
$instance = $items[$i]["instance"];
|
|
||||||
|
|
||||||
if (in_array($instance, $allowed_shows)) {
|
|
||||||
$allowed[] = $items[$i];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->view->shows = $res;
|
|
||||||
}
|
|
||||||
//they can schedule anything.
|
|
||||||
else if ($type === UTYPE_ADMIN || $type === UTYPE_PROGRAM_MANAGER) {
|
|
||||||
$allowed = $items;
|
|
||||||
}
|
|
||||||
|
|
||||||
return $allowed;
|
|
||||||
}
|
|
||||||
}
|
}
|
|
@ -6,13 +6,32 @@ class UsersettingsController extends Zend_Controller_Action
|
||||||
{
|
{
|
||||||
/* Initialize action controller here */
|
/* Initialize action controller here */
|
||||||
$ajaxContext = $this->_helper->getHelper('AjaxContext');
|
$ajaxContext = $this->_helper->getHelper('AjaxContext');
|
||||||
$ajaxContext->addActionContext('get-library-datatable', 'json')
|
$ajaxContext->addActionContext('get-now-playing-screen-settings', 'json')
|
||||||
|
->addActionContext('set-now-playing-screen-settings', 'json')
|
||||||
|
->addActionContext('get-library-datatable', 'json')
|
||||||
->addActionContext('set-library-datatable', 'json')
|
->addActionContext('set-library-datatable', 'json')
|
||||||
->addActionContext('get-timeline-datatable', 'json')
|
->addActionContext('get-timeline-datatable', 'json')
|
||||||
->addActionContext('set-timeline-datatable', 'json')
|
->addActionContext('set-timeline-datatable', 'json')
|
||||||
->initContext();
|
->initContext();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function setNowPlayingScreenSettingsAction() {
|
||||||
|
|
||||||
|
$request = $this->getRequest();
|
||||||
|
$settings = $request->getParam("settings");
|
||||||
|
|
||||||
|
$data = serialize($settings);
|
||||||
|
Application_Model_Preference::SetValue("nowplaying_screen", $data, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getNowPlayingScreenSettingsAction() {
|
||||||
|
|
||||||
|
$data = Application_Model_Preference::GetValue("nowplaying_screen", true);
|
||||||
|
if ($data != "") {
|
||||||
|
$this->view->settings = unserialize($data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public function setLibraryDatatableAction() {
|
public function setLibraryDatatableAction() {
|
||||||
|
|
||||||
$request = $this->getRequest();
|
$request = $this->getRequest();
|
||||||
|
|
|
@ -44,7 +44,7 @@ class Application_Form_LiveStreamingPreferences extends Zend_Form_SubForm
|
||||||
//liquidsoap harbor.input port
|
//liquidsoap harbor.input port
|
||||||
$m_port = Application_Model_StreamSetting::GetMasterLiveSteamPort();
|
$m_port = Application_Model_StreamSetting::GetMasterLiveSteamPort();
|
||||||
$master_dj_port = new Zend_Form_Element_Text('master_harbor_input_port');
|
$master_dj_port = new Zend_Form_Element_Text('master_harbor_input_port');
|
||||||
$master_dj_port->setLabel("Master DJ Port")
|
$master_dj_port->setLabel("Master Source Port")
|
||||||
->setValue($m_port)
|
->setValue($m_port)
|
||||||
->setValidators(array(new Zend_Validate_Between(array('min'=>0, 'max'=>99999))))
|
->setValidators(array(new Zend_Validate_Between(array('min'=>0, 'max'=>99999))))
|
||||||
->addValidator('regex', false, array('pattern'=>'/^[0-9]+$/', 'messages'=>array('regexNotMatch'=>'Only numbers are allowed.')))
|
->addValidator('regex', false, array('pattern'=>'/^[0-9]+$/', 'messages'=>array('regexNotMatch'=>'Only numbers are allowed.')))
|
||||||
|
@ -53,7 +53,7 @@ class Application_Form_LiveStreamingPreferences extends Zend_Form_SubForm
|
||||||
|
|
||||||
$m_mount = Application_Model_StreamSetting::GetMasterLiveSteamMountPoint();
|
$m_mount = Application_Model_StreamSetting::GetMasterLiveSteamMountPoint();
|
||||||
$master_dj_mount = new Zend_Form_Element_Text('master_harbor_input_mount_point');
|
$master_dj_mount = new Zend_Form_Element_Text('master_harbor_input_mount_point');
|
||||||
$master_dj_mount->setLabel("Master DJ Mount Point")
|
$master_dj_mount->setLabel("Master Source Mount Point")
|
||||||
->setValue($m_mount)
|
->setValue($m_mount)
|
||||||
->setValidators(array(
|
->setValidators(array(
|
||||||
array('regex', false, array('/^[^ &<>]+$/', 'messages' => 'Invalid character entered'))))
|
array('regex', false, array('/^[^ &<>]+$/', 'messages' => 'Invalid character entered'))))
|
||||||
|
@ -63,7 +63,7 @@ class Application_Form_LiveStreamingPreferences extends Zend_Form_SubForm
|
||||||
//liquidsoap harbor.input port
|
//liquidsoap harbor.input port
|
||||||
$l_port = Application_Model_StreamSetting::GetDJLiveSteamPort();
|
$l_port = Application_Model_StreamSetting::GetDJLiveSteamPort();
|
||||||
$live_dj_port = new Zend_Form_Element_Text('dj_harbor_input_port');
|
$live_dj_port = new Zend_Form_Element_Text('dj_harbor_input_port');
|
||||||
$live_dj_port->setLabel("DJ Port")
|
$live_dj_port->setLabel("Show Source Port")
|
||||||
->setValue($l_port)
|
->setValue($l_port)
|
||||||
->setValidators(array(new Zend_Validate_Between(array('min'=>0, 'max'=>99999))))
|
->setValidators(array(new Zend_Validate_Between(array('min'=>0, 'max'=>99999))))
|
||||||
->addValidator('regex', false, array('pattern'=>'/^[0-9]+$/', 'messages'=>array('regexNotMatch'=>'Only numbers are allowed.')))
|
->addValidator('regex', false, array('pattern'=>'/^[0-9]+$/', 'messages'=>array('regexNotMatch'=>'Only numbers are allowed.')))
|
||||||
|
@ -72,7 +72,7 @@ class Application_Form_LiveStreamingPreferences extends Zend_Form_SubForm
|
||||||
|
|
||||||
$l_mount = Application_Model_StreamSetting::GetDJLiveSteamMountPoint();
|
$l_mount = Application_Model_StreamSetting::GetDJLiveSteamMountPoint();
|
||||||
$live_dj_mount = new Zend_Form_Element_Text('dj_harbor_input_mount_point');
|
$live_dj_mount = new Zend_Form_Element_Text('dj_harbor_input_mount_point');
|
||||||
$live_dj_mount->setLabel("DJ Mount Point")
|
$live_dj_mount->setLabel("Show Source Mount Point")
|
||||||
->setValue($l_mount)
|
->setValue($l_mount)
|
||||||
->setValidators(array(
|
->setValidators(array(
|
||||||
array('regex', false, array('/^[^ &<>]+$/', 'messages' => 'Invalid character entered'))))
|
array('regex', false, array('/^[^ &<>]+$/', 'messages' => 'Invalid character entered'))))
|
||||||
|
@ -127,7 +127,7 @@ class Application_Form_LiveStreamingPreferences extends Zend_Form_SubForm
|
||||||
$master_harbor_input_port = $data['master_harbor_input_port'];
|
$master_harbor_input_port = $data['master_harbor_input_port'];
|
||||||
$dj_harbor_input_port = $data['dj_harbor_input_port'];
|
$dj_harbor_input_port = $data['dj_harbor_input_port'];
|
||||||
|
|
||||||
if($master_harbor_input_port == $dj_harbor_input_port){
|
if($master_harbor_input_port == $dj_harbor_input_port && $master_harbor_input_port != ""){
|
||||||
$element = $this->getElement("dj_harbor_input_port");
|
$element = $this->getElement("dj_harbor_input_port");
|
||||||
$element->addError("You cannot use same port as Master DJ port.");
|
$element->addError("You cannot use same port as Master DJ port.");
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,9 +15,6 @@ class Application_Form_Preferences extends Zend_Form
|
||||||
$general_pref = new Application_Form_GeneralPreferences();
|
$general_pref = new Application_Form_GeneralPreferences();
|
||||||
$this->addSubForm($general_pref, 'preferences_general');
|
$this->addSubForm($general_pref, 'preferences_general');
|
||||||
|
|
||||||
$livestream_pref = new Application_Form_LiveStreamingPreferences();
|
|
||||||
$this->addSubForm($livestream_pref, 'preferences_livestream');
|
|
||||||
|
|
||||||
$soundcloud_pref = new Application_Form_SoundcloudPreferences();
|
$soundcloud_pref = new Application_Form_SoundcloudPreferences();
|
||||||
$this->addSubForm($soundcloud_pref, 'preferences_soundcloud');
|
$this->addSubForm($soundcloud_pref, 'preferences_soundcloud');
|
||||||
|
|
||||||
|
|
|
@ -633,11 +633,28 @@ class Application_Model_Schedule {
|
||||||
|
|
||||||
$data["status"] = array();
|
$data["status"] = array();
|
||||||
$data["media"] = array();
|
$data["media"] = array();
|
||||||
$data["harbor"] = array();
|
|
||||||
|
|
||||||
|
$kick_time = Application_Model_ShowInstance::GetEndTimeOfNextShowWithLiveDJ();
|
||||||
|
$temp = explode('.', Application_Model_Preference::GetDefaultTransitionFade());
|
||||||
|
// we round down transition time since PHP cannot handle millisecond. We need to
|
||||||
|
// handle this better in the future
|
||||||
|
$transition_time = intval($temp[0]);
|
||||||
|
$switchOffDataTime = new DateTime($kick_time, $utcTimeZone);
|
||||||
|
$switch_off_time = $switchOffDataTime->sub(new DateInterval('PT'.$transition_time.'S'));
|
||||||
|
$switch_off_time = $switch_off_time->format("Y-m-d H:i:s");
|
||||||
|
|
||||||
$data["harbor"]['next_live_dj_show_end'] = Application_Model_ShowInstance::GetEndTimeOfNextShowWithLiveDJ();
|
$kick_start = Application_Model_Schedule::AirtimeTimeToPypoTime($kick_time);
|
||||||
$data["harbor"]['transition_fade'] = Application_Model_Preference::GetDefaultTransitionFade();
|
$data["media"][$kick_start]['start'] = $kick_start;
|
||||||
|
$data["media"][$kick_start]['end'] = $kick_start;
|
||||||
|
$data["media"][$kick_start]['event_type'] = "kick_out";
|
||||||
|
$data["media"][$kick_start]['type'] = "event";
|
||||||
|
|
||||||
|
if($kick_time !== $switch_off_time){
|
||||||
|
$data["media"][$switch_start]['start'] = Application_Model_Schedule::AirtimeTimeToPypoTime($switch_off_time);
|
||||||
|
$data["media"][$switch_start]['end'] = Application_Model_Schedule::AirtimeTimeToPypoTime($switch_off_time);
|
||||||
|
$data["media"][$switch_start]['event_type'] = "switch_off";
|
||||||
|
$data["media"][$switch_start]['type'] = "event";
|
||||||
|
}
|
||||||
|
|
||||||
foreach ($items as $item){
|
foreach ($items as $item){
|
||||||
|
|
||||||
|
@ -662,6 +679,7 @@ class Application_Model_Schedule {
|
||||||
$start = Application_Model_Schedule::AirtimeTimeToPypoTime($item["start"]);
|
$start = Application_Model_Schedule::AirtimeTimeToPypoTime($item["start"]);
|
||||||
$data["media"][$start] = array(
|
$data["media"][$start] = array(
|
||||||
'id' => $storedFile->getGunid(),
|
'id' => $storedFile->getGunid(),
|
||||||
|
'type' => "file",
|
||||||
'row_id' => $item["id"],
|
'row_id' => $item["id"],
|
||||||
'uri' => $uri,
|
'uri' => $uri,
|
||||||
'fade_in' => Application_Model_Schedule::WallTimeToMillisecs($item["fade_in"]),
|
'fade_in' => Application_Model_Schedule::WallTimeToMillisecs($item["fade_in"]),
|
||||||
|
|
|
@ -13,9 +13,89 @@ class Application_Model_Scheduler {
|
||||||
"sched_id" => null,
|
"sched_id" => null,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
private $nowDT;
|
||||||
|
private $user;
|
||||||
|
|
||||||
public function __construct($id = null) {
|
public function __construct($id = null) {
|
||||||
|
|
||||||
$this->con = Propel::getConnection(CcSchedulePeer::DATABASE_NAME);
|
$this->con = Propel::getConnection(CcSchedulePeer::DATABASE_NAME);
|
||||||
|
$this->nowDT = new DateTime("now", new DateTimeZone("UTC"));
|
||||||
|
$this->user = Application_Model_User::GetCurrentUser();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* make sure any incoming requests for scheduling are ligit.
|
||||||
|
*
|
||||||
|
* @param array $items, an array containing pks of cc_schedule items.
|
||||||
|
*/
|
||||||
|
private function validateRequest($items) {
|
||||||
|
|
||||||
|
$nowEpoch = intval($this->nowDT->format("U"));
|
||||||
|
|
||||||
|
for ($i = 0; $i < count($items); $i++) {
|
||||||
|
$id = $items[$i]["id"];
|
||||||
|
|
||||||
|
//could be added to the beginning of a show, which sends id = 0;
|
||||||
|
if ($id > 0) {
|
||||||
|
$schedInfo[$id] = $items[$i]["instance"];
|
||||||
|
}
|
||||||
|
|
||||||
|
$instanceInfo[$items[$i]["instance"]] = $items[$i]["timestamp"];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (count($instanceInfo) === 0) {
|
||||||
|
throw new Exception("Invalid Request.");
|
||||||
|
}
|
||||||
|
|
||||||
|
$schedIds = array();
|
||||||
|
if (isset($schedInfo)) {
|
||||||
|
$schedIds = array_keys($schedInfo);
|
||||||
|
}
|
||||||
|
$schedItems = CcScheduleQuery::create()->findPKs($schedIds, $this->con);
|
||||||
|
$instanceIds = array_keys($instanceInfo);
|
||||||
|
$showInstances = CcShowInstancesQuery::create()->findPKs($instanceIds, $this->con);
|
||||||
|
|
||||||
|
//an item has been deleted
|
||||||
|
if (count($schedIds) !== count($schedItems)) {
|
||||||
|
throw new OutDatedScheduleException("The schedule you're viewing is out of date! (sched mismatch)");
|
||||||
|
}
|
||||||
|
|
||||||
|
//a show has been deleted
|
||||||
|
if (count($instanceIds) !== count($showInstances)) {
|
||||||
|
throw new OutDatedScheduleException("The schedule you're viewing is out of date! (instance mismatch)");
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($schedItems as $schedItem) {
|
||||||
|
$id = $schedItem->getDbId();
|
||||||
|
$instance = $schedItem->getCcShowInstances($this->con);
|
||||||
|
|
||||||
|
if (intval($schedInfo[$id]["instance"]) !== $instance->getDbId()) {
|
||||||
|
throw new OutDatedScheduleException("The schedule you're viewing is out of date!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($showInstances as $instance) {
|
||||||
|
|
||||||
|
$id = $instance->getDbId();
|
||||||
|
$show = $instance->getCcShow($this->con);
|
||||||
|
|
||||||
|
if ($this->user->canSchedule($show->getDbId()) === false) {
|
||||||
|
throw new Exception("You are not allowed to schedule show {$show->getDbName()}.");
|
||||||
|
}
|
||||||
|
|
||||||
|
$showEndEpoch = intval($instance->getDbEnds("U"));
|
||||||
|
|
||||||
|
if ($showEndEpoch < $nowEpoch) {
|
||||||
|
throw new OutDatedScheduleException("The show {$show->getDbName()} is over and cannot be scheduled.");
|
||||||
|
}
|
||||||
|
|
||||||
|
$origTs = intval($instanceInfo[$id]);
|
||||||
|
$currTs = intval($instance->getDbLastScheduled("U")) ? : 0;
|
||||||
|
if ($origTs !== $currTs) {
|
||||||
|
Logging::log("orig {$origTs} current {$currTs}");
|
||||||
|
throw new OutDatedScheduleException("The show {$show->getDbName()} has been previously updated!");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -112,25 +192,22 @@ class Application_Model_Scheduler {
|
||||||
|
|
||||||
private function findNextStartTime($DT, $instance) {
|
private function findNextStartTime($DT, $instance) {
|
||||||
|
|
||||||
//check to see if the show has started.
|
|
||||||
$nowDT = new DateTime("now", new DateTimeZone("UTC"));
|
|
||||||
|
|
||||||
$sEpoch = intval($DT->format("U"));
|
$sEpoch = intval($DT->format("U"));
|
||||||
$nEpoch = intval($nowDT->format("U"));
|
$nowEpoch = intval($this->nowDT->format("U"));
|
||||||
|
|
||||||
//check for if the show has started.
|
//check for if the show has started.
|
||||||
if ($nEpoch > $sEpoch) {
|
if ($nowEpoch > $sEpoch) {
|
||||||
//need some kind of placeholder for cc_schedule.
|
//need some kind of placeholder for cc_schedule.
|
||||||
//playout_status will be -1.
|
//playout_status will be -1.
|
||||||
$nextDT = $nowDT;
|
$nextDT = $this->nowDT;
|
||||||
|
|
||||||
$length = $nEpoch - $sEpoch;
|
$length = $nowEpoch - $sEpoch;
|
||||||
$cliplength = Application_Model_Playlist::secondsToPlaylistTime($length);
|
$cliplength = Application_Model_Playlist::secondsToPlaylistTime($length);
|
||||||
|
|
||||||
//fillers are for only storing a chunk of time space that has already passed.
|
//fillers are for only storing a chunk of time space that has already passed.
|
||||||
$filler = new CcSchedule();
|
$filler = new CcSchedule();
|
||||||
$filler->setDbStarts($DT)
|
$filler->setDbStarts($DT)
|
||||||
->setDbEnds($nowDT)
|
->setDbEnds($this->nowDT)
|
||||||
->setDbClipLength($cliplength)
|
->setDbClipLength($cliplength)
|
||||||
->setDbPlayoutStatus(-1)
|
->setDbPlayoutStatus(-1)
|
||||||
->setDbInstanceId($instance->getDbId())
|
->setDbInstanceId($instance->getDbId())
|
||||||
|
@ -164,45 +241,27 @@ class Application_Model_Scheduler {
|
||||||
|
|
||||||
foreach ($scheduleItems as $schedule) {
|
foreach ($scheduleItems as $schedule) {
|
||||||
$id = intval($schedule["id"]);
|
$id = intval($schedule["id"]);
|
||||||
$ts = intval($schedule["timestamp"]);
|
|
||||||
|
|
||||||
Logging::log("scheduling after scheduled item: ".$id);
|
|
||||||
Logging::log("in show: ".intval($schedule["instance"]));
|
|
||||||
|
|
||||||
if ($id !== 0) {
|
if ($id !== 0) {
|
||||||
$schedItem = CcScheduleQuery::create()->findPK($id, $this->con);
|
$schedItem = CcScheduleQuery::create()->findPK($id, $this->con);
|
||||||
if (is_null($schedItem)) {
|
|
||||||
throw new OutDatedScheduleException("The schedule you're viewing is out of date!");
|
|
||||||
}
|
|
||||||
$instance = $schedItem->getCcShowInstances($this->con);
|
$instance = $schedItem->getCcShowInstances($this->con);
|
||||||
if (intval($schedule["instance"]) !== $instance->getDbId()) {
|
|
||||||
throw new OutDatedScheduleException("The schedule you're viewing is out of date!");
|
|
||||||
}
|
|
||||||
$schedItemEndDT = $schedItem->getDbEnds(null);
|
$schedItemEndDT = $schedItem->getDbEnds(null);
|
||||||
$nextStartDT = $this->findNextStartTime($schedItemEndDT, $instance);
|
$nextStartDT = $this->findNextStartTime($schedItemEndDT, $instance);
|
||||||
}
|
}
|
||||||
//selected empty row to add after
|
//selected empty row to add after
|
||||||
else {
|
else {
|
||||||
|
|
||||||
$instance = CcShowInstancesQuery::create()->findPK($schedule["instance"], $this->con);
|
$instance = CcShowInstancesQuery::create()->findPK($schedule["instance"], $this->con);
|
||||||
|
|
||||||
//check to see if the show has started.
|
|
||||||
$showStartDT = $instance->getDbStarts(null);
|
$showStartDT = $instance->getDbStarts(null);
|
||||||
$nextStartDT = $this->findNextStartTime($showStartDT, $instance);
|
$nextStartDT = $this->findNextStartTime($showStartDT, $instance);
|
||||||
}
|
}
|
||||||
|
|
||||||
$currTs = intval($instance->getDbLastScheduled("U")) ? : 0;
|
|
||||||
//user has an old copy of the time line opened.
|
|
||||||
if ($ts !== $currTs) {
|
|
||||||
Logging::log("currTs {$currTs}, ts {$ts}");
|
|
||||||
$show = $instance->getCcShow($this->con);
|
|
||||||
throw new OutDatedScheduleException("The show {$show->getDbName()} has been previously updated!");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!in_array($instance->getDbId(), $affectedShowInstances)) {
|
if (!in_array($instance->getDbId(), $affectedShowInstances)) {
|
||||||
$affectedShowInstances[] = $instance->getDbId();
|
$affectedShowInstances[] = $instance->getDbId();
|
||||||
}
|
}
|
||||||
|
|
||||||
Logging::log("finding items >= {$nextStartDT->format("Y-m-d H:i:s.u")}");
|
|
||||||
if ($adjustSched === true) {
|
if ($adjustSched === true) {
|
||||||
$followingSchedItems = CcScheduleQuery::create()
|
$followingSchedItems = CcScheduleQuery::create()
|
||||||
->filterByDBStarts($nextStartDT->format("Y-m-d H:i:s.u"), Criteria::GREATER_EQUAL)
|
->filterByDBStarts($nextStartDT->format("Y-m-d H:i:s.u"), Criteria::GREATER_EQUAL)
|
||||||
|
@ -210,16 +269,10 @@ class Application_Model_Scheduler {
|
||||||
->filterByDbId($excludeIds, Criteria::NOT_IN)
|
->filterByDbId($excludeIds, Criteria::NOT_IN)
|
||||||
->orderByDbStarts()
|
->orderByDbStarts()
|
||||||
->find($this->con);
|
->find($this->con);
|
||||||
|
|
||||||
foreach ($excludeIds as $id) {
|
|
||||||
Logging::log("Excluding id {$id}");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach($schedFiles as $file) {
|
foreach($schedFiles as $file) {
|
||||||
|
|
||||||
Logging::log("adding file with id: ".$file["id"]);
|
|
||||||
|
|
||||||
$endTimeDT = self::findEndTime($nextStartDT, $file['cliplength']);
|
$endTimeDT = self::findEndTime($nextStartDT, $file['cliplength']);
|
||||||
|
|
||||||
//item existed previously and is being moved.
|
//item existed previously and is being moved.
|
||||||
|
@ -230,9 +283,6 @@ class Application_Model_Scheduler {
|
||||||
else {
|
else {
|
||||||
$sched = new CcSchedule();
|
$sched = new CcSchedule();
|
||||||
}
|
}
|
||||||
Logging::log("id {$sched->getDbId()}");
|
|
||||||
Logging::log("start time {$nextStartDT->format("Y-m-d H:i:s.u")}");
|
|
||||||
Logging::log("end time {$endTimeDT->format("Y-m-d H:i:s.u")}");
|
|
||||||
|
|
||||||
$sched->setDbStarts($nextStartDT);
|
$sched->setDbStarts($nextStartDT);
|
||||||
$sched->setDbEnds($endTimeDT);
|
$sched->setDbEnds($endTimeDT);
|
||||||
|
@ -251,9 +301,7 @@ class Application_Model_Scheduler {
|
||||||
if ($adjustSched === true) {
|
if ($adjustSched === true) {
|
||||||
|
|
||||||
//recalculate the start/end times after the inserted items.
|
//recalculate the start/end times after the inserted items.
|
||||||
foreach($followingSchedItems as $item) {
|
foreach ($followingSchedItems as $item) {
|
||||||
|
|
||||||
Logging::log("adjusting iterm {$item->getDbId()}");
|
|
||||||
|
|
||||||
$endTimeDT = self::findEndTime($nextStartDT, $item->getDbClipLength());
|
$endTimeDT = self::findEndTime($nextStartDT, $item->getDbClipLength());
|
||||||
|
|
||||||
|
@ -298,10 +346,9 @@ class Application_Model_Scheduler {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
foreach ($mediaItems as $media) {
|
$this->validateRequest($scheduleItems);
|
||||||
Logging::log("Media Id ".$media["id"]);
|
|
||||||
Logging::log("Type ".$media["type"]);
|
|
||||||
|
|
||||||
|
foreach ($mediaItems as $media) {
|
||||||
$schedFiles = array_merge($schedFiles, $this->retrieveMediaFiles($media["id"], $media["type"]));
|
$schedFiles = array_merge($schedFiles, $this->retrieveMediaFiles($media["id"], $media["type"]));
|
||||||
}
|
}
|
||||||
$this->insertAfter($scheduleItems, $schedFiles, $adjustSched);
|
$this->insertAfter($scheduleItems, $schedFiles, $adjustSched);
|
||||||
|
@ -326,26 +373,10 @@ class Application_Model_Scheduler {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
//checks on whether the item to move after is ok.
|
$this->validateRequest($selectedItems);
|
||||||
Logging::log("Moving after item: {$afterItems[0]["id"]}");
|
$this->validateRequest($afterItems);
|
||||||
$origAfterTs = intval($afterItems[0]["timestamp"]);
|
|
||||||
|
|
||||||
if (intval($afterItems[0]["id"]) === 0) {
|
|
||||||
$afterInstance = CcShowInstancesQuery::create()->findPK($afterItems[0]["instance"], $this->con);
|
$afterInstance = CcShowInstancesQuery::create()->findPK($afterItems[0]["instance"], $this->con);
|
||||||
}
|
|
||||||
else {
|
|
||||||
$after = CcScheduleQuery::create()->findPk($afterItems[0]["id"], $this->con);
|
|
||||||
if (is_null($after)) {
|
|
||||||
throw new OutDatedScheduleException("The schedule you're viewing is out of date!");
|
|
||||||
}
|
|
||||||
$afterInstance = $after->getCcShowInstances($this->con);
|
|
||||||
}
|
|
||||||
|
|
||||||
$currTs = intval($afterInstance->getDbLastScheduled("U")) ? : 0;
|
|
||||||
if ($origAfterTs !== $currTs) {
|
|
||||||
$show = $afterInstance->getCcShow($this->con);
|
|
||||||
throw new OutDatedScheduleException("The show {$show->getDbName()} has been previously updated!");
|
|
||||||
}
|
|
||||||
|
|
||||||
//map show instances to cc_schedule primary keys.
|
//map show instances to cc_schedule primary keys.
|
||||||
$modifiedMap = array();
|
$modifiedMap = array();
|
||||||
|
@ -354,25 +385,9 @@ class Application_Model_Scheduler {
|
||||||
//prepare each of the selected items.
|
//prepare each of the selected items.
|
||||||
for ($i = 0; $i < count($selectedItems); $i++) {
|
for ($i = 0; $i < count($selectedItems); $i++) {
|
||||||
|
|
||||||
Logging::log("Moving item {$selectedItems[$i]["id"]}");
|
|
||||||
|
|
||||||
$origSelTs = intval($selectedItems[$i]["timestamp"]);
|
|
||||||
$selected = CcScheduleQuery::create()->findPk($selectedItems[$i]["id"], $this->con);
|
$selected = CcScheduleQuery::create()->findPk($selectedItems[$i]["id"], $this->con);
|
||||||
if (is_null($selected)) {
|
|
||||||
throw new OutDatedScheduleException("The schedule you're viewing is out of date!");
|
|
||||||
}
|
|
||||||
$selectedInstance = $selected->getCcShowInstances($this->con);
|
$selectedInstance = $selected->getCcShowInstances($this->con);
|
||||||
|
|
||||||
if (is_null($selectedInstance) || is_null($afterInstance)) {
|
|
||||||
throw new OutDatedScheduleException("The schedule you're viewing is out of date!");
|
|
||||||
}
|
|
||||||
|
|
||||||
$currTs = intval($selectedInstance->getDbLastScheduled("U")) ? : 0;
|
|
||||||
if ($origSelTs !== $currTs) {
|
|
||||||
$show = $selectedInstance->getCcShow($this->con);
|
|
||||||
throw new OutDatedScheduleException("The show {$show->getDbName()} has been previously updated!");
|
|
||||||
}
|
|
||||||
|
|
||||||
$data = $this->fileInfo;
|
$data = $this->fileInfo;
|
||||||
$data["id"] = $selected->getDbFileId();
|
$data["id"] = $selected->getDbFileId();
|
||||||
$data["cliplength"] = $selected->getDbClipLength();
|
$data["cliplength"] = $selected->getDbClipLength();
|
||||||
|
@ -418,28 +433,19 @@ class Application_Model_Scheduler {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
|
$this->validateRequest($scheduledItems);
|
||||||
|
|
||||||
$scheduledIds = array();
|
$scheduledIds = array();
|
||||||
foreach ($scheduledItems as $item) {
|
foreach ($scheduledItems as $item) {
|
||||||
$scheduledIds[$item["id"]] = intval($item["timestamp"]);
|
$scheduledIds[] = $item["id"];
|
||||||
}
|
}
|
||||||
|
|
||||||
$removedItems = CcScheduleQuery::create()->findPks(array_keys($scheduledIds));
|
$removedItems = CcScheduleQuery::create()->findPks($scheduledIds);
|
||||||
|
|
||||||
//check to see if the current item is being deleted so we can truncate the record.
|
|
||||||
$currentItem = null;
|
|
||||||
//check to make sure all items selected are up to date
|
//check to make sure all items selected are up to date
|
||||||
foreach ($removedItems as $removedItem) {
|
foreach ($removedItems as $removedItem) {
|
||||||
$ts = $scheduledIds[$removedItem->getDbId()];
|
|
||||||
$instance = $removedItem->getCcShowInstances($this->con);
|
|
||||||
if (is_null($instance)) {
|
|
||||||
throw new OutDatedScheduleException("The schedule you're viewing is out of date!");
|
|
||||||
}
|
|
||||||
$currTs = intval($instance->getDbLastScheduled("U")) ? : 0;
|
|
||||||
|
|
||||||
if ($ts !== $currTs) {
|
$instance = $removedItem->getCcShowInstances($this->con);
|
||||||
$show = $instance->getCcShow($this->con);
|
|
||||||
throw new OutDatedScheduleException("The show {$show->getDbName()} has been previously updated!");
|
|
||||||
}
|
|
||||||
|
|
||||||
//check to truncate the currently playing item instead of deleting it.
|
//check to truncate the currently playing item instead of deleting it.
|
||||||
if ($removedItem->isCurrentItem()) {
|
if ($removedItem->isCurrentItem()) {
|
||||||
|
|
|
@ -1481,7 +1481,7 @@ class Application_Model_Show {
|
||||||
|
|
||||||
$sql = "SELECT starts, ends, record, rebroadcast, instance_id, show_id, name,
|
$sql = "SELECT starts, ends, record, rebroadcast, instance_id, show_id, name,
|
||||||
color, background_color, file_id, cc_show_instances.id AS instance_id,
|
color, background_color, file_id, cc_show_instances.id AS instance_id,
|
||||||
last_scheduled, time_filled
|
created, last_scheduled, time_filled
|
||||||
FROM cc_show_instances
|
FROM cc_show_instances
|
||||||
LEFT JOIN cc_show ON cc_show.id = cc_show_instances.show_id
|
LEFT JOIN cc_show ON cc_show.id = cc_show_instances.show_id
|
||||||
WHERE cc_show_instances.modified_instance = FALSE";
|
WHERE cc_show_instances.modified_instance = FALSE";
|
||||||
|
|
|
@ -275,6 +275,10 @@ class Application_Model_ShowBuilder {
|
||||||
|
|
||||||
if (isset($show["last_scheduled"])) {
|
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"));
|
||||||
|
}
|
||||||
|
|
||||||
//check if any of the shows have a more recent timestamp.
|
//check if any of the shows have a more recent timestamp.
|
||||||
if ($timestamp < intval($dt->format("U"))) {
|
if ($timestamp < intval($dt->format("U"))) {
|
||||||
|
@ -282,7 +286,6 @@ class Application_Model_ShowBuilder {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (count($shows) == 0) {
|
if (count($shows) == 0) {
|
||||||
$outdated = true;
|
$outdated = true;
|
||||||
|
|
|
@ -27,6 +27,10 @@ class Application_Model_User {
|
||||||
return $this->_userInstance->getDbId();
|
return $this->_userInstance->getDbId();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function isGuest() {
|
||||||
|
return $this->getType() == UTYPE_GUEST;
|
||||||
|
}
|
||||||
|
|
||||||
public function isHost($showId) {
|
public function isHost($showId) {
|
||||||
return $this->isUserType(UTYPE_HOST, $showId);
|
return $this->isUserType(UTYPE_HOST, $showId);
|
||||||
}
|
}
|
||||||
|
|
|
@ -141,4 +141,10 @@ class CcShowInstances extends BaseCcShowInstances {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function preInsert(PropelPDO $con = null) {
|
||||||
|
$now = new DateTime("now", new DateTimeZone("UTC"));
|
||||||
|
$this->setDbCreated($now);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
} // CcShowInstances
|
} // CcShowInstances
|
||||||
|
|
|
@ -47,6 +47,7 @@ class CcShowInstancesTableMap extends TableMap {
|
||||||
$this->addForeignKey('INSTANCE_ID', 'DbOriginalShow', 'INTEGER', 'cc_show_instances', 'ID', false, null, null);
|
$this->addForeignKey('INSTANCE_ID', 'DbOriginalShow', 'INTEGER', 'cc_show_instances', 'ID', false, null, null);
|
||||||
$this->addForeignKey('FILE_ID', 'DbRecordedFile', 'INTEGER', 'cc_files', 'ID', false, null, null);
|
$this->addForeignKey('FILE_ID', 'DbRecordedFile', 'INTEGER', 'cc_files', 'ID', false, null, null);
|
||||||
$this->addColumn('TIME_FILLED', 'DbTimeFilled', 'VARCHAR', false, null, '00:00:00');
|
$this->addColumn('TIME_FILLED', 'DbTimeFilled', 'VARCHAR', false, null, '00:00:00');
|
||||||
|
$this->addColumn('CREATED', 'DbCreated', 'TIMESTAMP', true, null, null);
|
||||||
$this->addColumn('LAST_SCHEDULED', 'DbLastScheduled', 'TIMESTAMP', false, null, null);
|
$this->addColumn('LAST_SCHEDULED', 'DbLastScheduled', 'TIMESTAMP', false, null, null);
|
||||||
$this->addColumn('MODIFIED_INSTANCE', 'DbModifiedInstance', 'BOOLEAN', true, null, false);
|
$this->addColumn('MODIFIED_INSTANCE', 'DbModifiedInstance', 'BOOLEAN', true, null, false);
|
||||||
// validators
|
// validators
|
||||||
|
|
|
@ -727,8 +727,6 @@ abstract class BaseCcSchedule extends BaseObject implements Persistent
|
||||||
$v = (int) $v;
|
$v = (int) $v;
|
||||||
}
|
}
|
||||||
|
|
||||||
Logging::log('$v status is '.$v);
|
|
||||||
|
|
||||||
if ($this->playout_status !== $v || $this->isNew()) {
|
if ($this->playout_status !== $v || $this->isNew()) {
|
||||||
$this->playout_status = $v;
|
$this->playout_status = $v;
|
||||||
$this->modifiedColumns[] = CcSchedulePeer::PLAYOUT_STATUS;
|
$this->modifiedColumns[] = CcSchedulePeer::PLAYOUT_STATUS;
|
||||||
|
|
|
@ -81,6 +81,12 @@ abstract class BaseCcShowInstances extends BaseObject implements Persistent
|
||||||
*/
|
*/
|
||||||
protected $time_filled;
|
protected $time_filled;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The value for the created field.
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $created;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The value for the last_scheduled field.
|
* The value for the last_scheduled field.
|
||||||
* @var string
|
* @var string
|
||||||
|
@ -293,6 +299,39 @@ abstract class BaseCcShowInstances extends BaseObject implements Persistent
|
||||||
return $this->time_filled;
|
return $this->time_filled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the [optionally formatted] temporal [created] column value.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @param string $format The date/time format string (either date()-style or strftime()-style).
|
||||||
|
* If format is NULL, then the raw DateTime object will be returned.
|
||||||
|
* @return mixed Formatted date/time value as string or DateTime object (if format is NULL), NULL if column is NULL
|
||||||
|
* @throws PropelException - if unable to parse/validate the date/time value.
|
||||||
|
*/
|
||||||
|
public function getDbCreated($format = 'Y-m-d H:i:s')
|
||||||
|
{
|
||||||
|
if ($this->created === null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
try {
|
||||||
|
$dt = new DateTime($this->created);
|
||||||
|
} catch (Exception $x) {
|
||||||
|
throw new PropelException("Internally stored date/time/timestamp value could not be converted to DateTime: " . var_export($this->created, true), $x);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($format === null) {
|
||||||
|
// Because propel.useDateTimeClass is TRUE, we return a DateTime object.
|
||||||
|
return $dt;
|
||||||
|
} elseif (strpos($format, '%') !== false) {
|
||||||
|
return strftime($format, $dt->format('U'));
|
||||||
|
} else {
|
||||||
|
return $dt->format($format);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the [optionally formatted] temporal [last_scheduled] column value.
|
* Get the [optionally formatted] temporal [last_scheduled] column value.
|
||||||
*
|
*
|
||||||
|
@ -586,6 +625,55 @@ abstract class BaseCcShowInstances extends BaseObject implements Persistent
|
||||||
return $this;
|
return $this;
|
||||||
} // setDbTimeFilled()
|
} // setDbTimeFilled()
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the value of [created] column to a normalized version of the date/time value specified.
|
||||||
|
*
|
||||||
|
* @param mixed $v string, integer (timestamp), or DateTime value. Empty string will
|
||||||
|
* be treated as NULL for temporal objects.
|
||||||
|
* @return CcShowInstances The current object (for fluent API support)
|
||||||
|
*/
|
||||||
|
public function setDbCreated($v)
|
||||||
|
{
|
||||||
|
// we treat '' as NULL for temporal objects because DateTime('') == DateTime('now')
|
||||||
|
// -- which is unexpected, to say the least.
|
||||||
|
if ($v === null || $v === '') {
|
||||||
|
$dt = null;
|
||||||
|
} elseif ($v instanceof DateTime) {
|
||||||
|
$dt = $v;
|
||||||
|
} else {
|
||||||
|
// some string/numeric value passed; we normalize that so that we can
|
||||||
|
// validate it.
|
||||||
|
try {
|
||||||
|
if (is_numeric($v)) { // if it's a unix timestamp
|
||||||
|
$dt = new DateTime('@'.$v, new DateTimeZone('UTC'));
|
||||||
|
// We have to explicitly specify and then change the time zone because of a
|
||||||
|
// DateTime bug: http://bugs.php.net/bug.php?id=43003
|
||||||
|
$dt->setTimeZone(new DateTimeZone(date_default_timezone_get()));
|
||||||
|
} else {
|
||||||
|
$dt = new DateTime($v);
|
||||||
|
}
|
||||||
|
} catch (Exception $x) {
|
||||||
|
throw new PropelException('Error parsing date/time value: ' . var_export($v, true), $x);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( $this->created !== null || $dt !== null ) {
|
||||||
|
// (nested ifs are a little easier to read in this case)
|
||||||
|
|
||||||
|
$currNorm = ($this->created !== null && $tmpDt = new DateTime($this->created)) ? $tmpDt->format('Y-m-d\\TH:i:sO') : null;
|
||||||
|
$newNorm = ($dt !== null) ? $dt->format('Y-m-d\\TH:i:sO') : null;
|
||||||
|
|
||||||
|
if ( ($currNorm !== $newNorm) // normalized values don't match
|
||||||
|
)
|
||||||
|
{
|
||||||
|
$this->created = ($dt ? $dt->format('Y-m-d\\TH:i:sO') : null);
|
||||||
|
$this->modifiedColumns[] = CcShowInstancesPeer::CREATED;
|
||||||
|
}
|
||||||
|
} // if either are not null
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
} // setDbCreated()
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the value of [last_scheduled] column to a normalized version of the date/time value specified.
|
* Sets the value of [last_scheduled] column to a normalized version of the date/time value specified.
|
||||||
*
|
*
|
||||||
|
@ -712,8 +800,9 @@ abstract class BaseCcShowInstances extends BaseObject implements Persistent
|
||||||
$this->instance_id = ($row[$startcol + 6] !== null) ? (int) $row[$startcol + 6] : null;
|
$this->instance_id = ($row[$startcol + 6] !== null) ? (int) $row[$startcol + 6] : null;
|
||||||
$this->file_id = ($row[$startcol + 7] !== null) ? (int) $row[$startcol + 7] : null;
|
$this->file_id = ($row[$startcol + 7] !== null) ? (int) $row[$startcol + 7] : null;
|
||||||
$this->time_filled = ($row[$startcol + 8] !== null) ? (string) $row[$startcol + 8] : null;
|
$this->time_filled = ($row[$startcol + 8] !== null) ? (string) $row[$startcol + 8] : null;
|
||||||
$this->last_scheduled = ($row[$startcol + 9] !== null) ? (string) $row[$startcol + 9] : null;
|
$this->created = ($row[$startcol + 9] !== null) ? (string) $row[$startcol + 9] : null;
|
||||||
$this->modified_instance = ($row[$startcol + 10] !== null) ? (boolean) $row[$startcol + 10] : null;
|
$this->last_scheduled = ($row[$startcol + 10] !== null) ? (string) $row[$startcol + 10] : null;
|
||||||
|
$this->modified_instance = ($row[$startcol + 11] !== null) ? (boolean) $row[$startcol + 11] : null;
|
||||||
$this->resetModified();
|
$this->resetModified();
|
||||||
|
|
||||||
$this->setNew(false);
|
$this->setNew(false);
|
||||||
|
@ -722,7 +811,7 @@ abstract class BaseCcShowInstances extends BaseObject implements Persistent
|
||||||
$this->ensureConsistency();
|
$this->ensureConsistency();
|
||||||
}
|
}
|
||||||
|
|
||||||
return $startcol + 11; // 11 = CcShowInstancesPeer::NUM_COLUMNS - CcShowInstancesPeer::NUM_LAZY_LOAD_COLUMNS).
|
return $startcol + 12; // 12 = CcShowInstancesPeer::NUM_COLUMNS - CcShowInstancesPeer::NUM_LAZY_LOAD_COLUMNS).
|
||||||
|
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
throw new PropelException("Error populating CcShowInstances object", $e);
|
throw new PropelException("Error populating CcShowInstances object", $e);
|
||||||
|
@ -1147,9 +1236,12 @@ abstract class BaseCcShowInstances extends BaseObject implements Persistent
|
||||||
return $this->getDbTimeFilled();
|
return $this->getDbTimeFilled();
|
||||||
break;
|
break;
|
||||||
case 9:
|
case 9:
|
||||||
return $this->getDbLastScheduled();
|
return $this->getDbCreated();
|
||||||
break;
|
break;
|
||||||
case 10:
|
case 10:
|
||||||
|
return $this->getDbLastScheduled();
|
||||||
|
break;
|
||||||
|
case 11:
|
||||||
return $this->getDbModifiedInstance();
|
return $this->getDbModifiedInstance();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -1185,8 +1277,9 @@ abstract class BaseCcShowInstances extends BaseObject implements Persistent
|
||||||
$keys[6] => $this->getDbOriginalShow(),
|
$keys[6] => $this->getDbOriginalShow(),
|
||||||
$keys[7] => $this->getDbRecordedFile(),
|
$keys[7] => $this->getDbRecordedFile(),
|
||||||
$keys[8] => $this->getDbTimeFilled(),
|
$keys[8] => $this->getDbTimeFilled(),
|
||||||
$keys[9] => $this->getDbLastScheduled(),
|
$keys[9] => $this->getDbCreated(),
|
||||||
$keys[10] => $this->getDbModifiedInstance(),
|
$keys[10] => $this->getDbLastScheduled(),
|
||||||
|
$keys[11] => $this->getDbModifiedInstance(),
|
||||||
);
|
);
|
||||||
if ($includeForeignObjects) {
|
if ($includeForeignObjects) {
|
||||||
if (null !== $this->aCcShow) {
|
if (null !== $this->aCcShow) {
|
||||||
|
@ -1257,9 +1350,12 @@ abstract class BaseCcShowInstances extends BaseObject implements Persistent
|
||||||
$this->setDbTimeFilled($value);
|
$this->setDbTimeFilled($value);
|
||||||
break;
|
break;
|
||||||
case 9:
|
case 9:
|
||||||
$this->setDbLastScheduled($value);
|
$this->setDbCreated($value);
|
||||||
break;
|
break;
|
||||||
case 10:
|
case 10:
|
||||||
|
$this->setDbLastScheduled($value);
|
||||||
|
break;
|
||||||
|
case 11:
|
||||||
$this->setDbModifiedInstance($value);
|
$this->setDbModifiedInstance($value);
|
||||||
break;
|
break;
|
||||||
} // switch()
|
} // switch()
|
||||||
|
@ -1295,8 +1391,9 @@ abstract class BaseCcShowInstances extends BaseObject implements Persistent
|
||||||
if (array_key_exists($keys[6], $arr)) $this->setDbOriginalShow($arr[$keys[6]]);
|
if (array_key_exists($keys[6], $arr)) $this->setDbOriginalShow($arr[$keys[6]]);
|
||||||
if (array_key_exists($keys[7], $arr)) $this->setDbRecordedFile($arr[$keys[7]]);
|
if (array_key_exists($keys[7], $arr)) $this->setDbRecordedFile($arr[$keys[7]]);
|
||||||
if (array_key_exists($keys[8], $arr)) $this->setDbTimeFilled($arr[$keys[8]]);
|
if (array_key_exists($keys[8], $arr)) $this->setDbTimeFilled($arr[$keys[8]]);
|
||||||
if (array_key_exists($keys[9], $arr)) $this->setDbLastScheduled($arr[$keys[9]]);
|
if (array_key_exists($keys[9], $arr)) $this->setDbCreated($arr[$keys[9]]);
|
||||||
if (array_key_exists($keys[10], $arr)) $this->setDbModifiedInstance($arr[$keys[10]]);
|
if (array_key_exists($keys[10], $arr)) $this->setDbLastScheduled($arr[$keys[10]]);
|
||||||
|
if (array_key_exists($keys[11], $arr)) $this->setDbModifiedInstance($arr[$keys[11]]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1317,6 +1414,7 @@ abstract class BaseCcShowInstances extends BaseObject implements Persistent
|
||||||
if ($this->isColumnModified(CcShowInstancesPeer::INSTANCE_ID)) $criteria->add(CcShowInstancesPeer::INSTANCE_ID, $this->instance_id);
|
if ($this->isColumnModified(CcShowInstancesPeer::INSTANCE_ID)) $criteria->add(CcShowInstancesPeer::INSTANCE_ID, $this->instance_id);
|
||||||
if ($this->isColumnModified(CcShowInstancesPeer::FILE_ID)) $criteria->add(CcShowInstancesPeer::FILE_ID, $this->file_id);
|
if ($this->isColumnModified(CcShowInstancesPeer::FILE_ID)) $criteria->add(CcShowInstancesPeer::FILE_ID, $this->file_id);
|
||||||
if ($this->isColumnModified(CcShowInstancesPeer::TIME_FILLED)) $criteria->add(CcShowInstancesPeer::TIME_FILLED, $this->time_filled);
|
if ($this->isColumnModified(CcShowInstancesPeer::TIME_FILLED)) $criteria->add(CcShowInstancesPeer::TIME_FILLED, $this->time_filled);
|
||||||
|
if ($this->isColumnModified(CcShowInstancesPeer::CREATED)) $criteria->add(CcShowInstancesPeer::CREATED, $this->created);
|
||||||
if ($this->isColumnModified(CcShowInstancesPeer::LAST_SCHEDULED)) $criteria->add(CcShowInstancesPeer::LAST_SCHEDULED, $this->last_scheduled);
|
if ($this->isColumnModified(CcShowInstancesPeer::LAST_SCHEDULED)) $criteria->add(CcShowInstancesPeer::LAST_SCHEDULED, $this->last_scheduled);
|
||||||
if ($this->isColumnModified(CcShowInstancesPeer::MODIFIED_INSTANCE)) $criteria->add(CcShowInstancesPeer::MODIFIED_INSTANCE, $this->modified_instance);
|
if ($this->isColumnModified(CcShowInstancesPeer::MODIFIED_INSTANCE)) $criteria->add(CcShowInstancesPeer::MODIFIED_INSTANCE, $this->modified_instance);
|
||||||
|
|
||||||
|
@ -1388,6 +1486,7 @@ abstract class BaseCcShowInstances extends BaseObject implements Persistent
|
||||||
$copyObj->setDbOriginalShow($this->instance_id);
|
$copyObj->setDbOriginalShow($this->instance_id);
|
||||||
$copyObj->setDbRecordedFile($this->file_id);
|
$copyObj->setDbRecordedFile($this->file_id);
|
||||||
$copyObj->setDbTimeFilled($this->time_filled);
|
$copyObj->setDbTimeFilled($this->time_filled);
|
||||||
|
$copyObj->setDbCreated($this->created);
|
||||||
$copyObj->setDbLastScheduled($this->last_scheduled);
|
$copyObj->setDbLastScheduled($this->last_scheduled);
|
||||||
$copyObj->setDbModifiedInstance($this->modified_instance);
|
$copyObj->setDbModifiedInstance($this->modified_instance);
|
||||||
|
|
||||||
|
@ -1907,6 +2006,7 @@ abstract class BaseCcShowInstances extends BaseObject implements Persistent
|
||||||
$this->instance_id = null;
|
$this->instance_id = null;
|
||||||
$this->file_id = null;
|
$this->file_id = null;
|
||||||
$this->time_filled = null;
|
$this->time_filled = null;
|
||||||
|
$this->created = null;
|
||||||
$this->last_scheduled = null;
|
$this->last_scheduled = null;
|
||||||
$this->modified_instance = null;
|
$this->modified_instance = null;
|
||||||
$this->alreadyInSave = false;
|
$this->alreadyInSave = false;
|
||||||
|
|
|
@ -26,7 +26,7 @@ abstract class BaseCcShowInstancesPeer {
|
||||||
const TM_CLASS = 'CcShowInstancesTableMap';
|
const TM_CLASS = 'CcShowInstancesTableMap';
|
||||||
|
|
||||||
/** The total number of columns. */
|
/** The total number of columns. */
|
||||||
const NUM_COLUMNS = 11;
|
const NUM_COLUMNS = 12;
|
||||||
|
|
||||||
/** The number of lazy-loaded columns. */
|
/** The number of lazy-loaded columns. */
|
||||||
const NUM_LAZY_LOAD_COLUMNS = 0;
|
const NUM_LAZY_LOAD_COLUMNS = 0;
|
||||||
|
@ -58,6 +58,9 @@ abstract class BaseCcShowInstancesPeer {
|
||||||
/** the column name for the TIME_FILLED field */
|
/** the column name for the TIME_FILLED field */
|
||||||
const TIME_FILLED = 'cc_show_instances.TIME_FILLED';
|
const TIME_FILLED = 'cc_show_instances.TIME_FILLED';
|
||||||
|
|
||||||
|
/** the column name for the CREATED field */
|
||||||
|
const CREATED = 'cc_show_instances.CREATED';
|
||||||
|
|
||||||
/** the column name for the LAST_SCHEDULED field */
|
/** the column name for the LAST_SCHEDULED field */
|
||||||
const LAST_SCHEDULED = 'cc_show_instances.LAST_SCHEDULED';
|
const LAST_SCHEDULED = 'cc_show_instances.LAST_SCHEDULED';
|
||||||
|
|
||||||
|
@ -80,12 +83,12 @@ abstract class BaseCcShowInstancesPeer {
|
||||||
* e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id'
|
* e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id'
|
||||||
*/
|
*/
|
||||||
private static $fieldNames = array (
|
private static $fieldNames = array (
|
||||||
BasePeer::TYPE_PHPNAME => array ('DbId', 'DbStarts', 'DbEnds', 'DbShowId', 'DbRecord', 'DbRebroadcast', 'DbOriginalShow', 'DbRecordedFile', 'DbTimeFilled', 'DbLastScheduled', 'DbModifiedInstance', ),
|
BasePeer::TYPE_PHPNAME => array ('DbId', 'DbStarts', 'DbEnds', 'DbShowId', 'DbRecord', 'DbRebroadcast', 'DbOriginalShow', 'DbRecordedFile', 'DbTimeFilled', 'DbCreated', 'DbLastScheduled', 'DbModifiedInstance', ),
|
||||||
BasePeer::TYPE_STUDLYPHPNAME => array ('dbId', 'dbStarts', 'dbEnds', 'dbShowId', 'dbRecord', 'dbRebroadcast', 'dbOriginalShow', 'dbRecordedFile', 'dbTimeFilled', 'dbLastScheduled', 'dbModifiedInstance', ),
|
BasePeer::TYPE_STUDLYPHPNAME => array ('dbId', 'dbStarts', 'dbEnds', 'dbShowId', 'dbRecord', 'dbRebroadcast', 'dbOriginalShow', 'dbRecordedFile', 'dbTimeFilled', 'dbCreated', 'dbLastScheduled', 'dbModifiedInstance', ),
|
||||||
BasePeer::TYPE_COLNAME => array (self::ID, self::STARTS, self::ENDS, self::SHOW_ID, self::RECORD, self::REBROADCAST, self::INSTANCE_ID, self::FILE_ID, self::TIME_FILLED, self::LAST_SCHEDULED, self::MODIFIED_INSTANCE, ),
|
BasePeer::TYPE_COLNAME => array (self::ID, self::STARTS, self::ENDS, self::SHOW_ID, self::RECORD, self::REBROADCAST, self::INSTANCE_ID, self::FILE_ID, self::TIME_FILLED, self::CREATED, self::LAST_SCHEDULED, self::MODIFIED_INSTANCE, ),
|
||||||
BasePeer::TYPE_RAW_COLNAME => array ('ID', 'STARTS', 'ENDS', 'SHOW_ID', 'RECORD', 'REBROADCAST', 'INSTANCE_ID', 'FILE_ID', 'TIME_FILLED', 'LAST_SCHEDULED', 'MODIFIED_INSTANCE', ),
|
BasePeer::TYPE_RAW_COLNAME => array ('ID', 'STARTS', 'ENDS', 'SHOW_ID', 'RECORD', 'REBROADCAST', 'INSTANCE_ID', 'FILE_ID', 'TIME_FILLED', 'CREATED', 'LAST_SCHEDULED', 'MODIFIED_INSTANCE', ),
|
||||||
BasePeer::TYPE_FIELDNAME => array ('id', 'starts', 'ends', 'show_id', 'record', 'rebroadcast', 'instance_id', 'file_id', 'time_filled', 'last_scheduled', 'modified_instance', ),
|
BasePeer::TYPE_FIELDNAME => array ('id', 'starts', 'ends', 'show_id', 'record', 'rebroadcast', 'instance_id', 'file_id', 'time_filled', 'created', 'last_scheduled', 'modified_instance', ),
|
||||||
BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, )
|
BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, )
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -95,12 +98,12 @@ abstract class BaseCcShowInstancesPeer {
|
||||||
* e.g. self::$fieldNames[BasePeer::TYPE_PHPNAME]['Id'] = 0
|
* e.g. self::$fieldNames[BasePeer::TYPE_PHPNAME]['Id'] = 0
|
||||||
*/
|
*/
|
||||||
private static $fieldKeys = array (
|
private static $fieldKeys = array (
|
||||||
BasePeer::TYPE_PHPNAME => array ('DbId' => 0, 'DbStarts' => 1, 'DbEnds' => 2, 'DbShowId' => 3, 'DbRecord' => 4, 'DbRebroadcast' => 5, 'DbOriginalShow' => 6, 'DbRecordedFile' => 7, 'DbTimeFilled' => 8, 'DbLastScheduled' => 9, 'DbModifiedInstance' => 10, ),
|
BasePeer::TYPE_PHPNAME => array ('DbId' => 0, 'DbStarts' => 1, 'DbEnds' => 2, 'DbShowId' => 3, 'DbRecord' => 4, 'DbRebroadcast' => 5, 'DbOriginalShow' => 6, 'DbRecordedFile' => 7, 'DbTimeFilled' => 8, 'DbCreated' => 9, 'DbLastScheduled' => 10, 'DbModifiedInstance' => 11, ),
|
||||||
BasePeer::TYPE_STUDLYPHPNAME => array ('dbId' => 0, 'dbStarts' => 1, 'dbEnds' => 2, 'dbShowId' => 3, 'dbRecord' => 4, 'dbRebroadcast' => 5, 'dbOriginalShow' => 6, 'dbRecordedFile' => 7, 'dbTimeFilled' => 8, 'dbLastScheduled' => 9, 'dbModifiedInstance' => 10, ),
|
BasePeer::TYPE_STUDLYPHPNAME => array ('dbId' => 0, 'dbStarts' => 1, 'dbEnds' => 2, 'dbShowId' => 3, 'dbRecord' => 4, 'dbRebroadcast' => 5, 'dbOriginalShow' => 6, 'dbRecordedFile' => 7, 'dbTimeFilled' => 8, 'dbCreated' => 9, 'dbLastScheduled' => 10, 'dbModifiedInstance' => 11, ),
|
||||||
BasePeer::TYPE_COLNAME => array (self::ID => 0, self::STARTS => 1, self::ENDS => 2, self::SHOW_ID => 3, self::RECORD => 4, self::REBROADCAST => 5, self::INSTANCE_ID => 6, self::FILE_ID => 7, self::TIME_FILLED => 8, self::LAST_SCHEDULED => 9, self::MODIFIED_INSTANCE => 10, ),
|
BasePeer::TYPE_COLNAME => array (self::ID => 0, self::STARTS => 1, self::ENDS => 2, self::SHOW_ID => 3, self::RECORD => 4, self::REBROADCAST => 5, self::INSTANCE_ID => 6, self::FILE_ID => 7, self::TIME_FILLED => 8, self::CREATED => 9, self::LAST_SCHEDULED => 10, self::MODIFIED_INSTANCE => 11, ),
|
||||||
BasePeer::TYPE_RAW_COLNAME => array ('ID' => 0, 'STARTS' => 1, 'ENDS' => 2, 'SHOW_ID' => 3, 'RECORD' => 4, 'REBROADCAST' => 5, 'INSTANCE_ID' => 6, 'FILE_ID' => 7, 'TIME_FILLED' => 8, 'LAST_SCHEDULED' => 9, 'MODIFIED_INSTANCE' => 10, ),
|
BasePeer::TYPE_RAW_COLNAME => array ('ID' => 0, 'STARTS' => 1, 'ENDS' => 2, 'SHOW_ID' => 3, 'RECORD' => 4, 'REBROADCAST' => 5, 'INSTANCE_ID' => 6, 'FILE_ID' => 7, 'TIME_FILLED' => 8, 'CREATED' => 9, 'LAST_SCHEDULED' => 10, 'MODIFIED_INSTANCE' => 11, ),
|
||||||
BasePeer::TYPE_FIELDNAME => array ('id' => 0, 'starts' => 1, 'ends' => 2, 'show_id' => 3, 'record' => 4, 'rebroadcast' => 5, 'instance_id' => 6, 'file_id' => 7, 'time_filled' => 8, 'last_scheduled' => 9, 'modified_instance' => 10, ),
|
BasePeer::TYPE_FIELDNAME => array ('id' => 0, 'starts' => 1, 'ends' => 2, 'show_id' => 3, 'record' => 4, 'rebroadcast' => 5, 'instance_id' => 6, 'file_id' => 7, 'time_filled' => 8, 'created' => 9, 'last_scheduled' => 10, 'modified_instance' => 11, ),
|
||||||
BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, )
|
BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, )
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -181,6 +184,7 @@ abstract class BaseCcShowInstancesPeer {
|
||||||
$criteria->addSelectColumn(CcShowInstancesPeer::INSTANCE_ID);
|
$criteria->addSelectColumn(CcShowInstancesPeer::INSTANCE_ID);
|
||||||
$criteria->addSelectColumn(CcShowInstancesPeer::FILE_ID);
|
$criteria->addSelectColumn(CcShowInstancesPeer::FILE_ID);
|
||||||
$criteria->addSelectColumn(CcShowInstancesPeer::TIME_FILLED);
|
$criteria->addSelectColumn(CcShowInstancesPeer::TIME_FILLED);
|
||||||
|
$criteria->addSelectColumn(CcShowInstancesPeer::CREATED);
|
||||||
$criteria->addSelectColumn(CcShowInstancesPeer::LAST_SCHEDULED);
|
$criteria->addSelectColumn(CcShowInstancesPeer::LAST_SCHEDULED);
|
||||||
$criteria->addSelectColumn(CcShowInstancesPeer::MODIFIED_INSTANCE);
|
$criteria->addSelectColumn(CcShowInstancesPeer::MODIFIED_INSTANCE);
|
||||||
} else {
|
} else {
|
||||||
|
@ -193,6 +197,7 @@ abstract class BaseCcShowInstancesPeer {
|
||||||
$criteria->addSelectColumn($alias . '.INSTANCE_ID');
|
$criteria->addSelectColumn($alias . '.INSTANCE_ID');
|
||||||
$criteria->addSelectColumn($alias . '.FILE_ID');
|
$criteria->addSelectColumn($alias . '.FILE_ID');
|
||||||
$criteria->addSelectColumn($alias . '.TIME_FILLED');
|
$criteria->addSelectColumn($alias . '.TIME_FILLED');
|
||||||
|
$criteria->addSelectColumn($alias . '.CREATED');
|
||||||
$criteria->addSelectColumn($alias . '.LAST_SCHEDULED');
|
$criteria->addSelectColumn($alias . '.LAST_SCHEDULED');
|
||||||
$criteria->addSelectColumn($alias . '.MODIFIED_INSTANCE');
|
$criteria->addSelectColumn($alias . '.MODIFIED_INSTANCE');
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
* @method CcShowInstancesQuery orderByDbOriginalShow($order = Criteria::ASC) Order by the instance_id column
|
* @method CcShowInstancesQuery orderByDbOriginalShow($order = Criteria::ASC) Order by the instance_id column
|
||||||
* @method CcShowInstancesQuery orderByDbRecordedFile($order = Criteria::ASC) Order by the file_id column
|
* @method CcShowInstancesQuery orderByDbRecordedFile($order = Criteria::ASC) Order by the file_id column
|
||||||
* @method CcShowInstancesQuery orderByDbTimeFilled($order = Criteria::ASC) Order by the time_filled column
|
* @method CcShowInstancesQuery orderByDbTimeFilled($order = Criteria::ASC) Order by the time_filled column
|
||||||
|
* @method CcShowInstancesQuery orderByDbCreated($order = Criteria::ASC) Order by the created column
|
||||||
* @method CcShowInstancesQuery orderByDbLastScheduled($order = Criteria::ASC) Order by the last_scheduled column
|
* @method CcShowInstancesQuery orderByDbLastScheduled($order = Criteria::ASC) Order by the last_scheduled column
|
||||||
* @method CcShowInstancesQuery orderByDbModifiedInstance($order = Criteria::ASC) Order by the modified_instance column
|
* @method CcShowInstancesQuery orderByDbModifiedInstance($order = Criteria::ASC) Order by the modified_instance column
|
||||||
*
|
*
|
||||||
|
@ -27,6 +28,7 @@
|
||||||
* @method CcShowInstancesQuery groupByDbOriginalShow() Group by the instance_id column
|
* @method CcShowInstancesQuery groupByDbOriginalShow() Group by the instance_id column
|
||||||
* @method CcShowInstancesQuery groupByDbRecordedFile() Group by the file_id column
|
* @method CcShowInstancesQuery groupByDbRecordedFile() Group by the file_id column
|
||||||
* @method CcShowInstancesQuery groupByDbTimeFilled() Group by the time_filled column
|
* @method CcShowInstancesQuery groupByDbTimeFilled() Group by the time_filled column
|
||||||
|
* @method CcShowInstancesQuery groupByDbCreated() Group by the created column
|
||||||
* @method CcShowInstancesQuery groupByDbLastScheduled() Group by the last_scheduled column
|
* @method CcShowInstancesQuery groupByDbLastScheduled() Group by the last_scheduled column
|
||||||
* @method CcShowInstancesQuery groupByDbModifiedInstance() Group by the modified_instance column
|
* @method CcShowInstancesQuery groupByDbModifiedInstance() Group by the modified_instance column
|
||||||
*
|
*
|
||||||
|
@ -66,6 +68,7 @@
|
||||||
* @method CcShowInstances findOneByDbOriginalShow(int $instance_id) Return the first CcShowInstances filtered by the instance_id column
|
* @method CcShowInstances findOneByDbOriginalShow(int $instance_id) Return the first CcShowInstances filtered by the instance_id column
|
||||||
* @method CcShowInstances findOneByDbRecordedFile(int $file_id) Return the first CcShowInstances filtered by the file_id column
|
* @method CcShowInstances findOneByDbRecordedFile(int $file_id) Return the first CcShowInstances filtered by the file_id column
|
||||||
* @method CcShowInstances findOneByDbTimeFilled(string $time_filled) Return the first CcShowInstances filtered by the time_filled column
|
* @method CcShowInstances findOneByDbTimeFilled(string $time_filled) Return the first CcShowInstances filtered by the time_filled column
|
||||||
|
* @method CcShowInstances findOneByDbCreated(string $created) Return the first CcShowInstances filtered by the created column
|
||||||
* @method CcShowInstances findOneByDbLastScheduled(string $last_scheduled) Return the first CcShowInstances filtered by the last_scheduled column
|
* @method CcShowInstances findOneByDbLastScheduled(string $last_scheduled) Return the first CcShowInstances filtered by the last_scheduled column
|
||||||
* @method CcShowInstances findOneByDbModifiedInstance(boolean $modified_instance) Return the first CcShowInstances filtered by the modified_instance column
|
* @method CcShowInstances findOneByDbModifiedInstance(boolean $modified_instance) Return the first CcShowInstances filtered by the modified_instance column
|
||||||
*
|
*
|
||||||
|
@ -78,6 +81,7 @@
|
||||||
* @method array findByDbOriginalShow(int $instance_id) Return CcShowInstances objects filtered by the instance_id column
|
* @method array findByDbOriginalShow(int $instance_id) Return CcShowInstances objects filtered by the instance_id column
|
||||||
* @method array findByDbRecordedFile(int $file_id) Return CcShowInstances objects filtered by the file_id column
|
* @method array findByDbRecordedFile(int $file_id) Return CcShowInstances objects filtered by the file_id column
|
||||||
* @method array findByDbTimeFilled(string $time_filled) Return CcShowInstances objects filtered by the time_filled column
|
* @method array findByDbTimeFilled(string $time_filled) Return CcShowInstances objects filtered by the time_filled column
|
||||||
|
* @method array findByDbCreated(string $created) Return CcShowInstances objects filtered by the created column
|
||||||
* @method array findByDbLastScheduled(string $last_scheduled) Return CcShowInstances objects filtered by the last_scheduled column
|
* @method array findByDbLastScheduled(string $last_scheduled) Return CcShowInstances objects filtered by the last_scheduled column
|
||||||
* @method array findByDbModifiedInstance(boolean $modified_instance) Return CcShowInstances objects filtered by the modified_instance column
|
* @method array findByDbModifiedInstance(boolean $modified_instance) Return CcShowInstances objects filtered by the modified_instance column
|
||||||
*
|
*
|
||||||
|
@ -445,6 +449,37 @@ abstract class BaseCcShowInstancesQuery extends ModelCriteria
|
||||||
return $this->addUsingAlias(CcShowInstancesPeer::TIME_FILLED, $dbTimeFilled, $comparison);
|
return $this->addUsingAlias(CcShowInstancesPeer::TIME_FILLED, $dbTimeFilled, $comparison);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query on the created column
|
||||||
|
*
|
||||||
|
* @param string|array $dbCreated The value to use as filter.
|
||||||
|
* Accepts an associative array('min' => $minValue, 'max' => $maxValue)
|
||||||
|
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||||
|
*
|
||||||
|
* @return CcShowInstancesQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByDbCreated($dbCreated = null, $comparison = null)
|
||||||
|
{
|
||||||
|
if (is_array($dbCreated)) {
|
||||||
|
$useMinMax = false;
|
||||||
|
if (isset($dbCreated['min'])) {
|
||||||
|
$this->addUsingAlias(CcShowInstancesPeer::CREATED, $dbCreated['min'], Criteria::GREATER_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if (isset($dbCreated['max'])) {
|
||||||
|
$this->addUsingAlias(CcShowInstancesPeer::CREATED, $dbCreated['max'], Criteria::LESS_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if ($useMinMax) {
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
if (null === $comparison) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $this->addUsingAlias(CcShowInstancesPeer::CREATED, $dbCreated, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Filter the query on the last_scheduled column
|
* Filter the query on the last_scheduled column
|
||||||
*
|
*
|
||||||
|
|
|
@ -72,7 +72,7 @@
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
</dd>
|
</dd>
|
||||||
<dt id="master_dj_connection_url-label">
|
<dt id="master_dj_connection_url-label">
|
||||||
<label class="optional" for="master_dj_connection_url">Master DJ Connection URL:
|
<label class="optional" for="master_dj_connection_url">Master Source Connection URL:
|
||||||
</label>
|
</label>
|
||||||
</dt>
|
</dt>
|
||||||
<dd id="master_dj_connection_url-element">
|
<dd id="master_dj_connection_url-element">
|
||||||
|
@ -108,7 +108,7 @@
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
</dd>
|
</dd>
|
||||||
<dt id="live_dj_connection_url-label">
|
<dt id="live_dj_connection_url-label">
|
||||||
<label class="optional" for="live_dj_connection_url">Live DJ Connection URL:
|
<label class="optional" for="live_dj_connection_url">Show Source Connection URL:
|
||||||
</label>
|
</label>
|
||||||
</dt>
|
</dt>
|
||||||
<dd id="live_dj_connection_url-element">
|
<dd id="live_dj_connection_url-element">
|
||||||
|
|
|
@ -5,7 +5,6 @@
|
||||||
<?php echo $this->element->getElement('sb_date_end') ?>
|
<?php echo $this->element->getElement('sb_date_end') ?>
|
||||||
<?php echo $this->element->getElement('sb_time_end') ?>
|
<?php echo $this->element->getElement('sb_time_end') ?>
|
||||||
<input type="button" id="sb_submit" class="ui-button ui-state-default" value="GO"></input>
|
<input type="button" id="sb_submit" class="ui-button ui-state-default" value="GO"></input>
|
||||||
<input type="button" id="sb_edit" class="ui-button ui-state-default sb-edit" value="Add Files"></input>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="sb-advanced-options">
|
<div class="sb-advanced-options">
|
||||||
<fieldset class="padded display_field toggle push-down-8 closed">
|
<fieldset class="padded display_field toggle push-down-8 closed">
|
||||||
|
|
|
@ -1,2 +1,8 @@
|
||||||
|
<?php if ($this->toggleLib): ?>
|
||||||
|
<div id="sb_edit" class="ui-state-default" title="open the library to schedule files.">
|
||||||
|
<span class="ui-icon ui-icon-arrowthick-1-nw"></span>
|
||||||
|
</div>
|
||||||
|
<?php endif; ?>
|
||||||
|
|
||||||
<?php echo $this->sb_form; ?>
|
<?php echo $this->sb_form; ?>
|
||||||
<table id="show_builder_table" cellpadding="0" cellspacing="0" class="datatable"></table>
|
<table id="show_builder_table" cellpadding="0" cellspacing="0" class="datatable"></table>
|
||||||
|
|
|
@ -161,6 +161,7 @@
|
||||||
<column name="instance_id" phpName="DbOriginalShow" type="INTEGER" required="false"/>
|
<column name="instance_id" phpName="DbOriginalShow" type="INTEGER" required="false"/>
|
||||||
<column name="file_id" phpName="DbRecordedFile" type="INTEGER" required="false"/>
|
<column name="file_id" phpName="DbRecordedFile" type="INTEGER" required="false"/>
|
||||||
<column name="time_filled" phpName="DbTimeFilled" type="VARCHAR" sqlType="interval" defaultValue="00:00:00" />
|
<column name="time_filled" phpName="DbTimeFilled" type="VARCHAR" sqlType="interval" defaultValue="00:00:00" />
|
||||||
|
<column name="created" phpName="DbCreated" type="TIMESTAMP" required="true"/>
|
||||||
<column name="last_scheduled" phpName="DbLastScheduled" type="TIMESTAMP" required="false"/>
|
<column name="last_scheduled" phpName="DbLastScheduled" type="TIMESTAMP" required="false"/>
|
||||||
<!-- The purpose of the modified_instance column is to mark a show instance that was
|
<!-- The purpose of the modified_instance column is to mark a show instance that was
|
||||||
deleted when it was part of repeating show. This is useful because the way shows work,
|
deleted when it was part of repeating show. This is useful because the way shows work,
|
||||||
|
|
|
@ -1,5 +1,9 @@
|
||||||
INSERT INTO cc_subjs ("login", "type", "pass") VALUES ('admin', 'A', md5('admin'));
|
INSERT INTO cc_subjs ("login", "type", "pass") VALUES ('admin', 'A', md5('admin'));
|
||||||
|
|
||||||
|
-- added in 2.1
|
||||||
|
INSERT INTO cc_pref("keystr", "valstr") VALUES('scheduled_play_switch', 'on');
|
||||||
|
-- end of added in 2.1
|
||||||
|
|
||||||
-- added in 2.0.0
|
-- added in 2.0.0
|
||||||
INSERT INTO cc_pref("keystr", "valstr") VALUES('stream_type', 'ogg, mp3');
|
INSERT INTO cc_pref("keystr", "valstr") VALUES('stream_type', 'ogg, mp3');
|
||||||
INSERT INTO cc_pref("keystr", "valstr") VALUES('stream_bitrate', '24, 32, 48, 64, 96, 128, 160, 192, 224, 256, 320');
|
INSERT INTO cc_pref("keystr", "valstr") VALUES('stream_bitrate', '24, 32, 48, 64, 96, 128, 160, 192, 224, 256, 320');
|
||||||
|
|
|
@ -207,6 +207,7 @@ CREATE TABLE "cc_show_instances"
|
||||||
"instance_id" INTEGER,
|
"instance_id" INTEGER,
|
||||||
"file_id" INTEGER,
|
"file_id" INTEGER,
|
||||||
"time_filled" interval default '00:00:00',
|
"time_filled" interval default '00:00:00',
|
||||||
|
"created" TIMESTAMP NOT NULL,
|
||||||
"last_scheduled" TIMESTAMP,
|
"last_scheduled" TIMESTAMP,
|
||||||
"modified_instance" BOOLEAN default 'f' NOT NULL,
|
"modified_instance" BOOLEAN default 'f' NOT NULL,
|
||||||
PRIMARY KEY ("id")
|
PRIMARY KEY ("id")
|
||||||
|
|
|
@ -12,6 +12,15 @@
|
||||||
margin-left: -16px;
|
margin-left: -16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#sb_edit {
|
||||||
|
position: relative;
|
||||||
|
top: 2px;
|
||||||
|
float: left;
|
||||||
|
margin-right: 5px;
|
||||||
|
padding: 1px 2px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
.sb-content .fg-toolbar ul {
|
.sb-content .fg-toolbar ul {
|
||||||
float: left;
|
float: left;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
|
|
|
@ -828,7 +828,7 @@ var AIRTIME = (function(AIRTIME){
|
||||||
if (oItems.del !== undefined) {
|
if (oItems.del !== undefined) {
|
||||||
|
|
||||||
callback = function() {
|
callback = function() {
|
||||||
if (confirm("")) {
|
if (confirm("Delete selected Items?")) {
|
||||||
AIRTIME.showbuilder.fnRemove([{
|
AIRTIME.showbuilder.fnRemove([{
|
||||||
id: data.id,
|
id: data.id,
|
||||||
timestamp: data.timestamp,
|
timestamp: data.timestamp,
|
||||||
|
|
|
@ -13,12 +13,7 @@ $(document).ready(function(){
|
||||||
timeStartId = "#sb_time_start",
|
timeStartId = "#sb_time_start",
|
||||||
dateEndId = "#sb_date_end",
|
dateEndId = "#sb_date_end",
|
||||||
timeEndId = "#sb_time_end",
|
timeEndId = "#sb_time_end",
|
||||||
$toggleLib = $('<input />', {
|
$toggleLib = $('<div id="sb_edit" class="ui-state-default" title="open the library to schedule files."><span class="ui-icon ui-icon-arrowthick-1-nw"></span></div>'),
|
||||||
"class": "ui-button ui-state-default sb-edit",
|
|
||||||
"id": "sb_edit",
|
|
||||||
"type": "button",
|
|
||||||
"value": "Add Files"
|
|
||||||
}),
|
|
||||||
$libClose = $('<a />', {
|
$libClose = $('<a />', {
|
||||||
"class": "close-round",
|
"class": "close-round",
|
||||||
"href": "#",
|
"href": "#",
|
||||||
|
@ -56,6 +51,16 @@ $(document).ready(function(){
|
||||||
AIRTIME.showbuilder.fnServerData.start = oRange.start;
|
AIRTIME.showbuilder.fnServerData.start = oRange.start;
|
||||||
AIRTIME.showbuilder.fnServerData.end = oRange.end;
|
AIRTIME.showbuilder.fnServerData.end = oRange.end;
|
||||||
|
|
||||||
|
if (AIRTIME.showLib === true) {
|
||||||
|
$lib.show()
|
||||||
|
.width(Math.floor(screenWidth * 0.5));
|
||||||
|
|
||||||
|
$builder.width(Math.floor(screenWidth * 0.5))
|
||||||
|
.find("#sb_edit")
|
||||||
|
.remove()
|
||||||
|
.end();
|
||||||
|
}
|
||||||
|
|
||||||
AIRTIME.library.libraryInit();
|
AIRTIME.library.libraryInit();
|
||||||
AIRTIME.showbuilder.builderDataTable();
|
AIRTIME.showbuilder.builderDataTable();
|
||||||
|
|
||||||
|
@ -92,7 +97,7 @@ $(document).ready(function(){
|
||||||
oTable.fnDraw();
|
oTable.fnDraw();
|
||||||
});
|
});
|
||||||
|
|
||||||
$builder.on("click","#sb_edit", function(ev){
|
$builder.on("click","#sb_edit", function () {
|
||||||
var schedTable = $("#show_builder_table").dataTable();
|
var schedTable = $("#show_builder_table").dataTable();
|
||||||
|
|
||||||
//reset timestamp to redraw the cursors.
|
//reset timestamp to redraw the cursors.
|
||||||
|
@ -107,9 +112,17 @@ $(document).ready(function(){
|
||||||
.end();
|
.end();
|
||||||
|
|
||||||
schedTable.fnDraw();
|
schedTable.fnDraw();
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
url: "/usersettings/set-now-playing-screen-settings",
|
||||||
|
type: "POST",
|
||||||
|
data: {settings : {library : true}, format: "json"},
|
||||||
|
dataType: "json",
|
||||||
|
success: function(){}
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
$lib.on("click", "#sb_lib_close", function(ev) {
|
$lib.on("click", "#sb_lib_close", function() {
|
||||||
var schedTable = $("#show_builder_table").dataTable();
|
var schedTable = $("#show_builder_table").dataTable();
|
||||||
|
|
||||||
$lib.hide();
|
$lib.hide();
|
||||||
|
@ -119,6 +132,14 @@ $(document).ready(function(){
|
||||||
.end();
|
.end();
|
||||||
|
|
||||||
schedTable.fnDraw();
|
schedTable.fnDraw();
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
url: "/usersettings/set-now-playing-screen-settings",
|
||||||
|
type: "POST",
|
||||||
|
data: {settings : {library : false}, format: "json"},
|
||||||
|
dataType: "json",
|
||||||
|
success: function(){}
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
$builder.find('legend').click(function(ev, item){
|
$builder.find('legend').click(function(ev, item){
|
||||||
|
|
|
@ -87,10 +87,10 @@ class PypoFetch(Thread):
|
||||||
self.update_liquidsoap_transition_fade(m['transition_fade'])
|
self.update_liquidsoap_transition_fade(m['transition_fade'])
|
||||||
elif command == 'switch_source':
|
elif command == 'switch_source':
|
||||||
self.logger.info("switch_on_source show command received...")
|
self.logger.info("switch_on_source show command received...")
|
||||||
self.switch_source(m['sourcename'], m['status'])
|
self.switch_source(self.logger, self.telnet_lock, m['sourcename'], m['status'])
|
||||||
elif command == 'disconnect_source':
|
elif command == 'disconnect_source':
|
||||||
self.logger.info("disconnect_on_source show command received...")
|
self.logger.info("disconnect_on_source show command received...")
|
||||||
self.disconnect_source(m['sourcename'])
|
self.disconnect_source(self.logger, self.telnet.lock, m['sourcename'])
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
import traceback
|
import traceback
|
||||||
top = traceback.format_exc()
|
top = traceback.format_exc()
|
||||||
|
@ -98,27 +98,29 @@ class PypoFetch(Thread):
|
||||||
self.logger.error("traceback: %s", top)
|
self.logger.error("traceback: %s", top)
|
||||||
self.logger.error("Exception in handling Message Handler message: %s", e)
|
self.logger.error("Exception in handling Message Handler message: %s", e)
|
||||||
|
|
||||||
def disconnect_source(self,sourcename):
|
@staticmethod
|
||||||
self.logger.debug('Disconnecting source: %s', sourcename)
|
def disconnect_source(logger, lock, sourcename):
|
||||||
|
logger.debug('Disconnecting source: %s', sourcename)
|
||||||
command = ""
|
command = ""
|
||||||
if(sourcename == "master_dj"):
|
if(sourcename == "master_dj"):
|
||||||
command += "master_harbor.kick\n"
|
command += "master_harbor.kick\n"
|
||||||
elif(sourcename == "live_dj"):
|
elif(sourcename == "live_dj"):
|
||||||
command += "live_dj_harbor.kick\n"
|
command += "live_dj_harbor.kick\n"
|
||||||
|
|
||||||
self.telnet_lock.acquire()
|
lock.acquire()
|
||||||
try:
|
try:
|
||||||
tn = telnetlib.Telnet(LS_HOST, LS_PORT)
|
tn = telnetlib.Telnet(LS_HOST, LS_PORT)
|
||||||
tn.write(command)
|
tn.write(command)
|
||||||
tn.write('exit\n')
|
tn.write('exit\n')
|
||||||
tn.read_all()
|
tn.read_all()
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
self.logger.error(str(e))
|
logger.error(str(e))
|
||||||
finally:
|
finally:
|
||||||
self.telnet_lock.release()
|
lock.release()
|
||||||
|
|
||||||
def switch_source(self, sourcename, status):
|
@staticmethod
|
||||||
self.logger.debug('Switching source: %s to "%s" status', sourcename, status)
|
def switch_source(logger, lock, sourcename, status):
|
||||||
|
logger.debug('Switching source: %s to "%s" status', sourcename, status)
|
||||||
command = "streams."
|
command = "streams."
|
||||||
if(sourcename == "master_dj"):
|
if(sourcename == "master_dj"):
|
||||||
command += "master_dj_"
|
command += "master_dj_"
|
||||||
|
@ -132,16 +134,16 @@ class PypoFetch(Thread):
|
||||||
else:
|
else:
|
||||||
command += "stop\n"
|
command += "stop\n"
|
||||||
|
|
||||||
self.telnet_lock.acquire()
|
lock.acquire()
|
||||||
try:
|
try:
|
||||||
tn = telnetlib.Telnet(LS_HOST, LS_PORT)
|
tn = telnetlib.Telnet(LS_HOST, LS_PORT)
|
||||||
tn.write(command)
|
tn.write(command)
|
||||||
tn.write('exit\n')
|
tn.write('exit\n')
|
||||||
tn.read_all()
|
tn.read_all()
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
self.logger.error(str(e))
|
logger.error(str(e))
|
||||||
finally:
|
finally:
|
||||||
self.telnet_lock.release()
|
lock.release()
|
||||||
|
|
||||||
"""
|
"""
|
||||||
grabs some information that are needed to be set on bootstrap time
|
grabs some information that are needed to be set on bootstrap time
|
||||||
|
@ -156,7 +158,7 @@ class PypoFetch(Thread):
|
||||||
else:
|
else:
|
||||||
self.logger.debug('info:%s',info)
|
self.logger.debug('info:%s',info)
|
||||||
for k, v in info['switch_status'].iteritems():
|
for k, v in info['switch_status'].iteritems():
|
||||||
self.switch_source(k, v)
|
self.switch_source(self.logger, self.telnet_lock, k, v)
|
||||||
self.update_liquidsoap_stream_format(info['stream_label'])
|
self.update_liquidsoap_stream_format(info['stream_label'])
|
||||||
self.update_liquidsoap_station_name(info['station_name'])
|
self.update_liquidsoap_station_name(info['station_name'])
|
||||||
self.update_liquidsoap_transition_fade(info['transition_fade'])
|
self.update_liquidsoap_transition_fade(info['transition_fade'])
|
||||||
|
@ -374,6 +376,7 @@ class PypoFetch(Thread):
|
||||||
def process_schedule(self, schedule_data):
|
def process_schedule(self, schedule_data):
|
||||||
self.logger.debug(schedule_data)
|
self.logger.debug(schedule_data)
|
||||||
media = schedule_data["media"]
|
media = schedule_data["media"]
|
||||||
|
media_filtered = {}
|
||||||
|
|
||||||
# Download all the media and put playlists in liquidsoap "annotate" format
|
# Download all the media and put playlists in liquidsoap "annotate" format
|
||||||
try:
|
try:
|
||||||
|
@ -389,13 +392,14 @@ class PypoFetch(Thread):
|
||||||
|
|
||||||
for key in media:
|
for key in media:
|
||||||
media_item = media[key]
|
media_item = media[key]
|
||||||
|
if(media_item['type'] == 'file'):
|
||||||
fileExt = os.path.splitext(media_item['uri'])[1]
|
fileExt = os.path.splitext(media_item['uri'])[1]
|
||||||
dst = os.path.join(download_dir, media_item['id']+fileExt)
|
dst = os.path.join(download_dir, media_item['id']+fileExt)
|
||||||
media_item['dst'] = dst
|
media_item['dst'] = dst
|
||||||
|
media_filtered[key] = media_item
|
||||||
|
|
||||||
self.media_prepare_queue.put(copy.copy(media))
|
self.media_prepare_queue.put(copy.copy(media_filtered))
|
||||||
self.prepare_media(media)
|
self.prepare_media(media_filtered)
|
||||||
except Exception, e: self.logger.error("%s", e)
|
except Exception, e: self.logger.error("%s", e)
|
||||||
|
|
||||||
# Send the data to pypo-push
|
# Send the data to pypo-push
|
||||||
|
|
|
@ -9,6 +9,7 @@ import telnetlib
|
||||||
import calendar
|
import calendar
|
||||||
import json
|
import json
|
||||||
import math
|
import math
|
||||||
|
from pypofetch import PypoFetch
|
||||||
|
|
||||||
from Queue import Empty
|
from Queue import Empty
|
||||||
|
|
||||||
|
@ -204,7 +205,9 @@ class PypoPush(Thread):
|
||||||
|
|
||||||
for mkey in sorted_keys:
|
for mkey in sorted_keys:
|
||||||
media_item = media_schedule[mkey]
|
media_item = media_schedule[mkey]
|
||||||
if len(current_chain) == 0:
|
if media_item['type'] == "event":
|
||||||
|
chains.append([media_item])
|
||||||
|
elif len(current_chain) == 0:
|
||||||
current_chain.append(media_item)
|
current_chain.append(media_item)
|
||||||
elif media_item['start'] == current_chain[-1]['end']:
|
elif media_item['start'] == current_chain[-1]['end']:
|
||||||
current_chain.append(media_item)
|
current_chain.append(media_item)
|
||||||
|
@ -240,7 +243,6 @@ class PypoPush(Thread):
|
||||||
tnow = datetime.utcnow()
|
tnow = datetime.utcnow()
|
||||||
current_chain = []
|
current_chain = []
|
||||||
|
|
||||||
|
|
||||||
for chain in chains:
|
for chain in chains:
|
||||||
iteration = 0
|
iteration = 0
|
||||||
for link in chain:
|
for link in chain:
|
||||||
|
@ -284,7 +286,13 @@ class PypoPush(Thread):
|
||||||
|
|
||||||
try:
|
try:
|
||||||
for media_item in media_item_chain:
|
for media_item in media_item_chain:
|
||||||
|
if media_item['type'] == "file":
|
||||||
self.telnet_to_liquidsoap(media_item)
|
self.telnet_to_liquidsoap(media_item)
|
||||||
|
elif media_item['type'] == "event":
|
||||||
|
if media_item['event_type'] == "kick_out":
|
||||||
|
PypoFetch.disconnect_source(self.logger, self.telnet_lock, "live_dj")
|
||||||
|
elif media_item['event_type'] == "switch_off":
|
||||||
|
PypoFetch.switch_source(self.logger, self.telnet_lock, "live_dj", "off")
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
self.logger.error('Pypo Push Exception: %s', e)
|
self.logger.error('Pypo Push Exception: %s', e)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue