diff options
author | Pierre Schmitz <pierre@archlinux.de> | 2011-06-22 11:28:20 +0200 |
---|---|---|
committer | Pierre Schmitz <pierre@archlinux.de> | 2011-06-22 11:28:20 +0200 |
commit | 9db190c7e736ec8d063187d4241b59feaf7dc2d1 (patch) | |
tree | 46d1a0dee7febef5c2d57a9f7b972be16a163b3d /maintenance/backup.inc | |
parent | 78677c7bbdcc9739f6c10c75935898a20e1acd9e (diff) |
update to MediaWiki 1.17.0
Diffstat (limited to 'maintenance/backup.inc')
-rw-r--r-- | maintenance/backup.inc | 97 |
1 files changed, 50 insertions, 47 deletions
diff --git a/maintenance/backup.inc b/maintenance/backup.inc index 30bd0d88..9ed463c9 100644 --- a/maintenance/backup.inc +++ b/maintenance/backup.inc @@ -1,6 +1,8 @@ <?php /** - * Copyright (C) 2005 Brion Vibber <brion@pobox.com> + * Base classes for database dumpers + * + * Copyright © 2005 Brion Vibber <brion@pobox.com> * http://www.mediawiki.org/ * * This program is free software; you can redistribute it and/or modify @@ -27,7 +29,7 @@ */ class DumpDBZip2Output extends DumpPipeOutput { function DumpDBZip2Output( $file ) { - parent::DumpPipeOutput( "dbzip2", $file ); + parent::__construct( "dbzip2", $file ); } } @@ -67,16 +69,16 @@ class BackupDumper { } /** - * @param string $name - * @param string $class name of output filter plugin class + * @param $name String + * @param $class String: name of output filter plugin class */ function registerOutput( $name, $class ) { $this->outputTypes[$name] = $class; } /** - * @param string $name - * @param string $class name of filter plugin class + * @param $name String + * @param $class String: name of filter plugin class */ function registerFilter( $name, $class ) { $this->filterTypes[$name] = $class; @@ -84,12 +86,13 @@ class BackupDumper { /** * Load a plugin and register it - * @param string $class Name of plugin class; must have a static 'register' - * method that takes a BackupDumper as a parameter. - * @param string $file Full or relative path to the PHP file to load, or empty + * + * @param $class String: name of plugin class; must have a static 'register' + * method that takes a BackupDumper as a parameter. + * @param $file String: full or relative path to the PHP file to load, or empty */ function loadPlugin( $class, $file ) { - if( $file != '' ) { + if ( $file != '' ) { require_once( $file ); } $register = array( $class, 'register' ); @@ -97,37 +100,36 @@ class BackupDumper { } /** - * @param array $args - * @return array - * @static + * @param $args Array + * @return Array */ function processArgs( $args ) { $sink = null; $sinks = array(); - foreach( $args as $arg ) { + foreach ( $args as $arg ) { $matches = array(); - if( preg_match( '/^--(.+?)(?:=(.+?)(?::(.+?))?)?$/', $arg, $matches ) ) { + if ( preg_match( '/^--(.+?)(?:=(.+?)(?::(.+?))?)?$/', $arg, $matches ) ) { @list( /* $full */ , $opt, $val, $param ) = $matches; switch( $opt ) { case "plugin": $this->loadPlugin( $val, $param ); break; case "output": - if( !is_null( $sink ) ) { + if ( !is_null( $sink ) ) { $sinks[] = $sink; } - if( !isset( $this->outputTypes[$val] ) ) { + if ( !isset( $this->outputTypes[$val] ) ) { wfDie( "Unrecognized output sink type '$val'\n" ); } $type = $this->outputTypes[$val]; $sink = new $type( $param ); break; case "filter": - if( is_null( $sink ) ) { + if ( is_null( $sink ) ) { $this->progress( "Warning: assuming stdout for filter output\n" ); $sink = new DumpOutput(); } - if( !isset( $this->filterTypes[$val] ) ) { + if ( !isset( $this->filterTypes[$val] ) ) { wfDie( "Unrecognized filter type '$val'\n" ); } $type = $this->filterTypes[$val]; @@ -145,9 +147,9 @@ class BackupDumper { $this->server = $val; break; case "force-normal": - if( !function_exists( 'utf8_normalize' ) ) { - dl( "php_utfnormal.so" ); - if( !function_exists( 'utf8_normalize' ) ) { + if ( !function_exists( 'utf8_normalize' ) ) { + wfDl( "php_utfnormal.so" ); + if ( !function_exists( 'utf8_normalize' ) ) { wfDie( "Failed to load UTF-8 normalization extension. " . "Install or remove --force-normal parameter to use slower code.\n" ); } @@ -159,12 +161,12 @@ class BackupDumper { } } - if( is_null( $sink ) ) { + if ( is_null( $sink ) ) { $sink = new DumpOutput(); } $sinks[] = $sink; - if( count( $sinks ) > 1 ) { + if ( count( $sinks ) > 1 ) { return new DumpMultiWriter( $sinks ); } else { return $sink; @@ -178,7 +180,7 @@ class BackupDumper { function dump( $history, $text = WikiExporter::TEXT ) { # Notice messages will foul up your XML output even if they're # relatively harmless. - if( ini_get( 'display_errors' ) ) + if ( ini_get( 'display_errors' ) ) ini_set( 'display_errors', 'stderr' ); $this->initProgress( $history ); @@ -190,18 +192,18 @@ class BackupDumper { $wrapper = new ExportProgressFilter( $this->sink, $this ); $exporter->setOutputSink( $wrapper ); - if( !$this->skipHeader ) + if ( !$this->skipHeader ) $exporter->openStream(); # Log item dumps: all or by range - if( $history & WikiExporter::LOGS ) { - if( $this->startId || $this->endId ) { + if ( $history & WikiExporter::LOGS ) { + if ( $this->startId || $this->endId ) { $exporter->logsByRange( $this->startId, $this->endId ); } else { $exporter->allLogs(); } # Page dumps: all or by page ID range - } else if( is_null( $this->pages ) ) { - if( $this->startId || $this->endId ) { + } else if ( is_null( $this->pages ) ) { + if ( $this->startId || $this->endId ) { $exporter->pagesByRange( $this->startId, $this->endId ); } else { $exporter->allPages(); @@ -211,44 +213,45 @@ class BackupDumper { $exporter->pagesByName( $this->pages ); } - if( !$this->skipFooter ) + if ( !$this->skipFooter ) $exporter->closeStream(); $this->report( true ); } - + /** * Initialise starting time and maximum revision count. * We'll make ETA calculations based an progress, assuming relatively * constant per-revision rate. - * @param int $history WikiExporter::CURRENT or WikiExporter::FULL + * @param $history Integer: WikiExporter::CURRENT or WikiExporter::FULL */ function initProgress( $history = WikiExporter::FULL ) { - $table = ($history == WikiExporter::CURRENT) ? 'page' : 'revision'; - $field = ($history == WikiExporter::CURRENT) ? 'page_id' : 'rev_id'; - + $table = ( $history == WikiExporter::CURRENT ) ? 'page' : 'revision'; + $field = ( $history == WikiExporter::CURRENT ) ? 'page_id' : 'rev_id'; + $dbr = wfGetDB( DB_SLAVE ); - $this->maxCount = $dbr->selectField( $table, "MAX($field)", '', 'BackupDumper::dump' ); + $this->maxCount = $dbr->selectField( $table, "MAX($field)", '', __METHOD__ ); $this->startTime = wfTime(); } /** - * @fixme the --server parameter is currently not respected, as it doesn't seem - * terribly easy to ask the load balancer for a particular connection by name. + * @todo Fixme: the --server parameter is currently not respected, as it + * doesn't seem terribly easy to ask the load balancer for a particular + * connection by name. */ function backupDb() { $this->lb = wfGetLBFactory()->newMainLB(); $db = $this->lb->getConnection( DB_SLAVE, 'backup' ); - + // Discourage the server from disconnecting us if it takes a long time // to read out the big ol' batch query. $db->setTimeout( 3600 * 24 ); - + return $db; } - + function __destruct() { - if( isset( $this->lb ) ) { + if ( isset( $this->lb ) ) { $this->lb->closeAll(); } } @@ -270,16 +273,16 @@ class BackupDumper { } function report( $final = false ) { - if( $final xor ( $this->revCount % $this->reportingInterval == 0 ) ) { + if ( $final xor ( $this->revCount % $this->reportingInterval == 0 ) ) { $this->showReport(); } } function showReport() { - if( $this->reporting ) { + if ( $this->reporting ) { $delta = wfTime() - $this->startTime; $now = wfTimestamp( TS_DB ); - if( $delta ) { + if ( $delta ) { $rate = $this->pageCount / $delta; $revrate = $this->revCount / $delta; $portion = $this->revCount / $this->maxCount; @@ -302,7 +305,7 @@ class BackupDumper { class ExportProgressFilter extends DumpFilter { function ExportProgressFilter( &$sink, &$progress ) { - parent::DumpFilter( $sink ); + parent::__construct( $sink ); $this->progress = $progress; } |