Beispiel #1
0
 private static function createRebroadcastInstances($p_rebroadcasts, $p_currentUtcTimestamp, $p_showId, $p_showInstanceId, $p_startTime, $p_duration, $p_timezone = null)
 {
     //Y-m-d
     //use only the date part of the show start time stamp for the offsets to work properly.
     $date = explode(" ", $p_startTime);
     $start_date = $date[0];
     foreach ($p_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) = Application_Model_Show::createUTCStartEndDateTime($start_date, $p_duration, $p_timezone, $offset);
         if ($utcStartDateTime->format("Y-m-d H:i:s") > $p_currentUtcTimestamp) {
             $newRebroadcastInstance = new CcShowInstances();
             $newRebroadcastInstance->setDbShowId($p_showId);
             $newRebroadcastInstance->setDbStarts($utcStartDateTime);
             $newRebroadcastInstance->setDbEnds($utcEndDateTime);
             $newRebroadcastInstance->setDbRecord(0);
             $newRebroadcastInstance->setDbRebroadcast(1);
             $newRebroadcastInstance->setDbOriginalShow($p_showInstanceId);
             $newRebroadcastInstance->save();
         }
     }
 }
Beispiel #2
0
 private static function populateRepeatingShow($show_id, $next_pop_date, $first_show, $last_show, $start_time, $duration, $day, $record, $end_timestamp, $interval)
 {
     global $CC_DBC;
     if (isset($next_pop_date)) {
         $next_date = $next_pop_date . " " . $start_time;
     } else {
         $next_date = $first_show . " " . $start_time;
     }
     $sql = "SELECT * FROM cc_show_rebroadcast WHERE show_id={$show_id}";
     $rebroadcasts = $CC_DBC->GetAll($sql);
     $show = new Show($show_id);
     $date = new DateHelper();
     $currentTimestamp = $date->getTimestamp();
     while (strtotime($next_date) <= strtotime($end_timestamp) && (strtotime($last_show) > strtotime($next_date) || is_null($last_show))) {
         $start = $next_date;
         $sql = "SELECT timestamp '{$start}' + interval '{$duration}'";
         $end = $CC_DBC->GetOne($sql);
         if ($show->hasInstanceOnDate($start)) {
             $ccShowInstance = $show->getInstanceOnDate($start);
             $newInstance = false;
         } else {
             $ccShowInstance = new CcShowInstances();
             $newInstance = true;
         }
         /* When editing the start/end time of a repeating show, we don't want to
          * change shows that started in the past. So check the start time.
          */
         if ($newInstance || $ccShowInstance->getDbStarts() > $currentTimestamp) {
             $ccShowInstance->setDbShowId($show_id);
             $ccShowInstance->setDbStarts($start);
             $ccShowInstance->setDbEnds($end);
             $ccShowInstance->setDbRecord($record);
             $ccShowInstance->save();
         }
         $show_instance_id = $ccShowInstance->getDbId();
         $showInstance = new ShowInstance($show_instance_id);
         if (!$newInstance) {
             $showInstance->correctScheduleStartTimes();
         }
         foreach ($rebroadcasts as $rebroadcast) {
             $timeinfo = explode(" ", $next_date);
             $sql = "SELECT timestamp '{$timeinfo[0]}' + interval '{$rebroadcast["day_offset"]}' + interval '{$rebroadcast["start_time"]}'";
             $rebroadcast_start_time = $CC_DBC->GetOne($sql);
             $sql = "SELECT timestamp '{$rebroadcast_start_time}' + interval '{$duration}'";
             $rebroadcast_end_time = $CC_DBC->GetOne($sql);
             if ($rebroadcast_start_time > $currentTimestamp) {
                 $newRebroadcastInstance = new CcShowInstances();
                 $newRebroadcastInstance->setDbShowId($show_id);
                 $newRebroadcastInstance->setDbStarts($rebroadcast_start_time);
                 $newRebroadcastInstance->setDbEnds($rebroadcast_end_time);
                 $newRebroadcastInstance->setDbRecord(0);
                 $newRebroadcastInstance->setDbRebroadcast(1);
                 $newRebroadcastInstance->setDbOriginalShow($show_instance_id);
                 $newRebroadcastInstance->save();
             }
         }
         $sql = "SELECT timestamp '{$start}' + interval '{$interval}'";
         $next_date = $CC_DBC->GetOne($sql);
     }
     Show::setNextPop($next_date, $show_id, $day);
     RabbitMq::PushSchedule();
 }
 /**
  *
  * Enter description here ...
  * @param ccShowDays $showDay
  * @param DateTime $showStartDate user's local time
  * @param $instanceId
  */
 private function createRebroadcastInstances($showDay, $showStartDate, $instanceId)
 {
     $currentUtcTimestamp = gmdate("Y-m-d H:i:s");
     $showId = $this->ccShow->getDbId();
     $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->createUTCStartEndDateTime($showStartDate, $showDay->getDbDuration(), $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();
         }
     }
 }