diff --git a/airtime_mvc/application/forms/AddShowWhen.php b/airtime_mvc/application/forms/AddShowWhen.php index 38ddb7f1c..e843727a3 100644 --- a/airtime_mvc/application/forms/AddShowWhen.php +++ b/airtime_mvc/application/forms/AddShowWhen.php @@ -5,64 +5,71 @@ class Application_Form_AddShowWhen extends Zend_Form_SubForm public function init() { - - //$this->setDisableLoadDefaultDecorators(true); - //$this->removeDecorator('DtDdWrapper'); - - // Add start date element - $this->addElement('text', 'add_show_start_date', array( - 'label' => 'Date/Time Start:', - 'class' => 'input_text', - 'required' => true, - 'value' => date("Y-m-d"), - 'filters' => array('StringTrim'), - 'validators' => array( - 'NotEmpty', - array('date', false, array('YYYY-MM-DD')) - ) - )); + // Add start date element + $startDate = new Zend_Form_Element_Text('add_show_start_date'); + $startDate->class = 'input_text'; + $startDate->setRequired(true) + ->setLabel('Date/Time Start:') + ->setValue(date("Y-m-d")) + ->setFilters(array('StringTrim')) + ->setValidators(array( + 'NotEmpty', + array('date', false, array('YYYY-MM-DD')))) + ->setDecorators(array( + array(array('open'=>'HtmlTag'), array('tag' => 'dd', 'openOnly'=>true)), + 'ViewHelper', + 'Description', + array('Label', array('tag' =>'dt')))); + $this->addElement($startDate); - // Add start time element - $startTime = $this->addElement('text', 'add_show_start_time', array( - 'decorators' => array('ViewHelper', array('HtmlTag', array('tag'=>'dd'))), - 'class' => 'input_text', - 'required' => true, - 'value' => '00:00', - 'filters' => array('StringTrim'), - 'validators' => array( - 'NotEmpty', - array('date', false, array('HH:mm')), - array('regex', false, array('/^[0-9:]+$/', 'messages' => 'Invalid character entered')) - ) - )); + // Add start time element + $startTime = new Zend_Form_Element_Text('add_show_start_time'); + $startTime->class = 'input_text'; + $startTime->setRequired(true) + ->setValue('00:00') + ->setFilters(array('StringTrim')) + ->setValidators(array( + 'NotEmpty', + array('date', false, array('HH:mm')), + array('regex', false, array('/^[0-9:]+$/', 'messages' => 'Invalid character entered')))) + ->setDecorators(array( + 'ViewHelper', + 'Errors', + array(array('close'=>'HtmlTag'), array('tag' => 'dd', 'closeOnly'=>true)))); + $this->addElement($startTime); // Add end date element - $this->addElement('text', 'add_show_end_date_no_repeat', array( - 'label' => 'Date/Time End:', - 'class' => 'input_text', - 'required' => true, - 'value' => date("Y-m-d"), - 'filters' => array('StringTrim'), - 'validators' => array( - 'NotEmpty', - array('date', false, array('YYYY-MM-DD')) - ) - )); + $endDate = new Zend_Form_Element_Text('add_show_end_date_no_repeat'); + $endDate->class = 'input_text'; + $endDate->setRequired(true) + ->setLabel('Date/Time End:') + ->setValue(date("Y-m-d")) + ->setFilters(array('StringTrim')) + ->setValidators(array( + 'NotEmpty', + array('date', false, array('YYYY-MM-DD')))) + ->setDecorators(array( + array(array('open'=>'HtmlTag'), array('tag' => 'dd', 'openOnly'=>true)), + 'ViewHelper', + 'Description', + array('Label', array('tag' =>'dt')))); + $this->addElement($endDate); // Add end time element - $this->addElement('text', 'add_show_end_time', array( - 'decorators' => array('ViewHelper', array('HtmlTag', array('tag'=>'dd'))), - 'class' => 'input_text', - 'required' => true, - 'value' => '01:00', - 'filters' => array('StringTrim'), - 'validators' => array( - 'NotEmpty', - array('date', false, array('HH:mm')), - array('regex', false, array('/^[0-9:]+$/', 'messages' => 'Invalid character entered')) - ) - - )); + $endTime = new Zend_Form_Element_Text('add_show_end_time'); + $endTime->class = 'input_text'; + $endTime->setRequired(true) + ->setValue('01:00') + ->setFilters(array('StringTrim')) + ->setValidators(array( + 'NotEmpty', + array('date', false, array('HH:mm')), + array('regex', false, array('/^[0-9:]+$/', 'messages' => 'Invalid character entered')))) + ->setDecorators(array( + 'ViewHelper', + 'Errors', + array(array('close'=>'HtmlTag'), array('tag' => 'dd', 'closeOnly'=>true)))); + $this->addElement($endTime); // Add duration element $this->addElement('text', 'add_show_duration', array( @@ -93,7 +100,7 @@ class Application_Form_AddShowWhen extends Zend_Form_SubForm if ((($formData['add_show_id'] != -1) && $startDateModified) || ($formData['add_show_id'] == -1)){ if($start_epoch < $now_epoch) { - $this->getElement('add_show_start_date')->setErrors(array('Cannot create show in the past')); + $this->getElement('add_show_start_time')->setErrors(array('Cannot create show in the past')); $valid = false; } } @@ -101,8 +108,8 @@ class Application_Form_AddShowWhen extends Zend_Form_SubForm if( $formData["add_show_duration"] == "0m" ) { $this->getElement('add_show_duration')->setErrors(array('Cannot have duration 0m')); $valid = false; - }elseif(strpos($formData["add_show_duration"], 'h') !== false && intval(substr($formData["add_show_duration"], 0, strpos($formData["add_show_duration"], 'h'))) > 23) { - $this->getElement('add_show_duration')->setErrors(array('Cannot have duration > 24h')); + }elseif(strpos($formData["add_show_duration"], 'h') !== false && intval(substr($formData["add_show_duration"], 0, strpos($formData["add_show_duration"], 'h'))) > 24) { + $this->getElement('add_show_duration')->setErrors(array('Cannot have duration greater than 24h')); $valid = false; }elseif( strstr($formData["add_show_duration"], '-') ){ $this->getElement('add_show_duration')->setErrors(array('Cannot have duration < 0m')); diff --git a/airtime_mvc/application/models/Nowplaying.php b/airtime_mvc/application/models/Nowplaying.php index 9a43fa4a3..eea8bbbb9 100644 --- a/airtime_mvc/application/models/Nowplaying.php +++ b/airtime_mvc/application/models/Nowplaying.php @@ -8,55 +8,28 @@ class Application_Model_Nowplaying } public static function CreateDatatableRows($p_dbRows){ - - $dataTablesRows = array(); - - $date = new DateHelper; - $timeNow = $date->getTimestamp(); - - - foreach ($p_dbRows as $dbRow){ - $status = ($dbRow['show_ends'] < $dbRow['item_ends']) ? "x" : ""; - - $type = "a"; - $type .= ($dbRow['item_ends'] > $timeNow && $dbRow['item_starts'] <= $timeNow) ? "c" : ""; - - // remove millisecond from the time format - $itemStart = explode('.', $dbRow['item_starts']); - $itemEnd = explode('.', $dbRow['item_ends']); - - //format duration - $duration = explode('.', $dbRow['clip_length']); - $duration = explode(':', $duration[0]); - - if($duration[2] == 0){ - $duration[2] = ''; - }else{ - $duration[2] = intval($duration[2],10).'s'; - } - - if($duration[1] == 0){ - if($duration[2] == ''){ - $duration[1] = ''; - }else{ - $duration[1] = intval($duration[1],10).'m'; - } - }else{ - $duration[1] = intval($duration[1],10).'m'; - } - - if($duration[0] == 0){ - $duration[0] = ''; - }else{ - $duration[0] = intval($duration[0],10).'h'; - } - - $duration = $duration[0].$duration[1].$duration[2]; - - $dataTablesRows[] = array($type, $dbRow['show_starts'], $itemStart[0], $itemEnd[0], - $duration, $dbRow['track_title'], $dbRow['artist_name'], $dbRow['album_title'], - $dbRow['playlist_name'], $dbRow['show_name'], $status); - } + $dataTablesRows = array(); + + $date = new DateHelper; + $timeNow = $date->getTimestamp(); + + foreach ($p_dbRows as $dbRow){ + $status = ($dbRow['show_ends'] < $dbRow['item_ends']) ? "x" : ""; + + $type = "a"; + $type .= ($dbRow['item_ends'] > $timeNow && $dbRow['item_starts'] <= $timeNow) ? "c" : ""; + + // remove millisecond from the time format + $itemStart = explode('.', $dbRow['item_starts']); + $itemEnd = explode('.', $dbRow['item_ends']); + + //format duration + $duration = explode('.', $dbRow['clip_length']); + $formated = Application_Model_Nowplaying::FormatDuration($duration[0]); + $dataTablesRows[] = array($type, $dbRow['show_starts'], $itemStart[0], $itemEnd[0], + $formated, $dbRow['track_title'], $dbRow['artist_name'], $dbRow['album_title'], + $dbRow['playlist_name'], $dbRow['show_name'], $status); + } return $dataTablesRows; } @@ -87,42 +60,81 @@ class Application_Model_Nowplaying $endCutoff = $date->getNowDayEndDiff(); } - $data = array(); + $data = array(); - $showIds = ShowInstance::GetShowsInstancesIdsInRange($timeNow, $startCutoff, $endCutoff); - foreach ($showIds as $showId){ - $instanceId = $showId['id']; + $showIds = ShowInstance::GetShowsInstancesIdsInRange($timeNow, $startCutoff, $endCutoff); + foreach ($showIds as $showId){ + $instanceId = $showId['id']; + + $si = new ShowInstance($instanceId); + + $showId = $si->getShowId(); + $show = new Show($showId); + + //append show header row + $data[] = Application_Model_Nowplaying::CreateHeaderRow($show->getName(), $si->getShowStart(), $si->getShowEnd()); + + $scheduledItems = $si->getScheduleItemsInRange($timeNow, $startCutoff, $endCutoff); + $dataTablesRows = Application_Model_Nowplaying::CreateDatatableRows($scheduledItems); + + //append show audio item rows + $data = array_merge($data, $dataTablesRows); + + //append show gap time row + $gapTime = Application_Model_Nowplaying::FormatDuration($si->getShowEndGapTime(), true); + if ($si->isRecorded()) + $data[] = Application_Model_Nowplaying::CreateRecordingRow($si); + else if ($gapTime > 0) + $data[] = Application_Model_Nowplaying::CreateGapRow($gapTime); + } - $si = new ShowInstance($instanceId); - - $showId = $si->getShowId(); - $show = new Show($showId); - - //append show header row - $data[] = Application_Model_Nowplaying::CreateHeaderRow($show->getName(), $si->getShowStart(), $si->getShowEnd()); - - $scheduledItems = $si->getScheduleItemsInRange($timeNow, $startCutoff, $endCutoff); - $dataTablesRows = Application_Model_Nowplaying::CreateDatatableRows($scheduledItems); - - //append show audio item rows - $data = array_merge($data, $dataTablesRows); - - //append show gap time row - $gapTime = $si->getShowEndGapTime(); - if ($si->isRecorded()) - $data[] = Application_Model_Nowplaying::CreateRecordingRow($si); - else if ($gapTime > 0) - $data[] = Application_Model_Nowplaying::CreateGapRow($gapTime); - } - - return array("currentShow"=>Show_DAL::GetCurrentShow($timeNow), "rows"=>$data); - } - - public static function ShouldShowPopUp(){ - $today = mktime(0, 0, 0, date("m") , date("d"), date("Y")); - $remindDate = Application_Model_Preference::GetRemindMeDate(); - if($remindDate == NULL || $today >= $remindDate){ - return true; - } - } + return array("currentShow"=>Show_DAL::GetCurrentShow($timeNow), "rows"=>$data); + } + + public static function ShouldShowPopUp(){ + $today = mktime(0, 0, 0, date("m") , date("d"), date("Y")); + $remindDate = Application_Model_Preference::GetRemindMeDate(); + if($remindDate == NULL || $today >= $remindDate){ + return true; + } + } + /* + * default $time format should be in format of 00:00:00 + * if $inSecond = true, then $time should be in seconds + */ + public static function FormatDuration($time, $inSecond=false){ + if($inSecond == false){ + $duration = explode(':', $time); + }else{ + $duration = array(); + $duration[0] = intval(($time/3600)%24); + $duration[1] = intval(($time/60)%60); + $duration[2] = $time%60; + } + + if($duration[2] == 0){ + $duration[2] = ''; + }else{ + $duration[2] = intval($duration[2],10).'s'; + } + + if($duration[1] == 0){ + if($duration[2] == ''){ + $duration[1] = ''; + }else{ + $duration[1] = intval($duration[1],10).'m '; + } + }else{ + $duration[1] = intval($duration[1],10).'m '; + } + + if($duration[0] == 0){ + $duration[0] = ''; + }else{ + $duration[0] = intval($duration[0],10).'h '; + } + + $out = $duration[0].$duration[1].$duration[2]; + return $out; + } } diff --git a/airtime_mvc/application/views/scripts/form/preferences_support.phtml b/airtime_mvc/application/views/scripts/form/preferences_support.phtml index 7d946e185..a527dd868 100644 --- a/airtime_mvc/application/views/scripts/form/preferences_support.phtml +++ b/airtime_mvc/application/views/scripts/form/preferences_support.phtml @@ -30,7 +30,7 @@ -

Note: In order to publicise your station, "Send support feedback" must be enabled

+

Note: In order to promote your station, "Send support feedback" must be enabled