From: Kunal Mehta Date: Wed, 1 Apr 2015 20:44:54 +0000 (-0700) Subject: mergeMessageFileList: Support reading extension/skin.json files X-Git-Tag: 1.31.0-rc.0~11802^2 X-Git-Url: http://git.cyclocoop.org/%24image?a=commitdiff_plain;h=338de7faac405039885f38319aede77e706590c1;p=lhc%2Fweb%2Fwiklou.git mergeMessageFileList: Support reading extension/skin.json files No more hacky reading of PHP files! Bug: T94756 Change-Id: I0a92f8904bbc422d5c893f7c0af2daedf7576cf0 --- diff --git a/maintenance/mergeMessageFileList.php b/maintenance/mergeMessageFileList.php index 2a6f8a8b7a..43fa4603f4 100644 --- a/maintenance/mergeMessageFileList.php +++ b/maintenance/mergeMessageFileList.php @@ -85,12 +85,24 @@ class MergeMessageFileList extends Maintenance { if ( $extname == '.' || $extname == '..' || !is_dir( "$extdir/$extname" ) ) { continue; } - $extfile = "{$extdir}/{$extname}/{$extname}.php"; - if ( file_exists( $extfile ) ) { - $mmfl['setupFiles'][] = $extfile; - } else { + $possibilities = array( + "$extdir/$extname/extension.json", + "$extdir/$extname/skin.json", + "$extdir/$extname/$extname.php" + ); + $found = false; + foreach ( $possibilities as $extfile ) { + if ( file_exists( $extfile ) ) { + $mmfl['setupFiles'][] = $extfile; + $found = true; + break; + } + } + + if ( !$found ) { $this->hasError = true; - $this->error( "Extension {$extname} in {$extdir} lacks expected {$extname}.php" ); + $this->error( "Extension {$extname} in {$extdir} lacks expected entry point: " . + "extension.json, skin.json, or {$extname}.php." ); } } } @@ -150,6 +162,7 @@ class MergeMessageFileList extends Maintenance { require_once RUN_MAINTENANCE_IF_MAIN; +$queue = array(); foreach ( $mmfl['setupFiles'] as $fileName ) { if ( strval( $fileName ) === '' ) { continue; @@ -157,12 +170,26 @@ foreach ( $mmfl['setupFiles'] as $fileName ) { if ( empty( $mmfl['quiet'] ) ) { fwrite( STDERR, "Loading data from $fileName\n" ); } - // Include the extension to update $wgExtensionMessagesFiles - if ( !( include_once $fileName ) ) { + // Using extension.json or skin.json + if ( substr( $fileName, -strlen( '.json' ) ) === '.json' ) { + $queue[$fileName] = 1; + } elseif ( !( include_once $fileName ) ) { + // Include the extension to update $wgExtensionMessagesFiles fwrite( STDERR, "Unable to read $fileName\n" ); exit( 1 ); } } + +if ( $queue ) { + $registry = new ExtensionRegistry(); + $data = $registry->readFromQueue( $queue ); + foreach ( array( 'wgExtensionMessagesFiles', 'wgMessagesDirs' ) as $var ) { + if ( isset( $data['globals'][$var] ) ) { + $GLOBALS[$var] = array_merge( $data['globals'][$var], $GLOBALS[$var] ); + } + } +} + fwrite( STDERR, "\n" ); $s = "<" . "?php\n" .