From fcddbfd7243fb56c308ef0db32c81409a177eaea Mon Sep 17 00:00:00 2001 From: Brion Vibber Date: Thu, 20 Nov 2003 03:11:42 +0000 Subject: [PATCH] Updates and mergine to install/update --- install-utils.inc | 164 ++++++++++++++++++++++++++++++++++ install.php | 126 ++------------------------ update.php | 221 +++++++++++++++++++++------------------------- 3 files changed, 273 insertions(+), 238 deletions(-) create mode 100644 install-utils.inc diff --git a/install-utils.inc b/install-utils.inc new file mode 100644 index 0000000000..48c5ccb176 --- /dev/null +++ b/install-utils.inc @@ -0,0 +1,164 @@ +Field == $field ) { + $found = true; + break; + } + } + return $found; +} + + +function table_exists( $db ) { + global $wgDBname; + $res = mysql_list_tables( $wgDBname ); + if( !$res ) { + echo "** " . mysql_error() . "\n"; + return false; + } + for( $i = mysql_num_rows( $res ) - 1; $i--; $i > 0 ) { + if( mysql_tablename( $res, $i ) == $db ) return true; + } + return false; +} + +function field_info( $table, $field ) { + $res = mysql_query( "SELECT * FROM $table LIMIT 1" ); + $n = mysql_num_fields( $res ); + for( $i = 0; $i < $n; $i++ ) { + $meta = mysql_fetch_field( $res, $i ); + if( $field == $meta->name ) { + return $meta; + } + } + return false; +} + +?> diff --git a/install.php b/install.php index 3ebccd51d7..693a577c63 100644 --- a/install.php +++ b/install.php @@ -1,26 +1,11 @@ $specs ) { - $sql = "ALTER TABLE $table $specs"; - print "$sql;\n"; - $res = mysql_query( $sql, $rconn ); - if ( $res === false ) { - print "MySQL error: " . mysql_error( $rconn ) . "\n"; - } - } - mysql_close( $rconn ); -} -{ // Create linkscc if necessary - $sql = "CREATE TABLE IF NOT EXISTS linkscc (". - " lcc_pageid INT UNSIGNED NOT NULL UNIQUE KEY, ". - " lcc_title VARCHAR(255) NOT NULL UNIQUE KEY,". - " lcc_cacheobj MEDIUMBLOB NOT NULL)"; - // Should it be created as InnoDB? - $rconn = mysql_connect( $wgDBserver, $wgDBadminuser, $wgDBadminpassword ); - mysql_select_db( $wgDBname ); - print "\n$sql;\n"; - $res = mysql_query( $sql, $rconn ); - if ( $res === false ) { - print "MySQL error: " . mysql_error( $rconn ) . "\n"; - } - mysql_close( $rconn ); -} - - - - - -# -# Copy files into installation directories -# -print "Copying files...\n"; - -copyfile( ".", "wiki.phtml", $IP ); -copyfile( ".", "redirect.phtml", $IP ); -copyfile( ".", "texvc.phtml", $IP ); - -copydirectory( "./includes", $IP ); -copydirectory( "./stylesheets", $wgStyleSheetDirectory ); + do_revision_updates(); + + do_ipblocks_update(); + do_interwiki_update(); + do_index_update(); + do_linkscc_update(); -copyfile( "./images", "wiki.png", $wgUploadDirectory ); -copyfile( "./languages", "Language.php", $IP ); -copyfile( "./languages", "Language" . ucfirst( $wgLanguageCode ) . ".php", $IP ); + initialiseMessages(); -$fp = fopen( $wgDebugLogFile, "w" ); -if ( false === $fp ) { - print "Could not create log file \"{$wgDebugLogFile}\".\n"; - exit(); -} -$d = date( "Y-m-d H:i:s" ); -fwrite( $fp, "Wiki debug log file created {$d}\n\n" ); -fclose( $fp ); - -if ( $wgUseTeX ) { - copyfile( "./math", "texvc", "{$IP}/math", 0775 ); - copyfile( "./math", "texvc_test", "{$IP}/math", 0775 ); - copyfile( "./math", "texvc_tex", "{$IP}/math", 0775 ); -} - -copyfile( ".", "Version.php", $IP ); + mysql_close( $rconn ); print "Done.\n"; exit(); @@ -124,41 +64,46 @@ exit(); # # -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"; +function do_update_files() { + global $IP, $wgStyleSheetDirectory, $wgUploadDirectory, $wgLanguageCode, $wgDebugLogFile; + print "Copying files... "; + + copyfile( ".", "wiki.phtml", $IP ); + copyfile( ".", "redirect.phtml", $IP ); + copyfile( ".", "texvc.phtml", $IP ); + + copydirectory( "./includes", $IP ); + copydirectory( "./stylesheets", $wgStyleSheetDirectory ); + + copyfile( "./images", "wiki.png", $wgUploadDirectory ); + copyfile( "./languages", "Language.php", $IP ); + copyfile( "./languages", "Language" . ucfirst( $wgLanguageCode ) . ".php", $IP ); + + $fp = fopen( $wgDebugLogFile, "w" ); + if ( false === $fp ) { + print "Could not create log file \"{$wgDebugLogFile}\".\n"; exit(); } -} - -function copydirectory( $source, $dest ) { - $handle = opendir( $source ); - while ( false !== ( $f = readdir( $handle ) ) ) { - if ( "." == $f{0} ) continue; - # Windows turned all my CVS->cvs :( - if ( !strcasecmp ( "CVS", $f ) ) continue; - copyfile( $source, $f, $dest ); + $d = date( "Y-m-d H:i:s" ); + fwrite( $fp, "Wiki debug log file created {$d}\n\n" ); + fclose( $fp ); + + if ( $wgUseTeX ) { + copyfile( "./math", "texvc", "{$IP}/math", 0775 ); + copyfile( "./math", "texvc_test", "{$IP}/math", 0775 ); + copyfile( "./math", "texvc_tex", "{$IP}/math", 0775 ); } -} + + copyfile( ".", "Version.php", $IP ); -function readconsole() { - $fp = fopen( "php://stdin", "r" ); - $resp = trim( fgets( $fp, 1024 ) ); - fclose( $fp ); - return $resp; + print "ok\n"; } function do_revision_updates() { global $wgSoftwareRevision; - if ( $wgSoftwareRevision < 1001 ) { update_passwords(); } + if ( $wgSoftwareRevision < 1001 ) { + update_passwords(); + } } function update_passwords() { @@ -186,21 +131,55 @@ function update_passwords() { } } -function alter_ipblocks() { - global $wgAlterSpecs; - +function do_ipblocks_update() { if ( wfFieldExists( "ipblocks", "ipb_id" ) ) { - return; + echo "...ipblocks table is up to date.\n"; + } else { + echo "Updating ipblocks table... "; + dbsource( "maintenance/archives/patch-ipblocks.sql" ); + echo "ok\n"; } - - if ( array_key_exists( "ipblocks", $wgAlterSpecs ) ) { - $wgAlterSpecs["ipblocks"] .= ","; +} + + +function do_interwiki_update() { + # Check that interwiki table exists; if it doesn't source it + if( table_exists( "interwiki" ) ) { + echo "...already have interwiki table\n"; + return true; } + echo "Creating interwiki table: "; + dbsource( "maintenance/archives/patch-interwiki.sql" ); + echo "ok\n"; + echo "Adding default interwiki definitions: "; + dbsource( "maintenance/interwiki.sql" ); + echo "ok\n"; +} - $wgAlterSpecs["ipblocks"] .= - "ADD ipb_auto tinyint(1) NOT NULL default '0', ". - "ADD ipb_id int(8) NOT NULL auto_increment,". - "ADD PRIMARY KEY (ipb_id)"; +function do_index_update() { + # Check that proper indexes are in place + $meta = field_info( "recentchanges", "rc_timestamp" ); + if( $meta->multiple_key == 0 ) { + echo "Updating indexes to 20031107: "; + dbsource( "maintenance/archives/patch-indexes.sql" ); + echo "ok\n"; + return true; + } + echo "...indexes seem up to 20031107 standards\n"; + return false; } +function do_linkscc_update() { + // Create linkscc if necessary + global $rconn; + if( table_exists( "linkscc" ) ) { + echo "...have linkscc table.\n"; + } else { + echo "Adding linkscc table... "; + dbsource( "maintenance/archives/patch-linkscc.sql" ); + echo "ok\n"; + } +} + + ?> -- 2.20.1