Created function to create repeating show instances
Created function to create rebroadcast show instances
This commit is contained in:
parent
af622eb4b8
commit
4a86da5f87
|
@ -173,6 +173,7 @@ class Application_Service_ScheduleService
|
|||
|
||||
$repeatType = ($showData['add_show_repeats']) ? $showData['add_show_repeat_type'] : -1;
|
||||
$isRecorded = (isset($showData['add_show_record']) && $showData['add_show_record']) ? 1 : 0;
|
||||
$isRebroadcast = (isset($showData['add_show_rebroadcast']) && $showData['add_show_rebroadcast']) ? 1 : 0;
|
||||
|
||||
$showData["add_show_duration"] = $this->formatShowDuration(
|
||||
$showData["add_show_duration"]);
|
||||
|
@ -194,7 +195,7 @@ class Application_Service_ScheduleService
|
|||
$this->service_show->createShowHosts($showData, $showId);
|
||||
|
||||
//create ccShowInstances
|
||||
$this->service_showInstances->createShowInstances($showId);
|
||||
$this->service_showInstances->delegateShowInstanceCreation($showId, $isRebroadcast);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -16,9 +16,9 @@ class Application_Service_ShowInstanceService
|
|||
/**
|
||||
*
|
||||
* Receives a cc_show id and determines whether to create a
|
||||
* single show_instance or repeating show instances
|
||||
* single show instance or repeating show instances
|
||||
*/
|
||||
public function createShowInstances($showId)
|
||||
public function delegateShowInstanceCreation($showId, $isRebroadcast)
|
||||
{
|
||||
$populateUntil = $this->service_show->getPopulateShowUntilDateTIme();
|
||||
|
||||
|
@ -26,31 +26,32 @@ class Application_Service_ShowInstanceService
|
|||
foreach ($showDays as $day) {
|
||||
switch ($day["repeat_type"]) {
|
||||
case self::NO_REPEAT:
|
||||
$this->createNonRepeatingShowInstance($day, $populateUntil);
|
||||
$this->createNonRepeatingShowInstance($day, $populateUntil, $isRebroadcast);
|
||||
break;
|
||||
case self::REPEAT_WEEKLY:
|
||||
$this->createRepeatingShowInstances($day, $populateUntil, "P7D");
|
||||
$this->createWeeklyRepeatingShowInstances($day, $populateUntil, "P7D", $isRebroadcast);
|
||||
break;
|
||||
case self::REPEAT_BI_WEEKLY:
|
||||
$this->createRepeatingShowInstances($day, $populateUntil, "P14D");
|
||||
$this->createWeeklyRepeatingShowInstances($day, $populateUntil, "P14D", $isRebroadcast);
|
||||
break;
|
||||
case self::REPEAT_MONTHLY_MONTHLY:
|
||||
$this->createRepeatingShowInstances($day, $populateUntil, "P1M");
|
||||
$this->createMonthlyRepeatingShowInstances($day, $populateUntil, "P1M", $isRebroadcast);
|
||||
break;
|
||||
case self::REPEAT_MONTHLY_WEEKLY:
|
||||
// do something here
|
||||
break;
|
||||
}
|
||||
}
|
||||
Application_Model_RabbitMq::PushSchedule();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* Enter description here ...
|
||||
* Sets a single cc_show_instance table row
|
||||
* @param $showDay
|
||||
* @param $populateUntil
|
||||
*/
|
||||
private function createNonRepeatingShowInstance($showDay, $populateUntil)
|
||||
private function createNonRepeatingShowInstance($showDay, $populateUntil, $isRebroadcast)
|
||||
{
|
||||
$start = $showDay["first_show"]." ".$showDay["start_time"];
|
||||
|
||||
|
@ -58,16 +59,82 @@ class Application_Service_ShowInstanceService
|
|||
$start, $showDay["duration"], $showDay["timezone"]);
|
||||
|
||||
if ($utcStartDateTime->getTimestamp() < $populateUntil->getTimestamp()) {
|
||||
$currentUtcTimestamp = gmdate("Y-m-d H:i:s");
|
||||
|
||||
$ccShowInstance = new CcShowInstances();
|
||||
if ($ccShowInstance->getTimestamp() > $currentUtcTimestamp) {
|
||||
$ccShowInstance->setDbShowId($showDay["show_id"]);
|
||||
$ccShowInstance->setDbShowId($showDay["show_id"]);
|
||||
$ccShowInstance->setDbStarts($utcStartDateTime);
|
||||
$ccShowInstance->setDbEnds($utcEndDateTime);
|
||||
$ccShowInstance->setDbRecord($showDay["record"]);
|
||||
$ccShowInstance->save();
|
||||
|
||||
if ($isRebroadcast) {
|
||||
self::createRebroadcastShowInstances($showDay, $start, $ccShowInstance->getDbId());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* Sets multiple cc_show_instances table rows
|
||||
* @param unknown_type $showDay
|
||||
* @param unknown_type $populateUntil
|
||||
* @param unknown_type $repeatInterval
|
||||
* @param unknown_type $isRebroadcast
|
||||
*/
|
||||
private function createWeeklyRepeatingShowInstances($showDay, $populateUntil,
|
||||
$repeatInterval, $isRebroadcast)
|
||||
{
|
||||
$show_id = $showDay["show_id"];
|
||||
$next_pop_date = $showDay["next_pop_date"];
|
||||
$first_show = $showDay["first_show"]; //non-UTC
|
||||
$last_show = $showDay["last_show"]; //non-UTC
|
||||
$start_time = $showDay["start_time"]; //non-UTC
|
||||
$duration = $showDay["duration"];
|
||||
$day = $showDay["day"];
|
||||
$record = $showDay["record"];
|
||||
$timezone = $showDay["timezone"];
|
||||
|
||||
$currentUtcTimestamp = gmdate("Y-m-d H:i:s");
|
||||
|
||||
if (isset($next_pop_date)) {
|
||||
$start = $next_pop_date." ".$start_time;
|
||||
} else {
|
||||
$start = $first_show." ".$start_time;
|
||||
}
|
||||
|
||||
/*
|
||||
* Create a DatePeriod object in the user's local time
|
||||
* It will get converted to UTC right before the show instance
|
||||
* gets created
|
||||
*/
|
||||
$period = new DatePeriod(new DateTime($start, new DateTimeZone($timezone)),
|
||||
new DateInterval($repeatInterval), $populateUntil);
|
||||
|
||||
$utcStartDateTime = Application_Common_DateHelper::ConvertToUtcDateTime($start, $timezone);
|
||||
//convert $last_show into a UTC DateTime object, or null if there is no last show.
|
||||
$utcLastShowDateTime = $last_show ? Application_Common_DateHelper::ConvertToUtcDateTime($last_show, $timezone) : null;
|
||||
|
||||
foreach ($period as $date) {
|
||||
/*
|
||||
* Make sure start date is less than populate until date AND
|
||||
* last show date is null OR start date is less than last show date
|
||||
*/
|
||||
if ($utcStartDateTime->getTimestamp() <= $populateUntil->getTimestamp() &&
|
||||
is_null($utcLastShowDateTime) || $utcStartDateTime->getTimestamp() < $utcLastShowDateTime->getTimestamp()) {
|
||||
|
||||
list($utcStartDateTime, $utcEndDateTime) = $this->service_show->createUTCStartEndDateTime(
|
||||
$date->format("Y-m-d H:i:s"), $duration, $timezone);
|
||||
|
||||
$ccShowInstance = new CcShowInstances();
|
||||
$ccShowInstance->setDbShowId($show_id);
|
||||
$ccShowInstance->setDbStarts($utcStartDateTime);
|
||||
$ccShowInstance->setDbEnds($utcEndDateTime);
|
||||
$ccShowInstance->setDbRecord($showDay["record"]);
|
||||
$ccShowInstance->setDbRecord($record);
|
||||
$ccShowInstance->save();
|
||||
}
|
||||
|
||||
if ($isRebroadcast) {
|
||||
self::createRebroadcastShowInstances($showDay, $date->format("Y-m-d"), $ccShowInstance->getDbId());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -75,11 +142,39 @@ class Application_Service_ShowInstanceService
|
|||
*
|
||||
* Enter description here ...
|
||||
* @param $showDay
|
||||
* @param $populateUntil
|
||||
* @param $repeatInterval
|
||||
*/
|
||||
private function createRepeatingShowInstances($showDay, $populateUntil, $repeatInterval)
|
||||
private function createRebroadcastShowInstances($showDay, $showStartDate, $instanceId)
|
||||
{
|
||||
Logging::info("repeating");
|
||||
$currentUtcTimestamp = gmdate("Y-m-d H:i:s");
|
||||
$showId = $showDay["show_id"];
|
||||
|
||||
$sql = "SELECT * FROM cc_show_rebroadcast WHERE show_id=:show_id";
|
||||
$rebroadcasts = Application_Common_Database::prepareAndExecute($sql,
|
||||
array( ':show_id' => $showId ), 'all');
|
||||
|
||||
foreach ($rebroadcasts as $rebroadcast) {
|
||||
$days = explode(" ", $rebroadcast["day_offset"]);
|
||||
$time = explode(":", $rebroadcast["start_time"]);
|
||||
$offset = array("days"=>$days[0], "hours"=>$time[0], "mins"=>$time[1]);
|
||||
|
||||
list($utcStartDateTime, $utcEndDateTime) = $this->service_show->createUTCStartEndDateTime(
|
||||
$showStartDate, $showDay["duration"], $showDay["timezone"], $offset);
|
||||
|
||||
if ($utcStartDateTime->format("Y-m-d H:i:s") > $currentUtcTimestamp) {
|
||||
$ccShowInstance = new CcShowInstances();
|
||||
$ccShowInstance->setDbShowId($showId);
|
||||
$ccShowInstance->setDbStarts($utcStartDateTime);
|
||||
$ccShowInstance->setDbEnds($utcEndDateTime);
|
||||
$ccShowInstance->setDbRecord(0);
|
||||
$ccShowInstance->setDbRebroadcast(1);
|
||||
$ccShowInstance->setDbOriginalShow($instanceId);
|
||||
$ccShowInstance->save();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private function deleteRebroadcastShowInstances()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
|
@ -6,7 +6,7 @@ class Application_Service_ShowService
|
|||
|
||||
/**
|
||||
*
|
||||
* Enter description here ...
|
||||
* Sets the fields for a cc_show table row
|
||||
* @param $ccShow
|
||||
* @param $showData
|
||||
*/
|
||||
|
@ -29,7 +29,7 @@ class Application_Service_ShowService
|
|||
|
||||
/**
|
||||
*
|
||||
* Enter description here ...
|
||||
* Sets the fields for a cc_show_days table row
|
||||
* @param $showData
|
||||
* @param $showId
|
||||
* @param $userId
|
||||
|
@ -107,7 +107,7 @@ class Application_Service_ShowService
|
|||
|
||||
/**
|
||||
*
|
||||
* Enter description here ...
|
||||
* Sets the fields for a cc_show_rebroadcast table row
|
||||
* @param $showData
|
||||
* @param $showId
|
||||
* @param $repeatType
|
||||
|
@ -144,7 +144,7 @@ class Application_Service_ShowService
|
|||
|
||||
/**
|
||||
*
|
||||
* Enter description here ...
|
||||
* Sets the fields for a cc_show_hosts table row
|
||||
* @param $showData
|
||||
* @param $showId
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue