/** * Test add a default relation */ public function testAddModuleToAdminRole() { $roleModel = new Phprojekt_Role_RoleModulePermissions(); $roleModel->addModuleToAdminRole(1); $return = $roleModel->getRoleModulePermissionsById(1); $this->assertEquals(ksort($this->_expected), ksort($return)); }
/** * Returns all the modules and the access for one roleId. * * Returns a list of all the modules with: * <pre> * - id => id of the module. * - name => Name of the module. * - label => Display for the module. * - none => True or false for none access. * - read => True or false for read access. * - write => True or false for write access. * - access => True or false for access access. * - create => True or false for create access. * - copy => True or false for copy access. * - delete => True or false for delete access. * - download => True or false for download access. * - admin => True or false for admin access. * </pre> * * OPTIONAL request parameters: * <pre> * - integer <b>id</b> The role id for consult. * </pre> * * The return is in JSON format. * * @return void */ public function jsonGetModulesAccessAction() { $role = new Phprojekt_Role_RoleModulePermissions(); $roleId = (int) $this->getRequest()->getParam('id', null); $modules = $role->getRoleModulePermissionsById($roleId); Phprojekt_Converter_Json::echoConvert($modules); }
/** * Assign all rights to Zend_Acls. * * @return void */ private function _registerRights() { $role = new Phprojekt_Role_RoleModulePermissions(); $rights = array(); foreach ($role->fetchAll(null, 'role_id ASC') as $right) { $access = Phprojekt_Acl::convertBitmaskToArray($right->access); foreach ($access as $name => $value) { if ($value) { $rights[$right->roleId][$name][] = $right->moduleId; } } } foreach ($rights as $roleId => $accessData) { foreach ($accessData as $access => $modules) { foreach ($modules as $moduleId) { $resources = array(); if (!$this->has($moduleId)) { $this->add(new Zend_Acl_Resource($moduleId)); } $resources[] = $moduleId; } $this->allow($roleId, $modules, $access); } } }
/** * Prevent delete modules from the Frontend. * For delete modules use safeDelete. * * @return void */ public function delete() { // Delete all the project-module relations $project = new Project_Models_ProjectModulePermissions(); $project->deleteModuleRelation($this->id); // Delete all the role-module relations $role = new Phprojekt_Role_RoleModulePermissions(); $role->deleteModuleRelation($this->id); // Delete the items and tags $tag = new Phprojekt_Tags(); $model = Phprojekt_Loader::getModel($this->name, $this->name); if ($model instanceof Phprojekt_ActiveRecord_Abstract) { $results = $model->fetchAll(); if (is_array($results)) { foreach ($results as $record) { $tag->deleteTagsForModuleItem($this->id, $record->id); // @todo: Improve the delete routine for modules with a lot of entries. $record->delete(); } } } // Delete Files $this->_deleteFolder(PHPR_USER_CORE_PATH . $this->name); // Delete module entry parent::delete(); }