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); }