X-Git-Url: https://scripts.mit.edu/gitweb/autoinstallsdev/mediawiki.git/blobdiff_plain/d7967d5e4460e08b6b258307afbca0596b18a3dd..d75ce11339b35963b5f8c3d53190819c1c025716:/maintenance/renamewiki.php diff --git a/maintenance/renamewiki.php b/maintenance/renamewiki.php index d9fe6e76..36437bea 100644 --- a/maintenance/renamewiki.php +++ b/maintenance/renamewiki.php @@ -1,59 +1,89 @@ \n" ); -} +require_once( dirname(__FILE__) . '/Maintenance.php' ); + +class RenameWiki extends Maintenance { + public function __construct() { + parent::__construct(); + $this->mDescription = "Rename external storage dbs and leave a new one"; + $this->addArg( 'olddb', 'Old DB name' ); + $this->addArg( 'newdb', 'New DB name' ); + } + + public function getDbType() { + return Maintenance::DB_ADMIN; + } -list( $from, $to ) = $args; + public function execute() { + global $wgDefaultExternalStore; -echo "Renaming blob tables in ES from $from to $to...\n"; -echo "Sleeping 5 seconds..."; -sleep(5); -echo "\n"; + # Setup + $from = $this->getArg( 0 ); + $to = $this->getArg( 1 ); + $this->output( "Renaming blob tables in ES from $from to $to...\n" ); + $this->output( "Sleeping 5 seconds...\n" ); + sleep(5); -$maintenance = "$IP/maintenance"; + # Initialise external storage + if ( is_array( $wgDefaultExternalStore ) ) { + $stores = $wgDefaultExternalStore; + } elseif ( $wgDefaultExternalStore ) { + $stores = array( $wgDefaultExternalStore ); + } else { + $stores = array(); + } -# Initialise external storage -if ( is_array( $wgDefaultExternalStore ) ) { - $stores = $wgDefaultExternalStore; -} elseif ( $wgDefaultExternalStore ) { - $stores = array( $wgDefaultExternalStore ); -} else { - $stores = array(); -} -if ( count( $stores ) ) { - require_once( 'ExternalStoreDB.php' ); - print "Initialising external storage $store...\n"; - global $wgDBuser, $wgDBpassword, $wgExternalServers; - foreach ( $stores as $storeURL ) { - $m = array(); - if ( !preg_match( '!^DB://(.*)$!', $storeURL, $m ) ) { - continue; + if ( count( $stores ) ) { + $this->output( "Initialising external storage $store...\n" ); + global $wgDBuser, $wgDBpassword, $wgExternalServers; + foreach ( $stores as $storeURL ) { + $m = array(); + if ( !preg_match( '!^DB://(.*)$!', $storeURL, $m ) ) { + continue; + } + + $cluster = $m[1]; + + # Hack + $wgExternalServers[$cluster][0]['user'] = $wgDBuser; + $wgExternalServers[$cluster][0]['password'] = $wgDBpassword; + + $store = new ExternalStoreDB; + $extdb =& $store->getMaster( $cluster ); + $extdb->query( "SET table_type=InnoDB" ); + $extdb->query( "CREATE DATABASE {$to}" ); + $extdb->query( "ALTER TABLE {$from}.blobs RENAME TO {$to}.blobs" ); + $extdb->selectDB( $from ); + $extdb->sourceFile( $this->getDir() . '/storage/blobs.sql' ); + $extdb->commit(); + } } - - $cluster = $m[1]; - - # Hack - $wgExternalServers[$cluster][0]['user'] = $wgDBuser; - $wgExternalServers[$cluster][0]['password'] = $wgDBpassword; - - $store = new ExternalStoreDB; - $extdb =& $store->getMaster( $cluster ); - $extdb->query( "SET table_type=InnoDB" ); - $extdb->query( "CREATE DATABASE {$to}" ); - $extdb->query( "ALTER TABLE {$from}.blobs RENAME TO {$to}.blobs" ); - $extdb->selectDB( $from ); - dbsource( "$maintenance/storage/blobs.sql", $extdb ); - $extdb->immediateCommit(); + $this->output( "done.\n" ); } } -echo "done.\n"; - +$maintClass = "RenameWiki"; +require_once( DO_MAINTENANCE );