diff --git a/application/Bootstrap.php b/application/Bootstrap.php index 277bd9cab..511ab92e3 100644 --- a/application/Bootstrap.php +++ b/application/Bootstrap.php @@ -21,6 +21,7 @@ require_once 'Schedule.php'; require_once 'Shows.php'; require_once 'Users.php'; require_once 'RabbitMq.php'; +require_once 'DateHelper.php'; require_once __DIR__.'/controllers/plugins/RabbitMqPlugin.php'; global $CC_CONFIG, $CC_DBC; diff --git a/application/controllers/ApiController.php b/application/controllers/ApiController.php index 1b0e8ac51..4c6e344d2 100644 --- a/application/controllers/ApiController.php +++ b/application/controllers/ApiController.php @@ -112,8 +112,8 @@ class ApiController extends Zend_Controller_Action $result = Schedule::GetPlayOrderRange(0, 1); - $date = new Application_Model_DateHelper; - $timeNow = $date->getDate(); + $date = new DateHelper; + $timeNow = $date->getTimestamp(); $result = array("env"=>APPLICATION_ENV, "schedulerTime"=>gmdate("Y-m-d H:i:s"), "currentShow"=>Show_DAL::GetCurrentShow($timeNow), diff --git a/application/controllers/ScheduleController.php b/application/controllers/ScheduleController.php index f713dc8cd..bbbf5e05f 100644 --- a/application/controllers/ScheduleController.php +++ b/application/controllers/ScheduleController.php @@ -25,6 +25,7 @@ class ScheduleController extends Zend_Controller_Action ->addActionContext('edit-show', 'json') ->addActionContext('add-show', 'json') ->addActionContext('cancel-show', 'json') + ->addActionContext('get-form', 'json') ->addActionContext('upload-to-sound-cloud', 'json') ->initContext(); @@ -48,8 +49,6 @@ class ScheduleController extends Zend_Controller_Action $this->view->headLink()->appendStylesheet('/css/add-show.css'); $this->view->headLink()->appendStylesheet('/css/contextmenu.css'); - $request = $this->getRequest(); - $formWhat = new Application_Form_AddShowWhat(); $formWho = new Application_Form_AddShowWho(); $formWhen = new Application_Form_AddShowWhen(); @@ -66,7 +65,6 @@ class ScheduleController extends Zend_Controller_Action $formStyle->removeDecorator('DtDdWrapper'); $formRecord->removeDecorator('DtDdWrapper'); - $this->view->what = $formWhat; $this->view->when = $formWhen; $this->view->repeats = $formRepeats; @@ -399,6 +397,12 @@ class ScheduleController extends Zend_Controller_Action public function editShowAction() { + $userInfo = Zend_Auth::getInstance()->getStorage()->read(); + $user = new User($userInfo->id); + if(!$user->isAdmin()) { + return; + } + $showInstanceId = $this->_getParam('id'); $formWhat = new Application_Form_AddShowWhat(); @@ -474,8 +478,8 @@ class ScheduleController extends Zend_Controller_Action $rebroadcastAbsoluteFormValues = array(); $i = 1; foreach ($rebroadcastsAbsolute as $rebroadcast){ - $rebroadcastAbsoluteFormValues["add_show_rebroadcast_absolute_date_$i"] = $rebroadcast['start_date']; - $rebroadcastAbsoluteFormValues["add_show_rebroadcast_absolute_time_$i"] = Show::removeSecondsFromTime($rebroadcast['start_time']); + $rebroadcastAbsoluteFormValues["add_show_rebroadcast_date_absolute_$i"] = $rebroadcast['start_date']; + $rebroadcastAbsoluteFormValues["add_show_rebroadcast_time_absolute_$i"] = Show::removeSecondsFromTime($rebroadcast['start_time']); $i++; } $formAbsoluteRebroadcast->populate($rebroadcastAbsoluteFormValues); @@ -495,6 +499,38 @@ class ScheduleController extends Zend_Controller_Action $this->view->entries = 5; } + public function getFormAction(){ + $formWhat = new Application_Form_AddShowWhat(); + $formWho = new Application_Form_AddShowWho(); + $formWhen = new Application_Form_AddShowWhen(); + $formRepeats = new Application_Form_AddShowRepeats(); + $formStyle = new Application_Form_AddShowStyle(); + $formRecord = new Application_Form_AddShowRR(); + $formAbsoluteRebroadcast = new Application_Form_AddShowAbsoluteRebroadcastDates(); + $formRebroadcast = new Application_Form_AddShowRebroadcastDates(); + + $formWhat->removeDecorator('DtDdWrapper'); + $formWho->removeDecorator('DtDdWrapper'); + $formWhen->removeDecorator('DtDdWrapper'); + $formRepeats->removeDecorator('DtDdWrapper'); + $formStyle->removeDecorator('DtDdWrapper'); + $formRecord->removeDecorator('DtDdWrapper'); + + $this->view->what = $formWhat; + $this->view->when = $formWhen; + $this->view->repeats = $formRepeats; + $this->view->who = $formWho; + $this->view->style = $formStyle; + $this->view->rr = $formRecord; + $this->view->absoluteRebroadcast = $formAbsoluteRebroadcast; + $this->view->rebroadcast = $formRebroadcast; + $this->view->addNewShow = true; + + $formWhat->populate(array('add_show_id' => '-1')); + + $this->view->form = $this->view->render('schedule/add-show-form.phtml'); + } + public function addShowAction() { $js = $this->_getParam('data'); diff --git a/application/forms/AddShowAbsoluteRebroadcastDates.php b/application/forms/AddShowAbsoluteRebroadcastDates.php index 7d173df2a..bb3c79125 100644 --- a/application/forms/AddShowAbsoluteRebroadcastDates.php +++ b/application/forms/AddShowAbsoluteRebroadcastDates.php @@ -5,190 +5,48 @@ class Application_Form_AddShowAbsoluteRebroadcastDates extends Zend_Form_SubForm public function init() { - //$this->setDisableLoadDefaultDecorators(true); - $this->setDecorators(array( array('ViewScript', array('viewScript' => 'form/add-show-rebroadcast-absolute.phtml')) )); - // Add start date element - $this->addElement('text', 'add_show_rebroadcast_absolute_date_1', array( - 'label' => 'Rebroadcast Date:', - 'class' => 'input_text', - 'required' => false, - 'value' => '', - 'filters' => array('StringTrim'), - 'validators' => array( - 'NotEmpty', - array('date', false, array('YYYY-MM-DD')) - ), - 'decorators' => array( - 'ViewHelper' - ) - )); + for($i=1; $i<=10; $i++) { - - // Add start time element - $this->addElement('text', 'add_show_rebroadcast_absolute_time_1', array( - 'label' => 'Rebroadcast Time:', - 'class' => 'input_text', - 'required' => false, - 'value' => '', - 'filters' => array('StringTrim'), - 'validators' => array( - array('date', false, array('HH:mm')), - array('regex', false, array('/^[0-9:]+$/', 'messages' => 'Invalid character entered')) - ), - 'decorators' => array( - 'ViewHelper' - ) - )); - - // Add start date element - $this->addElement('text', 'add_show_rebroadcast_absolute_date_2', array( - 'label' => 'Rebroadcast Date:', - 'class' => 'input_text', - 'required' => false, - 'value' => '', - 'filters' => array('StringTrim'), - 'validators' => array( - 'NotEmpty', - array('date', false, array('YYYY-MM-DD')) - ), - 'decorators' => array( - 'ViewHelper' - ) - )); - - - // Add start time element - $this->addElement('text', 'add_show_rebroadcast_absolute_time_2', array( - 'label' => 'Rebroadcast Time:', - 'class' => 'input_text', - 'required' => false, - 'value' => '', - 'filters' => array('StringTrim'), - 'validators' => array( - array('date', false, array('HH:mm')), - array('regex', false, array('/^[0-9:]+$/', 'messages' => 'Invalid character entered')) - ), - 'decorators' => array( - 'ViewHelper' - ) - )); - - // Add start date element - $this->addElement('text', 'add_show_rebroadcast_absolute_date_3', array( - 'label' => 'Rebroadcast Date:', - 'class' => 'input_text', - 'required' => false, - 'value' => '', - 'filters' => array('StringTrim'), - 'validators' => array( - 'NotEmpty', - array('date', false, array('YYYY-MM-DD')) - ), - 'decorators' => array( - 'ViewHelper' - ) - )); - - - // Add start time element - $this->addElement('text', 'add_show_rebroadcast_absolute_time_3', array( - 'label' => 'Rebroadcast Time:', - 'class' => 'input_text', - 'required' => false, - 'value' => '', - 'filters' => array('StringTrim'), - 'validators' => array( - array('date', false, array('HH:mm')), - array('regex', false, array('/^[0-9:]+$/', 'messages' => 'Invalid character entered')) - ), - 'decorators' => array( - 'ViewHelper' - ) - )); - - // Add start date element - $this->addElement('text', 'add_show_rebroadcast_absolute_date_4', array( - 'label' => 'Rebroadcast Date:', - 'class' => 'input_text', - 'required' => false, - 'value' => '', - 'filters' => array('StringTrim'), - 'validators' => array( - 'NotEmpty', - array('date', false, array('YYYY-MM-DD')) - ), - 'decorators' => array( - 'ViewHelper' - ) - )); - - - // Add start time element - $this->addElement('text', 'add_show_rebroadcast_absolute_time_4', array( - 'label' => 'Rebroadcast Time:', - 'class' => 'input_text', - 'required' => false, - 'value' => '', - 'filters' => array('StringTrim'), - 'validators' => array( - array('date', false, array('HH:mm')), - array('regex', false, array('/^[0-9:]+$/', 'messages' => 'Invalid character entered')) - ), - 'decorators' => array( - 'ViewHelper' - ) - )); - - // Add start date element - $this->addElement('text', 'add_show_rebroadcast_absolute_date_5', array( - 'label' => 'Rebroadcast Date:', - 'class' => 'input_text', - 'required' => false, - 'value' => '', - 'filters' => array('StringTrim'), - 'validators' => array( - 'NotEmpty', - array('date', false, array('YYYY-MM-DD')) - ), - 'decorators' => array( - 'ViewHelper' - ) - )); - - - // Add start time element - $this->addElement('text', 'add_show_rebroadcast_absolute_time_5', array( - 'label' => 'Rebroadcast Time:', - 'class' => 'input_text', - 'required' => false, - 'value' => '', - 'filters' => array('StringTrim'), - 'validators' => array( - array('date', false, array('HH:mm')), - array('regex', false, array('/^[0-9:]+$/', 'messages' => 'Invalid character entered')) - ), - 'decorators' => array( - 'ViewHelper' - ) - )); + $text = new Zend_Form_Element_Text("add_show_rebroadcast_date_absolute_$i"); + $text->setAttrib('class', 'input_text'); + $text->addFilter('StringTrim'); + $text->addValidator('date', false, array('YYYY-MM-DD')); + $text->setRequired(false); + $text->setDecorators(array('ViewHelper')); + $this->addElement($text); + $text = new Zend_Form_Element_Text("add_show_rebroadcast_time_absolute_$i"); + $text->setAttrib('class', 'input_text'); + $text->addFilter('StringTrim'); + $text->addValidator('date', false, array('HH:mm')); + $text->addValidator('regex', false, array('/^[0-9:]+$/', 'messages' => 'Invalid character entered')); + $text->setRequired(false); + $text->setDecorators(array('ViewHelper')); + $this->addElement($text); + } } public function checkReliantFields($formData) { $valid = true; - for($i=1; $i<=5; $i++) { - - $day = $formData['add_show_rebroadcast_absolute_date_'.$i]; + for($i=1; $i<=10; $i++) { - if($day == "") { + $day = $formData['add_show_rebroadcast_date_absolute_'.$i]; + + if(trim($day) == "") { continue; } + + $time = $formData['add_show_rebroadcast_time_absolute_'.$i]; + if (trim($time) == ""){ + $this->getElement('add_show_rebroadcast_time_absolute_'.$i)->setErrors(array("Time must be specified")); + $valid = false; + } $show_start_time = $formData['add_show_start_date']."".$formData['add_show_start_time']; $show_end = new DateTime($show_start_time); @@ -199,16 +57,16 @@ class Application_Form_AddShowAbsoluteRebroadcastDates extends Zend_Form_SubForm $show_end->add(new DateInterval("PT$duration[0]H")); $show_end->add(new DateInterval("PT$duration[1]M")); $show_end->add(new DateInterval("PT1H"));//min time to wait until a rebroadcast - - $rebroad_start = $day."".$formData['add_show_rebroadcast_absolute_time_'.$i]; + + $rebroad_start = $day."".$formData['add_show_rebroadcast_time_absolute_'.$i]; $rebroad_start = new DateTime($rebroad_start); - + if($rebroad_start < $show_end) { - $this->getElement('add_show_rebroadcast_absolute_time_'.$i)->setErrors(array("Must wait at least 1 hour to rebroadcast")); + $this->getElement('add_show_rebroadcast_time_absolute_'.$i)->setErrors(array("Must wait at least 1 hour to rebroadcast")); $valid = false; } - } - + } + return $valid; } } diff --git a/application/forms/AddShowRebroadcastDates.php b/application/forms/AddShowRebroadcastDates.php index 22e28a1a3..e51bcf570 100644 --- a/application/forms/AddShowRebroadcastDates.php +++ b/application/forms/AddShowRebroadcastDates.php @@ -9,137 +9,30 @@ class Application_Form_AddShowRebroadcastDates extends Zend_Form_SubForm array('ViewScript', array('viewScript' => 'form/add-show-rebroadcast.phtml')) )); - $relativeDates = array(); $relativeDates[""] = ""; - for($i=0; $i <=30; $i++) { - $relativeDates["$i days"] = "+$i days"; + for($i=0; $i<=30; $i++) { + $relativeDates["$i days"] = "+$i days"; } - //Add date select - $this->addElement('select', 'add_show_rebroadcast_date_1', array( - 'required' => false, - 'class' => ' input_select', - 'multiOptions' => $relativeDates, - 'decorators' => array( - 'ViewHelper' - ) - )); + for($i=1; $i<=10; $i++) { - // Add start time element - $this->addElement('text', 'add_show_rebroadcast_time_1', array( - 'class' => 'input_text', - 'required' => false, - 'value' => '', - 'filters' => array('StringTrim'), - 'validators' => array( - array('date', false, array('HH:mm')), - array('regex', false, array('/^[0-9:]+$/', 'messages' => 'Invalid character entered')) - ), - 'decorators' => array( - 'ViewHelper' - ) - )); + $select = new Zend_Form_Element_Select("add_show_rebroadcast_date_$i"); + $select->setAttrib('class', 'input_select'); + $select->setMultiOptions($relativeDates); + $select->setRequired(false); + $select->setDecorators(array('ViewHelper')); + $this->addElement($select); - //Add date select - $this->addElement('select', 'add_show_rebroadcast_date_2', array( - 'required' => false, - 'class' => ' input_select', - 'multiOptions' => $relativeDates, - 'decorators' => array( - 'ViewHelper' - ) - )); - - // Add start time element - $this->addElement('text', 'add_show_rebroadcast_time_2', array( - 'class' => 'input_text', - 'required' => false, - 'value' => '', - 'filters' => array('StringTrim'), - 'validators' => array( - array('date', false, array('HH:mm')), - array('regex', false, array('/^[0-9:]+$/', 'messages' => 'Invalid character entered')) - ), - 'decorators' => array( - 'ViewHelper' - ) - )); - - //Add date select - $this->addElement('select', 'add_show_rebroadcast_date_3', array( - 'required' => false, - 'class' => ' input_select', - 'multiOptions' => $relativeDates, - 'decorators' => array( - 'ViewHelper' - ) - )); - - // Add start time element - $this->addElement('text', 'add_show_rebroadcast_time_3', array( - 'class' => 'input_text', - 'required' => false, - 'value' => '', - 'filters' => array('StringTrim'), - 'validators' => array( - array('date', false, array('HH:mm')), - array('regex', false, array('/^[0-9:]+$/', 'messages' => 'Invalid character entered')) - ), - 'decorators' => array( - 'ViewHelper' - ) - )); - - //Add date select - $this->addElement('select', 'add_show_rebroadcast_date_4', array( - 'required' => false, - 'class' => ' input_select', - 'multiOptions' => $relativeDates, - 'decorators' => array( - 'ViewHelper' - ) - )); - - // Add start time element - $this->addElement('text', 'add_show_rebroadcast_time_4', array( - 'class' => 'input_text', - 'required' => false, - 'value' => '', - 'filters' => array('StringTrim'), - 'validators' => array( - array('date', false, array('HH:mm')), - array('regex', false, array('/^[0-9:]+$/', 'messages' => 'Invalid character entered')) - ), - 'decorators' => array( - 'ViewHelper' - ) - )); - - //Add date select - $this->addElement('select', 'add_show_rebroadcast_date_5', array( - 'required' => false, - 'class' => ' input_select', - 'multiOptions' => $relativeDates, - 'decorators' => array( - 'ViewHelper' - ) - )); - - // Add start time element - $this->addElement('text', 'add_show_rebroadcast_time_5', array( - 'class' => 'input_text', - 'required' => false, - 'value' => '', - 'filters' => array('StringTrim'), - 'validators' => array( - array('date', false, array('HH:mm')), - array('regex', false, array('/^[0-9:]+$/', 'messages' => 'Invalid character entered')) - ), - 'decorators' => array( - 'ViewHelper' - ) - )); + $text = new Zend_Form_Element_Text("add_show_rebroadcast_time_$i"); + $text->setAttrib('class', 'input_text'); + $text->addFilter('StringTrim'); + $text->addValidator('date', false, array('HH:mm')); + $text->addValidator('regex', false, array('/^[0-9:]+$/', 'messages' => 'Invalid character entered')); + $text->setRequired(false); + $text->setDecorators(array('ViewHelper')); + $this->addElement($text); + } } public function checkReliantFields($formData) { @@ -147,12 +40,18 @@ class Application_Form_AddShowRebroadcastDates extends Zend_Form_SubForm $valid = true; for($i=1; $i<=5; $i++) { - + $days = $formData['add_show_rebroadcast_date_'.$i]; - if($days == "") { + if(trim($days) == "") { continue; } + + $time = $formData['add_show_rebroadcast_time_'.$i]; + if (trim($time) == ""){ + $this->getElement('add_show_rebroadcast_time_'.$i)->setErrors(array("Time must be specified")); + $valid = false; + } $days = explode(" ", $days); $day = $days[0]; @@ -166,7 +65,7 @@ class Application_Form_AddShowRebroadcastDates extends Zend_Form_SubForm $show_end->add(new DateInterval("PT$duration[0]H")); $show_end->add(new DateInterval("PT$duration[1]M")); $show_end->add(new DateInterval("PT1H"));//min time to wait until a rebroadcast - + $rebroad_start = $formData['add_show_start_date']."".$formData['add_show_rebroadcast_time_'.$i]; $rebroad_start = new DateTime($rebroad_start); $rebroad_start->add(new DateInterval("P".$day."D")); @@ -175,8 +74,8 @@ class Application_Form_AddShowRebroadcastDates extends Zend_Form_SubForm $this->getElement('add_show_rebroadcast_time_'.$i)->setErrors(array("Must wait at least 1 hour to rebroadcast")); $valid = false; } - } - + } + return $valid; } } diff --git a/application/models/DateHelper.php b/application/models/DateHelper.php index d0f56f647..97b7d9ae9 100644 --- a/application/models/DateHelper.php +++ b/application/models/DateHelper.php @@ -1,6 +1,6 @@ _timestamp); } diff --git a/application/models/Nowplaying.php b/application/models/Nowplaying.php index 7536f1044..6df81c310 100644 --- a/application/models/Nowplaying.php +++ b/application/models/Nowplaying.php @@ -57,8 +57,8 @@ class Application_Model_Nowplaying } public static function FilterRowsByDate($rows, $date, $startCutoff, $endCutoff){ - $dateNow = new Application_Model_DateHelper; - $timeNow = $dateNow->getDate(); + $dateNow = new DateHelper; + $timeNow = $dateNow->getTimestamp(); $data = array(); //iterate over each show, and calculate information for it. @@ -117,16 +117,16 @@ class Application_Model_Nowplaying public static function GetDataGridData($viewType, $dateString){ if ($viewType == "now"){ - $date = new Application_Model_DateHelper; - $timeNow = $date->getDate(); + $date = new DateHelper; + $timeNow = $date->getTimestamp(); $startCutoff = 60; $endCutoff = 86400; //60*60*24 - seconds in a day } else { - $date = new Application_Model_DateHelper; + $date = new DateHelper; $time = $date->getTime(); $date->setDate($dateString." ".$time); - $timeNow = $date->getDate(); + $timeNow = $date->getTimestamp(); $startCutoff = $date->getNowDayStartDiff(); $endCutoff = $date->getNowDayEndDiff(); @@ -139,8 +139,8 @@ class Application_Model_Nowplaying //$rows = FindGapsBetweenShows() $data = Application_Model_Nowplaying::FilterRowsByDate($rows, $date, $startCutoff, $endCutoff); - $date = new Application_Model_DateHelper; - $timeNow = $date->getDate(); + $date = new DateHelper; + $timeNow = $date->getTimestamp(); return array("currentShow"=>Show_DAL::GetCurrentShow($timeNow), "rows"=>$data); } } diff --git a/application/models/Schedule.php b/application/models/Schedule.php index 0fb1468e0..4f2b4cd8d 100644 --- a/application/models/Schedule.php +++ b/application/models/Schedule.php @@ -314,7 +314,9 @@ class Schedule { ." MIN(st.playlist_id) AS playlist_id," ." MIN(st.starts) AS starts," ." MAX(st.ends) AS ends," - ." MIN(sh.name) AS show_name" + ." MIN(sh.name) AS show_name," + ." MIN(si.starts) AS show_start," + ." MAX(si.ends) AS show_end" ." FROM $CC_CONFIG[scheduleTable] as st" ." LEFT JOIN $CC_CONFIG[playListTable] as pt" ." ON st.playlist_id = pt.id" @@ -359,8 +361,8 @@ class Schedule { global $CC_CONFIG; - $date = new Application_Model_DateHelper; - $timeNow = $date->getDate(); + $date = new DateHelper; + $timeNow = $date->getTimestamp(); return array("env"=>APPLICATION_ENV, "schedulerTime"=>gmdate("Y-m-d H:i:s"), "previous"=>Schedule::GetScheduledItemData($timeNow, -1, $prev, "24 hours"), @@ -608,10 +610,8 @@ class Schedule { $data = Schedule::GetItems($range_start, $range_end, true); $playlists = array(); - if (is_array($data)) - { - foreach ($data as $dx) - { + if (is_array($data)){ + foreach ($data as $dx){ $start = $dx['start']; //chop off subseconds @@ -628,6 +628,8 @@ class Schedule { $playlists[$pkey]['played'] = '0'; $playlists[$pkey]['schedule_id'] = $dx['group_id']; $playlists[$pkey]['show_name'] = $dx['show_name']; + $playlists[$pkey]['show_start'] = Schedule::AirtimeTimeToPypoTime($dx['show_start']); + $playlists[$pkey]['show_end'] = Schedule::AirtimeTimeToPypoTime($dx['show_end']); $playlists[$pkey]['user_id'] = 0; $playlists[$pkey]['id'] = $dx['group_id']; $playlists[$pkey]['start'] = Schedule::AirtimeTimeToPypoTime($dx["start"]); diff --git a/application/models/Shows.php b/application/models/Shows.php index 6be170dd9..9cf1123c0 100644 --- a/application/models/Shows.php +++ b/application/models/Shows.php @@ -136,9 +136,13 @@ class Show { $uncheckedDaysImploded = implode(",", $p_uncheckedDays); $showId = $this->getId(); + + $date = new DateHelper; + $timestamp = $date->getTimestamp(); + $sql = "DELETE FROM cc_show_instances" ." WHERE EXTRACT(DOW FROM starts) IN ($uncheckedDaysImploded)" - ." AND starts > current_timestamp " + ." AND starts > TIMESTAMP '$timestamp'" ." AND show_id = $showId"; $CC_DBC->query($sql); @@ -177,6 +181,14 @@ class Show { return !is_null($showInstancesRow); } + /** + * Get start time and absolute start date for a recorded + * shows rebroadcasts. For example start date format would be + * YYYY-MM-DD and time would HH:MM + * + * @return array + * array of associate arrays containing "start_date" and "start_time" + */ public function getRebroadcastsAbsolute() { global $CC_DBC; @@ -199,6 +211,14 @@ class Show { return $CC_DBC->GetAll($sql); } + /** + * Get start time and relative start date for a recorded + * shows rebroadcasts. For example start date format would be + * "x days" and time would HH:MM:SS + * + * @return array + * array of associate arrays containing "day_offset" and "start_time" + */ public function getRebroadcastsRelative() { global $CC_DBC; @@ -272,42 +292,76 @@ class Show { return $endDate; } } - + + /** + * Deletes all future instances of the current show object + * from the show_instances table. + * + */ public function deleteAllInstances(){ global $CC_DBC; + $date = new DateHelper; + $timestamp = $date->getTimestamp(); + $showId = $this->getId(); - $sql = "DELETE FROM cc_show_instances " - ."WHERE starts > current_timestamp " - ."AND show_id = $showId"; + $sql = "DELETE FROM cc_show_instances" + ." WHERE starts > TIMESTAMP '$timestamp'" + ." AND show_id = $showId"; $CC_DBC->query($sql); } - + + /** + * Deletes all show instances of current show after a + * certain date. + * + * @param string $p_date + * The date which to delete after + */ public function removeAllInstancesAfterDate($p_date){ global $CC_DBC; - $showId = $this->getId(); - $sql = "DELETE FROM cc_show_instances " - ."WHERE date(starts) > DATE '$p_date' " - ."AND starts > current_timestamp " - ."AND show_id = $showId"; - - $CC_DBC->query($sql); - } - - public function removeAllInstancesBeforeDate($p_date){ - global $CC_DBC; + $date = new DateHelper; + $timestamp = $date->getTimestamp(); $showId = $this->getId(); $sql = "DELETE FROM cc_show_instances " - ."WHERE date(starts) < DATE '$p_date' " - ."AND starts > current_timestamp " - ."AND show_id = $showId"; + ." WHERE date(starts) > DATE '$p_date'" + ." AND starts > TIMESTAMP '$timestamp'" + ." AND show_id = $showId"; + + $CC_DBC->query($sql); + } + + /** + * Deletes all show instances of current show before a + * certain date. + * + * @param string $p_date + * The date which to delete before + */ + public function removeAllInstancesBeforeDate($p_date){ + global $CC_DBC; + + $date = new DateHelper; + $timestamp = $date->getTimestamp(); + + $showId = $this->getId(); + $sql = "DELETE FROM cc_show_instances " + ." WHERE date(starts) < DATE '$p_date'" + ." AND starts > TIMESTAMP '$timestamp'" + ." AND show_id = $showId"; $CC_DBC->query($sql); } - + + /** + * Get the start date of the current show. + * + * @return string + * The start date in the format YYYY-MM-DD + */ public function getStartDate(){ global $CC_DBC; @@ -323,7 +377,13 @@ class Show { return $firstDate; } } - + + /** + * Get the start time of the current show. + * + * @return string + * The start time in the format HH:MM:SS + */ public function getStartTime(){ global $CC_DBC; @@ -339,14 +399,23 @@ class Show { return $startTime; } } - + + /** + * Get the ID's of future instance of the current show. + * + * @return array + * A simple array containing all future instance ID's + */ public function getAllFutureInstanceIds(){ global $CC_DBC; + + $date = new DateHelper; + $timestamp = $date->getTimestamp(); $showId = $this->getId(); - $sql = "SELECT id from cc_show_instances " + $sql = "SELECT id from cc_show_instances" ." WHERE show_id = $showId" - ." AND starts > current_timestamp"; + ." AND starts > TIMESTAMP '$timestamp'"; $rows = $CC_DBC->GetAll($sql); @@ -361,6 +430,9 @@ class Show { //need to update cc_show_instances, cc_show_days global $CC_DBC; + + $date = new DateHelper; + $timestamp = $date->getTimestamp(); $sql = "UPDATE cc_show_days " ."SET duration = '$p_data[add_show_duration]' " @@ -370,7 +442,7 @@ class Show { $sql = "UPDATE cc_show_instances " ."SET ends = starts + INTERVAL '$p_data[add_show_duration]' " ."WHERE show_id = $p_data[add_show_id] " - ."AND starts > current_timestamp"; + ."AND starts > TIMESTAMP '$timestamp'"; $CC_DBC->query($sql); } @@ -379,6 +451,9 @@ class Show { //need to update cc_schedule, cc_show_instances, cc_show_days global $CC_DBC; + + $date = new DateHelper; + $timestamp = $date->getTimestamp(); $sql = "UPDATE cc_show_days " ."SET start_time = TIME '$p_data[add_show_start_time]', " @@ -399,7 +474,7 @@ class Show { ."SET starts = starts + INTERVAL '$diff sec', " ."ends = ends + INTERVAL '$diff sec' " ."WHERE show_id = $p_data[add_show_id] " - ."AND starts > current_timestamp"; + ."AND starts > TIMESTAMP '$timestamp'"; $CC_DBC->query($sql); $showInstanceIds = $this->getAllFutureInstanceIds(); @@ -656,7 +731,7 @@ class Show { //adding rows to cc_show_rebroadcast if ($isRecorded && $data['add_show_rebroadcast'] && $repeatType != -1) { - for ($i=1; $i<=5; $i++) { + for ($i=1; $i<=10; $i++) { if ($data['add_show_rebroadcast_date_'.$i]) { $showRebroad = new CcShowRebroadcast(); @@ -668,16 +743,16 @@ class Show { } } else if ($isRecorded && $data['add_show_rebroadcast'] && $repeatType == -1){ - for ($i=1; $i<=5; $i++) { + for ($i=1; $i<=10; $i++) { - if ($data['add_show_rebroadcast_absolute_date_'.$i]) { - $sql = "SELECT date '{$data['add_show_rebroadcast_absolute_date_'.$i]}' - date '{$data['add_show_start_date']}' "; + if ($data['add_show_rebroadcast_date_absolute_'.$i]) { + $sql = "SELECT date '{$data['add_show_rebroadcast_date_absolute_'.$i]}' - date '{$data['add_show_start_date']}' "; $r = $con->query($sql); $offset_days = $r->fetchColumn(0); $showRebroad = new CcShowRebroadcast(); $showRebroad->setDbDayOffset($offset_days." days"); - $showRebroad->setDbStartTime($data['add_show_rebroadcast_absolute_time_'.$i]); + $showRebroad->setDbStartTime($data['add_show_rebroadcast_time_absolute_'.$i]); $showRebroad->setDbShowId($showId); $showRebroad->save(); } diff --git a/application/views/scripts/form/add-show-rebroadcast-absolute.phtml b/application/views/scripts/form/add-show-rebroadcast-absolute.phtml index d235a6ae9..ae0977bc9 100644 --- a/application/views/scripts/form/add-show-rebroadcast-absolute.phtml +++ b/application/views/scripts/form/add-show-rebroadcast-absolute.phtml @@ -5,18 +5,24 @@