private static function populateNonRepeatingShow($show_id, $first_show, $start_time, $duration, $day, $record, $end_timestamp) { global $CC_DBC; $next_date = $first_show . " " . $start_time; if (strtotime($next_date) < strtotime($end_timestamp)) { $start = $next_date; $sql = "SELECT timestamp '{$start}' + interval '{$duration}'"; $end = $CC_DBC->GetOne($sql); $date = new DateHelper(); $currentTimestamp = $date->getTimestamp(); $show = new Show($show_id); if ($show->hasInstance()) { $ccShowInstance = $show->getInstance(); $newInstance = false; } else { $ccShowInstance = new CcShowInstances(); $newInstance = true; } 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(); } $sql = "SELECT * FROM cc_show_rebroadcast WHERE show_id={$show_id}"; $rebroadcasts = $CC_DBC->GetAll($sql); foreach ($rebroadcasts as $rebroadcast) { $timeinfo = explode(" ", $start); $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(); } } } RabbitMq::PushSchedule(); }