Example #1
0
 function __construct($name, $parms)
 {
     $this->reportName = $name;
     $this->setReportTitle();
     $this->csv = $this->reportName . "_" . date('Ymdhis') . ".csv";
     // Parse the report
     $xml = new \XML_Unserializer();
     $xml->setOption(XML_UNSERIALIZER_OPTION_ATTRIBUTES_PARSE, TRUE);
     $xml->unserialize(__ROOT__ . "/reports/" . $this->reportName . ".xml", TRUE);
     if (\PEAR::isError($xml)) {
         die("ERROR: XML : Report Name: " . $this->reportName . " : MSG: " . $xml->getMessage());
     }
     $this->XML = $xml->getUnserializedData();
     if (\PEAR::isError($xml)) {
         die("ERROR: XML : Report Name: " . $this->reportName . " : MSG: " . $xml->getMessage());
     }
     // Check if it has a query
     if (!isset($this->XML['query'])) {
         die("ERROR: XML : Report Name: " . $this->reportName . " : MSG: This report has no query");
     } else {
         $this->batch = FALSE;
         foreach ($this->XML as $key => $value) {
             switch ($key) {
                 case 'query':
                     if (isset($value[0])) {
                         foreach ($value as $index => $query) {
                             $q = new Query($query);
                             $q->setReportName($name);
                             $t = new Table($query);
                             $t->csv = $this->csv;
                             $t->reportName = $this->reportName;
                             $this->queries[$q->name] = $q;
                             $this->tables[$t->name] = $t;
                         }
                     } else {
                         $q = new Query($value);
                         $q->setReportName($name);
                         $t = new Table($value);
                         $t->csv = $this->csv;
                         $t->reportName = $this->reportName;
                         $this->queries[$q->name] = $q;
                         $this->tables[$t->name] = $t;
                     }
                     break;
                 case 'chart':
                     if (isset($value[0])) {
                         foreach ($value as $index => $chart) {
                             $c = new Chart($chart);
                             $this->charts[$c->name] = $c;
                         }
                     } else {
                         $c = new Chart($value);
                         $this->charts[$c->name] = $c;
                     }
                     break;
                 case 'title':
                     $this->title = $value;
                     break;
                 case 'description':
                     $this->description = $value;
                     break;
                 case 'row':
                     if (isset($value[0])) {
                         foreach ($value as $index => $format) {
                             $f = new Format($format);
                             $this->formats[$f->columnName] = $f;
                         }
                     } else {
                         $f = new Format($value);
                         $this->formats[$f->columnName] = $f;
                     }
                     break;
                 case 'column':
                     if (isset($value[0])) {
                         foreach ($value as $index => $format) {
                             $f = new Format($format);
                             $this->formats[$f->columnName] = $f;
                         }
                     } else {
                         $f = new Format($value);
                         $this->formats[$f->columnName] = $f;
                     }
                     break;
                 case 'parm':
                     $this->parms = new ReportParms($this->XML['parm']);
                     $this->parms->setReportName($name);
                     break;
                 case 'batch':
                     $this->batch = TRUE;
                     break;
             }
         }
     }
     foreach ($this->tables as $key => $value) {
         $value->formats = $this->formats;
     }
     if (isset($this->charts)) {
         foreach ($this->charts as $key => $value) {
             $value->formats = $this->formats;
         }
     }
     //Check if the report has any parameters passed
     unset($parms['_report']);
     $this->passedParms = $parms;
     $this->nPassedParms = count($this->passedParms);
     foreach ($this->passedParms as $key => $value) {
         if (strpos(strtolower($value), 'yesterday') === FALSE) {
         } else {
             if (strpos($value, '-') > 0) {
                 $days = substr($value, strpos($value, '-') + 1, strpos($value, 'd', strpos($value, '-')) - strpos($value, '-') - 1);
                 $this->passedParms[$key] = date('Y-m-d', mktime(0, 0, 0, date("m"), date("d") - $days - 1, date("Y")));
             }
         }
         $this->passedParms[$key] = str_ireplace('today', date('Y-m-d'), $this->passedParms[$key]);
         $this->passedParms[$key] = str_ireplace('yesterday-29d', date('Y-m-d', mktime(0, 0, 0, date("m"), date("d") - 30, date("Y"))), $this->passedParms[$key]);
         $this->passedParms[$key] = str_ireplace('yesterday', date('Y-m-d', mktime(0, 0, 0, date("m"), date("d") - 1, date("Y"))), $this->passedParms[$key]);
     }
     foreach ($this->queries as $index => $query) {
         $query->parms = new QueryParms($this->passedParms);
     }
     $fh = fopen("/tmp/" . $this->csv, "w") or die("ERROR: Could not open file...");
     fwrite($fh, $this->title . "\n");
     fwrite($fh, $this->reportName . "\n");
     fwrite($fh, "{$this->description}\n");
     fwrite($fh, "\n");
     fwrite($fh, "Parameters Passed:\n");
     foreach ($this->passedParms as $key => $value) {
         fwrite($fh, "{$key},{$value}\n");
     }
     fwrite($fh, "\n");
     fclose($fh);
 }