. */ namespace Volkszaehler\View\XML; use Volkszaehler\View\HTTP; /** * XML channel view * * also used for data * * @author Steffen Vogel * @package channel */ class XMLChannelView extends XMLView { public function __construct(HTTP\Request $request, HTTP\Response $response) { parent::__construct($request, $response); $this->xml = $this->xmlDoc->createElement('channels'); } public function add(\Volkszaehler\Model\Channel $obj, array $data = NULL) { $xmlChannel = $this->xmlDoc->createElement('channel'); $xmlChannel->setAttribute('uuid', $obj->getUuid()); $xmlChannel->appendChild($this->xmlDoc->createElement('indicator', $obj->getIndicator())); $xmlChannel->appendChild($this->xmlDoc->createElement('unit', $obj->getUnit())); $xmlChannel->appendChild($this->xmlDoc->createElement('name', $obj->getName())); $xmlChannel->appendChild($this->xmlDoc->createElement('description', $obj->getDescription())); $xmlChannel->appendChild($this->xmlDoc->createElement('resolution', (int) $obj->getResolution())); $xmlChannel->appendChild($this->xmlDoc->createElement('cost', (float) $obj->getCost())); if (isset($data)) { $xmlData = $this->xmlDoc->createElement('data'); foreach ($data as $reading) { $xmlReading = $this->xmlDoc->createElement('reading'); $xmlReading->setAttribute('timestamp', $reading['timestamp']); // hardcoded data fields for performance optimization $xmlReading->setAttribute('value', $reading['value']); $xmlReading->setAttribute('count', $reading['count']); $xmlData->appendChild($xmlReading); } $xmlChannel->appendChild($xmlData); } $this->xml->appendChild($xmlChannel); } public function render() { $this->xmlRoot->appendChild($this->xml); parent::render(); } } ?>