. /** * XML format exporter class * * @package core_dtl * @copyright 2008 Andrei Bautu * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ defined('MOODLE_INTERNAL') || die(); /** * XML format exporter class. * Provides logic for writing XML tags and data inside appropriate callbacks. * Subclasses should define XML data sinks. */ abstract class xml_database_exporter extends database_exporter { /** * Generic output method. Subclasses should implement it with code specific * to the target XML sink. */ protected abstract function output($text); /** * Callback function. Outputs open XML PI and moodle_database opening tag. * * @param float $version the version of the system which generating the data * @param string $release moodle release info * @param string $timestamp the timestamp of the data (in ISO 8601) format. * @param string $description a user description of the data. * @return void */ public function begin_database_export($version, $release, $timestamp, $description) { $this->output(''); //TODO add xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" and schema information $this->output(''); } /** * Callback function. Outputs table opening tag. * * @param xmldb_table $table - XMLDB object for the exported table * @return void */ public function begin_table_export(xmldb_table $table) { $this->output(''); } /** * Callback function. Outputs table closing tag. * * @param xmldb_table $table - XMLDB object for the exported table */ public function finish_table_export(xmldb_table $table) { $this->output('
'); } /** * Callback function. Outputs moodle_database closing tag. */ public function finish_database_export() { $this->output('
'); } /** * Callback function. Outputs record tag with field subtags and data. * * @param xmldb_table $table - XMLDB object of the table from which data was retrieved * @param object $data - data object (fields and values from record) * @return void */ public function export_table_data(xmldb_table $table, $data) { $this->output(''); foreach ($data as $key => $value) { if (is_null($value)) { $this->output(''); } else { $this->output(''.htmlspecialchars($value, ENT_NOQUOTES, 'UTF-8').''); } } $this->output(''); } }