diff --git a/airtime_mvc/application/controllers/ScheduleController.php b/airtime_mvc/application/controllers/ScheduleController.php index 487253647..5ad6ce234 100644 --- a/airtime_mvc/application/controllers/ScheduleController.php +++ b/airtime_mvc/application/controllers/ScheduleController.php @@ -464,6 +464,7 @@ class ScheduleController extends Zend_Controller_Action $showInstanceId = $this->_getParam('id'); $show_instance = CcShowInstancesQuery::create()->findPK($showInstanceId); + $show = new Application_Model_Show($show_instance->getDbShowId()); $starts_string = $show_instance->getDbStarts(); $ends_string = $show_instance->getDbEnds(); @@ -474,15 +475,20 @@ class ScheduleController extends Zend_Controller_Action $starts_datetime->setTimezone(new DateTimeZone(date_default_timezone_get())); $ends_datetime->setTimezone(new DateTimeZone(date_default_timezone_get())); - $instance_duration = $starts_datetime->diff($ends_datetime); + $instance_duration = $starts_datetime->diff($ends_datetime); + + $formWhat->populate(array('add_show_id' => $show->getId(), + 'add_show_instance_id' => $showInstanceId, + 'add_show_name' => $show->getName(), + 'add_show_url' => $show->getUrl(), + 'add_show_genre' => $show->getGenre(), + 'add_show_description' => $show->getDescription())); - $formValues = array('add_show_start_date' => $starts_datetime->format("Y-m-d"), + $formWhen->populate(array('add_show_start_date' => $starts_datetime->format("Y-m-d"), 'add_show_start_time' => $starts_datetime->format("H:i"), 'add_show_end_date_no_repeat' => $ends_datetime->format("Y-m-d"), 'add_show_end_time' => $ends_datetime->format("H:i"), - 'add_show_duration' => $instance_duration->format("%h")); - - $formWhen->populate($formValues); + 'add_show_duration' => $instance_duration->format("%h"))); $formWhat->disable(); $formWho->disable(); @@ -719,19 +725,15 @@ class ScheduleController extends Zend_Controller_Action foreach($js as $j){ $data[$j["name"]] = $j["value"]; } - - $start_dt = new DateTime($data['add_show_start_date']." ".$data['add_show_start_time'], new DateTimeZone(date_default_timezone_get())); - $start_dt->setTimezone(new DateTimeZone('UTC')); - - $end_dt = new DateTime($data['add_show_end_date_no_repeat']." ".$data['add_show_end_time'], new DateTimeZone(date_default_timezone_get())); - $end_dt->setTimezone(new DateTimeZone('UTC')); - - //add_show_instance_id not being populated by populateShowInstanceFormAction. - $ccShowInstance = CcShowInstancesQuery::create()->findPK($data["add_show_instance_id"]); - $ccShowInstance->setDbStarts($start_dt); - $ccShowInstance->setDbEnds($end_dt); - $ccShowInstance->save(); + $success = Application_Model_Schedule::updateShowInstance($data, $this); + if ($success){ + $this->view->addNewShow = true; + $this->view->newForm = $this->view->render('schedule/add-show-form.phtml'); + } else { + $this->view->addNewShow = false; + $this->view->form = $this->view->render('schedule/add-show-form.phtml'); + } } public function editShowAction(){ diff --git a/airtime_mvc/application/forms/GeneralPreferences.php b/airtime_mvc/application/forms/GeneralPreferences.php index e79a1d526..5ee581c9d 100644 --- a/airtime_mvc/application/forms/GeneralPreferences.php +++ b/airtime_mvc/application/forms/GeneralPreferences.php @@ -33,8 +33,8 @@ class Application_Form_GeneralPreferences extends Zend_Form_SubForm 'required' => false, 'filters' => array('StringTrim'), 'validators' => array(array('regex', false, - array('/^[0-5][0-9](\.\d{1,6})?$/', - 'messages' => 'enter a time in seconds 00{.000000}'))), + array('/^[0-9]{1,2}(\.\d{1,6})?$/', + 'messages' => 'enter a time in seconds 0{.000000}'))), 'value' => $defaultFade, 'decorators' => array( 'ViewHelper' diff --git a/airtime_mvc/application/models/Preference.php b/airtime_mvc/application/models/Preference.php index 1d1193334..a267c142a 100644 --- a/airtime_mvc/application/models/Preference.php +++ b/airtime_mvc/application/models/Preference.php @@ -543,7 +543,7 @@ class Application_Model_Preference } public static function GetAirtimeVersion(){ - if (defined('APPLICATION_ENV') && APPLICATION_ENV == "development"){ + if (defined('APPLICATION_ENV') && APPLICATION_ENV == "development" && function_exists('exec')){ return self::GetValue("system_version")."+".exec("git rev-parse --short HEAD"); } else { return self::GetValue("system_version"); diff --git a/airtime_mvc/application/models/Schedule.php b/airtime_mvc/application/models/Schedule.php index 55f627fdf..63f02deb9 100644 --- a/airtime_mvc/application/models/Schedule.php +++ b/airtime_mvc/application/models/Schedule.php @@ -634,13 +634,96 @@ class Application_Model_Schedule { $p_view->addNewShow = true; } + /* This function is responsible for handling the case where an individual + * show instance in a repeating show was edited (via the context menu in the Calendar). + * There is still lots of clean-up to do. For example we shouldn't be passing $controller into + * this method to manipulate the view (this should be done inside the controller function). With + * 2.1 deadline looming, this is OK for now. -Martin */ + public static function updateShowInstance($data, $controller){ + $isSaas = (Application_Model_Preference::GetPlanLevel() != 'disabled'); + + $formWhat = new Application_Form_AddShowWhat(); + $formWhen = new Application_Form_AddShowWhen(); + $formRepeats = new Application_Form_AddShowRepeats(); + $formWho = new Application_Form_AddShowWho(); + $formStyle = new Application_Form_AddShowStyle(); + $formLive = new Application_Form_AddShowLiveStream(); + + $formWhat->removeDecorator('DtDdWrapper'); + $formWhen->removeDecorator('DtDdWrapper'); + $formRepeats->removeDecorator('DtDdWrapper'); + $formWho->removeDecorator('DtDdWrapper'); + $formStyle->removeDecorator('DtDdWrapper'); + $formLive->removeDecorator('DtDdWrapper'); + + if(!$isSaas){ + $formRecord = new Application_Form_AddShowRR(); + $formAbsoluteRebroadcast = new Application_Form_AddShowAbsoluteRebroadcastDates(); + $formRebroadcast = new Application_Form_AddShowRebroadcastDates(); + + $formRecord->removeDecorator('DtDdWrapper'); + $formAbsoluteRebroadcast->removeDecorator('DtDdWrapper'); + $formRebroadcast->removeDecorator('DtDdWrapper'); + } + $when = $formWhen->isValid($data); + + if($when && $formWhen->checkReliantFields($data, true)) { + $start_dt = new DateTime($data['add_show_start_date']." ".$data['add_show_start_time'], new DateTimeZone(date_default_timezone_get())); + $start_dt->setTimezone(new DateTimeZone('UTC')); + + $end_dt = new DateTime($data['add_show_end_date_no_repeat']." ".$data['add_show_end_time'], new DateTimeZone(date_default_timezone_get())); + $end_dt->setTimezone(new DateTimeZone('UTC')); + + $ccShowInstance = CcShowInstancesQuery::create()->findPK($data["add_show_instance_id"]); + $ccShowInstance->setDbStarts($start_dt); + $ccShowInstance->setDbEnds($end_dt); + $ccShowInstance->save(); + + Application_Model_Schedule::createNewFormSections($controller->view); + + return true; + } else { + $formWhat->disable(); + $formWhen->disableRepeatCheckbox(); + $formRepeats->disable(); + $formWho->disable(); + $formStyle->disable(); + //$formLive->disable(); + + $controller->view->what = $formWhat; + $controller->view->when = $formWhen; + $controller->view->repeats = $formRepeats; + $controller->view->who = $formWho; + $controller->view->style = $formStyle; + $controller->view->live = $formLive; + if(!$isSaas){ + $controller->view->rr = $formRecord; + $controller->view->absoluteRebroadcast = $formAbsoluteRebroadcast; + $controller->view->rebroadcast = $formRebroadcast; + + //$formRecord->disable(); + //$formAbsoluteRebroadcast->disable(); + //$formRebroadcast->disable(); + } + return false; + } + } + + /* This function is responsible for handling the case where the entire show (not a single show instance) + * was edited (via the context menu in the Calendar). + * There is still lots of clean-up to do. For example we shouldn't be passing $controller into + * this method to manipulate the view (this should be done inside the controller function). With + * 2.1 deadline looming, this is OK for now. + * Another clean-up is to move all the form manipulation to the proper form class..... + * -Martin + */ public static function addUpdateShow($data, $controller, $validateStartDate){ $userInfo = Zend_Auth::getInstance()->getStorage()->read(); $user = new Application_Model_User($userInfo->id); $isAdminOrPM = $user->isUserType(array(UTYPE_ADMIN, UTYPE_PROGRAM_MANAGER)); - $isSaas = Application_Model_Preference::GetPlanLevel() == 'disabled'?false:true; + $isSaas = (Application_Model_Preference::GetPlanLevel() != 'disabled'); $record = false; $formWhat = new Application_Form_AddShowWhat(); diff --git a/airtime_mvc/application/models/ShowInstance.php b/airtime_mvc/application/models/ShowInstance.php index 8e096aad3..fa7cf76fd 100644 --- a/airtime_mvc/application/models/ShowInstance.php +++ b/airtime_mvc/application/models/ShowInstance.php @@ -609,7 +609,10 @@ class Application_Model_ShowInstance { $end = $this->getShowInstanceEnd(null); $interval = $start->diff($end); - return $interval->format("%h:%I:%S"); + $days = $interval->format("%d"); + + if ($days > 0) return "24:" . $interval->format("%I:%S"); + else return $interval->format("%h:%I:%S"); } public function getShowListContent() diff --git a/airtime_mvc/application/views/scripts/dashboard/stream-player.phtml b/airtime_mvc/application/views/scripts/dashboard/stream-player.phtml index b31757141..042531b68 100644 --- a/airtime_mvc/application/views/scripts/dashboard/stream-player.phtml +++ b/airtime_mvc/application/views/scripts/dashboard/stream-player.phtml @@ -73,8 +73,6 @@ $(document).ready(function(){