示例#1
0
 /**
  *
  * @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);
     }
 }