/** * Remove a group member */ public function removememberAction() { $this->assertPermission('config/authentication/groups/edit'); $this->assertHttpMethod('POST'); $groupName = $this->params->getRequired('group'); $backend = $this->getUserGroupBackend($this->params->getRequired('backend'), 'Icinga\\Data\\Reducible'); $form = new Form(array('onSuccess' => function ($form) use($groupName, $backend) { foreach ($form->getValue('user_name') as $userName) { try { $backend->delete('group_membership', Filter::matchAll(Filter::where('group_name', $groupName), Filter::where('user_name', $userName))); Notification::success(sprintf(t('User "%s" has been removed from group "%s"'), $userName, $groupName)); } catch (NotFoundError $e) { throw $e; } catch (Exception $e) { Notification::error($e->getMessage()); } } $redirect = $form->getValue('redirect'); if (!empty($redirect)) { $form->setRedirectUrl(htmlspecialchars_decode($redirect)); } return true; })); $form->setUidDisabled(); $form->setSubmitLabel('btn_submit'); // Required to ensure that isSubmitted() is called $form->addElement('hidden', 'user_name', array('required' => true, 'isArray' => true)); $form->addElement('hidden', 'redirect'); try { $form->handleRequest(); } catch (NotFoundError $_) { $this->httpNotFound(sprintf($this->translate('Group "%s" not found'), $groupName)); } }
public function handleRequest(Request $request = null) { parent::handleRequest(); return $this; }
/** * @depends testWhetherACsrfCounterMeasureIsNotBeingAdded * @depends testWhetherAUniqueFormIdIsNotBeingAdded * @depends testWhetherNoSubmitButtonIsAddedWithoutASubmitLabelBeingSet */ public function testWhetherAClosureCanBePassedAsOnSuccessCallback() { $request = new Request(); $form = new Form(array('onSuccess' => function ($form) { $form->getRequest()->setParam('test', 'tset'); return false; })); $form->setTokenDisabled(); $form->setUidDisabled(); $form->handleRequest($request); $this->assertEquals('tset', $request->getParam('test'), 'Form does not utilize the onSuccess callback set with form options on instantiation'); }
/** * Unshare a navigation item */ public function unshareAction() { $this->assertPermission('config/application/navigation'); $this->assertHttpMethod('POST'); // TODO: I'd like these being form fields $itemType = $this->params->getRequired('type'); $itemOwner = $this->params->getRequired('owner'); $navigationConfigForm = new NavigationConfigForm(); $navigationConfigForm->setUser($this->Auth()->getUser()); $navigationConfigForm->setShareConfig(Config::navigation($itemType)); $navigationConfigForm->setUserConfig(Config::navigation($itemType, $itemOwner)); $form = new Form(array('onSuccess' => function ($form) use($navigationConfigForm) { $itemName = $form->getValue('name'); try { $newConfig = $navigationConfigForm->unshare($itemName); if ($navigationConfigForm->save()) { if ($newConfig->getSection($itemName)->type === 'menu-item') { $form->getResponse()->setRerenderLayout(); } Notification::success(sprintf(t('Navigation item "%s" has been unshared'), $form->getValue('name'))); } else { // TODO: It failed obviously to write one of the configs, so we're leaving the user in // a inconsistent state. Luckily, it's nothing lost but possibly duplicated... Notification::error(sprintf(t('Failed to unshare navigation item "%s"'), $form->getValue('name'))); } } catch (NotFoundError $e) { throw $e; } catch (Exception $e) { Notification::error($e->getMessage()); } $redirect = $form->getValue('redirect'); if (!empty($redirect)) { $form->setRedirectUrl(htmlspecialchars_decode($redirect)); } return true; })); $form->setUidDisabled(); $form->setSubmitLabel('btn_submit'); // Required to ensure that isSubmitted() is called $form->addElement('hidden', 'name', array('required' => true)); $form->addElement('hidden', 'redirect'); try { $form->handleRequest(); } catch (NotFoundError $_) { $this->httpNotFound(sprintf($this->translate('Navigation item "%s" not found'), $form->getValue('name'))); } }