public function __invoke(Request $req, Response $res) { $school = $req->getAttribute('school'); if ($req->isPost()) { $this->appFormInputFilter->setData(array_merge($req->getParams(), ['school_id' => $school->id, 'submitted_by' => $this->authService->getIdentity()->mail])); $isValid = $this->appFormInputFilter->isValid(); if ($isValid) { $data = $this->appFormInputFilter->getValues(); $appForm = $this->appFormService->submit($data); $_SESSION['applicationForm']['appForm'] = $appForm; $res = $res->withRedirect($this->successUrl); return $res; } $this->view['form'] = ['is_valid' => $isValid, 'values' => $this->appFormInputFilter->getValues(), 'raw_values' => $this->appFormInputFilter->getRawValues(), 'messages' => $this->appFormInputFilter->getMessages()]; } $loadForm = (bool) $req->getParam('load', false); $this->view['choose'] = !$loadForm && !$req->isPost(); if (!$req->isPost() && $loadForm) { if (null !== ($appForm = $this->appFormService->findSchoolApplicationForm($school->id))) { $this->view['form'] = ['values' => $appForm]; } } $labs = $this->labService->getLabsBySchoolId($school->id); $res = $this->view->render($res, 'application_form/form.twig', ['lab_choices' => array_map(function ($lab) { return ['value' => $lab['id'], 'label' => $lab['name']]; }, $labs), 'type_choices' => array_map(function ($category) { return ['value' => $category['id'], 'label' => $category['name']]; }, $this->assetsService->getAllItemCategories())]); return $res; }
/** * Validates the attributes according to the configuration and throws an exception in case of invalid input. * * @param array $attributes * @throws Exception\InvalidInputException */ public function filterValues(array $attributes) { $this->inputFilter->setData($attributes); if (!$this->inputFilter->isValid()) { throw new Exception\InvalidInputException($this->inputFilter->getMessages()); } return $this->inputFilter->getValues(); }
/** * @param array $data * @return bool */ public function isValid(array $data) { $this->inputFilter->setData($data); if (!$this->inputFilter->isValid()) { $this->setErrors($this->inputFilter->getMessages()); return false; } return true; }
/** * @param BookEntity $bookEntity * @param InputFilterInterface $filter * * @throws \LogicException * @return BookEntity */ public function update(BookEntity $bookEntity, InputFilterInterface $filter) { if (!$filter->isValid()) { throw new \LogicException('Form is not valid!'); } $data = $filter->getValues(); $bookEntity = $this->bookRepository->hydrate($bookEntity, $data); $this->bookRepository->save($bookEntity); return $bookEntity; }
/** * {@inheritdoc} */ public function isValid($values, $context = null) { if (!is_array($values)) { $this->error(static::ERROR_NOT_ARRAY); return false; } $this->inputFilter->setData($values); if (!$this->inputFilter->isValid()) { $i = 0; foreach ($this->inputFilter->getMessages() as $field => $errors) { foreach ($errors as $key => $string) { $this->messages[$i][$field][$key] = $string; $i++; } } return false; } return true; }
public function login(InputFilterInterface $filter) { if (!$filter->isValid()) { throw new \LogicException('Form is not valid'); } $this->authAdapter->setIdentity($filter->getValue('login')); $this->authAdapter->setCredential($filter->getValue('password')); $result = $this->authenticationService->authenticate($this->authAdapter); return $result->isValid(); }
/** * Initialize instance * * @param InputFilterInterface $inputFilter * @param string $variables * @param string $options */ public function __construct(InputFilterInterface $inputFilter, $variables = null, $options = null) { parent::__construct($variables, $options); $this->setVariable('isValid', $inputFilter->isValid()); $messages = $inputFilter->getMessages(); $inputs = array(); foreach ($inputFilter->getValues() as $name => $value) { $inputs[$name] = array('value' => $value, 'messages' => array_key_exists($name, $messages) ? $messages[$name] : array()); } $this->setVariable('inputs', $inputs); }
/** * @return $this * @throws \LogicException * @throws \InvalidArgumentException */ protected function extractUserMailFromFormular() { if (!isset($this->filter)) { throw new \InvalidArgumentException('No Form set'); } if (!$this->filter->isValid()) { throw new \LogicException('Form is not valid'); } $registerFilter = $this->filter->get('register'); $this->setName($registerFilter->getValue('name')); $this->setEmail($registerFilter->getValue('email')); return $this; }
/** * Execute the request * * @param MvcEvent $e * @return ListViewModelInterface */ public function onDispatch(MvcEvent $e) { if ($this->inputFilter) { $this->inputFilter->setData($this->query); if ($this->inputFilter->isValid()) { $validData = $this->inputFilter->getValues(); $criteria = $this->repository->createCriteria($validData); $collection = $this->repository->findMany($criteria); $this->viewModel->setCollection($collection); $this->viewModel->setInputData($validData); } else { $this->viewModel->setErrors($this->inputFilter->getMessages()); $this->viewModel->setInputData($this->query); } } else { $criteria = $this->repository->createCriteria($this->query); $collection = $this->repository->findMany($criteria); $this->viewModel->setCollection($collection); $this->viewModel->setInputData($this->query); } $e->setResult($this->viewModel); return $this->viewModel; }
/** * validateUser * * @param User $requestUser requestUser * @param InputFilterInterface $inputFilter inputFilter * * @return Result */ public function validateUser(User $requestUser, InputFilterInterface $inputFilter) { $validUser = new User(); $validUser->populate($requestUser); $inputFilter->setData($validUser); if ($inputFilter->isValid()) { $validUser->populate($inputFilter->getValues()); return new Result($validUser); } else { $result = new Result($validUser, Result::CODE_FAIL, 'User input not valid'); foreach ($inputFilter->getInvalidInput() as $error) { $msg = $error->getName() . ': '; $errs = $error->getMessages(); foreach ($errs as $key => $val) { $result->setMessage($msg .= "{$val} ({$key})"); } } return $result; } }
/** * Validate a PATCH request * * @param InputFilterInterface $inputFilter * @param array|object $data * @param bool $isCollection * @return bool|ApiProblemResponse */ protected function validatePatch(InputFilterInterface $inputFilter, $data, $isCollection) { if ($isCollection) { $validationGroup = $data; foreach ($validationGroup as &$subData) { $subData = array_keys($subData); } } else { $validationGroup = array_keys($data); } try { $inputFilter->setValidationGroup($validationGroup); return $inputFilter->isValid(); } catch (InputFilterInvalidArgumentException $ex) { $pattern = '/expects a list of valid input names; "(?P<field>[^"]+)" was not found/'; $matched = preg_match($pattern, $ex->getMessage(), $matches); if (! $matched) { return new ApiProblemResponse( new ApiProblem(400, $ex) ); } return new ApiProblemResponse( new ApiProblem(400, 'Unrecognized field "' . $matches['field'] . '"') ); } }
/** * @todo remove unused $mailer parameter an fix tests * * @param InputFilterInterface $filter * @param Plugin\Mailer $mailer * @param Url $url * @throws \LogicException * @throws UserDoesNotHaveAnEmailException * @throws UserNotFoundException */ public function proceed(InputFilterInterface $filter, Plugin\Mailer $mailer, Url $url) { if (!$filter->isValid()) { throw new \LogicException('Form is not valid'); } $identity = $filter->getValue('identity'); $suffix = $this->loginFilter->filter(); if (!($user = $this->userRepository->findByLoginOrEmail($identity, $suffix))) { throw new UserNotFoundException('User is not found'); } if (!($email = $user->getInfo()->getEmail())) { throw new UserDoesNotHaveAnEmailException('User does not have an email'); } $tokenHash = $this->tokenGenerator->generate($user); $resetLink = $url->fromRoute('lang/goto-reset-password', array('token' => $tokenHash, 'userId' => $user->getId()), array('force_canonical' => true)); $e = new AuthEvent(); $e->setResetLink($resetLink); $e->setUser($user); $this->eventManager->trigger(AuthEvent::EVENT_AUTH_NEWPASSWORD, $e); }
/** * @return bool */ public function isValid() { return $this->inputFilter->isValid(); }
public function __invoke(Request $req, Response $res) { $school = $req->getAttribute('school'); if ($req->isPost()) { $reqParams = $req->getParams(); array_splice($reqParams['items'], 0, 0); $this->appFormInputFilter->setData(array_merge($reqParams, ['school_id' => $school->id, 'submitted_by' => $this->authService->getIdentity()->mail])); $isValid = $this->appFormInputFilter->isValid(); if ($isValid) { $data = $this->appFormInputFilter->getValues(); $appForm = $this->appFormService->submit($data); $_SESSION['applicationForm']['appForm'] = $appForm; $res = $res->withRedirect($this->successUrl); return $res; } $this->view['form'] = ['is_valid' => $isValid, 'values' => $this->appFormInputFilter->getValues(), 'raw_values' => $this->appFormInputFilter->getRawValues(), 'messages' => $this->appFormInputFilter->getMessages()]; } $loadForm = (bool) $req->getParam('load', false); $this->view['choose'] = !$loadForm && !$req->isPost(); if (!$req->isPost() && $loadForm) { // take care of new options in applications and migrate existing ones if (null !== ($appForm = $this->appFormService->findSchoolApplicationForm($school->id))) { /** * Do mapping of old items to new only if items do exist (old form) * and the map is available at the app settings. * TODO: Only one version migrations are supported. If the old items are * two or more versions older, they will not be handled. */ // get the existing (db) application form version $items_version = $this->version; if (isset($appForm['items']) && \count($appForm['items']) > 0) { $items_version = array_values($appForm['items'])[0]['version']; } if ($this->version != $items_version && isset($appForm['items']) && isset($this->container['settings']['application_form']['itemcategory']['map']) && $this->container['settings']['application_form']['itemcategory']['map']['fromversion'] == $items_version && $this->container['settings']['application_form']['itemcategory']['map']['toversion'] == $this->version && isset($this->container['settings']['application_form']['itemcategory']['map']['items'])) { // if map exists for this version, use it $items_map = $this->container['settings']['application_form']['itemcategory']['map']['items']; $appForm['items'] = array_map(function ($item) use($items_map) { $migrate_values = []; if (isset($items_map[$item['itemcategory_id']]) && intval($items_map[$item['itemcategory_id']]) > 0) { $migrate_values = ['itemcategory_prev' => $item['itemcategory_id'], 'itemcategory_id_prev' => $item['itemcategory_id'], 'itemcategory_id' => intval($items_map[$item['itemcategory_id']])]; } else { $migrate_values = ['itemcategory_prev' => '', 'itemcategory_id_prev' => -1]; } $migrate_values['prev_form_load'] = true; return array_merge($item, $migrate_values); }, $appForm['items']); } elseif ($this->version != $items_version && isset($appForm['items']) && isset($this->container['settings']['application_form']['itemcategory']['map']) && ($this->container['settings']['application_form']['itemcategory']['map']['fromversion'] != $items_version || $this->container['settings']['application_form']['itemcategory']['map']['toversion'] != $this->version)) { // if map does not exist for this version, notify user $items_map = $this->container['settings']['application_form']['itemcategory']['map']['items']; $appForm['items'] = array_map(function ($item) use($items_map) { $migrate_values = ['itemcategory_prev' => '', 'itemcategory_id_prev' => -2, 'prev_form_load' => true]; return array_merge($item, $migrate_values); }, $appForm['items']); } $this->view['form'] = ['values' => $appForm]; } } $labs = $this->labService->getLabsBySchoolId($school->id); $res = $this->view->render($res, 'application_form/form.twig', ['lab_choices' => array_map(function ($lab) { return ['value' => $lab['id'], 'label' => $lab['name']]; }, $labs), 'type_choices' => array_map(function ($category) { return ['value' => $category['id'], 'label' => $category['name']]; }, $this->assetsService->getAllItemCategories($this->version))]); return $res; }