/** Update * @param array $values * @return bool|string */ public function update($values) { try { $this->database->beginTransaction(); $roleEntity = $this->roleRepository->get($values['aclRoleID']); if ($roleEntity) { $roleEntity->setName($values['name']); $this->roleRepository->push($roleEntity)->save(); $resources = $this->resourceRepository->read(); $this->permissionRepository->read()->where("aclRoleID", $values['aclRoleID'])->getSelection()->delete(); foreach ($resources as $resource) { foreach ($values[$resource->aclResourceID] as $key => $action) { $permissionEntity = new PermissionEntity(); $permissionEntity->setAclRoleID($values['aclRoleID']); $permissionEntity->setAclModelID($key); $permissionEntity->setAllowed($action); $this->permissionRepository->push($permissionEntity); } } $this->permissionRepository->save(); } else { throw new \PDOException("Nepovedlo se načíst roli z databáze."); } $this->database->commit(); return TRUE; } catch (\PDOException $e) { $this->database->rollBack(); return $e->getMessage(); } }