MediaWiki  REL1_20
checkAutoLoader.php
Go to the documentation of this file.
00001 <?php
00024 require_once( __DIR__ . '/Maintenance.php' );
00025 
00031 class CheckAutoLoader extends Maintenance {
00032         public function __construct() {
00033                 parent::__construct();
00034                 $this->mDescription = "AutoLoader sanity checks";
00035         }
00036         public function execute() {
00037                 global $wgAutoloadLocalClasses, $IP;
00038                 $files = array_unique( $wgAutoloadLocalClasses );
00039 
00040                 foreach ( $files as $file ) {
00041                         if ( function_exists( 'parsekit_compile_file' ) ) {
00042                                 $parseInfo = parsekit_compile_file( "$IP/$file" );
00043                                 $classes = array_keys( $parseInfo['class_table'] );
00044                         } else {
00045                                 $contents = file_get_contents( "$IP/$file" );
00046                                 $m = array();
00047                                 preg_match_all( '/\n\s*class\s+([a-zA-Z0-9_]+)/', $contents, $m, PREG_PATTERN_ORDER );
00048                                 $classes = $m[1];
00049                         }
00050                         foreach ( $classes as $class ) {
00051                                 if ( !isset( $wgAutoloadLocalClasses[$class] ) ) {
00052                                         // printf( "%-50s Unlisted, in %s\n", $class, $file );
00053                                         $this->output( "\t'$class' => '$file',\n" );
00054                                 } elseif ( $wgAutoloadLocalClasses[$class] !== $file ) {
00055                                         $this->output( "$class: Wrong file: found in $file, listed in " . $wgAutoloadLocalClasses[$class] . "\n" );
00056                                 }
00057                         }
00058                 }
00059         }
00060 }
00061 
00062 $maintClass = "CheckAutoLoader";
00063 require_once( RUN_MAINTENANCE_IF_MAIN );