/** * Add a music clip or playlist to the schedule. * * @param int $p_showInstance * ID of the show. * @param $p_datetime * In the format YYYY-MM-DD HH:MM:SS.mmmmmm * @param $p_audioFileId * (optional, either this or $p_playlistId must be set) DB ID of the audio file * @param $p_playlistId * (optional, either this of $p_audioFileId must be set) DB ID of the playlist * @param $p_options * Does nothing at the moment. * * @return int|PEAR_Error * Return PEAR_Error if the item could not be added. * Error code 555 is a scheduling conflict. */ public function add($p_showInstance, $p_datetime, $p_audioFileId = null, $p_playlistId = null, $p_options = null) { global $CC_CONFIG, $CC_DBC; if (!is_null($p_audioFileId)) { // Schedule a single audio track // Load existing track $track = StoredFile::Recall($p_audioFileId); if (is_null($track)) { return new PEAR_Error("Could not find audio track."); } // Check if there are any conflicts with existing entries $metadata = $track->getMetadata(); $length = $metadata['MDATA_KEY_DURATION']; if (empty($length)) { return new PEAR_Error("Length is empty."); } // Insert into the table $this->groupId = $CC_DBC->GetOne("SELECT nextval('schedule_group_id_seq')"); $sql = "INSERT INTO " . $CC_CONFIG["scheduleTable"] . " (instance_id, starts, ends, clip_length, group_id, file_id, cue_out)" . " VALUES ({$p_showInstance}, TIMESTAMP '{$p_datetime}', " . " (TIMESTAMP '{$p_datetime}' + INTERVAL '{$length}')," . " '{$length}'," . " {$this->groupId}, {$p_audioFileId}, '{$length}')"; $result = $CC_DBC->query($sql); if (PEAR::isError($result)) { //var_dump($sql); return $result; } } elseif (!is_null($p_playlistId)) { // Schedule a whole playlist // Load existing playlist $playlist = Playlist::Recall($p_playlistId); if (is_null($playlist)) { return new PEAR_Error("Could not find playlist."); } // Check if there are any conflicts with existing entries $length = trim($playlist->getLength()); //var_dump($length); if (empty($length)) { return new PEAR_Error("Length is empty."); } // Insert all items into the schedule $this->groupId = $CC_DBC->GetOne("SELECT nextval('schedule_group_id_seq')"); $itemStartTime = $p_datetime; $plItems = $playlist->getContents(); //var_dump($plItems); foreach ($plItems as $row) { $trackLength = $row["cliplength"]; //var_dump($trackLength); $sql = "INSERT INTO " . $CC_CONFIG["scheduleTable"] . " (instance_id, playlist_id, starts, ends, group_id, file_id," . " clip_length, cue_in, cue_out, fade_in, fade_out)" . " VALUES ({$p_showInstance}, {$p_playlistId}, TIMESTAMP '{$itemStartTime}', " . " (TIMESTAMP '{$itemStartTime}' + INTERVAL '{$trackLength}')," . " '{$this->groupId}', '{$row['file_id']}', '{$trackLength}', '{$row['cuein']}'," . " '{$row['cueout']}', '{$row['fadein']}','{$row['fadeout']}')"; $result = $CC_DBC->query($sql); if (PEAR::isError($result)) { //var_dump($sql); return $result; } $itemStartTime = $CC_DBC->getOne("SELECT TIMESTAMP '{$itemStartTime}' + INTERVAL '{$trackLength}'"); } } RabbitMq::PushSchedule(); return $this->groupId; }
public static function OutputToRss(&$pl, $plac, $ind = '') { $id = $plac['attrs']['id']; $playlist = Playlist::Recall($id); if (is_null($playlist) || PEAR::isError($playlist)) { return $playlist; } $RADext = $playlist->getFileExtension(); if (PEAR::isError($RADext)) { return $RADext; } $title = $playlist->getName(); $desc = $playlist->getPLMetaData("dc:description"); return array('type' => 'audioclip', 'gunid' => $id, 'src' => "http://XXX/YY/{$id}.{$RADext}", 'playlength' => $plac['attrs']['playlength'], 'title' => $title, 'desc' => $desc); }
public function getFileMetaDataAction() { $id = $this->_getParam('id'); $type = $this->_getParam('type'); if ($type == "au") { $file = StoredFile::Recall($id); $this->view->type = $type; $this->view->md = $file->getMetadata(); } else { if ($type == "pl") { $file = Playlist::Recall($id); $this->view->type = $type; $this->view->md = $file->getAllPLMetaData(); $this->view->contents = $file->getContents(); } } }
/** * Returns an array of playlist objects that this file is a part of. * @return array */ public function getPlaylists() { global $CC_CONFIG, $CC_DBC; $sql = "SELECT playlist_id " . " FROM " . $CC_CONFIG['playistTable'] . " WHERE file_id='{$this->id}'"; $ids = $CC_DBC->getAll($sql); $playlists = array(); if (is_array($ids) && count($ids) > 0) { foreach ($ids as $id) { $playlists[] = Playlist::Recall($id); } } return $playlists; }
public function deleteAction() { $id = $this->_getParam('id', null); $pl = Playlist::Recall($id); if ($pl !== FALSE) { Playlist::Delete($id); $pl_sess = $this->pl_sess; if ($pl_sess->id === $id) { unset($pl_sess->id); } } $this->view->id = $id; $this->view->html = $this->view->render('playlist/index.phtml'); }