Maintenance: detect missing parent::__construct()
authorKevin Israel <pleasestand@live.com>
Thu, 3 Oct 2013 06:53:30 +0000 (02:53 -0400)
committerKevin Israel <pleasestand@live.com>
Thu, 3 Oct 2013 06:53:30 +0000 (02:53 -0400)
The first time I forgot to include that line in a maintenance script,
I spent a few minutes debugging "Notice: Undefined variable: IP".
Hopefully, this change will save someone else a few minutes of his
or her own time.

Change-Id: Icd26a5dc59e25d2bcc6da9bf0a2f6e95d494e5a6

maintenance/Maintenance.php

index 1712b24..30e93c9 100644 (file)
@@ -477,13 +477,18 @@ abstract class Maintenance {
         * Do some sanity checking and basic setup
         */
        public function setup() {
-               global $wgCommandLineMode, $wgRequestTime;
+               global $IP, $wgCommandLineMode, $wgRequestTime;
 
                # Abort if called from a web server
                if ( isset( $_SERVER ) && isset( $_SERVER['REQUEST_METHOD'] ) ) {
                        $this->error( 'This script must be run from the command line', true );
                }
 
+               if ( $IP === null ) {
+                       $this->error( "\$IP not set, aborting!\n" .
+                               '(Did you forget to call parent::__construct() in your maintenance script?)', 1 );
+               }
+
                # Make sure we can handle script parameters
                if ( !defined( 'HPHP_VERSION' ) && !ini_get( 'register_argc_argv' ) ) {
                        $this->error( 'Cannot get command line arguments, register_argc_argv is set to false', true );