added CSV export
This commit is contained in:
		
							parent
							
								
									1d7db3794b
								
							
						
					
					
						commit
						ef41215d22
					
				| 
						 | 
				
			
			@ -184,7 +184,7 @@ class Exporter {
 | 
			
		|||
			));
 | 
			
		||||
		}
 | 
			
		||||
		return json_encode(array(
 | 
			
		||||
			Exporter::OUTPUT => htmlspecialchars($output),
 | 
			
		||||
			Exporter::OUTPUT => htmlspecialchars($output, ENT_NOQUOTES),
 | 
			
		||||
			Exporter::STATUS => 'done'
 | 
			
		||||
		));
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			@ -196,7 +196,50 @@ class Exporter {
 | 
			
		|||
	 * @param string $lineEnding line ending
 | 
			
		||||
	 */
 | 
			
		||||
	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