示例#1
0
 function __construct($id, $groupId)
 {
     parent::__construct($id, $groupId);
     $this->roles = array();
     $this->aclMatrix = array();
     if ($id) {
         // TODO ora la matrice è memorizzata nella sessione
         // e non può essere invalidata dal gestore dei ruoli per tutti gli utenti
         $roles = org_glizy_Session::exists('glizy.roles');
         if (!empty($roles)) {
             $this->roles = org_glizy_Session::get('glizy.roles');
             $this->aclMatrix = org_glizy_Session::get('glizy.aclMatrix');
         } else {
             $it = org_glizy_ObjectFactory::createModelIterator('org.glizy.models.Role', 'getPermissions', array('params' => array('id' => $id, 'groupId' => $groupId)));
             foreach ($it as $ar) {
                 // se il ruolo non è attivo passa al prossimo
                 if (!$ar->role_active) {
                     continue;
                 }
                 // se il ruolo non è stato ancora processato
                 if (!$this->roles[$ar->role_id]) {
                     $this->roles[$ar->role_id] = true;
                     $permissions = unserialize($ar->role_permissions);
                     // unione delle matrici dei permessi
                     foreach ($permissions as $name => $actions) {
                         foreach ((array) $actions as $action => $value) {
                             $this->aclMatrix[strtolower($name)][$action] |= $value;
                         }
                     }
                 }
             }
             org_glizy_Session::set('glizy.roles', $this->roles);
             org_glizy_Session::set('glizy.aclMatrix', $this->aclMatrix);
         }
     }
 }