2008-08-30 18:54:57 +00:00
|
|
|
<?php //$Id$
|
|
|
|
|
|
|
|
/**
|
|
|
|
* XML format importer class from file storage.
|
|
|
|
*/
|
|
|
|
class file_xml_database_importer extends xml_database_importer {
|
|
|
|
/** Path to the XML data file. */
|
|
|
|
protected $filepath;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Object constructor.
|
|
|
|
*
|
2008-09-02 21:20:45 +00:00
|
|
|
* @param string $filepath - path to the XML data file. Use 'php://input' for PHP
|
2008-08-30 18:54:57 +00:00
|
|
|
* input stream.
|
|
|
|
* @param moodle_database $mdb Connection to the target database
|
|
|
|
* @see xml_database_importer::__construct()
|
|
|
|
* @param boolean $check_schema - whether or not to check that XML database
|
|
|
|
* @see xml_database_importer::__construct()
|
|
|
|
*/
|
|
|
|
public function __construct($filepath, moodle_database $mdb, $check_schema=true) {
|
|
|
|
$this->filepath = $filepath;
|
|
|
|
parent::__construct($mdb, $check_schema);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Common import method: it opens the file storage, creates the parser, feeds
|
|
|
|
* the XML parser with data, releases the parser and closes the file storage.
|
|
|
|
* @return void
|
|
|
|
*/
|
|
|
|
public function import_database() {
|
|
|
|
$file = fopen($this->filepath, 'r');
|
|
|
|
$parser = $this->get_parser();
|
|
|
|
while ($data = fread($file, 65536)) {
|
|
|
|
if (!xml_parse($parser, $data, feof($file))) {
|
2008-09-02 21:20:45 +00:00
|
|
|
throw new dbtransfer_exception('malformedxmlexception');
|
2008-08-30 18:54:57 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
xml_parser_free($parser);
|
|
|
|
fclose($file);
|
|
|
|
}
|
|
|
|
}
|