Add pf_memory field
[lhc/web/wiklou.git] / maintenance / rebuildInterwiki.inc
index bbec308..4daabc3 100644 (file)
@@ -4,21 +4,19 @@
  * Wikimedia specific!
  *
  * @todo document
- * @package MediaWiki
- * @subpackage Maintenance
+ * @addtogroup Maintenance
  */
 
 /** */
 
 /**
  * @todo document
- * @package MediaWiki
- * @subpackage Maintenance
+ * @addtogroup Maintenance
  */
 class Site {
        var $suffix, $lateral, $url;
 
-       function Site( $s, $l, $u ) {
+       function __construct( $s, $l, $u ) {
                $this->suffix = $s;
                $this->lateral = $l;
                $this->url = $u;
@@ -30,8 +28,8 @@ class Site {
        }
 }
 
-function getRebuildInterwikiSQL() {
-       global $langlist, $languageAliases, $prefixRewrites, $wgDBname;
+function makeInterwikiSQL( $destDir ) {
+       global $langlist, $languageAliases, $prefixRewrites;
 
        # Multi-language sites
        # db suffix => db suffix, iw prefix, hostname
@@ -43,6 +41,7 @@ function getRebuildInterwikiSQL() {
                'wikinews' => new Site( 'wikinews', 'n', 'wikinews.org' ),
                'wikisource' => new Site( 'wikisource', 's', 'wikisource.org' ),
                'wikimedia' => new Site( 'wikimedia', 'chapter', 'wikimedia.org' ),
+               'wikiversity' => new Site( 'wikiversity', 'v', 'wikiversity.org' ),
        );
 
        # List of language prefixes likely to be found in multi-language sites
@@ -59,6 +58,7 @@ function getRebuildInterwikiSQL() {
                'sep11wiki' => 'sep11.wikipedia.org',
                'metawiki' => 'meta.wikimedia.org',
                'commonswiki' => 'commons.wikimedia.org',
+               'specieswiki' => 'species.wikimedia.org',
        );
 
        # Extra interwiki links that can't be in the intermap for some reason
@@ -98,7 +98,7 @@ function getRebuildInterwikiSQL() {
        }
 
        # Extract the intermap from meta
-       $intermap = wfGetHTTP( 'http://meta.wikimedia.org/w/index.php?title=Interwiki_map&action=raw', 30 );
+       $intermap = Http::get( 'http://meta.wikimedia.org/w/index.php?title=Interwiki_map&action=raw', 30 );
        $lines = array_map( 'trim', explode( "\n", trim( $intermap ) ) );
 
        if ( !$lines || count( $lines ) < 2 ) {
@@ -108,7 +108,8 @@ function getRebuildInterwikiSQL() {
        $iwArray = array();
 
        foreach ( $lines as $line ) {
-               if ( preg_match( '/^\|\s*(.*?)\s*\|\|\s*(.*?)\s*$/', $line, $matches ) ) {
+               $matches = array();
+               if ( preg_match( '/^\|\s*(.*?)\s*\|\|\s*(https?:\/\/.*?)\s*$/', $line, $matches ) ) {
                        $prefix = strtolower( $matches[1] );
                        $url = $matches[2];
                        if ( preg_match( '/(wikipedia|wiktionary|wikisource|wikiquote|wikibooks|wikimedia)\.org/', $url ) ) {
@@ -123,10 +124,10 @@ function getRebuildInterwikiSQL() {
                }
        }
 
-       $sql = "-- Generated by rebuildInterwiki.php";
 
 
        foreach ( $dblist as $db ) {
+               $sql = "-- Generated by rebuildInterwiki.php";
                if ( isset( $specials[$db] ) ) {
                        # Special wiki
                        # Has interwiki links and interlanguage links to wikipedia
@@ -211,10 +212,10 @@ function getRebuildInterwikiSQL() {
                        foreach ( $extraLinks as $link ){
                                        $sql .= makeLink( $link, $first, $db );
                        }
-                       $sql .= ";\n\n";
+                       $sql .= ";\n";
                }
+               file_put_contents( "$destDir/$db.sql", $sql );
        }
-       return $sql;
 }
 
 # ------------------------------------------------------------------------------------------
@@ -252,7 +253,7 @@ function makeLink( $entry, &$first, $source ) {
        } else {
                $sql .= ",\n";
        }
-       $dbr =& wfGetDB( DB_SLAVE );
+       $dbr = wfGetDB( DB_SLAVE );
        $sql .= "(" . $dbr->makeList( $entry ) . ")";
        return $sql;
 }