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 ); print "Do you want to create a sysop account? A sysop can protect,\n"; print "delete and undelete pages and ban users. Recomended. [Y/n] "; $response = readconsole(); if(strtolower($response)!="n") { print "Enter the username [Sysop]: "; $sysop_user=readconsole(); if(!$sysop_user) { $sysop_user="Sysop"; } while(!$sysop_password) { print "Enter the password: "; $sysop_password=readconsole(); } $u = User::newFromName( $sysop_user ); if ( 0 == $u->idForName() ) { $u->addToDatabase(); $u->setPassword( $sysop_password ); $u->addRight( "sysop" ); $u->saveSettings(); } else { print "Could not create user - already exists!\n"; } } print "Do you want to create a sysop+developer account? A developer\n"; print "can switch the database to read-only mode and run any type of\n"; print "query through a web interface. [Y/n] "; $response=readconsole(); if(strtolower($response)!="n") { print "Enter the username [Developer]: "; $developer_user=readconsole(); if(!$developer_user) { $developer_user="Developer"; } while (!$developer_password) { print "Enter the password: "; $developer_password=readconsole(); } $u = User::newFromName( $developer_user ); if ( 0 == $u->idForName() ) { $u->addToDatabase(); $u->setPassword( $developer_password ); $u->addRight( "sysop" ); $u->addRight( "developer" ); $u->saveSettings(); } else { print "Could not create user - already exists!\n"; } } $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(); } ?>