added CSV export
This commit is contained in:
parent
1d7db3794b
commit
ef41215d22
|
@ -184,7 +184,7 @@ class Exporter {
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
return json_encode(array(
|
return json_encode(array(
|
||||||
Exporter::OUTPUT => htmlspecialchars($output),
|
Exporter::OUTPUT => htmlspecialchars($output, ENT_NOQUOTES),
|
||||||
Exporter::STATUS => 'done'
|
Exporter::STATUS => 'done'
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
@ -196,7 +196,50 @@ class Exporter {
|
||||||
* @param string $lineEnding line ending
|
* @param string $lineEnding line ending
|
||||||
*/
|
*/
|
||||||
private function getCsvOutput(&$entries, $lineEnding) {
|
private function getCsvOutput(&$entries, $lineEnding) {
|
||||||
return 'CSV';
|
$attributeNames = array();
|
||||||
|
foreach ($entries as $entry) {
|
||||||
|
$entryAttributeNames = array_keys($entry);
|
||||||
|
foreach ($entryAttributeNames as $name) {
|
||||||
|
if (!in_array($name, $attributeNames)) {
|
||||||
|
$attributeNames[] = $name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$attributeNames = array_delete(array('dn'), $attributeNames);
|
||||||
|
sort($attributeNames);
|
||||||
|
array_unshift($attributeNames, 'dn');
|
||||||
|
|
||||||
|
$attributeNamesQuoted = array_map(array($this, 'escapeCsvAndAddQuotes'), $attributeNames);
|
||||||
|
$output = '';
|
||||||
|
// header
|
||||||
|
$output .= implode(',', $attributeNamesQuoted) . $lineEnding;
|
||||||
|
// content
|
||||||
|
foreach ($entries as $entry) {
|
||||||
|
$values = array();
|
||||||
|
foreach ($attributeNames as $name) {
|
||||||
|
if (!isset($entry[$name])) {
|
||||||
|
$values[] = $this->escapeCsvAndAddQuotes('');
|
||||||
|
}
|
||||||
|
elseif (is_array($entry[$name])) {
|
||||||
|
$values[] = $this->escapeCsvAndAddQuotes(implode(' | ', $entry[$name]));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$values[] = $this->escapeCsvAndAddQuotes($entry[$name]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$output .= implode(',', $values) . $lineEnding;
|
||||||
|
}
|
||||||
|
return $output;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Escapes a CSV value and adds quotes arround it.
|
||||||
|
*
|
||||||
|
* @param string $value CSV value
|
||||||
|
* @return string escaped and quoted value
|
||||||
|
*/
|
||||||
|
private function escapeCsvAndAddQuotes($value) {
|
||||||
|
return '"' . str_replace('"', '""', $value) . '"';
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue