GcConfig\Form\Role::initPermissions PHP Method

initPermissions() public method

Initialize permissions
public initPermissions ( array $userPermissions = [] ) : Config\Form\Role
$userPermissions array 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);
    }

Usage Example

Beispiel #1
0
 /**
  * Edit role
  *
  * @return \Zend\View\Model\ViewModel|array
  */
 public function editAction()
 {
     $roleId = $this->getRouteMatch()->getParam('id');
     $roleModel = Role\Model::fromId($roleId);
     if (empty($roleModel) or $roleModel->getName() === Role\Model::PROTECTED_NAME) {
         $this->flashMessenger()->addErrorMessage("Can't edit this role");
         return $this->redirect()->toRoute('config/user/role');
     }
     $form = new RoleForm();
     $form->initPermissions($roleModel->getUserPermissions());
     $form->setAttribute('action', $this->url()->fromRoute('config/user/role/edit', array('id' => $roleId)));
     $form->loadValues($roleModel);
     if ($this->getRequest()->isPost()) {
         $post = $this->getRequest()->getPost()->toArray();
         $form->setData($post);
         if ($form->isValid()) {
             $roleModel->addData($form->getInputFilter()->getValues());
             $roleModel->save();
             $this->flashMessenger()->addSuccessMessage('Role saved!');
             return $this->redirect()->toRoute('config/user/role/edit', array('id' => $roleId));
         }
         $this->flashMessenger()->addErrorMessage('Role can not saved!');
         $this->useFlashMessenger();
     }
     return array('form' => $form);
 }