* Rename new message 'filetype-separator' (r28530) to the more generic message name...
[lhc/web/wiklou.git] / maintenance / addwiki.php
index f420b58..a19b24c 100644 (file)
 <?php
 
-$wgNoDBParam = true;   
-       
+$wgNoDBParam = true;
+
 require_once( "commandLine.inc" );
 require_once( "rebuildInterwiki.inc" );
 require_once( "languages/Names.php" );
 if ( count( $args ) != 3 ) {
-       die( "Usage: php addwiki.php <language> <site> <dbname>\n" );
+       wfDie( "Usage: php addwiki.php <language> <site> <dbname>\n" );
 }
 
-addWiki( $args[0], $args[1], $args[2] ); 
+addWiki( $args[0], $args[1], $args[2] );
 
 # -----------------------------------------------------------------
 
 function addWiki( $lang, $site, $dbName )
 {
-       global $IP, $wgLanguageNames;
+       global $IP, $wgLanguageNames, $wgDefaultExternalStore;
 
        $name = $wgLanguageNames[$lang];
 
-       $dbw =& wfGetDB( DB_WRITE );
+       $dbw = wfGetDB( DB_WRITE );
        $common = "/home/wikipedia/common";
        $maintenance = "$IP/maintenance";
 
        print "Creating database $dbName for $lang.$site\n";
+       
        # Set up the database
        $dbw->query( "SET table_type=Innodb" );
        $dbw->query( "CREATE DATABASE $dbName" );
        $dbw->selectDB( $dbName );
-       
+
        print "Initialising tables\n";
        dbsource( "$maintenance/tables.sql", $dbw );
        dbsource( "$IP/extensions/OAI/update_table.sql", $dbw );
-       $dbw->query( "INSERT INTO site_stats() VALUES ()" );
+       dbsource( "$IP/extensions/AntiSpoof/mysql/patch-antispoof.sql", $dbw );
+       dbsource( "$IP/extensions/CheckUser/cu_changes.sql", $dbw );
+       $dbw->query( "INSERT INTO site_stats(ss_row_id) VALUES (1)" );
+
+       # Initialise external storage
+       if ( is_array( $wgDefaultExternalStore ) ) {
+               $stores = $wgDefaultExternalStore;
+       } elseif ( $stores ) {
+               $stores = array( $wgDefaultExternalStore );
+       } else {
+               $stores = array();
+       }
+       if ( count( $stores ) ) {
+               require_once( 'ExternalStoreDB.php' );
+               print "Initialising external storage $store...\n";
+               global $wgDBuser, $wgDBpassword, $wgExternalServers;
+               foreach ( $stores as $storeURL ) {
+                       $m = array();
+                       if ( !preg_match( '!^DB://(.*)$!', $storeURL, $m ) ) {
+                               continue;
+                       }
+                       
+                       $cluster = $m[1];
+                       
+                       # Hack
+                       $wgExternalServers[$cluster][0]['user'] = $wgDBuser;
+                       $wgExternalServers[$cluster][0]['password'] = $wgDBpassword;
+                       
+                       $store = new ExternalStoreDB;
+                       $extdb =& $store->getMaster( $cluster );
+                       $extdb->query( "SET table_type=InnoDB" );
+                       $extdb->query( "CREATE DATABASE $dbName" );
+                       $extdb->selectDB( $dbName );
+                       dbsource( "$maintenance/storage/blobs.sql", $extdb );
+                       $extdb->immediateCommit();
+               }
+       }
 
+       global $wgTitle, $wgArticle;
        $wgTitle = Title::newMainPage();
        $wgArticle = new Article( $wgTitle );
        $ucsite = ucfirst( $site );
 
-       $wgArticle->insertNewArticle( "
-==This subdomain is reserved for the creation of a $ucsite in '''[[:en:{$name}|{$name}]]''' language==
+       $wgArticle->insertNewArticle( <<<EOT
+==This subdomain is reserved for the creation of a [[wikimedia:Our projects|$ucsite]] in '''[[w:en:{$name}|{$name}]]''' language==
 
-If you can write in this language and want to collaborate in the creation of this encyclopedia then '''you''' can make it.
+* Please '''do not start editing''' this new site. This site has a test project on the [[incubator:|Wikimedia Incubator]] (or on the [[betawikiversity:|BetaWikiversity]] or on the [[oldwikisource:|Old Wikisource]]) and it will be imported to here.
 
-Go ahead. Translate this page and start working on your encyclopedia.
+* If you would like to help translating the interface to this language, please do not translate here, but go to [[betawiki:|Betawiki]], a special wiki for translating the interface. That way everyone can use it on every wiki using the [[mw:|same software]].
 
-For help, see '''[[m:Help:How to start a new Wikipedia|how to start a new Wikipedia]]'''.
+* For information about how to edit and for other general help, see [[m:Help:Contents|Help on Wikimedia's Meta-Wiki]] or [[mw:Help:Contents|Help on MediaWiki.org]].
 
-==Sister projects==
-[http://meta.wikipedia.org Meta-Wikipedia] | [http://www.wiktionary.org Wikitonary] | [http://www.wikibooks.org Wikibooks] | [http://www.wikinews.org Wikinews] | [http://www.wikiquote.org Wikiquote] | [http://www.wikisource.org Wikisource]
+== Sister projects ==
+<span class="plainlinks">
+[http://www.wikipedia.org Wikipedia] |
+[http://www.wiktionary.org Wiktonary] |
+[http://www.wikibooks.org Wikibooks] |
+[http://www.wikinews.org Wikinews] |
+[http://www.wikiquote.org Wikiquote] |
+[http://www.wikisource.org Wikisource]
+[http://www.wikiversity.org Wikiversity]
+</span>
 
-See the [http://www.wikipedia.org Wikipedia portal] for other language Wikipedias. 
+See Wikimedia's [[m:|Meta-Wiki]] for the coordination of these projects.
 
 [[aa:]]
 [[af:]]
@@ -62,6 +108,7 @@ See the [http://www.wikipedia.org Wikipedia portal] for other language Wikipedia
 [[ast:]]
 [[ay:]]
 [[az:]]
+[[bcl:]]
 [[be:]]
 [[bg:]]
 [[bn:]]
@@ -88,6 +135,7 @@ See the [http://www.wikipedia.org Wikipedia portal] for other language Wikipedia
 [[he:]]
 [[hi:]]
 [[hr:]]
+[[hsb:]]
 [[hy:]]
 [[ia:]]
 [[id:]]
@@ -158,33 +206,44 @@ See the [http://www.wikipedia.org Wikipedia portal] for other language Wikipedia
 [[za:]]
 [[zh:]]
 [[zu:]]
-", '', false, false );
-       
+
+EOT
+, '', false, false );
+
        print "Adding to dblists\n";
-       # Add to dblists
-       # Site dblist
-       $file = fopen( "$common/$site.dblist", "a" );
-       fwrite( $file, "$dbName\n" );
-       fclose( $file );
 
-       # All dblist
+       # Add to dblist
        $file = fopen( "$common/all.dblist", "a" );
        fwrite( $file, "$dbName\n" );
        fclose( $file );
 
+       # Update the sublists
+       system("cd $common && ./refresh-dblist");
+
        print "Constructing interwiki SQL\n";
        # Rebuild interwiki tables
        $sql = getRebuildInterwikiSQL();
        $tempname = tempnam( '/tmp', 'addwiki' );
        $file = fopen( $tempname, 'w' );
        if ( !$file ) {
-               die( "Error, unable to open temporary file $tempname\n" );
+               wfDie( "Error, unable to open temporary file $tempname\n" );
        }
        fwrite( $file, $sql );
        fclose( $file );
        print "Sourcing interwiki SQL\n";
        dbsource( $tempname, $dbw );
-       unlink( $tempname );
+       #unlink( $tempname );
+       
+       # Create the upload dir
+       global $wgUploadDirectory;
+       if( file_exists( $wgUploadDirectory ) ) {
+               echo "$wgUploadDirectory already exists.\n";
+       } else {
+               echo "Creating $wgUploadDirectory...\n";
+               mkdir( $wgUploadDirectory, 0777 );
+               chmod( $wgUploadDirectory, 0777 );
+       }
 
        print "Script ended. You now want to run sync-common-all to publish *dblist files (check them for duplicates first)\n";
 }
+