Pwirth has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/393564 )

Change subject: BSFoundation: Used extension attributes for registration and 
added support for manifest v2
......................................................................

BSFoundation: Used extension attributes for registration and added support for 
manifest v2

Change-Id: I1b5704528e964de10911bb5e1540e96ce1dd9f0e
---
M extension.json
M includes/DefaultSettings.php
M includes/ExtensionManager.class.php
M src/DynamicFileDispatcher/Factory.php
M src/EntityRegistry.php
5 files changed, 76 insertions(+), 28 deletions(-)


  git pull 
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/BlueSpiceFoundation 
refs/changes/64/393564/1

diff --git a/extension.json b/extension.json
index 7e45d74..eeaf919 100644
--- a/extension.json
+++ b/extension.json
@@ -8,6 +8,24 @@
        "url": "http://bluespice.com";,
        "descriptionmsg": "bluespicefoundation-desc",
        "type": "other",
+       "attributes": {
+               "BlueSpiceFoundation": {
+                       "bsgExtensions": {
+                               "BlueSpiceFoundation": {
+                                       "configDefinitions": {
+                                               "Logo": 
"\\BlueSpice\\ConfigDefinition\\Logo::getInstance",
+                                               "FileExtensions": 
"\\BlueSpice\\ConfigDefinition\\FileExtensions::getInstance",
+                                               "ImageExtensions": 
"\\BlueSpice\\ConfigDefinition\\ImageExtensions::getInstance",
+                                               "Favicon": 
"\\BlueSpice\\ConfigDefinition\\Favicon::getInstance"
+                                       }
+                               }
+                       },
+                       "bsgDynamicFileRegistry": {
+                               "userprofileimage": 
"\\BlueSpice\\DynamicFileDispatcher\\UserProfileImage"
+                       },
+                       "bsgEntityRegistry": {}
+               }
+       },
        "ExtensionFunctions": [
                "BsCoreHooks::setup"
        ],
@@ -458,14 +476,6 @@
                        }
                },
                "ConfigFiles": {
-                       "value": []
-               },
-               "DynamicFileRegistry": {
-                       "value": {
-                               "userprofileimage": 
"\\BlueSpice\\DynamicFileDispatcher\\UserProfileImage"
-                       }
-               },
-               "EntityRegistry": {
                        "value": []
                }
        },
diff --git a/includes/DefaultSettings.php b/includes/DefaultSettings.php
index 716ce55..59a8529 100644
--- a/includes/DefaultSettings.php
+++ b/includes/DefaultSettings.php
@@ -318,20 +318,6 @@
 ) );
 
 /**
- * BsExtensionManager extension registration
- */
-$GLOBALS['bsgExtensions'] = [
-       "BlueSpiceFoundation" => [
-               "configDefinitions" => [
-                       "Logo" => 
"\\BlueSpice\\ConfigDefinition\\Logo::getInstance",
-                       "FileExtensions" => 
"\\BlueSpice\\ConfigDefinition\\FileExtensions::getInstance",
-                       "ImageExtensions" => 
"\\BlueSpice\\ConfigDefinition\\ImageExtensions::getInstance",
-                       "Favicon" => 
"\\BlueSpice\\ConfigDefinition\\Favicon::getInstance",
-               ]
-       ]
-];
-
-/**
  * BsTemplateHelper template directory overwrite
  * $bsgTemplates = array(
  *    BSExtension.Template.Name": 
"$wgExtensionsDirectory/MyExtension/PathToTemplateDir",
diff --git a/includes/ExtensionManager.class.php 
b/includes/ExtensionManager.class.php
index 051ccc6..92b0f17 100644
--- a/includes/ExtensionManager.class.php
+++ b/includes/ExtensionManager.class.php
@@ -205,14 +205,30 @@
         */
        public static function initialiseExtensions( $oCore ) {
                wfProfileIn( 'Performance: ' . __METHOD__ );
-               $aBSExtFromJSON = 
ExtensionRegistry::getInstance()->getAttribute(
+               $extRegistry = ExtensionRegistry::getInstance();
+               $aBSExtFromJSON = $extRegistry->getAttribute(
                        'bsgExtensions'
                );
 
+               foreach( $extRegistry->getAllThings() as $sExtName => 
$aDefinition ) {
+                       //attributes in manifest version 2+
+                       $attrName = "{$sExtName}bsgExtensions";
+                       if( empty( $extRegistry->getAttribute( $attrName ) ) ) {
+                               continue;
+                       }
+
+                       $aBSExtFromJSON[$sExtName] = $extRegistry->getAttribute(
+                               $attrName
+                       );
+               }
+
+               if( empty( $GLOBALS['bsgExtensions'] ) ) {
+                       $GLOBALS['bsgExtensions'] = [];
+               }
                if( !empty( $aBSExtFromJSON ) ) {
-                       $GLOBALS['bsgExtensions'] = array_replace_recursive(
-                               $aBSExtFromJSON,
-                               $GLOBALS['bsgExtensions']
+                       $GLOBALS['bsgExtensions'] = array_merge(
+                               $GLOBALS['bsgExtensions'],
+                               $aBSExtFromJSON
                        );
                }
 
diff --git a/src/DynamicFileDispatcher/Factory.php 
b/src/DynamicFileDispatcher/Factory.php
index 34d26e2..29e61a5 100644
--- a/src/DynamicFileDispatcher/Factory.php
+++ b/src/DynamicFileDispatcher/Factory.php
@@ -73,7 +73,25 @@
                        return $this->modules;
                }
 
-               $this->modules = $this->config->get( 'DynamicFileRegistry' );
+               $extRegistry = \ExtensionRegistry::getInstance();
+               $this->modules = $extRegistry->getAttribute(
+                       'bsgDynamicFileRegistry'
+               );
+               foreach( $extRegistry->getAllThings() as $sExtName => 
$aDefinition ) {
+                       //attributes in manifest version 2+
+                       $attrName = "{$sExtName}bsgDynamicFileRegistry";
+                       if( empty( $extRegistry->getAttribute( $attrName ) ) ) {
+                               continue;
+                       }
+
+                       $this->modules = array_merge(
+                               $this->modules,
+                               $extRegistry->getAttribute(
+                                       $attrName
+                               )
+                       );
+               }
+
                return $this->modules;
        }
 }
\ No newline at end of file
diff --git a/src/EntityRegistry.php b/src/EntityRegistry.php
index 55189ca..f1f157c 100644
--- a/src/EntityRegistry.php
+++ b/src/EntityRegistry.php
@@ -53,7 +53,25 @@
                if( $this->entitydefinitions && !$bForceReload ) {
                        return true;
                }
-               $this->entitydefinitions = $this->config->get( 'EntityRegistry' 
);
+
+               $extRegistry = \ExtensionRegistry::getInstance();
+               $this->entitydefinitions = $extRegistry->getAttribute(
+                       'bsgEntityRegistry'
+               );
+               foreach( $extRegistry->getAllThings() as $sExtName => 
$aDefinition ) {
+                       //attributes in manifest version 2+
+                       $attrName = "{$sExtName}bsgEntityRegistry";
+                       if( empty( $extRegistry->getAttribute( $attrName ) ) ) {
+                               continue;
+                       }
+
+                       $this->entitydefinitions = array_merge(
+                               $this->entitydefinitions,
+                               $extRegistry->getAttribute(
+                                       $attrName
+                               )
+                       );
+               }
 
                //This hook is deprecated - Use config mechanism in 
extension.json to
                //register entities

-- 
To view, visit https://gerrit.wikimedia.org/r/393564
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I1b5704528e964de10911bb5e1540e96ce1dd9f0e
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/BlueSpiceFoundation
Gerrit-Branch: master
Gerrit-Owner: Pwirth <wi...@hallowelt.biz>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to