X-Git-Url: https://git.cyclocoop.org/?a=blobdiff_plain;f=install.php;h=c1b3a8c2ddfe0ed48be835dbf1c20d6830e6f6d1;hb=f3c7960fc9874fffbe25ef56eb4361c0fa39b242;hp=3ebccd51d7978adfef489b0485cd6922ccddec6d;hpb=8609ef44c788cc41470570227e91e5cd3384f230;p=lhc%2Fweb%2Fwiklou.git diff --git a/install.php b/install.php index 3ebccd51d7..c1b3a8c2dd 100644 --- a/install.php +++ b/install.php @@ -1,26 +1,13 @@ -isOpen() ) { print "Could not connect to database on \"{$wgDBserver}\" as root.\n"; exit(); } -# Include rest of code to get things like internationalized messages. -# -include_once( "{$IP}/Setup.php" ); -$wgTitle = Title::newFromText( "Installation script" ); - # Now do the actual database creation # print "Creating database...\n"; -dbsource( $rconn, "./maintenance/database.sql" ); +dbsource( "./maintenance/database.sql", $wgDatabase ); -mysql_select_db( $wgDBname, $rconn ); -dbsource( $rconn, "./maintenance/tables.sql" ); -dbsource( $rconn, "./maintenance/users.sql" ); -dbsource( $rconn, "./maintenance/initialdata.sql" ); -dbsource( $rconn, "./maintenance/interwiki.sql" ); +$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( $rconn, "./maintenance/indexes.sql" ); +dbsource( "./maintenance/indexes.sql", $wgDatabase ); -print "Done.\nBrowse \"{$wgServer}{$wgScript}\" to test,\n" . - "or \"run WikiSuite -b -o\" in test suite.\n"; +print "Done.\nBrowse \"{$wgServer}{$wgScript}\" to test.\n"; exit(); # @@ -163,124 +179,64 @@ function makedirectory( $d ) { } } -function copyfile( $sdir, $name, $ddir, $perms = 0664 ) { - global $wgInstallOwner, $wgInstallGroup; - - $d = "{$ddir}/{$name}"; - if ( copy( "{$sdir}/{$name}", $d ) ) { - if ( isset( $wgInstallOwner ) ) { chown( $d, $wgInstallOwner ); } - if ( isset( $wgInstallGroup ) ) { chgrp( $d, $wgInstallGroup ); } - chmod( $d, $perms ); - # print "Copied \"{$name}\" to \"{$ddir}\".\n"; - } else { - print "Failed to copy file \"{$name}\" to \"{$ddir}\".\n"; - exit(); - } -} - -function copydirectory( $source, $dest ) { - $handle = opendir( $source ); - while ( false !== ( $f = readdir( $handle ) ) ) { - if ( "." == $f{0} ) continue; - # Something made all my "CVSs" go lowercase :( - if ( !strcasecmp( "CVS", $f ) ) continue; - copyfile( $source, $f, $dest ); - } -} - -function readconsole() { - $fp = fopen( "php://stdin", "r" ); - $resp = trim( fgets( $fp, 1024 ) ); - fclose( $fp ); - return $resp; -} - -# -# Read and execute SQL commands from a file -# -function dbsource( $conn, $fname ) { - $fp = fopen( $fname, "r" ); - if ( false === $fp ) { - print "Could not open \"{$fname}\".\n"; - exit(); - } - - $cmd = ""; - $done = false; - - while ( ! feof( $fp ) ) { - $line = trim( fgets( $fp, 1024 ) ); - $sl = strlen( $line ) - 1; - - if ( $sl < 0 ) { continue; } - if ( "-" == $line{0} && "-" == $line{1} ) { continue; } - - if ( ";" == $line{$sl} ) { - $done = true; - $line = substr( $line, 0, $sl ); - } - - if ( "" != $cmd ) { $cmd .= " "; } - $cmd .= $line; - - if ( $done ) { - $cmd = replacevars( $cmd ); - $res = mysql_query( $cmd, $conn ); - - if ( false === $res ) { - print "Query \"{$cmd}\" failed.\n"; - exit(); - } - - $cmd = ""; - $done = false; - } - } - fclose( $fp ); -} - -function replacevars( $ins ) { - $varnames = array( - "wgDBserver", "wgDBname", "wgDBintlname", "wgDBuser", - "wgDBpassword", "wgDBsqluser", "wgDBsqlpassword", - "wgDBadminuser", "wgDBadminpassword" - ); - - foreach ( $varnames as $var ) { - global $$var; - $ins = str_replace( '{$' . $var . '}', $$var, $ins ); - } - return $ins; -} function populatedata() { - global $wgDBadminpassword; + global $wgDBadminpassword, $wgDatabase; $fname = "Installation script: populatedata()"; $sql = "DELETE FROM site_stats"; - wfQuery( $sql, DB_WRITE, $fname ); + $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)"; - wfQuery( $sql, DB_WRITE, $fname ); + $wgDatabase->query( $sql, $fname ); $sql = "DELETE FROM user"; - wfQuery( $sql, DB_WRITE, $fname ); - - $u = User::newFromName( "WikiSysop" ); - if ( 0 == $u->idForName() ) { - $u->addToDatabase(); - $u->setPassword( $wgDBadminpassword ); - $u->addRight( "sysop" ); - $u->saveSettings(); + $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"; + } } - $u = User::newFromName( "WikiDeveloper" ); - if ( 0 == $u->idForName() ) { - $u->addToDatabase(); - $u->setPassword( $wgDBadminpassword ); - $u->addRight( "sysop" ); - $u->addRight( "developer" ); - $u->saveSettings(); + 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(); @@ -288,24 +244,27 @@ function populatedata() { $dlp = addslashes( wfMsgNoDB( "dellogpage" ) ); $sql = "DELETE FROM cur"; - wfQuery( $sql, DB_WRITE, $fname ); + $wgDatabase->query( $sql, $fname ); + $now = wfTimestampNow(); + $won = wfInvertTimestamp( $now ); + $sql = "INSERT INTO cur (cur_namespace,cur_title,cur_text," . - "cur_restrictions) VALUES ({$wns},'{$ulp}','" . - wfStrencode( wfMsgNoDB( "uploadlogpagetext" ) ) . "','sysop')"; - wfQuery( $sql, DB_WRITE, $fname ); + "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) VALUES ({$wns},'{$dlp}','" . - wfStrencode( wfMsgNoDB( "dellogpagetext" ) ) . "','sysop')"; - wfQuery( $sql, DB_WRITE, $fname ); + "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) " . + $sql = "INSERT INTO cur (cur_namespace,cur_title,cur_text,cur_timestamp,inverse_timestamp,cur_touched) " . "VALUES (0,'$title','" . - wfStrencode( wfMsgNoDB( "mainpagetext" ) ) . "')"; - wfQuery( $sql, DB_WRITE, $fname ); + wfStrencode( wfMsg( "mainpagetext" ) ) . "','$now','$won','$now')"; + $wgDatabase->query( $sql, $fname ); initialiseMessages(); }