Localisation updates for core messages from translatewiki.net (2009-09-03 16:52 UTC)
[lhc/web/wiklou.git] / maintenance / commandLine.inc
index 4466344..15a37c8 100644 (file)
@@ -1,7 +1,9 @@
 <?php
 /**
+ * @file
  * @todo document
- * @addtogroup Maintenance
+ * @ingroup Maintenance
+ * @defgroup Maintenance Maintenance
  */
 
 $wgRequestTime = microtime(true);
@@ -35,11 +37,18 @@ if ( !isset( $optionsWithArgs ) ) {
 }
 $optionsWithArgs[] = 'conf'; # For specifying the location of LocalSettings.php
 $optionsWithArgs[] = 'aconf'; # As above for AdminSettings.php
+$optionsWithArgs[] = 'wiki'; # For specifying the wiki ID
 
 $self = array_shift( $argv );
-$IP = realpath( dirname( __FILE__ ) . '/..' );
+$IP = strval( getenv('MW_INSTALL_PATH') ) !== ''
+       ? getenv('MW_INSTALL_PATH')
+       : realpath( dirname( __FILE__ ) . '/..' );
 #chdir( $IP );
-require_once( "$IP/StartProfiler.php" );
+if ( file_exists( "$IP/StartProfiler.php" ) ) {
+       require_once( "$IP/StartProfiler.php" );
+} else {
+       require_once( "$IP/includes/ProfilerStub.php" );
+}
 
 $options = array();
 $args = array();
@@ -61,7 +70,7 @@ for( $arg = reset( $argv ); $arg !== false; $arg = next( $argv ) ) {
                if ( in_array( $option, $optionsWithArgs ) ) {
                        $param = next( $argv );
                        if ( $param === false ) {
-                               echo "$arg needs an value after it\n";
+                               echo "$arg needs a value after it\n";
                                die( -1 );
                        }
                        $options[$option] = $param;
@@ -82,7 +91,7 @@ for( $arg = reset( $argv ); $arg !== false; $arg = next( $argv ) ) {
                        if ( in_array( $option, $optionsWithArgs ) ) {
                                $param = next( $argv );
                                if ( $param === false ) {
-                                       echo "$arg needs an value after it\n";
+                                       echo "$arg needs a value after it\n";
                                        die( -1 );
                                }
                                $options[$option] = $param;
@@ -107,9 +116,10 @@ if (!isset( $wgUseNormalUser ) ) {
        $wgUseNormalUser = false;
 }
 
-if ( file_exists( '/home/wikipedia/common/langlist' ) ) {
+if ( file_exists( dirname(__FILE__).'/wikimedia-mode' ) ) {
        $wgWikiFarm = true;
-       $cluster = trim( file_get_contents( '/etc/cluster' ) );
+       $cluster = 'pmtpa';
+       require_once( "$IP/includes/AutoLoader.php" );
        require_once( "$IP/includes/SiteConfiguration.php" );
 
        # Get $wgConf
@@ -117,7 +127,11 @@ if ( file_exists( '/home/wikipedia/common/langlist' ) ) {
 
        if ( empty( $wgNoDBParam ) ) {
                # Check if we were passed a db name
-               $db = array_shift( $args );
+               if ( isset( $options['wiki'] ) ) {
+                       $db = $options['wiki'];
+               } else {
+                       $db = array_shift( $args );
+               }
                list( $site, $lang ) = $wgConf->siteFromDB( $db );
 
                # If not, work out the language and site the old way
@@ -150,17 +164,15 @@ if ( file_exists( '/home/wikipedia/common/langlist' ) ) {
        $DP = $IP;
        ini_set( 'include_path', ".:$IP:$IP/includes:$IP/languages:$IP/maintenance" );
 
+       if ( $lang == 'test' && $site == 'wikipedia' ) {
+               define( 'TESTWIKI', 1 );
+       }
+       
        #require_once( $IP.'/includes/ProfilerStub.php' );
-       require_once( $IP.'/includes/Defines.php' );
-       require_once( $IP.'/CommonSettings.php' );
-
-       $bin = '/home/wikipedia/bin';
-       if ( $wgUseRootUser ) {
-               $wgDBuser = $wgDBadminuser = 'root';
-               $wgDBpassword = $wgDBadminpassword = trim(`$bin/mysql_root_pass`);
-       } elseif ( !$wgUseNormalUser ) {
-               $wgDBuser = $wgDBadminuser = 'wikiadmin';
-               $wgDBpassword = $wgDBadminpassword = trim(`$bin/wikiadmin_pass`);
+       require( $IP.'/includes/Defines.php' );
+       require( $IP.'/CommonSettings.php' );
+       if ( !$wgUseNormalUser && is_readable( "$IP/AdminSettings.php" ) ) {
+               require( "$IP/AdminSettings.php" );
        }
 } else {
        $wgWikiFarm = false;
@@ -169,6 +181,14 @@ if ( file_exists( '/home/wikipedia/common/langlist' ) ) {
        } else {
                $settingsFile = "$IP/LocalSettings.php";
        }
+       if ( isset( $options['wiki'] ) ) {
+               $bits = explode( '-', $options['wiki'] );
+               if ( count( $bits ) == 1 ) {
+                       $bits[] = '';
+               }
+               define( 'MW_DB', $bits[0] );
+               define( 'MW_PREFIX', $bits[1] );
+       }
 
        if ( ! is_readable( $settingsFile ) ) {
                print "A copy of your installation's LocalSettings.php\n" .
@@ -177,8 +197,8 @@ if ( file_exists( '/home/wikipedia/common/langlist' ) ) {
        }
        $wgCommandLineMode = true;
        $DP = $IP;
-       #require_once( $IP.'/includes/ProfilerStub.php' );
-       require_once( $IP.'/includes/Defines.php' );
+       require_once( "$IP/includes/AutoLoader.php" );
+       require_once( "$IP/includes/Defines.php" );
        require_once( $settingsFile );
        /* ini_set( 'include_path', ".$sep$IP$sep$IP/includes$sep$IP/languages$sep$IP/maintenance" ); */
 
@@ -207,6 +227,10 @@ if ( empty( $wgUseNormalUser ) && isset( $wgDBadminuser ) ) {
                        $wgDBservers[$i]['password'] = $wgDBpassword;
                }
        }
+       if( isset( $wgLBFactoryConf['serverTemplate'] ) ) {
+               $wgLBFactoryConf['serverTemplate']['user'] = $wgDBuser;
+               $wgLBFactoryConf['serverTemplate']['password'] = $wgDBpassword;
+       }
 }
 
 if ( defined( 'MW_CMDLINE_CALLBACK' ) ) {
@@ -216,33 +240,25 @@ if ( defined( 'MW_CMDLINE_CALLBACK' ) ) {
 
 ini_set( 'memory_limit', -1 );
 
+if( version_compare( phpversion(), '5.2.4' ) >= 0 ) {
+       // Send PHP warnings and errors to stderr instead of stdout.
+       // This aids in diagnosing problems, while keeping messages
+       // out of redirected output.
+       if( ini_get( 'display_errors' ) ) {
+               ini_set( 'display_errors', 'stderr' );
+       }
+       
+       // Don't touch the setting on earlier versions of PHP,
+       // as setting it would disable output if you'd wanted it.
+       
+       // Note that exceptions are also sent to stderr when
+       // command-line mode is on, regardless of PHP version.
+}
 $wgShowSQLErrors = true;
 
 require_once( "$IP/includes/Setup.php" );
-require_once( "$IP/install-utils.inc" );
+require_once( "$IP/maintenance/install-utils.inc" );
 $wgTitle = null; # Much much faster startup than creating a title object
-set_time_limit(0);
-
-// --------------------------------------------------------------------
-// Functions
-// --------------------------------------------------------------------
-
-function wfWaitForSlaves( $maxLag ) {
-       global $wgLoadBalancer;
-       if ( $maxLag ) {
-               list( $host, $lag ) = $wgLoadBalancer->getMaxLag();
-               while ( $lag > $maxLag ) {
-                       $name = @gethostbyaddr( $host );
-                       if ( $name !== false ) {
-                               $host = $name;
-                       }
-                       print "Waiting for $host (lagged $lag seconds)...\n";
-                       sleep($maxLag);
-                       list( $host, $lag ) = $wgLoadBalancer->getMaxLag();
-               }
-       }
-}
-
-
+@set_time_limit(0);
 
-?>
+$wgProfiling = false; // only for Profiler.php mode; avoids OOM errors