public function mailingStepSubmit()
 {
     $postSettings = $this->request->request->all();
     $mailingSettings = $this->parameters->getMailingSettings();
     $transportId = $this->getTransportId($postSettings['transport']);
     if ($transportId !== $mailingSettings->getTransport()) {
         $mailingSettings->setTransport($transportId);
         $mailingSettings->setTransportOptions(array());
         $this->parameters->setMailingGlobalError(null);
         $this->parameters->setMailingValidationErrors(array());
         return $this->redirect('/mailing');
     }
     $mailingSettings->setTransportOptions($postSettings);
     $errors = $mailingSettings->validate();
     $this->parameters->setMailingValidationErrors($errors);
     if (count($errors) > 0) {
         return $this->redirect('/mailing');
     }
     $checker = new MailingChecker($mailingSettings);
     if (true !== ($status = $checker->testTransport())) {
         $this->parameters->setMailingGlobalError($status);
         return $this->redirect('/mailing');
     }
     $this->parameters->setMailingGlobalError(null);
     return $this->redirect('/install');
 }
 /**
  * @EXT\Route("/mail/server/submit", name="claro_admin_edit_parameters_mail_server")
  * @EXT\Method("POST")
  * @EXT\Template("ClarolineCoreBundle:Administration\Parameters:mailServerForm.html.twig")
  * @SEC\PreAuthorize("canOpenAdminTool('platform_parameters')")
  *
  * Updates the platform settings and redirects to the settings form.
  *
  * @return \Symfony\Component\HttpFoundation\RedirectResponse
  */
 public function submitMailServerAction()
 {
     $platformConfig = $this->configHandler->getPlatformConfig();
     $form = $this->formFactory->create(new AdminForm\MailServerType($platformConfig->getMailerTransport(), $this->configHandler->getLockedParamaters()), $platformConfig);
     $form->handleRequest($this->request);
     $data = array('transport' => $form['mailer_transport']->getData(), 'host' => $form['mailer_host']->getData(), 'username' => $form['mailer_username']->getData(), 'password' => $form['mailer_password']->getData(), 'auth_mode' => $form['mailer_auth_mode']->getData(), 'encryption' => $form['mailer_encryption']->getData(), 'port' => $form['mailer_port']->getData());
     $settings = new MailingSettings();
     $settings->setTransport($data['transport']);
     $settings->setTransportOptions($data);
     $errors = $settings->validate();
     if (count($errors) > 0) {
         foreach ($errors as $field => $error) {
             $trans = $this->translator->trans($error, array(), 'platform');
             $form->get('mailer_' . $field)->addError(new FormError($trans));
         }
         return array('form_mail' => $form->createView());
     }
     $checker = new MailingChecker($settings);
     $error = $checker->testTransport();
     if ($error != 1) {
         $session = $this->request->getSession();
         $session->getFlashBag()->add('error', $this->translator->trans($error, array(), 'platform'));
         return array('form_mail' => $form->createView());
     }
     $this->configHandler->setParameters(array('mailer_transport' => $data['transport'], 'mailer_host' => $data['host'], 'mailer_username' => $data['username'], 'mailer_password' => $data['password'], 'mailer_auth_mode' => $data['auth_mode'], 'mailer_encryption' => $data['encryption'], 'mailer_port' => $data['port']));
     $this->cacheManager->setParameter('is_mailer_available', true);
     return $this->redirect($this->generateUrl('claro_admin_index'));
 }