isOpen() ) { print "Could not connect to database on \"{$wgDBserver}\" as root.\n"; exit(); } # Now do the actual database creation # print "Creating database...\n"; dbsource( "./maintenance/database.sql", $wgDatabase ); $wgDatabase->selectDB( $wgDBname ); dbsource( "./maintenance/tables.sql", $wgDatabase ); dbsource( "./maintenance/users.sql", $wgDatabase ); dbsource( "./maintenance/initialdata.sql", $wgDatabase ); dbsource( "./maintenance/interwiki.sql", $wgDatabase ); populatedata(); # Needs internationalized messages print "Adding indexes...\n"; dbsource( "./maintenance/indexes.sql", $wgDatabase ); print "Done.\nBrowse \"{$wgServer}{$wgScript}\" to test.\n"; exit(); # # Functions used above: # function makedirectory( $d ) { global $wgInstallOwner, $wgInstallGroup; if ( is_dir( $d ) ) { print "Directory \"{$d}\" exists.\n"; } else { if ( mkdir( $d, 0777 ) ) { if ( isset( $wgInstallOwner ) ) { chown( $d, $wgInstallOwner ); } if ( isset( $wgInstallGroup ) ) { chgrp( $d, $wgInstallGroup ); } print "Directory \"{$d}\" created.\n"; } else { print "Could not create directory \"{$d}\".\n"; exit(); } } } function populatedata() { global $wgDBadminpassword, $wgDatabase; $fname = "Installation script: populatedata()"; $sql = "DELETE FROM site_stats"; $wgDatabase->query( $sql, $fname ); $sql = "INSERT INTO site_stats (ss_row_id,ss_total_views," . "ss_total_edits,ss_good_articles) VALUES (1,0,0,0)"; $wgDatabase->query( $sql, $fname ); $sql = "DELETE FROM user"; $wgDatabase->query( $sql, $fname ); $u = User::newFromName( "WikiSysop" ); if ( 0 == $u->idForName() ) { $u->addToDatabase(); $u->setPassword( $wgDBadminpassword ); $u->addRight( "sysop" ); $u->saveSettings(); } $u = User::newFromName( "WikiDeveloper" ); if ( 0 == $u->idForName() ) { $u->addToDatabase(); $u->setPassword( $wgDBadminpassword ); $u->addRight( "sysop" ); $u->addRight( "developer" ); $u->saveSettings(); } $wns = Namespace::getWikipedia(); $ulp = addslashes( wfMsgNoDB( "uploadlogpage" ) ); $dlp = addslashes( wfMsgNoDB( "dellogpage" ) ); $sql = "DELETE FROM cur"; $wgDatabase->query( $sql, $fname ); $now = wfTimestampNow(); $won = wfInvertTimestamp( $now ); $sql = "INSERT INTO cur (cur_namespace,cur_title,cur_text," . "cur_restrictions,cur_timestamp,inverse_timestamp,cur_touched) VALUES ({$wns},'{$ulp}','" . wfStrencode( wfMsg( "uploadlogpagetext" ) ) . "','sysop','$now','$won','$now')"; $wgDatabase->query( $sql, $fname ); $sql = "INSERT INTO cur (cur_namespace,cur_title,cur_text," . "cur_restrictions,cur_timestamp,inverse_timestamp,cur_touched) VALUES ({$wns},'{$dlp}','" . wfStrencode( wfMsg( "dellogpagetext" ) ) . "','sysop','$now','$won','$now')"; $wgDatabase->query( $sql, $fname ); $titleobj = Title::newFromText( wfMsgNoDB( "mainpage" ) ); $title = $titleobj->getDBkey(); $sql = "INSERT INTO cur (cur_namespace,cur_title,cur_text,cur_timestamp,inverse_timestamp,cur_touched) " . "VALUES (0,'$title','" . wfStrencode( wfMsg( "mainpagetext" ) ) . "','$now','$won','$now')"; $wgDatabase->query( $sql, $fname ); initialiseMessages(); } ?>