/** * Exports based on Excel format. * * @param \Database\Result $config * @param array|null $ids * @param string $format */ protected function exportWithFormat($config, $ids, $format) { $dataCollector = $this->prepareDefaultDataCollector($config, $ids); $reader = new ArrayReader($dataCollector->getExportData()); if ($config->headerFields) { $reader->setHeaderFields($this->prepareDefaultHeaderFields($config, $dataCollector)); } $row = new Row($config, $this->prepareDefaultExportConfig($config, $dataCollector)); if ($config->useTemplate) { $this->exportWithTemplate($config, $reader, $row, $format); } else { $this->exportWithoutTemplate($config, $reader, $row, $format); } }
/** * Exports a given set of data row ids using a given configuration. * * @param \Database\Result $config * @param array|null $ids * * @throws ExportFailedException */ public function export($config, $ids = null) { $dataCollector = $this->prepareDefaultDataCollector($config, $ids); $reader = new ArrayReader($dataCollector->getExportData()); $writer = new CsvFileWriter('system/tmp/' . File::getName($config)); // Add header fields if ($config->headerFields) { $reader->setHeaderFields($this->prepareDefaultHeaderFields($config, $dataCollector)); $writer->enableHeaderFields(); } $row = new Row($config, $this->prepareDefaultExportConfig($config, $dataCollector)); $writer->setRowCallback(function ($data) use($row) { return $row->compile($data); }); $this->handleDefaultExportResult($writer->writeFrom($reader)); $this->updateLastRun($config); $objFile = new \File($writer->getFilename()); $objFile->sendToBrowser(); }
/** * Get the export fields * * @param object * @param array * @return ArrayReader * * @deprecated Use the DataCollector class instead. */ protected function getExportData($objConfig, $arrIds = null) { $dataCollector = new DataCollector($objConfig->master); // Limit the fields if ($objConfig->export != 'all') { $arrLimitFields = array_keys($objConfig->fields); $dataCollector->setFieldIds(array_map('intval', $arrLimitFields)); } if (null !== $arrIds) { $dataCollector->setLeadDataIds($arrIds); } $objReader = new ArrayReader($dataCollector->getExportData()); // Add header fields if ($objConfig->headerFields) { $arrHeader = array(); // Add base information columns if ($objConfig->export == 'all') { \System::loadLanguageFile('tl_lead_export'); $arrHeader[] = $GLOBALS['TL_LANG']['tl_lead_export']['field_form']; $arrHeader[] = $GLOBALS['TL_LANG']['tl_lead_export']['field_created']; $arrHeader[] = $GLOBALS['TL_LANG']['tl_lead_export']['field_member']; } else { if ($objConfig->fields['_form']) { $arrHeader[] = $objConfig->fields['_form']['name']; } if ($objConfig->fields['_created']) { $arrHeader[] = $objConfig->fields['_created']['name']; } if ($objConfig->fields['_member']) { $arrHeader[] = $objConfig->fields['_member']['name']; } } // Add export data header fields foreach ($dataCollector->getHeaderFields() as $fieldId => $label) { // Use a custom header field if ($objConfig->fields[$fieldId]['name'] != '') { $arrHeader[] = $objConfig->fields[$fieldId]['name']; } else { $arrHeader[] = $label; } } $objReader->setHeaderFields($arrHeader); } return $objReader; }