public function exportTable(DataContainer $dc) { $objConfig = $this->Database->prepare("SELECT * FROM tl_dataexchange_config WHERE id=?")->limit(1)->execute($this->Input->get('return') == '' ? $dc->id : $this->Input->get('id')); if ($objConfig->numRows < 1) { $this->redirect('contao/main.php?act=error'); } $this->import('String'); $this->loadDataContainer($objConfig->tableName); $objCSV = new CsvWriter(); $arrData = array(); $arrResult = $this->getFieldResults($objConfig); foreach ($arrResult as $arrRow) { $arrFieldData = array(); foreach ($arrRow as $arrField) { if ($arrField['dcaField'] != '') { $strValue = $this->formatValue($objConfig->tableName, $arrField['dcaField'], $arrField['value']); } else { $strValue = $arrField['value']; } // Decode special entities (e.g. brackets), Contao automatically encodes them in the database $arrFieldData[] = $this->String->decodeEntities($strValue); } $arrData[] = $arrFieldData; } // Add header fields if ($objConfig->includeHeader) { $this->loadLanguageFile($objConfig->tableName); $arrHeader = array(); foreach ($arrResult[0] as $id => $arrField) { if ($arrField['label'] != '') { $arrHeader[] = $arrField['label']; } elseif ($arrField['dcaField'] != '') { $arrHeader[] = $this->formatLabel($objConfig->tableName, $arrField['dcaField']); } else { $arrHeader[] = $id; } } $objCSV->headerFields = $arrHeader; } $objCSV->seperator = $objConfig->exportCSVSeparator == "tab" ? "\t" : $objConfig->exportCSVSeparator; $objCSV->excel = $objConfig->exportCSVExcel; $objCSV->content = $arrData; if ($objConfig->exportToFile) { $strStoreDir = $objConfig->storeDir; if ($strStoreDir == '') { $strStoreDir = $GLOBALS['TL_CONFIG']['uploadPath']; } $objCSV->saveToFile(sprintf('%s/%s%s.csv', $strStoreDir, $this->replaceInsertTags($objConfig->prependString), $objConfig->tableName)); } else { $objCSV->saveToBrowser(); } if ($this->Input->get('return')) { $this->redirect('contao/main.php?do=' . $this->Input->get('return')); } else { $this->redirect('contao/main.php?do=dataexchange_config'); } }