diff --git a/application/controllers/ScheduleController.php b/application/controllers/ScheduleController.php index f174c48d8..45d763820 100644 --- a/application/controllers/ScheduleController.php +++ b/application/controllers/ScheduleController.php @@ -171,17 +171,18 @@ class ScheduleController extends Zend_Controller_Action public function makeContextMenuAction() { $id = $this->_getParam('id'); - $start_timestamp = $this->_getParam('start'); $today_timestamp = date("Y-m-d H:i:s"); $userInfo = Zend_Auth::getInstance()->getStorage()->read(); $user = new User($userInfo->id, $userInfo->type); - $params = '/format/json/id/#id#/start/#start#/end/#end#'; + $show = new ShowInstance($id); - if(strtotime($today_timestamp) < strtotime($start_timestamp)) { + $params = '/format/json/id/#id#'; - if($user->isHost($id)) { + if(strtotime($today_timestamp) < strtotime($show->getShowStart())) { + + if($user->isHost($show->getShowId())) { $menu[] = array('action' => array('type' => 'ajax', 'url' => '/Schedule/delete-show'.$params, 'callback' => 'window["scheduleRefetchEvents"]'), 'title' => 'Delete'); @@ -203,9 +204,7 @@ class ScheduleController extends Zend_Controller_Action public function scheduleShowAction() { - $start_timestamp = $this->sched_sess->showStart; - $end_timestamp = $this->sched_sess->showEnd; - $showId = $this->sched_sess->showId; + $showInstanceId = $this->sched_sess->showInstanceId; $search = $this->_getParam('search', null); $plId = $this->_getParam('plId'); @@ -214,35 +213,33 @@ class ScheduleController extends Zend_Controller_Action } $userInfo = Zend_Auth::getInstance()->getStorage()->read(); + $user = new User($userInfo->id, $userInfo->type); + $show = new ShowInstance($showInstanceId); - $user = new User($userInfo->id, $userInfo->type); - $show = new Show($user, $showId); - - if($user->isHost($showId)) { - $show->scheduleShow($start_timestamp, array($plId)); + if($user->isHost($show->getShowId())) { + $show->scheduleShow(array($plId)); } - $this->view->showContent = $show->getShowContent($start_timestamp); - $this->view->timeFilled = $show->getTimeScheduled($start_timestamp, $end_timestamp); - $this->view->percentFilled = Schedule::getPercentScheduledInRange($start_timestamp, $end_timestamp); + $this->view->showContent = $show->getShowContent(); + $this->view->timeFilled = $show->getTimeScheduled(); + $this->view->percentFilled = $show->getPercentScheduledInRange(); $this->view->chosen = $this->view->render('schedule/scheduled-content.phtml'); - unset($this->view->showContent); } public function clearShowAction() { - $start = $this->_getParam('start'); - $showId = $this->_getParam('id'); + $showInstanceId = $this->_getParam('id'); $userInfo = Zend_Auth::getInstance()->getStorage()->read(); $user = new User($userInfo->id, $userInfo->type); - if($user->isHost($showId)) { + $show = new ShowInstance($showInstanceId); - $show = new Show($user, $showId); - $show->clearShow($start); + if($user->isHost($show->getShowId())) { + + $show->clearShow(); } } @@ -253,14 +250,10 @@ class ScheduleController extends Zend_Controller_Action public function findPlaylistsAction() { - $show_id = $this->sched_sess->showId; - $start_timestamp = $this->sched_sess->showStart; - $end_timestamp = $this->sched_sess->showEnd; $post = $this->getRequest()->getPost(); - $userInfo = Zend_Auth::getInstance()->getStorage()->read(); - $show = new Show(new User($userInfo->id, $userInfo->type), $show_id); - $playlists = $show->searchPlaylistsForShow($start_timestamp, $end_timestamp, $post); + $show = new ShowInstance($this->sched_sess->showInstanceId); + $playlists = $show->searchPlaylistsForShow($post); //for datatables die(json_encode($playlists)); @@ -268,31 +261,29 @@ class ScheduleController extends Zend_Controller_Action public function removeGroupAction() { + $showInstanceId = $this->sched_sess->showInstanceId; $group_id = $this->_getParam('groupId'); - $start_timestamp = $this->sched_sess->showStart; - $end_timestamp = $this->sched_sess->showEnd; - $show_id = $this->sched_sess->showId; $search = $this->_getParam('search', null); - $userInfo = Zend_Auth::getInstance()->getStorage()->read(); - $show = new Show(new User($userInfo->id, $userInfo->type), $show_id); - - $show->removeGroupFromShow($start_timestamp, $group_id); + $show = new ShowInstance($showInstanceId); + $show->removeGroupFromShow($group_id); - $this->view->showContent = $show->getShowContent($start_timestamp); - $this->view->timeFilled = $show->getTimeScheduled($start_timestamp, $end_timestamp); - $this->view->percentFilled = Schedule::getPercentScheduledInRange($start_timestamp, $end_timestamp); + $this->view->showContent = $show->getShowContent(); + $this->view->timeFilled = $show->getTimeScheduled(); + $this->view->percentFilled = $show->getPercentScheduledInRange(); $this->view->chosen = $this->view->render('schedule/scheduled-content.phtml'); - unset($this->view->showContent); } public function scheduleShowDialogAction() { + $showInstanceId = $this->_getParam('id'); + + $show = new ShowInstance($showInstanceId); + $start_timestamp = $this->_getParam('start'); $end_timestamp = $this->_getParam('end'); - $showId = $this->_getParam('id'); $this->sched_sess->showId = $showId; $this->sched_sess->showStart = $start_timestamp; diff --git a/application/models/Schedule.php b/application/models/Schedule.php index 9a08f26ee..d9cbf3137 100644 --- a/application/models/Schedule.php +++ b/application/models/Schedule.php @@ -281,14 +281,6 @@ class Schedule { public static function getTimeUnScheduledInRange($s_datetime, $e_datetime) { global $CC_CONFIG, $CC_DBC; - $sql = "SELECT timestamp '{$s_datetime}' > timestamp '{$e_datetime}'"; - $isNextDay = $CC_DBC->GetOne($sql); - - if($isNextDay === 't') { - $sql = "SELECT date '{$e_datetime}' + interval '1 day'"; - $e_datetime = $CC_DBC->GetOne($sql); - } - $sql = "SELECT SUM(clip_length) FROM ".$CC_CONFIG["scheduleTable"]." WHERE (starts >= '{$s_datetime}') AND (ends <= '{$e_datetime}')"; @@ -310,14 +302,6 @@ class Schedule { public static function getTimeScheduledInRange($s_datetime, $e_datetime) { global $CC_CONFIG, $CC_DBC; - $sql = "SELECT timestamp '{$s_datetime}' > timestamp '{$e_datetime}'"; - $isNextDay = $CC_DBC->GetOne($sql); - - if($isNextDay === 't') { - $sql = "SELECT date '{$e_datetime}' + interval '1 day'"; - $e_datetime = $CC_DBC->GetOne($sql); - } - $sql = "SELECT SUM(clip_length) FROM ".$CC_CONFIG["scheduleTable"]." WHERE (starts >= '{$s_datetime}') AND (ends <= '{$e_datetime}')"; diff --git a/application/models/Shows.php b/application/models/Shows.php index 38559b3a7..971045595 100644 --- a/application/models/Shows.php +++ b/application/models/Shows.php @@ -369,11 +369,24 @@ class ShowInstance { $this->_instanceId = $instanceId; } + public function getShowId() { + $showInstance = CcShowInstancesQuery::create()->findPK($this->_instanceId); + return $showInstance->getDbShowId(); + } + + public function getShowStart() { + $showInstance = CcShowInstancesQuery::create()->findPK($this->_instanceId); + return $showInstance->getDbStarts(); + } + + public function getShowEnd() { + $showInstance = CcShowInstancesQuery::create()->findPK($this->_instanceId); + return $showInstance->getDbEnds(); + } + public function moveShow($deltaDay, $deltaMin){ global $CC_DBC; - $showInstance = CcShowInstancesQuery::create()->findPK($this->_instanceId); - $hours = $deltaMin/60; if($hours > 0) $hours = floor($hours); @@ -382,8 +395,8 @@ class ShowInstance { $mins = abs($deltaMin%60); - $starts = $showInstance->getDbStarts(); - $ends = $showInstance->getDbEnds(); + $starts = $this->getShowStart(); + $ends = $this->getShowEnd(); $sql = "SELECT timestamp '{$starts}' + interval '{$deltaDay} days' + interval '{$hours}:{$mins}'"; $new_starts = $CC_DBC->GetOne($sql); @@ -411,8 +424,6 @@ class ShowInstance { public function resizeShow($deltaDay, $deltaMin){ global $CC_DBC; - $showInstance = CcShowInstancesQuery::create()->findPK($this->_instanceId); - $hours = $deltaMin/60; if($hours > 0) $hours = floor($hours); @@ -421,8 +432,8 @@ class ShowInstance { $mins = abs($deltaMin%60); - $starts = $showInstance->getDbStarts(); - $ends = $showInstance->getDbEnds(); + $starts = $this->getShowStart(); + $ends = $this->getShowEnd(); $sql = "SELECT timestamp '{$ends}' + interval '{$hours}:{$mins}'"; $new_ends = $CC_DBC->GetOne($sql); @@ -442,12 +453,10 @@ class ShowInstance { } - private function getNextPos($instanceId) { + private function getNextPos() { global $CC_DBC; - $timeinfo = explode(" ", $day); - - $sql = "SELECT MAX(position)+1 from cc_show_schedule WHERE instance_id = '{$instanceId}'"; + $sql = "SELECT MAX(position)+1 from cc_show_schedule WHERE instance_id = '{$this->_instanceId}'"; $res = $CC_DBC->GetOne($sql); if(is_null($res)) @@ -456,73 +465,60 @@ class ShowInstance { return $res; } - private function getLastGroupId($start_timestamp) { + private function getLastGroupId() { global $CC_DBC; - $timeinfo = explode(" ", $start_timestamp); - - $sql = "SELECT MAX(group_id) from cc_show_schedule WHERE show_id = '{$this->_showId}' AND show_day = '{$timeinfo[0]}'"; + $sql = "SELECT MAX(group_id) from cc_show_schedule WHERE instance_id = '{$this->_instanceId}'"; $res = $CC_DBC->GetOne($sql); return $res; } - public function addPlaylistToShow($start_timestamp, $plId) { + public function addPlaylistToShow($plId) { $sched = new ScheduleGroup(); - $lastGroupId = $this->getLastGroupId($start_timestamp); + $lastGroupId = $this->getLastGroupId(); if(is_null($lastGroupId)) { - $groupId = $sched->add($start_timestamp, null, $plId); + $groupId = $sched->add($this->getShowStart(), null, $plId); } else { $groupId = $sched->addPlaylistAfter($lastGroupId, $plId); } - $instance = CcShowInstancesQuery::create() - ->filterByDbStarts() - ->findOne(); - - $instanceId = $instance->getDbId(); - $pos = $this->getNextPos($day); - $groupsched = new CcShowSchedule(); - $groupsched->setDbInstanceId($instanceId); + $groupsched->setDbInstanceId($this->_instanceId); $groupsched->setDbGroupId($groupId); $groupsched->setDbPosition($pos); $groupsched->save(); } - public function scheduleShow($start_timestamp, $plIds) { + public function scheduleShow($plIds) { foreach($plIds as $plId) { - $this->addPlaylistToShow($start_timestamp, $plId); + $this->addPlaylistToShow($plId); } } - public function removeGroupFromShow($start_timestamp, $group_id){ - global $CC_DBC, $CC_CONFIG; - - $timeinfo = explode(" ", $start_timestamp); + public function removeGroupFromShow($group_id){ + global $CC_DBC; $group = CcShowScheduleQuery::create() - ->filterByDbShowId($this->_showId) + ->filterByDbInstanceId($this->_instanceId) ->filterByDbGroupId($group_id) - ->filterByDbShowDay($timeinfo[0]) ->findOne(); $position = $group->getDbPosition(); $sql = "SELECT group_id FROM cc_show_schedule - WHERE show_id = '{$this->_showId}' AND show_day = '{$timeinfo[0]}' - AND position > '{$position}'"; + WHERE instance_id = '{$this->_instanceId}' AND position > '{$position}'"; $followingGroups = $CC_DBC->GetAll($sql); - $sql = "SELECT SUM(clip_length) FROM ".$CC_CONFIG["scheduleTable"]." WHERE group_id='{$group_id}'"; + $sql = "SELECT SUM(clip_length) FROM cc_schedule WHERE group_id='{$group_id}'"; $group_length = $CC_DBC->GetOne($sql); - $sql = "DELETE FROM ".$CC_CONFIG["scheduleTable"]." WHERE group_id = '{$group_id}'"; + $sql = "DELETE FROM cc_schedule WHERE group_id = '{$group_id}'"; $CC_DBC->query($sql); if(!is_null($followingGroups)) { @@ -532,22 +528,19 @@ class ShowInstance { } $sql_group_ids = join(" OR ", $sql_opt); - $sql = "UPDATE ".$CC_CONFIG["scheduleTable"]." + $sql = "UPDATE cc_schedule SET starts = (starts - INTERVAL '{$group_length}'), ends = (ends - INTERVAL '{$group_length}') WHERE " . $sql_group_ids; $CC_DBC->query($sql); } $group->delete(); - } - public function clearShow($day) { - $timeinfo = explode(" ", $day); - + public function clearShow() { + $groups = CcShowScheduleQuery::create() - ->filterByDbShowId($this->_showId) - ->filterByDbShowDay($timeinfo[0]) + ->filterByDbInstanceId($this->_instanceId) ->find(); foreach($groups as $group) { @@ -560,42 +553,49 @@ class ShowInstance { } } - public function getTimeScheduled($start_timestamp, $end_timestamp) { + public function getTimeScheduled() { + + $start_timestamp = $this->getShowStart(); + $end_timestamp = $this->getShowEnd(); $time = Schedule::getTimeScheduledInRange($start_timestamp, $end_timestamp); return $time; } - public function getTimeUnScheduled($start_timestamp, $end_timestamp) { + public function getTimeUnScheduled() { + + $start_timestamp = $this->getShowStart(); + $end_timestamp = $this->getShowEnd(); $time = Schedule::getTimeUnScheduledInRange($start_timestamp, $end_timestamp); return $time; } - public function showHasContent($start_timestamp, $end_timestamp) { + public function getPercentScheduledInRange(){ - $con = Propel::getConnection(CcShowPeer::DATABASE_NAME); - $sql = "SELECT TIMESTAMP '{$end_timestamp}' - TIMESTAMP '{$start_timestamp}'"; - $r = $con->query($sql); - $length = $r->fetchColumn(0); + $start_timestamp = $this->getShowStart(); + $end_timestamp = $this->getShowEnd(); - return !Schedule::isScheduleEmptyInRange($start_timestamp, $length); - } + Schedule::getPercentScheduledInRange($start_timestamp, $end_timestamp); + } - public function getShowLength($start_timestamp, $end_timestamp){ + public function getShowLength(){ global $CC_DBC; + $start_timestamp = $this->getShowStart(); + $end_timestamp = $this->getShowEnd(); + $sql = "SELECT TIMESTAMP '{$end_timestamp}' - TIMESTAMP '{$start_timestamp}' "; $length = $CC_DBC->GetOne($sql); return $length; } - public function searchPlaylistsForShow($start_timestamp, $end_timestamp, $datatables){ + public function searchPlaylistsForShow($datatables){ - $length = $this->getTimeUnScheduled($start_timestamp, $end_timestamp); + $length = $this->getTimeUnScheduled(); return StoredFile::searchPlaylistsForSchedule($length, $datatables); } diff --git a/public/js/airtime/schedule/full-calendar-functions.js b/public/js/airtime/schedule/full-calendar-functions.js index 39fcc4fcc..f90293109 100644 --- a/public/js/airtime/schedule/full-calendar-functions.js +++ b/public/js/airtime/schedule/full-calendar-functions.js @@ -91,34 +91,11 @@ function eventRender(event, element, view) { function eventAfterRender( event, element, view ) { - function getStartTS() { - var start = makeTimeStamp(event.start); - return start; - } - - function getEndTS() { - var start = makeTimeStamp(event.end); - return start; - } - $(element) .jjmenu("rightClick", - [{get:"/Schedule/make-context-menu/format/json/id/#id#/start/#start#/end/#end#"}], - {id: event.id, start: getStartTS, end: getEndTS, showId: event.showId}, + [{get:"/Schedule/make-context-menu/format/json/id/#id#"}], + {id: event.id}, {xposition: "mouse", yposition: "mouse"}); - - /* - $(element).qtip({ - content: { - text: event.description, - title: { text: 'Show Description' } - }, - position: { - target: 'mouse', - adjust: { mouse: true } - } - }); - */ } function eventClick(event, jsEvent, view) {