コード例 #1
0
ファイル: Group.php プロジェクト: skullab/thunderhawk
 public function merge(Group $group)
 {
     $this->group = array_merge($this->group, $group->toArray());
     return $this;
 }
コード例 #2
0
ファイル: Engine.php プロジェクト: skullab/thunderhawk
 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;
 }