Exemplo n.º 1
0
 protected function addAclRole($rola, $prefix = null)
 {
     //        debug($prefix);
     if (count($rola['parents']) && (isset($rola['parents']['role']) && count($rola['parents']['role']) || isset($rola['parents']['group']) && count($rola['parents']['group']))) {
         $parentsArray = array();
         foreach ($rola['parents'] as $parent_prefix => $prefixes) {
             if (count($prefixes)) {
                 foreach ($prefixes as $parent) {
                     $parentsArray[] = ($parent_prefix ? $parent_prefix . '_' : '') . (int) $parent['priority'] . "_" . $parent['id'];
                     if (!$this->acl->hasRole(($parent_prefix ? $parent_prefix . '_' : '') . ($parent_prefix != 'profile' ? (int) $parent['priority'] . "_" : '') . (string) $parent['id'])) {
                         $source = '_' . $parent_prefix . 's';
                         $source = $this->{$source};
                         if (isset($source[$parent['id']])) {
                             $this->addAclRole($source[$parent['id']], $parent_prefix);
                         }
                     }
                 }
             }
         }
         if (!$this->acl->hasRole(($prefix ? $prefix . '_' : '') . ($prefix != 'profile' ? (int) $rola['priority'] . "_" : '') . (string) $rola['id'])) {
             $this->acl->addRole(($prefix ? $prefix . '_' : '') . ($prefix != 'profile' ? (int) $rola['priority'] . "_" : '') . $rola['id'], $parentsArray);
         }
     } else {
         if (!$this->acl->hasRole(($prefix ? $prefix . '_' : '') . ($prefix != 'profile' ? (int) $rola['priority'] . "_" : '') . (string) $rola['id'])) {
             $this->acl->addRole(($prefix ? $prefix . '_' : '') . ($prefix != 'profile' ? (int) $rola['priority'] . "_" : '') . $rola['id']);
         }
     }
 }