12 require_once( "commandLine.inc" );
13 require_once( "rebuildInterwiki.inc" );
14 require_once( "languages/Names.php" );
15 if ( count( $args ) != 3 ) {
16 wfDie( "Usage: php addwiki.php <language> <site> <dbname>\nThe site for Wikipedia is 'wikipedia'.\n" );
19 addWiki( $args[0], $args[1], $args[2] );
21 # -----------------------------------------------------------------
23 function addWiki( $lang, $site, $dbName )
25 global $IP, $wgLanguageNames, $wgDefaultExternalStore;
27 if ( !isset( $wgLanguageNames[$lang] ) ) {
28 print "Language $lang not found in \$wgLanguageNames\n";
31 $name = $wgLanguageNames[$lang];
33 $dbw = wfGetDB( DB_MASTER
);
34 $common = "/home/wikipedia/common";
35 $maintenance = "$IP/maintenance";
37 print "Creating database $dbName for $lang.$site ($name)\n";
40 $dbw->query( "SET table_type=Innodb" );
41 $dbw->query( "CREATE DATABASE $dbName" );
42 $dbw->selectDB( $dbName );
44 print "Initialising tables\n";
45 dbsource( "$maintenance/tables.sql", $dbw );
46 dbsource( "$IP/extensions/OAI/update_table.sql", $dbw );
47 dbsource( "$IP/extensions/AntiSpoof/sql/patch-antispoof.mysql.sql", $dbw );
48 dbsource( "$IP/extensions/CheckUser/cu_changes.sql", $dbw );
49 dbsource( "$IP/extensions/CheckUser/cu_log.sql", $dbw );
50 dbsource( "$IP/extensions/TitleKey/titlekey.sql", $dbw );
51 dbsource( "$IP/extensions/Oversight/hidden.sql", $dbw );
52 dbsource( "$IP/extensions/GlobalBlocking/localdb_patches/setup-global_block_whitelist.sql", $dbw );
53 dbsource( "$IP/extensions/AbuseFilter/abusefilter.tables.sql", $dbw );
55 $dbw->query( "INSERT INTO site_stats(ss_row_id) VALUES (1)" );
57 # Initialise external storage
58 if ( is_array( $wgDefaultExternalStore ) ) {
59 $stores = $wgDefaultExternalStore;
60 } elseif ( $stores ) {
61 $stores = array( $wgDefaultExternalStore );
65 if ( count( $stores ) ) {
66 require_once( 'ExternalStoreDB.php' );
67 global $wgDBuser, $wgDBpassword, $wgExternalServers;
68 foreach ( $stores as $storeURL ) {
70 if ( !preg_match( '!^DB://(.*)$!', $storeURL, $m ) ) {
75 print "Initialising external storage $cluster...\n";
78 $wgExternalServers[$cluster][0]['user'] = $wgDBuser;
79 $wgExternalServers[$cluster][0]['password'] = $wgDBpassword;
81 $store = new ExternalStoreDB
;
82 $extdb = $store->getMaster( $cluster );
83 $extdb->query( "SET table_type=InnoDB" );
84 $extdb->query( "CREATE DATABASE $dbName" );
85 $extdb->selectDB( $dbName );
88 $blobsTable = $store->getTable( $extdb );
89 $blobsFile = popen( "sed s/blobs\\\\\\>/$blobsTable/ $maintenance/storage/blobs.sql", 'r' );
90 $extdb->sourceStream( $blobsFile );
92 $extdb->immediateCommit();
96 global $wgTitle, $wgArticle;
97 $wgTitle = Title
::newFromText( wfMsgWeirdKey( "mainpage/$lang" ) );
98 print "Writing main page to " . $wgTitle->getPrefixedDBkey() . "\n";
99 $wgArticle = new Article( $wgTitle );
100 $ucsite = ucfirst( $site );
102 $wgArticle->insertNewArticle( <<<EOT
103 ==This subdomain is reserved for the creation of a [[wikimedia:Our projects|$ucsite]] in '''[[w:en:{$name}|{$name}]]''' language==
105 * 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.
107 * 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]].
109 * 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]].
111 == Sister projects ==
112 <span class="plainlinks">
113 [http://www.wikipedia.org Wikipedia] |
114 [http://www.wiktionary.org Wiktonary] |
115 [http://www.wikibooks.org Wikibooks] |
116 [http://www.wikinews.org Wikinews] |
117 [http://www.wikiquote.org Wikiquote] |
118 [http://www.wikisource.org Wikisource]
119 [http://www.wikiversity.org Wikiversity]
122 See Wikimedia's [[m:|Meta-Wiki]] for the coordination of these projects.
234 , '', false, false );
236 print "Adding to dblists\n";
239 $file = fopen( "$common/all.dblist", "a" );
240 fwrite( $file, "$dbName\n" );
243 # Update the sublists
244 shell_exec("cd $common && ./refresh-dblist");
246 #print "Constructing interwiki SQL\n";
247 # Rebuild interwiki tables
248 #passthru( '/home/wikipedia/conf/interwiki/update' );
250 print "Script ended. You still have to:
251 * Add any required settings in InitialiseSettings.php
252 * Run sync-common-all
253 * Run /home/wikipedia/conf/interwiki/update