コード例 #1
0
 function runAction()
 {
     if (!$this->_request->isPost()) {
         throw new Am_Exception_InputError('Only POST accepted');
     }
     $reportId = $this->getFiltered('report_id');
     if (!$reportId) {
         throw new Am_Exception_InternalError("Empty report id passed");
     }
     $r = Am_Report_Abstract::createById($reportId);
     $r->applyConfigForm($this->_request);
     $this->view->form = $r->getForm();
     $this->view->report = $r;
     if (!$r->hasConfigErrors()) {
         $result = $r->getReport();
         foreach ($r->getOutput($result) as $output) {
             $this->view->content .= $output->render() . "<br /><br />";
         }
         // default
         $default = $r->getForm()->getValue();
         unset($default['_save_']);
         unset($default['save']);
         $this->getSession()->reportDefaults = $default;
     }
     $this->view->display('admin/report_output.phtml');
 }
コード例 #2
0
ファイル: SavedReport.php プロジェクト: grlf/eyedock
 function sendSavedReports(Am_Event $event)
 {
     class_exists('Am_Report', true);
     require_once 'Am/Report/Standard.php';
     foreach ($this->getDi()->adminTable->findBy() as $admin) {
         $frequency = $admin->getPref(Admin::PREF_REPORTS_SEND_FREQUENCY);
         if ($frequency == $event->getId()) {
             $content = '';
             foreach ($this->findByAdminId($admin->pk()) as $report) {
                 $r = Am_Report_Abstract::createById($report->report_id);
                 $r->applyConfigForm(new Am_Request(unserialize($report->request)));
                 $result = $r->getReport();
                 $output = new Am_Report_Text($result);
                 $content .= $report->title . "\n----------------------------\n";
                 $content .= $output->render() . "\n";
             }
             if ($content) {
                 $mail = $this->getDi()->mail;
                 $mail->addTo($admin->email);
                 $mail->setSubject($this->getDi()->config->get('site_title') . ': Reports');
                 $mail->setBodyText($content);
                 $mail->send();
             }
         }
     }
 }
コード例 #3
0
 public function exportAction()
 {
     $reportId = $this->getFiltered('report_id');
     $request = unserialize($this->getParam('request'));
     $r = Am_Report_Abstract::createById($reportId);
     $r->applyConfigForm(new Am_Request($request));
     $result = $r->getReport();
     $dat = date('YmdHis');
     $output = new Am_Report_Csv($result);
     $data = $output->render();
     $this->_helper->sendFile->sendData($data, 'text/csv', "amember_reports-{$reportId}-{$dat}.csv");
     throw new Am_Exception_Redirect();
 }
コード例 #4
0
ファイル: AdminController.php プロジェクト: grlf/eyedock
 public function renderWidgetReport(Am_View $view, $config = null, $invokeArgs = array())
 {
     require_once 'Am/Report.php';
     require_once 'Am/Report/Standard.php';
     $view->enableReports();
     /* @var $savedReport SavedReport */
     $savedReport = $invokeArgs['savedReport'];
     $request = new Am_Request(unserialize($savedReport->request));
     $r = Am_Report_Abstract::createById($savedReport->report_id);
     $r->applyConfigForm($request);
     $result = $r->getReport();
     $result->setTitle($savedReport->title);
     $type = is_null($config) ? 'graph-line' : $config['type'];
     switch ($type) {
         case 'graph-line':
             $output = new Am_Report_Graph_Line($result);
             $output->setSize('100%', 250);
             break;
         case 'graph-bar':
             $output = new Am_Report_Graph_Bar($result);
             $output->setSize('100%', 250);
             break;
         case 'table':
             $output = new Am_Report_Table($result);
             break;
         default:
             throw new Am_Exception_InputError(___('Unknown report display type [%s]', $type));
     }
     return sprintf('<h2>%s</h2><div class="admin-index-report-wrapper"><div class="admin-index-report report-%s">%s</div></div>', $savedReport->title, $savedReport->report_id, $output->render());
 }