/** * Set user criteria and display report */ function view($VAR) { # validation if (empty($VAR['report_module']) || empty($VAR['report_template'])) { return false; } $module = $VAR['report_module']; $report = $VAR['report_template']; $format = $VAR['report_format']; # include reporting classess require_once PATH_MODULES . 'report/class.Report.php'; require_once PATH_MODULES . 'report/class.Level.php'; require_once PATH_MODULES . 'report/class.ReportParser.php'; set_time_limit(0); if ($format == 'text') { $f = new TXT_ReportFormatter(); } elseif ($format == 'html') { $f = new HTML_ReportFormatter(); } elseif ($format == 'pdf') { $f = new PDF_ReportFormatter(); } # Tell the formatter where to save the output $dir = md5(tempnam(PATH_FILES, "s")); $path = PATH_FILES . 'reports/' . $dir; @unlink($path); mkdir($path, 0775); $f->setOutputDirectory($path); # set report construct file to use $r = new Reporting($f, true); $p = new ReportParser($r); $result = $p->setInputFile(PATH_AGILE . 'reports/' . $module . '/' . $report); # Get user criteria $arr = $p->getUserCriteria(); # Set the user criteria if (!empty($VAR['report']['conditions']) && is_array($VAR['report']['conditions'])) { foreach ($VAR['report']['conditions'] as $arr) { $exp = $arr['exp']; $col = $arr['col']; $val = $arr['value']; $type = $arr['type']; foreach ($col as $i => $name) { if ($type[$i] == 'date_year_month') { $val[$i] = array('month' => $val['month'][$i], 'year' => $val['year'][$i]); } $this->setSQLCondition($p, $col[$i], $exp[$i], $val[$i], $type[$i]); } } } #echo '<pre>'.print_r($p,true).'</pre>'; exit; $result = $p->parse(); #echo '<pre>'.print_r($p,true).'</pre>'; exit; $r->display(); if ($format == 'text') { header('Content-type: text/txt'); header('Content-Disposition: inline; filename="report.txt"'); echo file_get_contents($f->getOutput()); @unlink($f->getOutput()); } elseif ($format == 'html') { $f->getOutput(); $url = URL . 'includes/files/reports/' . $dir . '/report.html'; echo "<script>document.location='{$url}';</script>"; } elseif ($format == 'pdf') { header('Content-type: application/pdf'); header('Content-Disposition: inline; filename="report.pdf"'); readfile($f->getOutput()); @unlink($f->getOutput()); } }
# these three files make up the reporting system include 'class.Report.php'; include 'class.Level.php'; include 'class.ReportParser.php'; /* Good idea, reports can be a beast */ set_time_limit(0); /* Uncomment one of the output formater lines below */ #$f = new TXT_ReportFormatter; $f = new HTML_ReportFormatter(); #$f = new PDF_ReportFormatter; # Tell the formatter where to save the output $dir = tempnam(PATH_FILES, "s"); @unlink($dir); mkdir($dir, 0775); $f->setOutputDirectory($dir); # This creates the report class, specifying the ReportFormatter to use and whether or not to paginate the title $r = new Reporting($f, true); # This creates the report XML parser, specify the report class object to use in building the report $p = new ReportParser($r); # This sets the XML report definition file #$result = $p->setInputFile(PATH_MODULES.'report/year_month_sales_by_sku.xml'); $result = $p->setInputFile(PATH_AGILE . 'reports/invoice/sales_report.xml'); # set criteria $p->setUserCriteria('yearmonth', '>=', mktime(0, 0, 0, 1, 1, 2005)); # Parse that puppy! $result = $p->parse(); /* COULD INSERT CODE TO DO SMARTY JUNK HERE - then skip the display call */ /* COULD ALSO call back into $p to assign some SQL statement criteria changes from the UI/Smarty's POST/GET */ # Render my report, now! $r->display(); echo $f->getOutput();