protected function _registerModuleFromManifest($dir) { $router = $this->di->get(Service::ROUTER); $dirs = $this->loader->getConfigDirs('../'); $manifest = Reader::load($dirs->core->modules . $dir . '/Manifest.xml'); $routes = $manifest->getRoutes(); $moduleName = $manifest->getModuleName(); foreach ($routes as $route) { if (!$router->routeExist($route)) { $router->add($route); } else { dump($moduleName . ' : The route ' . $route->getPattern() . ' already exists'); } } if ($this->isRegisteredModule($moduleName)) { self::throwException($moduleName, 500); } $permissions = $manifest->getPermissions(); $permissionGroup = new Permission\Group(); if ($permissions != null) { foreach ($permissions['groups'] as $groupName) { $service = 'Thunderhawk\\API\\' . $groupName; $serviceGroup = defined($service) ? constant($service) : null; $group = Permission\Manager::getGroup($serviceGroup); if ($group != null) { $permissionGroup->merge($group); } } foreach ($permissions['permissions'] as $permission) { $service = 'Thunderhawk\\API\\' . $permission; $serviceValue = defined($service) ? constant($service) : null; $permissionGroup->inflate(new Permission($serviceValue)); } } foreach ($permissionGroup as $modulePermission) { Permission\Manager::addPermission($moduleName, $modulePermission); } /*dump('template engines for '.$moduleName); dump($manifest->getTemplateEngines()); dump('----------------------------------');*/ $this->registerModules(array($moduleName => array('className' => (string) $manifest->getModuleNamespace() . '\\Module', 'path' => $dirs->core->modules . $dir . '/Module.php', 'version' => array('full' => $manifest->getVersion(), 'release' => $manifest->getVersionInt('release'), 'major' => $manifest->getVersionInt('major'), 'minor' => $manifest->getVersionInt('minor')), 'permissions' => $permissionGroup)), true); return $moduleName; }