MediaWiki  REL1_19
mergeMessageFileList.php
Go to the documentation of this file.
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 );