Merge "Use XML localName when importing"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Thu, 9 Apr 2015 00:46:24 +0000 (00:46 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Thu, 9 Apr 2015 00:46:24 +0000 (00:46 +0000)
1  2 
includes/Import.php

diff --combined includes/Import.php
@@@ -375,19 -375,14 +375,19 @@@ class WikiImporter 
                $page = WikiPage::factory( $title );
                $page->loadPageData( 'fromdbmaster' );
                $content = $page->getContent();
 -              $editInfo = $page->prepareContentForEdit( $content );
 -              $countKey = 'title_' . $title->getPrefixedText();
 -              $countable = $page->isCountable( $editInfo );
 -              if ( array_key_exists( $countKey, $this->countableCache ) &&
 -                      $countable != $this->countableCache[ $countKey ] ) {
 -                      DeferredUpdates::addUpdate( SiteStatsUpdate::factory( array(
 -                              'articles' => ( (int)$countable - (int)$this->countableCache[ $countKey ] )
 -                      ) ) );
 +              if ( $content === null ) {
 +                      wfDebug( __METHOD__ . ': Skipping article count adjustment for ' . $title .
 +                              ' because WikiPage::getContent() returned null' );
 +              } else {
 +                      $editInfo = $page->prepareContentForEdit( $content );
 +                      $countKey = 'title_' . $title->getPrefixedText();
 +                      $countable = $page->isCountable( $editInfo );
 +                      if ( array_key_exists( $countKey, $this->countableCache ) &&
 +                              $countable != $this->countableCache[ $countKey ] ) {
 +                              DeferredUpdates::addUpdate( SiteStatsUpdate::factory( array(
 +                                      'articles' => ( (int)$countable - (int)$this->countableCache[ $countKey ] )
 +                              ) ) );
 +                      }
                }
  
                $args = func_get_args();
                $oldDisable = libxml_disable_entity_loader( true );
                $this->reader->read();
  
-               if ( $this->reader->name != 'mediawiki' ) {
+               if ( $this->reader->localName != 'mediawiki' ) {
                        libxml_disable_entity_loader( $oldDisable );
                        throw new MWException( "Expected <mediawiki> tag, got " .
-                               $this->reader->name );
+                               $this->reader->localName );
                }
                $this->debug( "<mediawiki> tag is correct." );
  
                $rethrow = null;
                try {
                        while ( $keepReading ) {
-                               $tag = $this->reader->name;
+                               $tag = $this->reader->localName;
                                $type = $this->reader->nodeType;
  
                                if ( !Hooks::run( 'ImportHandleToplevelXMLTag', array( $this ) ) ) {
  
                while ( $this->reader->read() ) {
                        if ( $this->reader->nodeType == XmlReader::END_ELEMENT &&
-                                       $this->reader->name == 'siteinfo' ) {
+                                       $this->reader->localName == 'siteinfo' ) {
                                break;
                        }
  
-                       $tag = $this->reader->name;
+                       $tag = $this->reader->localName;
  
                        if ( $tag == 'namespace' ) {
                                $this->foreignNamespaces[ $this->nodeAttribute( 'key' ) ] =
  
                while ( $this->reader->read() ) {
                        if ( $this->reader->nodeType == XMLReader::END_ELEMENT &&
-                                       $this->reader->name == 'logitem' ) {
+                                       $this->reader->localName == 'logitem' ) {
                                break;
                        }
  
-                       $tag = $this->reader->name;
+                       $tag = $this->reader->localName;
  
                        if ( !Hooks::run( 'ImportHandleLogItemXMLTag', array(
                                $this, $logInfo
  
                while ( $skip ? $this->reader->next() : $this->reader->read() ) {
                        if ( $this->reader->nodeType == XMLReader::END_ELEMENT &&
-                                       $this->reader->name == 'page' ) {
+                                       $this->reader->localName == 'page' ) {
                                break;
                        }
  
                        $skip = false;
  
-                       $tag = $this->reader->name;
+                       $tag = $this->reader->localName;
  
                        if ( $badTitle ) {
                                // The title is invalid, bail out of this page
  
                while ( $skip ? $this->reader->next() : $this->reader->read() ) {
                        if ( $this->reader->nodeType == XMLReader::END_ELEMENT &&
-                                       $this->reader->name == 'revision' ) {
+                                       $this->reader->localName == 'revision' ) {
                                break;
                        }
  
-                       $tag = $this->reader->name;
+                       $tag = $this->reader->localName;
  
                        if ( !Hooks::run( 'ImportHandleRevisionXMLTag', array(
                                $this, $pageInfo, $revisionInfo
  
                while ( $skip ? $this->reader->next() : $this->reader->read() ) {
                        if ( $this->reader->nodeType == XMLReader::END_ELEMENT &&
-                                       $this->reader->name == 'upload' ) {
+                                       $this->reader->localName == 'upload' ) {
                                break;
                        }
  
-                       $tag = $this->reader->name;
+                       $tag = $this->reader->localName;
  
                        if ( !Hooks::run( 'ImportHandleUploadXMLTag', array(
                                $this, $pageInfo
  
                while ( $this->reader->read() ) {
                        if ( $this->reader->nodeType == XMLReader::END_ELEMENT &&
-                                       $this->reader->name == 'contributor' ) {
+                                       $this->reader->localName == 'contributor' ) {
                                break;
                        }
  
-                       $tag = $this->reader->name;
+                       $tag = $this->reader->localName;
  
                        if ( in_array( $tag, $fields ) ) {
                                $info[$tag] = $this->nodeContents();