From: jenkins-bot Date: Tue, 15 May 2018 23:54:23 +0000 (+0000) Subject: Merge "registration: Improve duplicate config setting exception" into REL1_31 X-Git-Tag: 1.31.0-rc.1~7 X-Git-Url: http://git.cyclocoop.org/?a=commitdiff_plain;h=1a66f01995a190e2782dec9dc578dcdd16a32e02;hp=15f074d2baa3d3e83dfe06a9269dd01b81360315;p=lhc%2Fweb%2Fwiklou.git Merge "registration: Improve duplicate config setting exception" into REL1_31 --- 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; }