http://www.mediawiki.org/wiki/Special:Code/MediaWiki/82932

Revision: 82932
Author:   btongminh
Date:     2011-02-28 13:54:14 +0000 (Mon, 28 Feb 2011)
Log Message:
-----------
Maintenance script to import all scripts in the MediaWiki namespace from a 
local site.
Useful for local debugging of broken scripts.

Added Paths:
-----------
    trunk/phase3/maintenance/importSiteScripts.php

Added: trunk/phase3/maintenance/importSiteScripts.php
===================================================================
--- trunk/phase3/maintenance/importSiteScripts.php                              
(rev 0)
+++ trunk/phase3/maintenance/importSiteScripts.php      2011-02-28 13:54:14 UTC 
(rev 82932)
@@ -0,0 +1,76 @@
+<?php
+/**
+ * Maintenance script to import all scripts in the MediaWiki namespace from a 
+ * local site.
+ */
+require_once( dirname( __FILE__ ) . '/Maintenance.php' );
+
+class ImportSiteScripts extends Maintenance {
+       public function __construct() {
+               parent::__construct();
+               $this->mDescription = 'Import site scripts from a site';
+               $this->addArg( 'api', 'API base url' );
+               $this->addArg( 'index', 'index.php base url' );
+               $this->addOption( 'username', 'User name of the script 
importer' );
+       }
+       
+       public function execute() {
+               global $wgUser;
+               $wgUser = User::newFromName( $this->getOption( 'username', 
'ScriptImporter' ) );
+               
+               $baseUrl = $this->getArg( 1 );
+               $pageList = $this->fetchScriptList();
+               $this->output( 'Importing ' . count( $pageList ) . " pages\n" );
+               
+               foreach ( $pageList as $page ) {
+                       $this->output( "Importing $page\n" );
+                       $url = wfAppendQuery( $baseUrl, array( 
+                               'action' => 'raw', 
+                               'title' => "MediaWiki:{$page}" ) );
+                       $text = Http::get( $url );
+                       
+                       $title = Title::makeTitleSafe( NS_MEDIAWIKI, $page );
+                       $article = new Article( $title );
+                       $article->doEdit( $text, "Importing from $url", 0 );
+               }
+               
+       }
+       
+       protected function fetchScriptList() {
+               $data = array( 
+                       'action' => 'query',
+                       'format' => 'php',//'json',
+                       'list' => 'allpages',
+                       'apnamespace' => '8',
+                       'aplimit' => '500', 
+               );
+               $baseUrl = $this->getArg( 0 );
+               $pages = array();
+               
+               do {
+                       $url = wfAppendQuery( $baseUrl, $data );
+                       $strResult = Http::get( $url );
+                       //$result = FormatJson::decode( $strResult ); // Still 
broken
+                       $result = unserialize( $strResult );
+                       
+                       if ( !empty( $result['query']['allpages'] ) ) {
+                               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" );
+                       }
+               } while ( isset( $result['query-continue'] ) );
+               
+               return $pages;
+               
+       }
+}
+
+$maintClass = 'ImportSiteScripts';
+require_once( RUN_MAINTENANCE_IF_MAIN );


Property changes on: trunk/phase3/maintenance/importSiteScripts.php
___________________________________________________________________
Added: svn:eol-style
   + native


_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to