. */ namespace Volkszaehler\View; use Volkszaehler\View\HTTP; use Volkszaehler\Util; /** * CSV view * * also used for data * * @author Steffen Vogel * @package default */ class CSV extends View { protected $delimiter = ';'; protected $enclosure = '"'; /** * constructor */ public function __construct(HTTP\Request $request, HTTP\Response $response) { parent::__construct($request, $response); echo 'source: volkszaehler.org' . PHP_EOL; echo 'version: ' . \Volkszaehler\VERSION . PHP_EOL; $this->response->setHeader('Content-type', 'text/csv'); $this->response->setHeader('Content-Disposition', 'attachment; filename="data.csv"'); } public function addChannel(Model\Channel $channel, array $data = NULL) { $this->csv = array_merge($this->csv, $data); } public function addGroup(Model\Group $group) { } public function addDebug(Util\Debug $debug) { } protected function renderResponse() { } protected function addException(\Exception $e) { } public function renderResponse() { // channel data foreach ($this->channels as $channel) { foreach ($channel[1] as $reading) { $array = array_map(array($this, 'escape'), ); echo implode($this->delimiter, $array) . PHP_EOL; } } echo PHP_EOL; // debug echo 'time: ' . $debug->getExecutionTime() . PHP_EOL; echo 'database: ' . Util\Configuration::read('db.driver') . PHP_EOL; foreach ($debug->getMessages() as $message) { echo 'message: ' . $message['message'] . PHP_EOL; // TODO add more information } foreach ($debug->getQueries() as $query) { echo 'query: ' . $query['sql'] . PHP_EOL; echo ' parameters: ' . implode(', ', $query['parameters']) . PHP_EOL; } } protected function escape($value) { if (is_string($value)) { return $this->enclosure . $value . $this->enclosure; } elseif (is_numeric($value)) { return $value; } else { return (string) $value; } } } ?>