/** * Bulk export: CSV export * * @copyright Copyright (C) 2015-2016 Combodo SARL * @license http://opensource.org/licenses/AGPL-3.0 */ class CSVBulkExport extends TabularBulkExport { public function DisplayUsage(Page $oP) { $oP->p(" * csv format options:"); $oP->p(" *\tfields: (mandatory) the comma separated list of field codes to export (e.g: name,org_id,service_name...)."); $oP->p(" *\tseparator: (optional) character to be used as the separator (default is ',')."); $oP->p(" *\tcharset: (optional) character set for encoding the result (default is 'UTF-8')."); $oP->p(" *\ttext-qualifier: (optional) character to be used around text strings (default is '\"')."); $oP->p(" *\tno_localize: set to 1 to retrieve non-localized values (for instance for ENUM values). Default is 0 (= localized values)"); $oP->p(" *\tformatted_text: set to 1 to export case logs and formatted text fields with their HTML markup. Default is 0 (= plain text)"); $oP->p(" *\tdate_format: the format to use when exporting date and time fields (default = the format used in the user interface). Example: 'm/d/Y H:i:s'"); } public function ReadParameters() { parent::ReadParameters(); $this->aStatusInfo['separator'] = utils::ReadParam('separator', ',', true, 'raw_data'); if (strtolower($this->aStatusInfo['separator']) == 'tab') { $this->aStatusInfo['separator'] = "\t"; } else if (strtolower($this->aStatusInfo['separator']) == 'other') { $this->aStatusInfo['separator'] = utils::ReadParam('other-separator', ',', true, 'raw_data'); } $this->aStatusInfo['text_qualifier'] = utils::ReadParam('text-qualifier', '"', true, 'raw_data'); if (strtolower($this->aStatusInfo['text_qualifier']) == 'other') { $this->aStatusInfo['text_qualifier'] = utils::ReadParam('other-text-qualifier', '"', true, 'raw_data'); } $this->aStatusInfo['charset'] = strtoupper(utils::ReadParam('charset', 'UTF-8', true, 'raw_data')); $this->aStatusInfo['formatted_text'] = (bool)utils::ReadParam('formatted_text', 0, true); $sDateFormatRadio = utils::ReadParam('date_format_radio', 'custom'); if ($sDateFormatRadio == 'default') { $this->aStatusInfo['date_format'] = AttributeDateTime::GetFormat(); } else { $this->aStatusInfo['date_format'] = utils::ReadParam('date_format', AttributeDateTime::GetFormat(), true, 'raw_data'); } } protected function SuggestField($sClass, $sAttCode) { switch($sAttCode) { case 'id': // replace 'id' by 'friendlyname' $sAttCode = 'friendlyname'; break; default: $oAttDef = MetaModel::GetAttributeDef($sClass, $sAttCode); if ($oAttDef instanceof AttributeExternalKey) { $sAttCode .= '_friendlyname'; } } return parent::SuggestField($sClass, $sAttCode); } public function EnumFormParts() { return array_merge(parent::EnumFormParts(), array('csv_options' => array('separator', 'charset', 'text-qualifier', 'no_localize', 'formatted_text') ,'interactive_fields_csv' => array('interactive_fields_csv'))); } public function DisplayFormPart(WebPage $oP, $sPartId) { switch($sPartId) { case 'interactive_fields_csv': $this->GetInteractiveFieldsWidget($oP, 'interactive_fields_csv'); break; case 'csv_options': $oP->add('
'); $sJSTooltip = json_encode('