/** * Outputs a CSV of stats * @return */ public function OutputCSV() { $db =& $this->db; $output = ''; // We are expecting some parameters $fromdt = DateManager::getIsoDateFromString(Kit::GetParam('fromdt', _POST, _STRING)); $todt = DateManager::getIsoDateFromString(Kit::GetParam('todt', _POST, _STRING)); $displayID = Kit::GetParam('displayid', _POST, _INT); if ($fromdt == $todt) { $todt = date("Y-m-d", strtotime($todt) + 86399); } // We want to output a load of stuff to the browser as a text file. header('Content-Type: text/csv'); header('Content-Disposition: attachment; filename="stats.csv"'); header("Content-Transfer-Encoding: binary"); header('Accept-Ranges: bytes'); // Get an array of display id this user has access to. $displays = $this->user->DisplayList(); $display_ids = array(); foreach ($displays as $display) { $display_ids[] = $display['displayid']; } if (count($display_ids) <= 0) { echo __('No displays with View permissions'); exit; } $SQL = 'SELECT stat.*, display.Display, layout.Layout, media.Name AS MediaName '; $SQL .= ' FROM stat '; $SQL .= ' INNER JOIN display ON stat.DisplayID = display.DisplayID '; $SQL .= ' LEFT OUTER JOIN layout ON layout.LayoutID = stat.LayoutID '; $SQL .= ' LEFT OUTER JOIN media ON media.mediaID = stat.mediaID '; $SQL .= ' WHERE 1=1 '; $SQL .= sprintf(" AND stat.end > '%s' ", $fromdt); $SQL .= sprintf(" AND stat.start <= '%s' ", $todt); $SQL .= ' AND stat.displayID IN (' . implode(',', $display_ids) . ') '; if ($displayID != 0) { $SQL .= sprintf(" AND stat.displayID = %d ", $displayID); } $SQL .= " ORDER BY stat.start "; Debug::LogEntry('audit', $SQL, 'Stats', 'OutputCSV'); if (!($result = $db->query($SQL))) { trigger_error($db->error()); trigger_error('Failed to query for Stats.', E_USER_ERROR); } // Header row $output .= "Type, FromDT, ToDT, Layout, Display, Media, Tag\n"; while ($row = $db->get_assoc_row($result)) { // Read the columns $type = Kit::ValidateParam($row['Type'], _STRING); $fromdt = Kit::ValidateParam($row['start'], _STRING); $todt = Kit::ValidateParam($row['end'], _STRING); $layout = Kit::ValidateParam($row['Layout'], _STRING); $display = Kit::ValidateParam($row['Display'], _STRING); $media = Kit::ValidateParam($row['MediaName'], _STRING); $tag = Kit::ValidateParam($row['Tag'], _STRING); $output .= "{$type}, {$fromdt}, {$todt}, {$layout}, {$display}, {$media}, {$tag}\n"; } //Debug::LogEntry('audit', 'Output: ' . $output, 'Stats', 'OutputCSV'); echo $output; exit; }