/** * 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); }