MediaWiki
REL1_19
|
00001 <?php 00025 # Start from scratch 00026 define( 'MW_NO_EXTENSION_MESSAGES', 1 ); 00027 00028 require_once( dirname( __FILE__ ) . '/Maintenance.php' ); 00029 00030 class MergeMessageFileList extends Maintenance { 00031 00032 function __construct() { 00033 parent::__construct(); 00034 $this->addOption( 'list-file', 'A file containing a list of extension setup files, one per line.', true, true ); 00035 $this->addOption( 'output', 'Send output to this file (omit for stdout)', false, true ); 00036 $this->mDescription = 'Merge $wgExtensionMessagesFiles from various extensions to produce a ' . 00037 'single array containing all message files.'; 00038 } 00039 00040 public function execute() { 00041 $lines = file( $this->getOption( 'list-file' ) ); 00042 if ( $lines === false ) { 00043 $this->error( 'Unable to open list file.' ); 00044 } 00045 $mmfl = array( 'setupFiles' => array_map( 'trim', $lines ) ); 00046 if ( $this->hasOption( 'output' ) ) { 00047 $mmfl['output'] = $this->getOption( 'output' ); 00048 } 00049 00050 global $IP, $wgExtensionMessagesFiles; 00051 foreach ( $mmfl['setupFiles'] as $fileName ) { 00052 if ( strval( $fileName ) === '' ) { 00053 continue; 00054 } 00055 $fileName = str_replace( '$IP', $IP, $fileName ); 00056 fwrite( STDERR, "Loading data from $fileName\n" ); 00057 include_once( $fileName ); 00058 } 00059 fwrite( STDERR, "\n" ); 00060 $s = 00061 "<" . "?php\n" . 00062 "## This file is generated by mergeMessageFileList.php. Do not edit it directly.\n\n" . 00063 "if ( defined( 'MW_NO_EXTENSION_MESSAGES' ) ) return;\n\n" . 00064 '$wgExtensionMessagesFiles = ' . var_export( $wgExtensionMessagesFiles, true ) . ";\n"; 00065 00066 $dirs = array( 00067 $IP, 00068 dirname( dirname( __FILE__ ) ), 00069 realpath( $IP ) 00070 ); 00071 00072 foreach ( $dirs as $dir ) { 00073 $s = preg_replace( 00074 "/'" . preg_quote( $dir, '/' ) . "([^']*)'/", 00075 '"$IP\1"', 00076 $s ); 00077 } 00078 00079 if ( isset( $mmfl['output'] ) ) { 00080 file_put_contents( $mmfl['output'], $s ); 00081 } else { 00082 echo $s; 00083 } 00084 } 00085 } 00086 00087 $maintClass = 'MergeMessageFileList'; 00088 require_once( RUN_MAINTENANCE_IF_MAIN );