/** * Export the schedule in json formatted for pypo (the liquidsoap scheduler) * * @param string $p_fromDateTime * In the format "YYYY-MM-DD-HH-mm-SS" * @param string $p_toDateTime * In the format "YYYY-MM-DD-HH-mm-SS" */ public static function GetScheduledPlaylists($p_fromDateTime = null, $p_toDateTime = null) { global $CC_CONFIG, $CC_DBC; if (is_null($p_fromDateTime)) { $t1 = new DateTime(); $range_start = $t1->format("Y-m-d H:i:s"); } else { $range_start = Schedule::PypoTimeToAirtimeTime($p_fromDateTime); } if (is_null($p_fromDateTime)) { $t2 = new DateTime(); $t2->add(new DateInterval("PT24H")); $range_end = $t2->format("Y-m-d H:i:s"); } else { $range_end = Schedule::PypoTimeToAirtimeTime($p_toDateTime); } // Scheduler wants everything in a playlist $data = Schedule::GetItems($range_start, $range_end, true); $playlists = array(); if (is_array($data)) { foreach ($data as $dx) { $start = $dx['start']; //chop off subseconds $start = substr($start, 0, 19); //Start time is the array key, needs to be in the format "YYYY-MM-DD-HH-mm-ss" $pkey = Schedule::AirtimeTimeToPypoTime($start); $timestamp = strtotime($start); $playlists[$pkey]['source'] = "PLAYLIST"; $playlists[$pkey]['x_ident'] = $dx['group_id']; //$playlists[$pkey]['subtype'] = '1'; // Just needs to be between 1 and 4 inclusive $playlists[$pkey]['timestamp'] = $timestamp; $playlists[$pkey]['duration'] = $dx['clip_length']; $playlists[$pkey]['played'] = '0'; $playlists[$pkey]['schedule_id'] = $dx['group_id']; $playlists[$pkey]['show_name'] = $dx['show_name']; $playlists[$pkey]['show_start'] = Schedule::AirtimeTimeToPypoTime($dx['show_start']); $playlists[$pkey]['show_end'] = Schedule::AirtimeTimeToPypoTime($dx['show_end']); $playlists[$pkey]['user_id'] = 0; $playlists[$pkey]['id'] = $dx['group_id']; $playlists[$pkey]['start'] = Schedule::AirtimeTimeToPypoTime($dx["start"]); $playlists[$pkey]['end'] = Schedule::AirtimeTimeToPypoTime($dx["end"]); } } foreach ($playlists as &$playlist) { $scheduleGroup = new ScheduleGroup($playlist["schedule_id"]); $items = $scheduleGroup->getItems(); $medias = array(); foreach ($items as $item) { $storedFile = StoredFile::Recall($item["file_id"]); $uri = $storedFile->getFileUrl(); $starts = Schedule::AirtimeTimeToPypoTime($item["starts"]); $medias[$starts] = array('row_id' => $item["id"], 'id' => $storedFile->getGunid(), 'uri' => $uri, 'fade_in' => Schedule::WallTimeToMillisecs($item["fade_in"]), 'fade_out' => Schedule::WallTimeToMillisecs($item["fade_out"]), 'fade_cross' => 0, 'cue_in' => DateHelper::CalculateLengthInSeconds($item["cue_in"]), 'cue_out' => DateHelper::CalculateLengthInSeconds($item["cue_out"]), 'export_source' => 'scheduler', 'start' => $starts, 'end' => Schedule::AirtimeTimeToPypoTime($item["ends"])); } $playlist['medias'] = $medias; } $result = array(); $result['status'] = array('range' => array('start' => $range_start, 'end' => $range_end), 'version' => AIRTIME_REST_VERSION); $result['playlists'] = $playlists; $result['check'] = 1; $result['stream_metadata'] = array(); $result['stream_metadata']['format'] = Application_Model_Preference::GetStreamLabelFormat(); $result['stream_metadata']['station_name'] = Application_Model_Preference::GetStationName(); $result['server_timezone'] = date('O'); return $result; }
exit; } } $pl->addAudioClip($mediaFile->getId()); echo "done.\n"; //$pl2 = Playlist::findPlaylistByName("pypo_playlist_test"); //var_dump($pl2); // Get current time // In the format YYYY-MM-DD HH:MM:SS.nnnnnn $startTime = date("Y-m-d H:i:s"); $endTime = date("Y-m-d H:i:s", time() + 60 * 60); echo "Removing everything from the scheduler between {$startTime} and {$endTime}..."; // Check for succces $scheduleClear = Schedule::isScheduleEmptyInRange($startTime, "01:00:00"); if (!$scheduleClear) { echo "\nERROR: Schedule could not be cleared.\n\n"; var_dump(Schedule::GetItems($startTime, $endTime)); exit; } echo "done.\n"; // Schedule the playlist for two minutes from now echo "Scheduling new playlist...\n"; //$playTime = date("Y-m-d H:i:s", time()+(60*$minutesFromNow)); $playTime = date("Y-m-d H:i:s", time() + $secondsFromNow); //$scheduleGroup = new ScheduleGroup(); //$scheduleGroup->add($playTime, null, $pl->getId()); //$show = new ShowInstance($showInstanceId); //$show->scheduleShow(array($pl->getId())); //$show->setShowStart(); //$show->setShowEnd(); echo " SUCCESS: Playlist scheduled at {$playTime}\n\n";