00001 <?php
00023 require_once( dirname(__FILE__) . '/Maintenance.php' );
00024
00025 class CheckAutoLoader extends Maintenance {
00026 public function __construct() {
00027 parent::__construct();
00028 $this->mDescription = "AutoLoader sanity checks";
00029 }
00030 public function execute() {
00031 global $wgAutoloadLocalClasses, $IP;
00032 $files = array_unique( $wgAutoloadLocalClasses );
00033
00034 foreach( $files as $file ) {
00035 if( function_exists( 'parsekit_compile_file' ) ){
00036 $parseInfo = parsekit_compile_file( "$IP/$file" );
00037 $classes = array_keys( $parseInfo['class_table'] );
00038 } else {
00039 $contents = file_get_contents( "$IP/$file" );
00040 $m = array();
00041 preg_match_all( '/\n\s*class\s+([a-zA-Z0-9_]+)/', $contents, $m, PREG_PATTERN_ORDER );
00042 $classes = $m[1];
00043 }
00044 foreach ( $classes as $class ) {
00045 if ( !isset( $wgAutoloadLocalClasses[$class] ) ) {
00046
00047 $this->output( "\t'$class' => '$file',\n" );
00048 } elseif ( $wgAutoloadLocalClasses[$class] !== $file ) {
00049 $this->output( "$class: Wrong file: found in $file, listed in " . $wgAutoloadLocalClasses[$class] . "\n" );
00050 }
00051 }
00052 }
00053 }
00054 }
00055
00056 $maintClass = "CheckAutoLoader";
00057 require_once( DO_MAINTENANCE );