cvs :( if ( !strcasecmp ( "CVS", $f ) ) continue; copyfile( $source, $f, $dest ); } } function readconsole() { $fp = fopen( "php://stdin", "r" ); $resp = trim( fgets( $fp ) ); fclose( $fp ); return $resp; } function do_revision_updates() { global $wgSoftwareRevision, $wgAlterSpecs, $wgDBserver, $wgDBadminuser; global $wgDBadminpassword, $wgDBname; if ( $wgSoftwareRevision < 1001 ) { update_passwords(); } if ( $wgSoftwareRevision < 1002 ) { alter_ipblocks(); } # Run ALTER TABLE queries. if ( count( $wgAlterSpecs ) ) { $rconn = mysql_connect( $wgDBserver, $wgDBadminuser, $wgDBadminpassword ); mysql_select_db( $wgDBname ); print "\n"; foreach ( $wgAlterSpecs as $table => $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 ); } } function update_passwords() { $fname = "Update script: update_passwords()"; print "\nIt appears that you need to update the user passwords in your\n" . "database. If you have already done this (if you've run this update\n" . "script once before, for example), doing so again will make all your\n" . "user accounts inaccessible, so be sure you only do this once.\n" . "Update user passwords? (yes/no) "; $resp = readconsole(); if ( ! ( "Y" == $resp{0} || "y" == $resp{0} ) ) { return; } $sql = "SELECT user_id,user_password FROM user"; $source = wfQuery( $sql, fname ); while ( $row = mysql_fetch_object( $source ) ) { $id = $row->user_id; $oldpass = $row->user_password; $newpass = md5( "{$id}-{$oldpass}" ); $sql = "UPDATE user SET user_password='{$newpass}' " . "WHERE user_id={$id}"; wfQuery( $sql, $fname ); } } function alter_ipblocks() { global $wgAlterSpecs; $fname = "Update script: alter_ipblocks"; if ( field_exists( "ipblocks", "ipb_id" ) ) { return; } if ( array_key_exists( "ipblocks", $wgAlterSpecs ) ) { $wgAlterSpecs["ipblocks"] .= ","; } $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 field_exists( $table, $field ) { $fname = "Update script: field_exists"; $res = wfQuery( "DESCRIBE $table", $fname ); $found = false; while ( $row = wfFetchObject( $res ) ) { if ( $row->Field == $field ) { $found = true; break; } } return $found; } ?>