/** * Class XMLPage * * @copyright Copyright (C) 2010-2012 Combodo SARL * @license http://opensource.org/licenses/AGPL-3.0 */ require_once(APPROOT."/application/webpage.class.inc.php"); /** * Simple web page with no includes or fancy formatting, useful to generateXML documents * The page adds the content-type text/XML and the encoding into the headers */ class XMLPage extends WebPage { /** * For big XML files, it's better NOT to store everything in memory and output the XML piece by piece */ var $m_bPassThrough; var $m_bHeaderSent; function __construct($s_title, $bPassThrough = false) { parent::__construct($s_title); $this->m_bPassThrough = $bPassThrough; $this->m_bHeaderSent = false; $this->add_header("Content-type: text/xml; charset=utf-8"); $this->add_header("Cache-control: no-cache"); $this->add_header("Content-location: export.xml"); } public function output() { if (!$this->m_bPassThrough) { $this->add("\n"); $this->add_header("Content-Length: ".strlen(trim($this->s_content))); foreach($this->a_headers as $s_header) { header($s_header); } echo trim($this->s_content); } if (class_exists('MetaModel')) { MetaModel::RecordQueryTrace(); } } public function add($sText) { if (!$this->m_bPassThrough) { parent::add($sText); } else { if ($this->m_bHeaderSent) { echo $sText; } else { $s_captured_output = ob_get_contents(); ob_end_clean(); foreach($this->a_headers as $s_header) { header($s_header); } echo "\n"; echo trim($s_captured_output); echo trim($this->s_content); echo $sText; $this->m_bHeaderSent = true; } } } public function small_p($sText) { } public function table($aConfig, $aData, $aParams = array()) { } } ?>