Ejemplo n.º 1
0
 public function testRolesCache()
 {
     $includedRole = $this->service->addRole('INCLUDED ROLE');
     $role = $this->service->addRole('CACHE ROLE', $includedRole);
     // Nothing is in the cache, we should get an exception.
     try {
         core_kernel_users_Cache::retrieveIncludedRoles($role);
         $this->assertTrue(false, 'An exception should be raised when trying to retrieve included roles that are not yet in the cache memory.');
     } catch (core_kernel_users_CacheException $e) {
         $this->assertTrue(true);
     }
     $includedRoles = $this->service->getIncludedRoles($role);
     $this->assertEquals(count($includedRoles), 1);
     $this->assertTrue(array_key_exists($includedRole->getUri(), $includedRoles));
     // try to put included roles in the cache.
     try {
         core_kernel_users_Cache::cacheIncludedRoles($role, $includedRoles);
         // now try to retrieve it.
         $includedRolesFromCache = core_kernel_users_Cache::retrieveIncludedRoles($role);
         $this->assertTrue(is_array($includedRolesFromCache));
         $this->assertEquals(count($includedRolesFromCache), 1);
         $this->assertTrue(array_key_exists($includedRole->getUri(), $includedRolesFromCache));
         // and remove it !
         $this->assertTrue(core_kernel_users_Cache::removeIncludedRoles($role));
         $this->assertFalse(core_kernel_users_Cache::areIncludedRolesInCache($role));
     } catch (core_kernel_users_CacheException $e) {
         $this->assertTrue(false, 'An exception occured while writing included roles in the cache memory.');
     }
     // try to flush users cache.
     try {
         core_kernel_users_Cache::flush();
     } catch (core_kernel_users_CacheException $e) {
         $this->assertTrue(false, 'An error occured while flushing the users cache.');
     }
     $includedRole->delete();
     $role->delete();
 }
Ejemplo n.º 2
0
 /**
  * Edit a group instance
  * @return void
  */
 public function editRole()
 {
     $clazz = $this->getCurrentClass();
     $role = $this->getCurrentInstance();
     $formContainer = new tao_actions_form_Role($clazz, $role);
     $myForm = $formContainer->getForm();
     if ($myForm->isSubmited()) {
         if ($myForm->isValid()) {
             $formValues = $myForm->getValues();
             $roleService = tao_models_classes_RoleService::singleton();
             $includedRolesProperty = new core_kernel_classes_Property(PROPERTY_ROLE_INCLUDESROLE);
             // We have to make the difference between the old list
             // of included roles and the new ones.
             $oldIncludedRolesUris = $role->getPropertyValues($includedRolesProperty);
             $newIncludedRolesUris = $formValues[PROPERTY_ROLE_INCLUDESROLE];
             $removeIncludedRolesUris = array_diff($oldIncludedRolesUris, $newIncludedRolesUris);
             $addIncludedRolesUris = array_diff($newIncludedRolesUris, $oldIncludedRolesUris);
             // Make the changes according to the detected differences.
             foreach ($removeIncludedRolesUris as $rU) {
                 $r = new core_kernel_classes_Resource($rU);
                 $roleService->unincludeRole($role, $r);
             }
             foreach ($addIncludedRolesUris as $aU) {
                 $r = new core_kernel_classes_Resource($aU);
                 $roleService->includeRole($role, $r);
             }
             // Let's deal with other properties the usual way.
             unset($formValues[$includedRolesProperty->getUri()]);
             $binder = new tao_models_classes_dataBinding_GenerisFormDataBinder($role);
             $role = $binder->bind($myForm->getValues());
             core_kernel_users_Cache::removeIncludedRoles($role);
             // flush cache for this role.
             $this->setData('selectNode', tao_helpers_Uri::encode($role->getUri()));
             $this->setData('message', __('Role saved'));
             $this->setData('reload', true);
         }
     }
     $this->setData('uri', tao_helpers_Uri::encode($role->getUri()));
     $this->setData('classUri', tao_helpers_Uri::encode($clazz->getUri()));
     $this->setData('formTitle', 'Edit Role');
     $this->setData('myForm', $myForm->render());
     $this->setView('roles/form.tpl');
 }
Ejemplo n.º 3
0
 /**
  * Uninclude a Role from antother Role.
  * 
  * @access public
  * @author Jerome Bogaerts, <*****@*****.**>
  * @param core_kernel_classes_Resource role The Role from which you want to uninclude a Role.
  * @param core_kernel_classes_Resource roleToUninclude The Role to uninclude. 
  */
 public function unincludeRole(core_kernel_classes_Resource $role, core_kernel_classes_Resource $roleToUninclude)
 {
     $includesRoleProperty = new core_kernel_classes_Property(PROPERTY_ROLE_INCLUDESROLE);
     $role->removePropertyValues($includesRoleProperty, array('like' => false, 'pattern' => $roleToUninclude->getUri()));
     // invalidate cache for the role.
     if (GENERIS_CACHE_USERS_ROLES == true) {
         core_kernel_users_Cache::removeIncludedRoles($role);
         // For each roles that have $role for included role,
         // remove the cache entry.
         foreach ($this->getAllRoles() as $r) {
             $includedRoles = $this->getIncludedRoles($r);
             if (array_key_exists($role->getUri(), $includedRoles)) {
                 core_kernel_users_Cache::removeIncludedRoles($r);
             }
         }
     }
 }