Fixes for maintenance/checkAutoLoader.php:
authorAlexandre Emsenhuber <ialex@users.mediawiki.org>
Fri, 8 Aug 2008 17:34:36 +0000 (17:34 +0000)
committerAlexandre Emsenhuber <ialex@users.mediawiki.org>
Fri, 8 Aug 2008 17:34:36 +0000 (17:34 +0000)
* Fix fatal error: access to undefined static member variable AutoLoader::$localClasses, use $wgAutoloadLocalClasses instead
* Use a regexp if parsekit_compile_file() doesn't exist.

maintenance/checkAutoLoader.php

index c2909ef..554395c 100644 (file)
@@ -3,17 +3,24 @@ if ( php_sapi_name() != 'cli' ) exit;
 
 $IP = dirname(__FILE__) .'/..';
 require( "$IP/includes/AutoLoader.php" );
-$files = array_unique( AutoLoader::$localClasses );
+$files = array_unique( $wgAutoloadLocalClasses );
 
 foreach ( $files as $file ) {
-       $parseInfo = parsekit_compile_file( "$IP/$file" );
-       $classes = array_keys( $parseInfo['class_table'] );
+       if( function_exists( 'parsekit_compile_file' ) ){
+               $parseInfo = parsekit_compile_file( "$IP/$file" );
+               $classes = array_keys( $parseInfo['class_table'] );
+       } else {
+               $contents = file_get_contents( "$IP/$file" );
+               $m = array();
+               preg_match_all( '/\n\s*class\s+([a-zA-Z0-9_]+)/', $contents, $m, PREG_PATTERN_ORDER );
+               $classes = $m[1];
+       }
        foreach ( $classes as $class ) {
-               if ( !isset( AutoLoader::$localClasses[$class] ) ) {
+               if ( !isset( $wgAutoloadLocalClasses[$class] ) ) {
                        //printf( "%-50s Unlisted, in %s\n", $class, $file );
                        echo "          '$class' => '$file',\n";
-               } elseif ( AutoLoader::$localClasses[$class] !== $file ) {
-                       echo "$class: Wrong file: found in $file, listed in " . AutoLoader::$localClasses[$class] . "\n";
+               } elseif ( $wgAutoloadLocalClasses[$class] !== $file ) {
+                       echo "$class: Wrong file: found in $file, listed in " . $wgAutoloadLocalClasses[$class] . "\n";
                }
        }