示例#1
0
文件: Export.php 项目: grlf/eyedock
 public function run(Am_Grid_Editable $grid, Am_Grid_DataSource_Interface_ReadOnly $dataSource, $fields, $config)
 {
     header('Cache-Control: maxage=3600');
     header('Pragma: public');
     header("Content-type: text/csv");
     $dat = date('YmdHis');
     header("Content-Disposition: attachment; filename=amember" . $grid->getId() . "-{$dat}.csv");
     $total = $dataSource->getFoundRows();
     $numOfPages = ceil($total / self::EXPORT_REC_LIMIT);
     $delim = $config['delim'];
     //render headers
     foreach ($fields as $field) {
         echo amEscapeCsv($field->getFieldTitle(), $delim) . $delim;
     }
     echo "\r\n";
     //render content
     for ($i = 0; $i < $numOfPages; $i++) {
         $ret = $dataSource->selectPageRecords($i, self::EXPORT_REC_LIMIT);
         foreach ($ret as $r) {
             foreach ($fields as $field) {
                 echo amEscapeCsv($field->get($r, $grid), $delim) . $delim;
             }
             echo "\r\n";
         }
     }
     return;
 }
示例#2
0
 public function render()
 {
     $out = "#" . self::DELIM;
     //render headers
     foreach ($this->result->getLines() as $line) {
         $out .= amEscapeCsv($line->getLabel(), self::DELIM) . self::DELIM;
     }
     $out .= "\r\n";
     $totals = array();
     foreach ($this->result->getPoints() as $point) {
         if (!$point->hasValues()) {
             continue;
         }
         $out .= amEscapeCsv($point->getLabel(), self::DELIM) . self::DELIM;
         $i = 0;
         foreach ($this->result->getLines() as $line) {
             $out .= amEscapeCsv($line->formatValue($point->getValue($line->getKey())), self::DELIM) . self::DELIM;
             @($lines[$i] = $line);
             @($totals[$i++] += $point->getValue($line->getKey()));
         }
         $out .= "\r\n";
     }
     foreach ($totals as $k => $tt) {
         // if we have at least one numeric value in totals, display total row
         if ($tt > 0) {
             $out .= ___("Total") . self::DELIM;
             foreach ($totals as $v) {
                 $out .= amEscapeCsv($lines[$k]->formatValue($v), self::DELIM) . self::DELIM;
             }
             $out .= "\r\n";
             break;
         }
     }
     return $out;
 }