Ejemplo n.º 1
0
 /**
  * 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;
 }