diff options
author | Luke Shumaker <lukeshu@sbcglobal.net> | 2016-05-01 15:30:02 -0400 |
---|---|---|
committer | Luke Shumaker <lukeshu@sbcglobal.net> | 2016-05-01 15:30:02 -0400 |
commit | 1de335ad3f395ca6861085393ba366a9e3fb4a0d (patch) | |
tree | f1fdd326034e05177596851be6a7127615d81498 /maintenance/importSiteScripts.php | |
parent | 9c75fa8ff6d4d38ef552c00fef5969fb154765e8 (diff) | |
parent | f6d65e533c62f6deb21342d4901ece24497b433e (diff) |
Merge commit 'f6d65'
# Conflicts:
# skins/ArchLinux/ArchLinux.php
Diffstat (limited to 'maintenance/importSiteScripts.php')
-rw-r--r-- | maintenance/importSiteScripts.php | 39 |
1 files changed, 23 insertions, 16 deletions
diff --git a/maintenance/importSiteScripts.php b/maintenance/importSiteScripts.php index 7705ec9c..6566a60d 100644 --- a/maintenance/importSiteScripts.php +++ b/maintenance/importSiteScripts.php @@ -59,7 +59,7 @@ class ImportSiteScripts extends Maintenance { $url = wfAppendQuery( $baseUrl, array( 'action' => 'raw', 'title' => "MediaWiki:{$page}" ) ); - $text = Http::get( $url ); + $text = Http::get( $url, array(), __METHOD__ ); $wikiPage = WikiPage::factory( $title ); $content = ContentHandler::makeContent( $text, $wikiPage->getTitle() ); @@ -70,33 +70,40 @@ class ImportSiteScripts extends Maintenance { protected function fetchScriptList() { $data = array( 'action' => 'query', - 'format' => 'php', //'json', + 'format' => 'json', 'list' => 'allpages', 'apnamespace' => '8', 'aplimit' => '500', + 'continue' => '', ); $baseUrl = $this->getArg( 0 ); $pages = array(); - do { + while ( true ) { $url = wfAppendQuery( $baseUrl, $data ); - $strResult = Http::get( $url ); - //$result = FormatJson::decode( $strResult ); // Still broken - $result = unserialize( $strResult ); + $strResult = Http::get( $url, array(), __METHOD__ ); + $result = FormatJson::decode( $strResult, true ); - if ( !empty( $result['query']['allpages'] ) ) { - foreach ( $result['query']['allpages'] as $page ) { - if ( substr( $page['title'], -3 ) === '.js' ) { - strtok( $page['title'], ':' ); - $pages[] = strtok( '' ); - } + $page = null; + foreach ( $result['query']['allpages'] as $page ) { + if ( substr( $page['title'], -3 ) === '.js' ) { + strtok( $page['title'], ':' ); + $pages[] = strtok( '' ); } } - if ( !empty( $result['query-continue'] ) ) { - $data['apfrom'] = $result['query-continue']['allpages']['apfrom']; - $this->output( "Fetching new batch from {$data['apfrom']}\n" ); + + if ( $page !== null ) { + $this->output( "Fetched list up to {$page['title']}\n" ); + } + + if ( isset( $result['continue'] ) ) { // >= 1.21 + $data = array_replace( $data, $result['continue'] ); + } elseif ( isset( $result['query-continue']['allpages'] ) ) { // <= 1.20 + $data = array_replace( $data, $result['query-continue']['allpages'] ); + } else { + break; } - } while ( isset( $result['query-continue'] ) ); + } return $pages; } |