diff --git a/application/controllers/ScheduleController.php b/application/controllers/ScheduleController.php index 31ce6d3f2..6f14ae10a 100644 --- a/application/controllers/ScheduleController.php +++ b/application/controllers/ScheduleController.php @@ -355,6 +355,10 @@ class ScheduleController extends Zend_Controller_Action $data['add_show_hosts'] = $this->_getParam('hosts'); $data['add_show_day_check'] = $this->_getParam('days'); + if($data['add_show_day_check'] == "") { + $data['add_show_day_check'] = null; + } + $formWhat = new Application_Form_AddShowWhat(); $formWho = new Application_Form_AddShowWho(); $formWhen = new Application_Form_AddShowWhen(); @@ -389,20 +393,40 @@ class ScheduleController extends Zend_Controller_Action } if($data["add_show_repeats"]) { + $repeats = $formRepeats->isValid($data); if($repeats) { $repeats = $formRepeats->checkReliantFields($data); } + + $formAbsoluteRebroadcast->reset(); + //make it valid, results don't matter anyways. + $rebroadAb = 1; + + if ($data["add_show_rebroadcast"]) { + $rebroad = $formRebroadcast->isValid($data); + if($rebroad) { + $rebroad = $formRebroadcast->checkReliantFields($data); + } + } } else { - $repeats = 1; //make it valid, results don't matter anyways. + $formRebroadcast->reset(); + //make it valid, results don't matter anyways. + $repeats = 1; + $rebroad = 1; + + if ($data["add_show_rebroadcast"]) { + $rebroadAb = $formAbsoluteRebroadcast->isValid($data); + if($rebroadAb) { + $rebroadAb = $formAbsoluteRebroadcast->checkReliantFields($data); + } + } } $who = $formWho->isValid($data); $style = $formStyle->isValid($data); - $record = $formRecord->isValid($data); - $rebroadAb = $formAbsoluteRebroadcast->isValid($data); - $rebroad = $formRebroadcast->isValid($data); + $record = $formRecord->isValid($data); if ($what && $when && $repeats && $who && $style && $record && $rebroadAb && $rebroad) { @@ -421,6 +445,7 @@ class ScheduleController extends Zend_Controller_Action 'add_show_duration' => '1:00')); $formRepeats->reset(); $formRepeats->populate(array('add_show_end_date' => date("Y-m-d"))); + $formStyle->reset(); $formRecord->reset(); $formAbsoluteRebroadcast->reset(); diff --git a/application/forms/AddShowAbsoluteRebroadcastDates.php b/application/forms/AddShowAbsoluteRebroadcastDates.php index 27e78422c..7d173df2a 100644 --- a/application/forms/AddShowAbsoluteRebroadcastDates.php +++ b/application/forms/AddShowAbsoluteRebroadcastDates.php @@ -36,8 +36,8 @@ class Application_Form_AddShowAbsoluteRebroadcastDates extends Zend_Form_SubForm 'value' => '', 'filters' => array('StringTrim'), 'validators' => array( - 'NotEmpty', - array('date', false, array('HH:mm')) + array('date', false, array('HH:mm')), + array('regex', false, array('/^[0-9:]+$/', 'messages' => 'Invalid character entered')) ), 'decorators' => array( 'ViewHelper' @@ -69,8 +69,8 @@ class Application_Form_AddShowAbsoluteRebroadcastDates extends Zend_Form_SubForm 'value' => '', 'filters' => array('StringTrim'), 'validators' => array( - 'NotEmpty', - array('date', false, array('HH:mm')) + array('date', false, array('HH:mm')), + array('regex', false, array('/^[0-9:]+$/', 'messages' => 'Invalid character entered')) ), 'decorators' => array( 'ViewHelper' @@ -102,8 +102,8 @@ class Application_Form_AddShowAbsoluteRebroadcastDates extends Zend_Form_SubForm 'value' => '', 'filters' => array('StringTrim'), 'validators' => array( - 'NotEmpty', - array('date', false, array('HH:mm')) + array('date', false, array('HH:mm')), + array('regex', false, array('/^[0-9:]+$/', 'messages' => 'Invalid character entered')) ), 'decorators' => array( 'ViewHelper' @@ -135,8 +135,8 @@ class Application_Form_AddShowAbsoluteRebroadcastDates extends Zend_Form_SubForm 'value' => '', 'filters' => array('StringTrim'), 'validators' => array( - 'NotEmpty', - array('date', false, array('HH:mm')) + array('date', false, array('HH:mm')), + array('regex', false, array('/^[0-9:]+$/', 'messages' => 'Invalid character entered')) ), 'decorators' => array( 'ViewHelper' @@ -168,8 +168,8 @@ class Application_Form_AddShowAbsoluteRebroadcastDates extends Zend_Form_SubForm 'value' => '', 'filters' => array('StringTrim'), 'validators' => array( - 'NotEmpty', - array('date', false, array('HH:mm')) + array('date', false, array('HH:mm')), + array('regex', false, array('/^[0-9:]+$/', 'messages' => 'Invalid character entered')) ), 'decorators' => array( 'ViewHelper' @@ -178,6 +178,38 @@ class Application_Form_AddShowAbsoluteRebroadcastDates extends Zend_Form_SubForm } + public function checkReliantFields($formData) { + $valid = true; + + for($i=1; $i<=5; $i++) { + + $day = $formData['add_show_rebroadcast_absolute_date_'.$i]; + + if($day == "") { + continue; + } + + $show_start_time = $formData['add_show_start_date']."".$formData['add_show_start_time']; + $show_end = new DateTime($show_start_time); + + $duration = $formData['add_show_duration']; + $duration = explode(":", $duration); + + $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 = 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")); + $valid = false; + } + } + + return $valid; + } } diff --git a/application/forms/AddShowRebroadcastDates.php b/application/forms/AddShowRebroadcastDates.php index dc38a583b..6cc86b134 100644 --- a/application/forms/AddShowRebroadcastDates.php +++ b/application/forms/AddShowRebroadcastDates.php @@ -33,8 +33,8 @@ class Application_Form_AddShowRebroadcastDates extends Zend_Form_SubForm 'value' => '', 'filters' => array('StringTrim'), 'validators' => array( - 'NotEmpty', - array('date', false, array('HH:mm')) + array('date', false, array('HH:mm')), + array('regex', false, array('/^[0-9:]+$/', 'messages' => 'Invalid character entered')) ), 'decorators' => array( 'ViewHelper' @@ -58,8 +58,8 @@ class Application_Form_AddShowRebroadcastDates extends Zend_Form_SubForm 'value' => '', 'filters' => array('StringTrim'), 'validators' => array( - 'NotEmpty', - array('date', false, array('HH:mm')) + array('date', false, array('HH:mm')), + array('regex', false, array('/^[0-9:]+$/', 'messages' => 'Invalid character entered')) ), 'decorators' => array( 'ViewHelper' @@ -83,8 +83,8 @@ class Application_Form_AddShowRebroadcastDates extends Zend_Form_SubForm 'value' => '', 'filters' => array('StringTrim'), 'validators' => array( - 'NotEmpty', - array('date', false, array('HH:mm')) + array('date', false, array('HH:mm')), + array('regex', false, array('/^[0-9:]+$/', 'messages' => 'Invalid character entered')) ), 'decorators' => array( 'ViewHelper' @@ -108,8 +108,8 @@ class Application_Form_AddShowRebroadcastDates extends Zend_Form_SubForm 'value' => '', 'filters' => array('StringTrim'), 'validators' => array( - 'NotEmpty', - array('date', false, array('HH:mm')) + array('date', false, array('HH:mm')), + array('regex', false, array('/^[0-9:]+$/', 'messages' => 'Invalid character entered')) ), 'decorators' => array( 'ViewHelper' @@ -133,13 +133,51 @@ class Application_Form_AddShowRebroadcastDates extends Zend_Form_SubForm 'value' => '', 'filters' => array('StringTrim'), 'validators' => array( - 'NotEmpty', - array('date', false, array('HH:mm')) + array('date', false, array('HH:mm')), + array('regex', false, array('/^[0-9:]+$/', 'messages' => 'Invalid character entered')) ), 'decorators' => array( 'ViewHelper' ) )); } + + public function checkReliantFields($formData) { + + $valid = true; + + for($i=1; $i<=5; $i++) { + + $days = $formData['add_show_rebroadcast_date_'.$i]; + + if($days == "") { + continue; + } + + $days = explode(" ", $days); + $day = $days[0]; + + $show_start_time = $formData['add_show_start_date']."".$formData['add_show_start_time']; + $show_end = new DateTime($show_start_time); + + $duration = $formData['add_show_duration']; + $duration = explode(":", $duration); + + $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")); + + if($rebroad_start < $show_end) { + $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/forms/AddShowWhen.php b/application/forms/AddShowWhen.php index 295354c36..5795145dc 100644 --- a/application/forms/AddShowWhen.php +++ b/application/forms/AddShowWhen.php @@ -31,7 +31,8 @@ class Application_Form_AddShowWhen extends Zend_Form_SubForm 'filters' => array('StringTrim'), 'validators' => array( 'NotEmpty', - array('date', false, array('HH:mm')) + array('date', false, array('HH:mm')), + array('regex', false, array('/^[0-9:]+$/', 'messages' => 'Invalid character entered')) ) )); diff --git a/application/models/Shows.php b/application/models/Shows.php index 54af288d6..7daf2fc63 100644 --- a/application/models/Shows.php +++ b/application/models/Shows.php @@ -260,12 +260,15 @@ class Show { } /** + * Get all the show instances in the given time range. + * * @param string $start_timestamp - * In the format "YYYY-MM-DD HH:mm:ss" + * In the format "YYYY-MM-DD HH:mm:ss". This time is inclusive. * @param string $end_timestamp - * In the format "YYYY-MM-DD HH:mm:ss" + * In the format "YYYY-MM-DD HH:mm:ss". This time is inclusive. * @param unknown_type $excludeInstance * @param boolean $onlyRecord + * @return array */ public static function getShows($start_timestamp, $end_timestamp, $excludeInstance=NULL, $onlyRecord=FALSE) { diff --git a/application/models/tests/populator.php b/application/models/tests/populator.php index 98992b650..4c3b5a994 100644 --- a/application/models/tests/populator.php +++ b/application/models/tests/populator.php @@ -14,9 +14,15 @@ require_once __DIR__.'/../../../library/propel/runtime/lib/Propel.php'; Propel::init(__DIR__.'/../../configs/airtime-conf.php'); - AirtimeInstall::DbConnect(true); +$sql = "DELETE FROM cc_show"; +$CC_DBC->query($sql); +$sql = "DELETE FROM cc_show_days"; +$CC_DBC->query($sql); +$sql = "DELETE FROM cc_show_instances"; +$CC_DBC->query($sql); +/* // Create a playlist $playlist = new Playlist(); $playlist->create("Calendar Load test playlist ".uniqid()); @@ -34,65 +40,64 @@ $result = $playlist->addAudioClip($storedFile2->getId()); $result = $playlist->addAudioClip($storedFile2->getId()); echo "Created playlist ".$playlist->getName()." with ID ".$playlist->getId()."\n"; - +*/ // Create the shows -$data = array(); -$currentDate = date("Y\\-m\\-d"); - -$year = date("Y"); -$month = date("m"); -$day = date("d"); - -$nextDay = $currentDate; - -#echo $currentDate; -$currentHour = date("H"); -$setHour = $currentHour + 1; - -$showNumber = 1; -for ($days=1; $days<100; $days=$days+1) +function createTestShow($showNumber, $showTime, $duration = "1:00") { - // Adding shows until the end of the day - while ($setHour < 24) - { - echo 'Adding show: '.$nextDay. ' '.$setHour.":00\n"; - $data['add_show_name'] = 'automated show '.$showNumber; - $data['add_show_start_date'] = $nextDay; - $data['add_show_start_time'] = $setHour.':00'; - $showNumber = $showNumber + 1; - $data['add_show_duration'] = '1:00'; - $data['add_show_no_end'] = 0; - $data['add_show_repeats'] = 0; - $data['add_show_description'] = 'automated show'; - $data['add_show_url'] = 'http://www.OfirGal.com'; - $data['add_show_color'] = ""; - $data['add_show_background_color'] = ""; - $data['add_show_record'] = 0; - $data['add_show_hosts'] =""; - $showId = Show::create($data); - Show::populateShowUntil($showId, "2012-01-01 00:00:00"); + $data = array(); + $strTime = $showTime->format("Y-m-d H:i"); + echo "Adding show: $strTime\n"; + $data['add_show_name'] = 'automated show '.$showNumber; + $data['add_show_start_date'] = $showTime->format("Y-m-d"); + $data['add_show_start_time'] = $showTime->format("H:i"); + $data['add_show_duration'] = $duration; + $data['add_show_no_end'] = 0; + $data['add_show_repeats'] = 0; + $data['add_show_description'] = 'automated show'; + $data['add_show_url'] = 'http://www.OfirGal.com'; + $data['add_show_color'] = ""; + $data['add_show_background_color'] = ""; + $data['add_show_record'] = 0; + $data['add_show_hosts'] =""; + $showId = Show::create($data); + //echo "show created, ID: $showId\n"; - // populating the show with a playlist - $show = new ShowInstance($showId); - $show->scheduleShow(array($playlist->getId())); - - $setHour = $setHour + 1; - } - // set the next day - $setHour = 0; - if ($day<30) { - $day = $day + 1; - } else { - $day = 1; - if ($month<12) - { - $month = $month + 1; - } else { - $month = 1; - $year = $year + 1; - } - } - $nextDay = $year."-".$month."-".$day; + // populating the show with a playlist + $instances = Show::getShows($showTime->format("Y-m-d H:i:s"), $showTime->format("Y-m-d H:i:s")); + $instance = array_pop($instances); + $show = new ShowInstance($instance["instance_id"]); + //echo "Adding playlist to show instance ".$show->getShowInstanceId()."\n"; + $show->scheduleShow(array(1)); + //echo "done\n"; + //$show->scheduleShow(array($playlist->getId())); } + +$showTime = new DateTime(); + +$resolution = "minute"; +$showNumber = 1; +$numberOfDays = 0; +$numberOfHours = 1; +$endDate = new DateTime(); +$endDate->add(new DateInterval("P".$numberOfDays."DT".$numberOfHours."H")); +echo "End date: ".$endDate->format("Y-m-d H:i")."\n"; + +while ($showTime < $endDate) { + echo $showTime->format("Y-m-d H:i")." < " .$endDate->format("Y-m-d H:i")."\n"; + if ($resolution == "minute") { + createTestShow($showNumber, $showTime, "0:01"); + $showTime->add(new DateInterval("PT1M")); + } elseif ($resolution == "hour") { + createTestShow($showNumber, $showTime); + $showTime->add(new DateInterval("PT1H")); + } + $showNumber = $showNumber + 1; +} +RabbitMq::PushScheduleFinal(); + + + + + diff --git a/application/views/scripts/form/add-show-rebroadcast-absolute.phtml b/application/views/scripts/form/add-show-rebroadcast-absolute.phtml index 0fcb9a0dc..d235a6ae9 100644 --- a/application/views/scripts/form/add-show-rebroadcast-absolute.phtml +++ b/application/views/scripts/form/add-show-rebroadcast-absolute.phtml @@ -1,4 +1,4 @@ -