Gc\User\Permission\Collection::getPermissions PHP Method

getPermissions() public method

Get permissions
public getPermissions ( boolean $forceReload = false ) : array
$forceReload boolean Force reload
return array
    public function getPermissions($forceReload = false)
    {
        if (empty($this->permissions) or $forceReload === true) {
            $select = new Select();
            $select->from('user_acl_permission')->columns(array('id', 'permission'), true)->join('user_acl_resource', 'user_acl_resource.id = user_acl_permission.user_acl_resource_id', array('resource'));
            $rows = $this->fetchAll($select);
            $permissions = array();
            foreach ($rows as $permission) {
                if (empty($permissions[$permission['resource']])) {
                    $permissions[$permission['resource']] = array();
                }
                $permissions[$permission['resource']][$permission['id']] = $permission['permission'];
            }
            $this->permissions = $permissions;
        }
        return $this->permissions;
    }

Usage Example

Esempio n. 1
0
 /**
  * Initialize permissions
  *
  * @param array $userPermissions Optional
  *
  * @return \Config\Form\Role
  */
 public function initPermissions($userPermissions = array())
 {
     $permissionsTable = new Permission\Collection();
     $resources = $permissionsTable->getPermissions();
     $element = new Element('permissions');
     $data = array();
     foreach ($resources as $resource => $permissions) {
         if (empty($data[$resource])) {
             $data[$resource] = array();
         }
         foreach ($permissions as $permissionId => $permission) {
             $path = explode('/', $permission);
             if (count($path) > 1) {
                 $name = $path[0];
             } else {
                 $name = $permission;
             }
             $array = array('id' => $permissionId, 'name' => empty($path[1]) ? $permission : $path[1], 'value' => false);
             if (!empty($userPermissions[$resource]) and array_key_exists($permissionId, $userPermissions[$resource])) {
                 $array['value'] = true;
             }
             if (empty($data[$resource][$name])) {
                 $data[$resource][$name] = array();
             }
             $data[$resource][$name][] = $array;
         }
     }
     $element->setValue($data);
     $this->add($element);
 }