Пример #1
0
 /**
  * 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());
     }
 }
Пример #2
0
# 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();