CC-4961: Show linking
Removed logic out of edit-show action Created new SchedulerService Fixed overlapping show bug
This commit is contained in:
parent
a7601d290f
commit
6766d208aa
9 changed files with 189 additions and 182 deletions
|
@ -550,105 +550,11 @@ class ScheduleController extends Zend_Controller_Action
|
||||||
|
|
||||||
$service_showForm->delegateFormPopulation($forms);
|
$service_showForm->delegateFormPopulation($forms);
|
||||||
|
|
||||||
/*$show = new Application_Model_Show($showInstance->getShowId());
|
|
||||||
|
|
||||||
$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()));*/
|
|
||||||
|
|
||||||
/*$startsDateTime = new DateTime($show->getStartDate()." ".$show->getStartTime(), new DateTimeZone("UTC"));
|
|
||||||
$endsDateTime = new DateTime($show->getEndDate()." ".$show->getEndTime(), new DateTimeZone("UTC"));
|
|
||||||
|
|
||||||
$startsDateTime->setTimezone(new DateTimeZone(date_default_timezone_get()));
|
|
||||||
$endsDateTime->setTimezone(new DateTimeZone(date_default_timezone_get()));
|
|
||||||
|
|
||||||
$formWhen->populate(array('add_show_start_date' => $startsDateTime->format("Y-m-d"),
|
|
||||||
'add_show_start_time' => $startsDateTime->format("H:i"),
|
|
||||||
'add_show_end_date_no_repeat' => $endsDateTime->format("Y-m-d"),
|
|
||||||
'add_show_end_time' => $endsDateTime->format("H:i"),
|
|
||||||
'add_show_duration' => $show->getDuration(true),
|
|
||||||
'add_show_repeats' => $show->isRepeating() ? 1 : 0));
|
|
||||||
|
|
||||||
if ($show->isStartDateTimeInPast()) {
|
|
||||||
// for a non-repeating show, we should never allow user to change the start time.
|
|
||||||
// for the repeating show, we should allow because the form works as repeating template form
|
|
||||||
if (!$showInstance->getShow()->isRepeating()) {
|
|
||||||
$formWhen->disableStartDateAndTime();
|
|
||||||
} else {
|
|
||||||
$nextFutureRepeatShow = $show->getNextFutureRepeatShowTime();
|
|
||||||
$formWhen->getElement('add_show_start_date')->setValue($nextFutureRepeatShow["starts"]->format("Y-m-d"));
|
|
||||||
$formWhen->getElement('add_show_start_time')->setValue($nextFutureRepeatShow["starts"]->format("H:i"));
|
|
||||||
$formWhen->getElement('add_show_end_date_no_repeat')->setValue($nextFutureRepeatShow["ends"]->format("Y-m-d"));
|
|
||||||
$formWhen->getElement('add_show_end_time')->setValue($nextFutureRepeatShow["ends"]->format("H:i"));
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
|
|
||||||
//need to get the days of the week in the php timezone (for the front end).
|
|
||||||
/*$days = array();
|
|
||||||
$showDays = CcShowDaysQuery::create()->filterByDbShowId($showInstance->getShowId())->find();
|
|
||||||
foreach ($showDays as $showDay) {
|
|
||||||
$showStartDay = new DateTime($showDay->getDbFirstShow(), new DateTimeZone($showDay->getDbTimezone()));
|
|
||||||
$showStartDay->setTimezone(new DateTimeZone(date_default_timezone_get()));
|
|
||||||
array_push($days, $showStartDay->format('w'));
|
|
||||||
}
|
|
||||||
|
|
||||||
$displayedEndDate = new DateTime($show->getRepeatingEndDate(), new DateTimeZone($showDays[0]->getDbTimezone()));
|
|
||||||
$displayedEndDate->sub(new DateInterval("P1D"));//end dates are stored non-inclusively.
|
|
||||||
$displayedEndDate->setTimezone(new DateTimeZone(date_default_timezone_get()));
|
|
||||||
|
|
||||||
$formRepeats->populate(array('add_show_repeat_type' => $show->getRepeatType(),
|
|
||||||
'add_show_day_check' => $days,
|
|
||||||
'add_show_end_date' => $displayedEndDate->format("Y-m-d"),
|
|
||||||
'add_show_no_end' => ($show->getRepeatingEndDate() == '')));*/
|
|
||||||
|
|
||||||
/*$hosts = array();
|
|
||||||
$showHosts = CcShowHostsQuery::create()->filterByDbShow($showInstance->getShowId())->find();
|
|
||||||
foreach ($showHosts as $showHost) {
|
|
||||||
array_push($hosts, $showHost->getDbHost());
|
|
||||||
}
|
|
||||||
$formWho->populate(array('add_show_hosts' => $hosts));*/
|
|
||||||
|
|
||||||
|
|
||||||
/*$formStyle->populate(array('add_show_background_color' => $show->getBackgroundColor(),
|
|
||||||
'add_show_color' => $show->getColor()));
|
|
||||||
|
|
||||||
$formLive->populate($show->getLiveStreamInfo());
|
|
||||||
|
|
||||||
$formRecord->populate(array('add_show_record' => $show->isRecorded(),
|
|
||||||
'add_show_rebroadcast' => $show->isRebroadcast()));
|
|
||||||
|
|
||||||
$formRecord->getElement('add_show_record')->setOptions(array('disabled' => true));*/
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*$rebroadcastsRelative = $show->getRebroadcastsRelative();
|
|
||||||
$rebroadcastFormValues = array();
|
|
||||||
$i = 1;
|
|
||||||
foreach ($rebroadcastsRelative as $rebroadcast) {
|
|
||||||
$rebroadcastFormValues["add_show_rebroadcast_date_$i"] = $rebroadcast['day_offset'];
|
|
||||||
$rebroadcastFormValues["add_show_rebroadcast_time_$i"] = Application_Common_DateHelper::removeSecondsFromTime($rebroadcast['start_time']);
|
|
||||||
$i++;
|
|
||||||
}
|
|
||||||
$formRebroadcast->populate($rebroadcastFormValues);*/
|
|
||||||
/*
|
|
||||||
$rebroadcastsAbsolute = $show->getRebroadcastsAbsolute();
|
|
||||||
$rebroadcastAbsoluteFormValues = array();
|
|
||||||
$i = 1;
|
|
||||||
foreach ($rebroadcastsAbsolute as $rebroadcast) {
|
|
||||||
$rebroadcastAbsoluteFormValues["add_show_rebroadcast_date_absolute_$i"] = $rebroadcast['start_date'];
|
|
||||||
$rebroadcastAbsoluteFormValues["add_show_rebroadcast_time_absolute_$i"] = $rebroadcast['start_time'];
|
|
||||||
$i++;
|
|
||||||
}
|
|
||||||
$formAbsoluteRebroadcast->populate($rebroadcastAbsoluteFormValues);
|
|
||||||
|
|
||||||
if (!$isAdminOrPM) {
|
if (!$isAdminOrPM) {
|
||||||
foreach ($forms as $form) {
|
foreach ($forms as $form) {
|
||||||
$form->disable();
|
$form->disable();
|
||||||
}
|
}
|
||||||
}*/
|
}
|
||||||
|
|
||||||
$this->view->newForm = $this->view->render('schedule/add-show-form.phtml');
|
$this->view->newForm = $this->view->render('schedule/add-show-form.phtml');
|
||||||
$this->view->entries = 5;
|
$this->view->entries = 5;
|
||||||
|
@ -734,11 +640,6 @@ class ScheduleController extends Zend_Controller_Action
|
||||||
//pass in true to indicate we are updating a show
|
//pass in true to indicate we are updating a show
|
||||||
$service_show->addUpdateShow($data, true);
|
$service_show->addUpdateShow($data, true);
|
||||||
|
|
||||||
$scheduler = new Application_Model_Scheduler();
|
|
||||||
$showInstances = CcShowInstancesQuery::create()->filterByDbShowId($data['add_show_id'])->find();
|
|
||||||
foreach ($showInstances as $si) {
|
|
||||||
$scheduler->removeGaps($si->getDbId());
|
|
||||||
}
|
|
||||||
$this->view->addNewShow = true;
|
$this->view->addNewShow = true;
|
||||||
$this->view->newForm = $this->view->render('schedule/add-show-form.phtml');
|
$this->view->newForm = $this->view->render('schedule/add-show-form.phtml');
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -295,7 +295,8 @@ class Application_Form_AddShowWhen extends Zend_Form_SubForm
|
||||||
$rebroadcastShowStart->setTimezone(new DateTimeZone('UTC'));
|
$rebroadcastShowStart->setTimezone(new DateTimeZone('UTC'));
|
||||||
$rebroadcastShowEnd = clone $rebroadcastShowStart;
|
$rebroadcastShowEnd = clone $rebroadcastShowStart;
|
||||||
$rebroadcastShowEnd->add(new DateInterval($durationToAdd));
|
$rebroadcastShowEnd->add(new DateInterval($durationToAdd));
|
||||||
$overlapping = Application_Model_Schedule::checkOverlappingShows($rebroadcastShowStart, $rebroadcastShowEnd, $update, $instanceId);
|
$overlapping = Application_Model_Schedule::checkOverlappingShows($rebroadcastShowStart,
|
||||||
|
$rebroadcastShowEnd, $update, null, $formData["add_show_id"]);
|
||||||
if ($overlapping) {
|
if ($overlapping) {
|
||||||
$valid = false;
|
$valid = false;
|
||||||
$this->getElement('add_show_duration')->setErrors(array(_('Cannot schedule overlapping shows')));
|
$this->getElement('add_show_duration')->setErrors(array(_('Cannot schedule overlapping shows')));
|
||||||
|
|
|
@ -75,7 +75,6 @@ class CcShow extends BaseCcShow {
|
||||||
// return empty collection
|
// return empty collection
|
||||||
$this->initCcShowInstancess();
|
$this->initCcShowInstancess();
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
$collCcShowInstancess = CcShowInstancesQuery::create(null, $criteria)
|
$collCcShowInstancess = CcShowInstancesQuery::create(null, $criteria)
|
||||||
->filterByCcShow($this)
|
->filterByCcShow($this)
|
||||||
->filterByDbStarts(gmdate("Y-m-d H:i:s"), Criteria::GREATER_THAN)
|
->filterByDbStarts(gmdate("Y-m-d H:i:s"), Criteria::GREATER_THAN)
|
||||||
|
@ -119,4 +118,14 @@ class CcShow extends BaseCcShow {
|
||||||
->orderByDbDayOffset()
|
->orderByDbDayOffset()
|
||||||
->find();
|
->find();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getRebroadcastsAbsolute()
|
||||||
|
{
|
||||||
|
return CcShowInstancesQuery::create()
|
||||||
|
->filterByDbShowId($this->getDbId())
|
||||||
|
->filterByDbRebroadcast(1)
|
||||||
|
->filterByDbModifiedInstance(false)
|
||||||
|
->orderByDbStarts()
|
||||||
|
->find();
|
||||||
|
}
|
||||||
} // CcShow
|
} // CcShow
|
||||||
|
|
|
@ -46,8 +46,9 @@ class CcShowDays extends BaseCcShowDays {
|
||||||
* Enter description here ...
|
* Enter description here ...
|
||||||
* @param DateTime $startDateTime first show in user's local time
|
* @param DateTime $startDateTime first show in user's local time
|
||||||
*/
|
*/
|
||||||
public function getLocalEndDateAndTime($startDateTime)
|
public function getLocalEndDateAndTime($showStart)
|
||||||
{
|
{
|
||||||
|
$startDateTime = clone $showStart;
|
||||||
$duration = explode(":", $this->getDbDuration());
|
$duration = explode(":", $this->getDbDuration());
|
||||||
|
|
||||||
return $startDateTime->add(new DateInterval('PT'.$duration[0].'H'.$duration[1].'M'));
|
return $startDateTime->add(new DateInterval('PT'.$duration[0].'H'.$duration[1].'M'));
|
||||||
|
@ -55,7 +56,7 @@ class CcShowDays extends BaseCcShowDays {
|
||||||
|
|
||||||
public function isShowStartInPast()
|
public function isShowStartInPast()
|
||||||
{
|
{
|
||||||
return $this->getUTCStartDateAndTime() > gmdate("Y-m-d H:i:s");
|
return $this->getUTCStartDateAndTime()->format("Y-m-d H:i:s") < gmdate("Y-m-d H:i:s");
|
||||||
}
|
}
|
||||||
|
|
||||||
public function formatDuration()
|
public function formatDuration()
|
||||||
|
|
|
@ -1,26 +0,0 @@
|
||||||
<?php
|
|
||||||
class Application_Service_ScheduleService
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* Enter description here ...
|
|
||||||
* @param array $instanceIds
|
|
||||||
*/
|
|
||||||
public static function updateScheduleStartTime($instanceIds, $diff)
|
|
||||||
{
|
|
||||||
if (count($instanceIds) > 0 && $diff != 0) {
|
|
||||||
$showIdList = implode(",", $instanceIds);
|
|
||||||
$sql = <<<SQL
|
|
||||||
UPDATE cc_schedule
|
|
||||||
SET starts = starts + diff1::INTERVAL,
|
|
||||||
ends = ends + diff2::INTERVAL
|
|
||||||
WHERE instance_id IN :showIds
|
|
||||||
SQL;
|
|
||||||
|
|
||||||
Application_Common_Database::prepareAndExecute($sql,
|
|
||||||
array(':diff1' => $diff, ':diff2' => $diff,
|
|
||||||
':showIds' => $showIdList),
|
|
||||||
'execute');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
85
airtime_mvc/application/services/SchedulerService.php
Normal file
85
airtime_mvc/application/services/SchedulerService.php
Normal file
|
@ -0,0 +1,85 @@
|
||||||
|
<?php
|
||||||
|
class Application_Service_SchedulerService
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Enter description here ...
|
||||||
|
* @param array $instanceIds
|
||||||
|
*/
|
||||||
|
public static function updateScheduleStartTime($instanceIds, $diff)
|
||||||
|
{
|
||||||
|
if (count($instanceIds) > 0 && $diff != 0) {
|
||||||
|
$showIdList = implode(",", $instanceIds);
|
||||||
|
$sql = <<<SQL
|
||||||
|
UPDATE cc_schedule
|
||||||
|
SET starts = starts + :diff1::INTERVAL,
|
||||||
|
ends = ends + :diff2::INTERVAL
|
||||||
|
WHERE instance_id IN (:showIds)
|
||||||
|
SQL;
|
||||||
|
|
||||||
|
Application_Common_Database::prepareAndExecute($sql,
|
||||||
|
array(':diff1' => $diff, ':diff2' => $diff,
|
||||||
|
':showIds' => $showIdList),
|
||||||
|
'execute');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Removes any time gaps in shows
|
||||||
|
*
|
||||||
|
* @param array $schedIds schedule ids to exclude
|
||||||
|
*/
|
||||||
|
public function removeGaps($showId, $schedIds=null)
|
||||||
|
{
|
||||||
|
$ccShowInstances = CcShowInstancesQuery::create()->filterByDbShowId($showId)->find();
|
||||||
|
|
||||||
|
foreach ($ccShowInstances as $instance) {
|
||||||
|
Logging::info("Removing gaps from show instance #".$instance->getDbId());
|
||||||
|
//DateTime object
|
||||||
|
$itemStart = $instance->getDbStarts(null);
|
||||||
|
|
||||||
|
$ccScheduleItems = CcScheduleQuery::create()
|
||||||
|
->filterByDbInstanceId($instance->getDbId())
|
||||||
|
->filterByDbId($schedIds, Criteria::NOT_IN)
|
||||||
|
->orderByDbStarts()
|
||||||
|
->find();
|
||||||
|
|
||||||
|
foreach ($ccScheduleItems as $ccSchedule) {
|
||||||
|
//DateTime object
|
||||||
|
$itemEnd = $this->findEndTime($itemStart, $ccSchedule->getDbClipLength());
|
||||||
|
|
||||||
|
$ccSchedule->setDbStarts($itemStart)
|
||||||
|
->setDbEnds($itemEnd);
|
||||||
|
|
||||||
|
$itemStart = $itemEnd;
|
||||||
|
}
|
||||||
|
$ccScheduleItems->save();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Enter description here ...
|
||||||
|
* @param DateTime $instanceStart
|
||||||
|
* @param string $clipLength
|
||||||
|
*/
|
||||||
|
private function findEndTime($instanceStart, $clipLength)
|
||||||
|
{
|
||||||
|
$startEpoch = $instanceStart->format("U.u");
|
||||||
|
$durationSeconds = Application_Common_DateHelper::playlistTimeToSeconds($clipLength);
|
||||||
|
|
||||||
|
//add two float numbers to 6 subsecond precision
|
||||||
|
//DateTime::createFromFormat("U.u") will have a problem if there is no decimal in the resulting number.
|
||||||
|
$endEpoch = bcadd($startEpoch , (string) $durationSeconds, 6);
|
||||||
|
|
||||||
|
$dt = DateTime::createFromFormat("U.u", $endEpoch, new DateTimeZone("UTC"));
|
||||||
|
|
||||||
|
if ($dt === false) {
|
||||||
|
//PHP 5.3.2 problem
|
||||||
|
$dt = DateTime::createFromFormat("U", intval($endEpoch), new DateTimeZone("UTC"));
|
||||||
|
}
|
||||||
|
|
||||||
|
return $dt;
|
||||||
|
}
|
||||||
|
}
|
|
@ -89,6 +89,7 @@ class Application_Service_ShowFormService
|
||||||
$this->populateFormStyle($forms["style"]);
|
$this->populateFormStyle($forms["style"]);
|
||||||
$this->populateFormRecord($forms["record"]);
|
$this->populateFormRecord($forms["record"]);
|
||||||
$this->populateFormRebroadcastRelative($forms["rebroadcast"]);
|
$this->populateFormRebroadcastRelative($forms["rebroadcast"]);
|
||||||
|
$this->populateFormRebroadcastAbsolute($forms["abs_rebroadcast"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function populateFormWhat($form)
|
private function populateFormWhat($form)
|
||||||
|
@ -186,7 +187,7 @@ class Application_Service_ShowFormService
|
||||||
$form->getElement('add_show_record')->setOptions(array('disabled' => true));
|
$form->getElement('add_show_record')->setOptions(array('disabled' => true));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function populateFormRebroadcastRelative($form)
|
private function populateFormRebroadcastRelative($form)
|
||||||
{
|
{
|
||||||
$relativeRebroadcasts = $this->ccShow->getRebroadcastsRelative();
|
$relativeRebroadcasts = $this->ccShow->getRebroadcastsRelative();
|
||||||
|
|
||||||
|
@ -202,6 +203,24 @@ class Application_Service_ShowFormService
|
||||||
$form->populate($formValues);
|
$form->populate($formValues);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function populateFormRebroadcastAbsolute($form)
|
||||||
|
{
|
||||||
|
$absolutRebroadcasts = $this->ccShow->getRebroadcastsAbsolute();
|
||||||
|
|
||||||
|
$formValues = array();
|
||||||
|
$i = 1;
|
||||||
|
foreach ($absolutRebroadcasts as $ar) {
|
||||||
|
//convert dates to user's local time
|
||||||
|
$start = new DateTime($ar->getDbStarts(), new DateTimeZone("UTC"));
|
||||||
|
$start->setTimezone(new DateTimeZone(Application_Model_Preference::GetTimezone()));
|
||||||
|
$formValues["add_show_rebroadcast_date_absolute_$i"] = $start->format("Y-m-d");
|
||||||
|
$formValues["add_show_rebroadcast_time_absolute_$i"] = $start->format("H:i");
|
||||||
|
$i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
$form->populate($formValues);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* Before we send the form data in for validation, there
|
* Before we send the form data in for validation, there
|
||||||
|
|
|
@ -65,6 +65,11 @@ class Application_Service_ShowService
|
||||||
//create new ccShowInstances
|
//create new ccShowInstances
|
||||||
$this->delegateInstanceCreation($isRebroadcast, $isUpdate);
|
$this->delegateInstanceCreation($isRebroadcast, $isUpdate);
|
||||||
|
|
||||||
|
if ($isUpdate) {
|
||||||
|
$service_scheduler = new Application_Service_SchedulerService();
|
||||||
|
$service_scheduler->removeGaps($this->ccShow->getDbId());
|
||||||
|
}
|
||||||
|
|
||||||
$con->commit();
|
$con->commit();
|
||||||
Application_Model_RabbitMq::PushSchedule();
|
Application_Model_RabbitMq::PushSchedule();
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
|
@ -89,16 +94,16 @@ class Application_Service_ShowService
|
||||||
foreach ($ccShowDays as $day) {
|
foreach ($ccShowDays as $day) {
|
||||||
switch ($day->getDbRepeatType()) {
|
switch ($day->getDbRepeatType()) {
|
||||||
case NO_REPEAT:
|
case NO_REPEAT:
|
||||||
$this->createNonRepeatingShowInstance($day, $populateUntil, $isRebroadcast, $isUpdate);
|
$this->createNonRepeatingInstance($day, $populateUntil, $isRebroadcast, $isUpdate);
|
||||||
break;
|
break;
|
||||||
case REPEAT_WEEKLY:
|
case REPEAT_WEEKLY:
|
||||||
$this->createWeeklyRepeatingShowInstances($day, $populateUntil, "P7D", $isRebroadcast, $isUpdate);
|
$this->createRepeatingInstances($day, $populateUntil, "P7D", $isRebroadcast, $isUpdate);
|
||||||
break;
|
break;
|
||||||
case REPEAT_BI_WEEKLY:
|
case REPEAT_BI_WEEKLY:
|
||||||
$this->createWeeklyRepeatingShowInstances($day, $populateUntil, "P14D", $isRebroadcast, $isUpdate);
|
$this->createRepeatingInstances($day, $populateUntil, "P14D", $isRebroadcast, $isUpdate);
|
||||||
break;
|
break;
|
||||||
case REPEAT_MONTHLY_MONTHLY:
|
case REPEAT_MONTHLY_MONTHLY:
|
||||||
$this->createMonthlyRepeatingShowInstances($day, $populateUntil, "P1M", $isRebroadcast);
|
$this->createRepeatingInstances($day, $populateUntil, "P1M", $isRebroadcast, $isUpdate);
|
||||||
break;
|
break;
|
||||||
case REPEAT_MONTHLY_WEEKLY:
|
case REPEAT_MONTHLY_WEEKLY:
|
||||||
// do something here
|
// do something here
|
||||||
|
@ -426,7 +431,7 @@ SQL;
|
||||||
foreach ($ccShowInstances as $ccShowInstance) {
|
foreach ($ccShowInstances as $ccShowInstance) {
|
||||||
array_push($instanceIds, $ccShowInstance->getDbId());
|
array_push($instanceIds, $ccShowInstance->getDbId());
|
||||||
}
|
}
|
||||||
Application_Service_ScheduleService::updateScheduleStartTime($instanceIds, $diff);
|
Application_Service_SchedulerService::updateScheduleStartTime($instanceIds, $diff);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -507,7 +512,7 @@ SQL;
|
||||||
* @param $showDay
|
* @param $showDay
|
||||||
* @param $populateUntil
|
* @param $populateUntil
|
||||||
*/
|
*/
|
||||||
private function createNonRepeatingShowInstance($showDay, $populateUntil, $isRebroadcast, $isUpdate)
|
private function createNonRepeatingInstance($showDay, $populateUntil, $isRebroadcast, $isUpdate)
|
||||||
{
|
{
|
||||||
//DateTime object
|
//DateTime object
|
||||||
$start = $showDay->getLocalStartDateAndTime();
|
$start = $showDay->getLocalStartDateAndTime();
|
||||||
|
@ -545,7 +550,7 @@ SQL;
|
||||||
* @param unknown_type $repeatInterval
|
* @param unknown_type $repeatInterval
|
||||||
* @param unknown_type $isRebroadcast
|
* @param unknown_type $isRebroadcast
|
||||||
*/
|
*/
|
||||||
private function createWeeklyRepeatingShowInstances($showDay, $populateUntil,
|
private function createRepeatingInstances($showDay, $populateUntil,
|
||||||
$repeatInterval, $isRebroadcast, $isUpdate)
|
$repeatInterval, $isRebroadcast, $isUpdate)
|
||||||
{
|
{
|
||||||
$show_id = $showDay->getDbShowId();
|
$show_id = $showDay->getDbShowId();
|
||||||
|
@ -617,6 +622,12 @@ SQL;
|
||||||
$this->setNextRepeatingShowDate($nextDate->format("Y-m-d"), $day);
|
$this->setNextRepeatingShowDate($nextDate->format("Y-m-d"), $day);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function createMonthlyRepeatingInstances($showDay, $populateUntil,
|
||||||
|
$repeatInterval, $isRebroadcast, $isUpdate)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
private function getNextRepeatingPopulateStartDateTime($showDay)
|
private function getNextRepeatingPopulateStartDateTime($showDay)
|
||||||
{
|
{
|
||||||
$nextPopDate = $showDay->getDbNextPopDate();
|
$nextPopDate = $showDay->getDbNextPopDate();
|
||||||
|
@ -882,17 +893,23 @@ SQL;
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* Enter description here ...
|
* Enter description here ...
|
||||||
* @param DateTime $startDateTime user's local time
|
* @param DateTime $showStart user's local time
|
||||||
* @param string $duration time interval (h)h:(m)m(:ss)
|
* @param string $duration time interval (h)h:(m)m(:ss)
|
||||||
* @param string $timezone "Europe/Prague"
|
* @param string $timezone "Europe/Prague"
|
||||||
* @param array $offset (days, hours, mins) used for rebroadcast shows
|
* @param array $offset (days, hours, mins) used for rebroadcast shows
|
||||||
*
|
*
|
||||||
* @return array of 2 DateTime objects, start/end time of the show in UTC
|
* @return array of 2 DateTime objects, start/end time of the show in UTC
|
||||||
*/
|
*/
|
||||||
private function createUTCStartEndDateTime($startDateTime, $duration, $offset=null)
|
private function createUTCStartEndDateTime($showStart, $duration, $offset=null)
|
||||||
{
|
{
|
||||||
|
$startDateTime = clone $showStart;
|
||||||
|
|
||||||
if (isset($offset)) {
|
if (isset($offset)) {
|
||||||
$startDateTime->add(new DateInterval("P{$offset["days"]}DT{$offset["hours"]}H{$offset["mins"]}M"));
|
//$offset["hours"] and $offset["mins"] represents the start time
|
||||||
|
//of a rebroadcast show
|
||||||
|
$startDateTime = new DateTime($startDateTime->format("Y-m-d")." ".
|
||||||
|
$offset["hours"].":".$offset["mins"]);
|
||||||
|
$startDateTime->add(new DateInterval("P{$offset["days"]}D"));
|
||||||
}
|
}
|
||||||
//convert time to UTC
|
//convert time to UTC
|
||||||
$startDateTime->setTimezone(new DateTimeZone('UTC'));
|
$startDateTime->setTimezone(new DateTimeZone('UTC'));
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue