private function writeMainParameters(DatabaseSettings $dbSettings, PlatformSettings $platformSettings, MailingSettings $mailSettings) { $defaultTemplateContent = file_get_contents($this->templateFile); $defaultParameters = Yaml::parse($defaultTemplateContent); $parameters = array('database_driver' => $dbSettings->getDriver(), 'database_host' => $dbSettings->getHost(), 'database_name' => $dbSettings->getName(), 'database_user' => $dbSettings->getUser(), 'database_password' => $dbSettings->getPassword(), 'database_port' => $dbSettings->getPort(), 'mailer_transport' => $mailSettings->getTransport(), 'mailer_encryption' => $mailSettings->getTransportOption('encryption'), 'mailer_auth_mode' => $mailSettings->getTransportOption('auth_mode'), 'mailer_host' => $mailSettings->getTransportOption('host'), 'mailer_port' => $mailSettings->getTransportOption('port'), 'mailer_user' => $mailSettings->getTransportOption('username'), 'mailer_password' => $mailSettings->getTransportOption('password'), 'locale' => $platformSettings->getLanguage(), 'secret' => md5(rand(0, 10000000))); $parameters = array_merge($defaultParameters['parameters'], $parameters); $this->doWrite(array('parameters' => $parameters), $this->mainFile); }
/** * @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')); }