public getPermissions ( boolean $forceReload = false ) : array | ||
$forceReload | boolean | Force reload |
Результат | 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;
}
/** * 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); }