protected function getCsvData($list, $fields, $addTitles = true)
{
$requestedLanguage = $this->extractLanguage();
$mappedFieldnames = [];
$objects = [];
Logger::debug("objects in list:" . count($list->getObjects()));
//add inherited values to objects
Object\AbstractObject::setGetInheritedValues(true);
foreach ($list->getObjects() as $object) {
if ($fields) {
$objectData = [];
foreach ($fields as $field) {
$fieldData = $this->getCsvFieldData($field, $object, $requestedLanguage);
if (!$mappedFieldnames[$field]) {
$mappedFieldnames[$field] = $this->mapFieldname($field);
}
$objectData[$mappedFieldnames[$field]] = $fieldData;
}
$objects[] = $objectData;
} else {
/**
* @extjs - TODO remove this, when old ext support is removed
*/
if ($object instanceof Object\Concrete) {
$o = $this->csvObjectData($object);
$objects[] = $o;
}
}
}
//create csv
$csv = "";
if (!empty($objects)) {
if ($addTitles) {
$columns = array_keys($objects[0]);
foreach ($columns as $key => $value) {
$columns[$key] = '"' . $value . '"';
}
$csv = implode(";", $columns) . "\r\n";
}
foreach ($objects as $o) {
foreach ($o as $key => $value) {
//clean value of evil stuff such as " and linebreaks
if (is_string($value)) {
$value = strip_tags($value);
$value = str_replace('"', '', $value);
$value = str_replace("\r", "", $value);
$value = str_replace("\n", "", $value);
$o[$key] = '"' . $value . '"';
}
}
$csv .= implode(";", $o) . "\r\n";
}
}
return $csv;
}