X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=includes%2Fregistration%2FExtensionProcessor.php;h=14d4a17daa0f7a6af6a3d588b795ec864dd6689c;hb=5490b1270a0a7447f28d2407736fc3c1deb41d44;hp=0d0a6e47619f444621602b314c365295bd92503f;hpb=f87db68a3e7495aa791ad7c666300882523de54a;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/registration/ExtensionProcessor.php b/includes/registration/ExtensionProcessor.php index 0d0a6e4761..14d4a17daa 100644 --- a/includes/registration/ExtensionProcessor.php +++ b/includes/registration/ExtensionProcessor.php @@ -186,12 +186,6 @@ class ExtensionProcessor implements Processor { */ public function extractInfo( $path, array $info, $version ) { $dir = dirname( $path ); - if ( $version === 2 ) { - $this->extractConfig2( $info, $dir ); - } else { - // $version === 1 - $this->extractConfig1( $info ); - } $this->extractHooks( $info ); $this->extractExtensionMessagesFiles( $dir, $info ); $this->extractMessagesDirs( $dir, $info ); @@ -216,6 +210,15 @@ class ExtensionProcessor implements Processor { $this->callbacks[$name] = $info['callback']; } + // config should be after all core globals are extracted, + // so duplicate setting detection will work fully + if ( $version === 2 ) { + $this->extractConfig2( $info, $dir ); + } else { + // $version === 1 + $this->extractConfig1( $info ); + } + if ( $version === 2 ) { $this->extractAttributes( $path, $info ); } @@ -463,7 +466,7 @@ class ExtensionProcessor implements Processor { } foreach ( $info['config'] as $key => $val ) { if ( $key[0] !== '@' ) { - $this->addConfigGlobal( "$prefix$key", $val ); + $this->addConfigGlobal( "$prefix$key", $val, $info['name'] ); } } } @@ -491,7 +494,7 @@ class ExtensionProcessor implements Processor { if ( isset( $data['path'] ) && $data['path'] ) { $value = "$dir/$value"; } - $this->addConfigGlobal( "$prefix$key", $value ); + $this->addConfigGlobal( "$prefix$key", $value, $info['name'] ); } } } @@ -501,12 +504,13 @@ class ExtensionProcessor implements Processor { * * @param string $key The config key with the prefix and anything * @param mixed $value The value of the config + * @param string $extName Name of the extension */ - private function addConfigGlobal( $key, $value ) { + private function addConfigGlobal( $key, $value, $extName ) { if ( array_key_exists( $key, $this->globals ) ) { throw new RuntimeException( - "The configuration setting '$key' was already set by another extension," - . " and cannot be set again." ); + "The configuration setting '$key' was already set by MediaWiki core or" + . " another extension, and cannot be set again by $extName." ); } $this->globals[$key] = $value; }