- $exporter = new WikiExporter( $this->getDB() );
- // WikiExporter writes to stdout, so catch its
- // output with an ob
- ob_start();
- $exporter->openStream();
- foreach ( @$pageSet->getGoodTitles() as $title )
- if ( $title->userCanRead() )
- $exporter->pageByTitle( $title );
- $exporter->closeStream();
- $exportxml = ob_get_contents();
- ob_end_clean();
-
- // Don't check the size of exported stuff
- // It's not continuable, so it would cause more
- // problems than it'd solve
- $result->disableSizeCheck();
- if ( $this->params['exportnowrap'] ) {
- $result->reset();
- // Raw formatter will handle this
- $result->addValue( null, 'text', $exportxml );
- $result->addValue( null, 'mime', 'text/xml' );
- } else {
- $r = array();
- ApiResult::setContent( $r, $exportxml );
- $result->addValue( 'query', 'export', $r );
+ $this->doExport( $pageSet, $result );
+ }
+ }
+
+ /**
+ * @param $pageSet ApiPageSet Pages to be exported
+ * @param $result ApiResult Result to output to
+ */
+ private function doExport( $pageSet, $result ) {
+ $exportTitles = array();
+ $titles = $pageSet->getGoodTitles();
+ if ( count( $titles ) ) {
+ foreach ( $titles as $title ) {
+ if ( $title->userCan( 'read' ) ) {
+ $exportTitles[] = $title;
+ }