30e9069a3236a349f4ef270dd933574ba8768d21
[lhc/web/wiklou.git] / maintenance / checkAutoLoader.php
1 <?php
2 /**
3 * Check the autoloader
4 */
5
6 require_once( "Maintenance.php" );
7
8 class CheckAutoLoader extends Maintenance {
9 public function __construct() {
10 parent::__construct();
11 $this->mDescription = "AutoLoader sanity checks";
12 }
13 public function execute() {
14 global $wgAutoloadLocalClasses, $IP;
15 $files = array_unique( $wgAutoloadLocalClasses );
16
17 foreach( $files as $file ) {
18 if( function_exists( 'parsekit_compile_file' ) ){
19 $parseInfo = parsekit_compile_file( "$IP/$file" );
20 $classes = array_keys( $parseInfo['class_table'] );
21 } else {
22 $contents = file_get_contents( "$IP/$file" );
23 $m = array();
24 preg_match_all( '/\n\s*class\s+([a-zA-Z0-9_]+)/', $contents, $m, PREG_PATTERN_ORDER );
25 $classes = $m[1];
26 }
27 foreach ( $classes as $class ) {
28 if ( !isset( $wgAutoloadLocalClasses[$class] ) ) {
29 //printf( "%-50s Unlisted, in %s\n", $class, $file );
30 $this->output( "\t'$class' => '$file',\n" );
31 } elseif ( $wgAutoloadLocalClasses[$class] !== $file ) {
32 $this->output( "$class: Wrong file: found in $file, listed in " . $wgAutoloadLocalClasses[$class] . "\n" );
33 }
34 }
35 }
36 }
37 }
38
39 $maintClass = "CheckAutoLoader";
40 require_once( DO_MAINTENANCE );