Exemplo n.º 1
0
 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'));
 }
Exemplo n.º 2
0
 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');
     }
 }
Exemplo n.º 3
0
 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;
 }
Exemplo n.º 4
0
 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;
 }
Exemplo n.º 5
0
 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;
     }
 }
Exemplo n.º 6
0
 /**
  * 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;
     }
 }
Exemplo n.º 7
0
 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;
     }
 }