/**
  * Does EVERYTHING
  * @todo cleanup interface
  */
 public function index()
 {
     $formData = array();
     if ($this->hasRequestParameter('classUri')) {
         if (trim($this->getRequestParameter('classUri')) != '') {
             $formData['class'] = new core_kernel_classes_Class(tao_helpers_Uri::decode($this->getRequestParameter('classUri')));
         }
     }
     if ($this->hasRequestParameter('uri') && $this->hasRequestParameter('classUri')) {
         if (trim($this->getRequestParameter('uri')) != '') {
             $formData['instance'] = new core_kernel_classes_Resource(tao_helpers_Uri::decode($this->getRequestParameter('uri')));
         }
     }
     $formData['id'] = $this->getRequestParameter('id');
     $handlers = $this->getAvailableExportHandlers();
     $exporter = $this->getCurrentExporter();
     $selectedResource = isset($formData['instance']) ? $formData['instance'] : $formData['class'];
     $formFactory = new tao_actions_form_Export($handlers, $exporter->getExportForm($selectedResource), $formData);
     $myForm = $formFactory->getForm();
     if (!is_null($exporter)) {
         $myForm->setValues(array('exportHandler' => get_class($exporter)));
     }
     $this->setData('myForm', $myForm->render());
     if ($this->hasRequestParameter('exportChooser_sent') && $this->getRequestParameter('exportChooser_sent') == 1) {
         //use method GET to allow direct file download (not ajax compatible)
         $exportData = $_GET;
         if (isset($exportData['instances'])) {
             $instanceCount = count($exportData['instances']);
             for ($i = 0; $i < $instanceCount; $i++) {
                 $exportData['instances'][$i] = tao_helpers_Uri::decode($exportData['instances'][$i]);
             }
         } elseif (isset($exportData['exportInstance'])) {
             $exportData['exportInstance'] = tao_helpers_Uri::decode($exportData['exportInstance']);
         }
         $file = $exporter->export($exportData, tao_helpers_Export::getExportPath());
         if (!is_null($file) && file_exists($file)) {
             return tao_helpers_Export::outputFile(tao_helpers_Export::getRelativPath($file));
         }
     }
     $context = Context::getInstance();
     $this->setData('export_extension', $context->getExtensionName());
     $this->setData('export_module', $context->getModuleName());
     $this->setData('export_action', $context->getActionName());
     $this->setData('formTitle', __('Export '));
     $this->setView('form/export.tpl', 'tao');
 }
Beispiel #2
0
 /**
  * Does EVERYTHING
  * @todo cleanup interface
  */
 public function index()
 {
     $formData = array();
     if ($this->hasRequestParameter('classUri')) {
         if (trim($this->getRequestParameter('classUri')) != '') {
             $formData['class'] = new core_kernel_classes_Class(tao_helpers_Uri::decode($this->getRequestParameter('classUri')));
         }
     }
     if ($this->hasRequestParameter('uri') && $this->hasRequestParameter('classUri')) {
         if (trim($this->getRequestParameter('uri')) != '') {
             $formData['instance'] = new core_kernel_classes_Resource(tao_helpers_Uri::decode($this->getRequestParameter('uri')));
         }
     }
     $formData['id'] = $this->getRequestParameter('id');
     if (!$this->isExportable($formData)) {
         $this->setData('message', $this->getNotExportableMessage($formData));
         $this->setView('form/export_error_feedback.tpl', 'tao');
         return;
     }
     $handlers = $this->getAvailableExportHandlers();
     $exporter = $this->getCurrentExporter();
     $selectedResource = isset($formData['instance']) ? $formData['instance'] : $formData['class'];
     $formFactory = new tao_actions_form_Export($handlers, $exporter->getExportForm($selectedResource), $formData);
     $myForm = $formFactory->getForm();
     if (!is_null($exporter)) {
         $myForm->setValues(array('exportHandler' => get_class($exporter)));
     }
     $this->setData('myForm', $myForm->render());
     if ($this->hasRequestParameter('exportChooser_sent') && $this->getRequestParameter('exportChooser_sent') == 1) {
         //use method GET to allow direct file download (not ajax compatible)
         $exportData = $_GET;
         if (isset($exportData['instances'])) {
             $instanceCount = count($exportData['instances']);
             for ($i = 0; $i < $instanceCount; $i++) {
                 $exportData['instances'][$i] = tao_helpers_Uri::decode($exportData['instances'][$i]);
             }
         } elseif (isset($exportData['exportInstance'])) {
             $exportData['exportInstance'] = tao_helpers_Uri::decode($exportData['exportInstance']);
         }
         $file = null;
         try {
             $report = $exporter->export($exportData, tao_helpers_Export::getExportPath());
             $file = $report;
         } catch (common_exception_UserReadableException $e) {
             $report = common_report_Report::createFailure($e->getUserMessage());
         }
         $html = '';
         if ($report instanceof common_report_Report) {
             $file = $report->getData();
             if ($report->getType() === common_report_Report::TYPE_ERROR) {
                 $html = tao_helpers_report_Rendering::render($report);
             }
         }
         if ($html !== '') {
             echo $html;
         } elseif (!is_null($file) && file_exists($file)) {
             $this->sendFileToClient($file, $selectedResource);
         }
         return;
     }
     $context = Context::getInstance();
     $this->setData('export_extension', $context->getExtensionName());
     $this->setData('export_module', $context->getModuleName());
     $this->setData('export_action', $context->getActionName());
     $this->setData('formTitle', __('Export '));
     $this->setView('form/export.tpl', 'tao');
 }