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')); }
/** * 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; } }