X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;ds=sidebyside;f=includes%2Fregistration%2FExtensionProcessor.php;h=feffac16ca3307364a4ea41de54fcd60e58813b4;hb=e4fc1ffec346a3b29622761362f866b1248b94bd;hp=207f88423e0f396a5fcdddc9a800281e8b7eff3c;hpb=6124d71e25c2894c3e025c20e81ff742045e8cd5;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/registration/ExtensionProcessor.php b/includes/registration/ExtensionProcessor.php index 207f88423e..feffac16ca 100644 --- a/includes/registration/ExtensionProcessor.php +++ b/includes/registration/ExtensionProcessor.php @@ -141,6 +141,7 @@ class ExtensionProcessor implements Processor { /** * Things to be called once registration of these extensions are done + * keyed by the name of the extension that it belongs to * * @var callable[] */ @@ -180,11 +181,11 @@ class ExtensionProcessor implements Processor { $this->extractResourceLoaderModules( $dir, $info ); $this->extractServiceWiringFiles( $dir, $info ); $this->extractParserTestFiles( $dir, $info ); + $name = $this->extractCredits( $path, $info ); if ( isset( $info['callback'] ) ) { - $this->callbacks[] = $info['callback']; + $this->callbacks[$name] = $info['callback']; } - $this->extractCredits( $path, $info ); foreach ( $info as $key => $val ) { if ( in_array( $key, self::$globalSettings ) ) { $this->storeToArray( $path, "wg$key", $val, $this->globals ); @@ -215,13 +216,7 @@ class ExtensionProcessor implements Processor { } public function getRequirements( array $info ) { - $requirements = []; - $key = ExtensionRegistry::MEDIAWIKI_CORE; - if ( isset( $info['requires'][$key] ) ) { - $requirements[$key] = $info['requires'][$key]; - } - - return $requirements; + return isset( $info['requires'] ) ? $info['requires'] : []; } protected function extractHooks( array $info ) { @@ -246,8 +241,15 @@ class ExtensionProcessor implements Processor { protected function extractNamespaces( array $info ) { if ( isset( $info['namespaces'] ) ) { foreach ( $info['namespaces'] as $ns ) { - $id = $ns['id']; - $this->defines[$ns['constant']] = $id; + if ( defined( $ns['constant'] ) ) { + // If the namespace constant is already defined, use it. + // This allows namespace IDs to be overwritten locally. + $id = constant( $ns['constant'] ); + } else { + $id = $ns['id']; + $this->defines[ $ns['constant'] ] = $id; + } + if ( !( isset( $ns['conditional'] ) && $ns['conditional'] ) ) { // If it is not conditional, register it $this->attributes['ExtensionNamespaces'][$id] = $ns['name']; @@ -335,6 +337,7 @@ class ExtensionProcessor implements Processor { /** * @param string $path * @param array $info + * @return string Name of thing * @throws Exception */ protected function extractCredits( $path, array $info ) { @@ -360,6 +363,8 @@ class ExtensionProcessor implements Processor { $this->credits[$name] = $credits; $this->globals['wgExtensionCredits'][$credits['type']][] = $credits; + + return $name; } /**