Some HipHop fixes:
[lhc/web/wiklou.git] / maintenance / Maintenance.php
index 3e3def8..fd88656 100644 (file)
@@ -20,9 +20,6 @@
  * @defgroup Maintenance Maintenance
  */
 
-// Include global constants, including MW_VERSION and MW_MIN_PHP_VERSION
-require_once( dirname( __FILE__ ) . '/includes/Defines.php' );
-
 // Define this so scripts can easily find doMaintenance.php
 define( 'RUN_MAINTENANCE_IF_MAIN', dirname( __FILE__ ) . '/doMaintenance.php' );
 define( 'DO_MAINTENANCE', RUN_MAINTENANCE_IF_MAIN ); // original name, harmless
@@ -30,10 +27,10 @@ define( 'DO_MAINTENANCE', RUN_MAINTENANCE_IF_MAIN ); // original name, harmless
 $maintClass = false;
 
 // Make sure we're on PHP5 or better
-if ( version_compare( PHP_VERSION, MW_MIN_PHP_VERSION ) < 0 ) {
-       die ( "Sorry! This version of MediaWiki requires PHP " . MW_MIN_PHP_VERSION . "; you are running " .
+if ( version_compare( PHP_VERSION, '5.2.3' ) < 0 ) {
+       die ( "Sorry! This version of MediaWiki requires PHP 5.2.3; you are running " .
                PHP_VERSION . ".\n\n" .
-               "If you are sure you already have PHP " . MW_MIN_PHP_VERSION . " or higher installed, it may be\n" .
+               "If you are sure you already have PHP 5.2.3 or higher installed, it may be\n" .
                "installed in a different path from PHP " . PHP_VERSION . ". Check with your system\n" .
                "administrator.\n" );
 }
@@ -111,6 +108,9 @@ abstract class Maintenance {
        // Generic options which might or not be supported by the script
        private $mDependantParameters = array();
 
+       // Used by getDD() / setDB()
+       private $mDb = null;
+
        /**
         * List of all the core maintenance scripts. This is added
         * to scripts added by extensions in $wgMaintenanceScripts
@@ -451,6 +451,9 @@ abstract class Maintenance {
 
                $child = new $maintClass();
                $child->loadParamsAndArgs( $this->mSelf, $this->mOptions, $this->mArgs );
+               if ( !is_null( $this->mDb ) ) {
+                       $child->setDB( $this->mDb );
+               }
                return $child;
        }
 
@@ -961,7 +964,7 @@ abstract class Maintenance {
         */
        public function purgeRedundantText( $delete = true ) {
                # Data should come off the master, wrapped in a transaction
-               $dbw = wfGetDB( DB_MASTER );
+               $dbw = $this->getDB( DB_MASTER );
                $dbw->begin();
 
                $tbl_arc = $dbw->tableName( 'archive' );
@@ -1064,6 +1067,30 @@ abstract class Maintenance {
                return self::$mCoreScripts;
        }
 
+       /**
+        * Returns a database to be used by current maintenance script. It can be set by setDB().
+        * If not set, wfGetDB() will be used.
+        * This function has the same parameters as wfGetDB()
+        *
+        * @return DatabaseBase
+        */
+       protected function &getDB( $db, $groups = array(), $wiki = false ) {
+               if ( is_null( $this->mDb ) ) {
+                       return wfGetDB( $db, $groups, $wiki );
+               } else {
+                       return $this->mDb;
+               }
+       }
+
+       /**
+        * Sets database object to be returned by getDB().
+        *
+        * @param $db DatabaseBase: Database object to be used
+        */
+       public function setDB( &$db ) {
+               $this->mDb = $db;
+       }
+
        /**
         * Lock the search index
         * @param &$db Database object