/** * * @param $extensionName * @param $moduleFilename * @param $modulePath * @param null $config */ protected function _addModule($extensionName, $moduleFilename, $modulePath, $config = null) { //one extension can contain many modules - so they share a config file //but each module needs different settings //so we got this trickery to enables per-module-config //everything within the config key "config->module->$modulename" will be made toplevel config if (isset($config->modules)) { $moduleName = strtolower(substr($moduleFilename, 0, strlen($moduleFilename) - strlen(OntoWiki_Module_Registry::MODULE_FILE_POSTFIX))); if (isset($config->modules->{$moduleName})) { //dont touch the original config (seen also by components etc) $config = unserialize(serialize($config)); $config->merge($config->modules->{$moduleName}); //pull this config up! } } //read context(s) if (isset($config->context) && is_string($config->context)) { $contexts = array($config->context); } else { if (isset($config->context) && is_object($config->context)) { $contexts = $config->context->toArray(); } else { if (isset($config->contexts) && is_object($config->contexts)) { $contexts = $config->contexts->toArray(); } else { $contexts = array(OntoWiki_Module_Registry::DEFAULT_CONTEXT); } } } // register for context(s) foreach ($contexts as $context) { $this->_moduleRegistry->register($extensionName, $moduleFilename, $context, $config); } }