public function tracksAction() { $this->doNotRender(); $centova_tracks = CentovaCast::fetchTracks($this->station); if (empty($centova_tracks)) { throw new \DF\Exception\DisplayOnly('Track list could not be loaded from CentovaCast.'); } \DF\Export::csv($centova_tracks, false, $this->station->getShortName() . '_tracks_' . date('Ymd')); }
public function returnToScreen($obj) { $format = strtolower($this->getParam('format', 'json')); if ($format == 'xml') { return $this->returnRaw(\DF\Export::ArrayToXml($obj), 'xml'); } else { return $this->returnRaw(json_encode($obj, \JSON_UNESCAPED_SLASHES), 'json'); } }
protected function _process(&$np) { $return_raw = $this->getUrl(); if (empty($return_raw)) { return false; } $current_data = \DF\Export::XmlToArray($return_raw); $song_data = $current_data['SHOUTCASTSERVER']; $np['meta']['status'] = 'online'; $np['meta']['bitrate'] = $song_data['BITRATE']; $np['meta']['format'] = $song_data['CONTENT']; $np['current_song'] = $this->getSongFromString($song_data['SONGTITLE'], '-'); $u_list = (int) $song_data['UNIQUELISTENERS']; $t_list = (int) $song_data['CURRENTLISTENERS']; $np['listeners'] = array('current' => $this->getListenerCount($u_list, $t_list), 'unique' => $u_list, 'total' => $t_list); return true; }
public static function fetch($url, $params = array()) { $news_items = array(); $author = self::getAccount($url); $http_params = array('type' => 'deviation', 'q' => 'by:' . $author . ' sort:time meta:all'); $feed_url = 'http://backend.deviantart.com/rss.xml?' . http_build_query($http_params); $news_feed = @file_get_contents($feed_url); if ($news_feed) { $article_num = 0; $feed_array = \DF\Export::XmlToArray($news_feed); $items = $feed_array['rss']['channel'][0]['item']; foreach ((array) $items as $item) { if (!isset($item['media:thumbnail'])) { continue; } $news_items[] = array('guid' => 'deviantart_' . md5($item['link']), 'media_format' => 'image', 'timestamp' => strtotime($item['pubDate']), 'title' => $item['title'], 'body' => $item['description'], 'web_url' => $item['link']); } } return $news_items; }
protected function _process(&$np) { $ls_url = parse_url($this->stream_url, PHP_URL_PATH); $ls_username = trim($ls_url, '/'); if (empty($this->data_url)) { $this->data_url = 'http://x' . $ls_username . 'x.api.channel.livestream.com/2.0/livestatus.xml'; } $xml = $this->getUrl(); if (empty($xml)) { return false; } $stream_data = Export::XmlToArray($xml); Debug::print_r($stream_data); if ($stream_data['channel']['ls:isLive'] && $stream_data['channel']['ls:isLive'] == 'true') { $np['meta']['status'] = 'online'; $np['meta']['listeners'] = (int) $stream_data['channel']['ls:currentViewerCount']; $np['on_air']['thumbnail'] = 'http://thumbnail.api.livestream.com/thumbnail?name=' . $ls_username . '&t=' . time(); $np['on_air']['text'] = 'Stream Online'; return true; } }
/** * Signup Management */ public function signupsAction() { $con = $this->_getConvention(); switch ($this->getParam('format')) { case "csv": $export_data = array(); $export_data[] = array('Pony/Badge Name', 'Legal Name', 'Phone Number', 'E-mail Address', 'PVL Affiliation', 'Travel Notes', 'Accommodation Notes'); foreach ($con->signups as $row) { $export_data[] = array($row->pony_name, $row->legal_name, $row->phone, $row->email, $row->pvl_affiliation, $row->travel_notes, $row->accommodation_notes); } \DF\Export::csv($export_data, TRUE, 'Signups - ' . $con->name); break; case "html": default: $this->view->signups = $con->signups; $this->render(); break; } }
public function timelineAction() { $stream_id = $this->getParam('stream'); if (!$stream_id) { $default_stream = $this->station->getDefaultStream(); $stream_id = $default_stream->id; } $this->view->stream_id = $stream_id; $songs_played_raw = $this->_getEligibleHistory($stream_id); // Get current events within threshold. $threshold = $songs_played_raw[0]['timestamp']; $events = \Entity\Schedule::getEventsInRange($this->station->id, $threshold, time()); $songs = array(); foreach ($songs_played_raw as $i => $song_row) { if (!isset($songs_played_raw[$i + 1])) { break; } $start_timestamp = $song_row['timestamp']; $song_row['stat_start'] = $song_row['listeners']; if ($i + 1 == count($songs_played_raw)) { $end_timestamp = $start_timestamp; $song_row['stat_end'] = $song_row['stat_start']; } else { $end_timestamp = $songs_played_raw[$i + 1]['timestamp']; $song_row['stat_end'] = $songs_played_raw[$i + 1]['listeners']; } $song_row['stat_delta'] = $song_row['stat_end'] - $song_row['stat_start']; foreach ($events as $event) { if ($event['end_time'] >= $start_timestamp && $event['start_time'] <= $end_timestamp) { $song_row['event'] = $event; break; } } $songs[] = $song_row; } $format = $this->getParam('format', 'html'); if ($format == 'csv') { $this->doNotRender(); $export_all = array(); $export_all[] = array('Date', 'Time', 'Listeners', 'Delta', 'Likes', 'Dislikes', 'Track', 'Artist', 'Event'); foreach ($songs as $song_row) { $export_row = array(date('Y-m-d', $song_row['timestamp']), date('g:ia', $song_row['timestamp']), $song_row['stat_start'], $song_row['stat_delta'], $song_row['score_likes'], $song_row['score_dislikes'], $song_row['song']['title'] ? $song_row['song']['title'] : $song_row['song']['text'], $song_row['song']['artist'], $song_row['event'] ? $song_row['event']['title'] : ''); $export_all[] = $export_row; } \DF\Export::csv($export_all, true, $this->station->getShortName() . '_timeline_' . date('Ymd')); return; } else { $songs = array_reverse($songs); $pager = new \DF\Paginator($songs, $this->getParam('page', 1), 50); $this->view->pager = $pager; } }