X-Git-Url: http://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fexport%2FWikiExporter.php;h=ca63dfebf3b5fc856cab9746c0e867a99d32de56;hb=0bb36bf5aaa72e3af0d7e47177895184f315fbb6;hp=fbcf8320703ab0566f2d87b3f4d9bee76a6d1a3b;hpb=081a44ff0cfab9c251a112e1ece037b3efb0fe0e;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/export/WikiExporter.php b/includes/export/WikiExporter.php index fbcf832070..ca63dfebf3 100644 --- a/includes/export/WikiExporter.php +++ b/includes/export/WikiExporter.php @@ -63,12 +63,16 @@ class WikiExporter { /** @var DumpOutput */ public $sink; + /** @var XmlDumpWriter */ + private $writer; + /** - * Returns the export schema version. + * Returns the default export schema version, as defined by $wgXmlDumpSchemaVersion. * @return string */ public static function schemaVersion() { - return "0.10"; + global $wgXmlDumpSchemaVersion; + return $wgXmlDumpSchemaVersion; } /** @@ -79,13 +83,27 @@ class WikiExporter { * - limit: maximum number of rows to return * - dir: "asc" or "desc" timestamp order * @param int $text One of WikiExporter::TEXT or WikiExporter::STUB + * @param null|array $limitNamespaces Comma-separated list of namespace numbers + * to limit results */ - function __construct( $db, $history = self::CURRENT, $text = self::TEXT ) { + function __construct( $db, $history = self::CURRENT, $text = self::TEXT, + $limitNamespaces = null + ) { $this->db = $db; $this->history = $history; - $this->writer = new XmlDumpWriter(); + $this->writer = new XmlDumpWriter( $text, self::schemaVersion() ); $this->sink = new DumpOutput(); $this->text = $text; + $this->limitNamespaces = $limitNamespaces; + } + + /** + * @param string $schemaVersion which schema version the generated XML should comply to. + * One of the values from self::$supportedSchemas, using the XML_DUMP_SCHEMA_VERSION_XX + * constants. + */ + public function setSchemaVersion( $schemaVersion ) { + $this->writer = new XmlDumpWriter( $this->text, $schemaVersion ); } /** @@ -455,9 +473,14 @@ class WikiExporter { */ protected function outputPageStreamBatch( $results, $lastRow ) { foreach ( $results as $row ) { + if ( $this->limitNamespaces && + !in_array( $row->page_namespace, $this->limitNamespaces ) ) { + $lastRow = $row; + continue; + } if ( $lastRow === null || - $lastRow->page_namespace != $row->page_namespace || - $lastRow->page_title != $row->page_title ) { + $lastRow->page_namespace !== $row->page_namespace || + $lastRow->page_title !== $row->page_title ) { if ( $lastRow !== null ) { $output = ''; if ( $this->dumpUploads ) {