/** * 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'); }
/** * Output file with direct download with tao_helpers_export * Filename is extracted from form data * * @param File $file * @throws \common_Exception */ protected function output(File $file) { $tmpFile = \tao_helpers_Export::getExportPath() . DIRECTORY_SEPARATOR . $file->getBasename(); if (($resource = fopen($tmpFile, 'w')) === false) { throw new \common_Exception('Unable to write "' . $file->getPrefix() . '" into tmp folder("' . $tmpFile . '").'); } stream_copy_to_stream($file->readStream(), $resource); fclose($resource); $filename = $this->hasRequestParameter('filename') ? $this->getRequestParameter('filename') . '.csv' : ''; \tao_helpers_Export::outputFile($file->getBasename(), $filename); return; }
/** * @param $file */ protected function sendFileToClient($file, $test) { setcookie("fileDownload", "true", 0, "/"); tao_helpers_Export::outputFile(tao_helpers_Export::getRelativPath($file)); return; }