/** * Prepare and handle a CustomForm Form then send a confirm email. * * * This method will return an assignation **array** if form is not validated. * * customForm * * fields * * form * * If form is validated, **RedirectResponse** will be returned. * * @param Symfony\Component\HttpFoundation\Request $request * @param RZ\Roadiz\Core\Entities\CustomForm $customFormsEntity * @param Symfony\Component\Form\FormFactoryInterface $formFactory * @param Doctrine\ORM\EntityManager $em * @param \Twig_Environment $twigEnv * @param \Swift_Mailer $mailer * @param Symfony\Component\Translation\Translator $translator * @param Symfony\Component\HttpFoundation\RedirectResponse $redirection * @param Psr\Log\LoggerInterface|null $logger * @param boolean $forceExpanded * @param string|null $emailSender * * @return array|Symfony\Component\HttpFoundation\RedirectResponse */ public static function prepareAndHandleCustomFormAssignation(Request $request, CustomForm $customFormsEntity, FormFactoryInterface $formFactory, EntityManager $em, \Twig_Environment $twigEnv, \Swift_Mailer $mailer, Translator $translator, RedirectResponse $redirection, LoggerInterface $logger = null, $forceExpanded = false, $emailSender = null) { $assignation = []; $assignation['customForm'] = $customFormsEntity; $assignation['fields'] = $customFormsEntity->getFields(); $form = static::buildForm($request, $customFormsEntity, $formFactory, $forceExpanded); $form->handleRequest($request); if ($form->isValid()) { try { $data = $form->getData(); $data["ip"] = $request->getClientIp(); /* * add custom form answer */ $assignation["emailFields"] = static::addCustomFormAnswer($data, $customFormsEntity, $em); $msg = $translator->trans('customForm.%name%.send', ['%name%' => $customFormsEntity->getDisplayName()]); $request->getSession()->getFlashBag()->add('confirm', $msg); if (null !== $logger) { $logger->info($msg); } $assignation['title'] = $translator->trans('new.answer.form.%site%', ['%site%' => $customFormsEntity->getDisplayName()]); if (null !== $emailSender && false !== filter_var($emailSender, FILTER_VALIDATE_EMAIL)) { $assignation['mailContact'] = $emailSender; } else { $assignation['mailContact'] = SettingsBag::get('email_sender'); } /* * Send answer notification */ static::sendAnswer(['mailContact' => $assignation['mailContact'], 'fields' => $assignation["emailFields"], 'customForm' => $customFormsEntity, 'title' => $translator->trans('new.answer.form.%site%', ['%site%' => $customFormsEntity->getDisplayName()])], $customFormsEntity->getEmail(), $twigEnv, $mailer); return $redirection; } catch (EntityAlreadyExistsException $e) { $request->getSession()->getFlashBag()->add('error', $e->getMessage()); if (null !== $logger) { $logger->warning($e->getMessage()); } return $redirection; } } $assignation['form'] = $form->createView(); return $assignation; }
/** * @param RZ\Roadiz\Core\Entities\CustomForm $customForm * * @return \Symfony\Component\Form\Form */ private function buildDeleteForm(CustomForm $customForm) { $builder = $this->createFormBuilder()->add('customFormId', 'hidden', ['data' => $customForm->getId(), 'constraints' => [new NotBlank()]]); return $builder->getForm(); }