public function onConfigBeforeSave(ConfigEvent $event) { $event->unsetIfEmpty(array('mailer_password')); $data = $event->getConfig('emailconfig'); // Get the original data so that passwords aren't lost $monitoredEmail = $this->factory->getParameter('monitored_email'); if (isset($data['monitored_email'])) { foreach ($data['monitored_email'] as $key => $monitor) { if (empty($monitor['password']) && !empty($monitoredEmail[$key]['password'])) { $data['monitored_email'][$key]['password'] = $monitoredEmail[$key]['password']; } if ($key != 'general') { if (empty($monitor['host']) || empty($monitor['address']) || empty($monitor['folder'])) { $data['monitored_email'][$key]['override_settings'] = ''; $data['monitored_email'][$key]['address'] = ''; $data['monitored_email'][$key]['host'] = ''; $data['monitored_email'][$key]['user'] = ''; $data['monitored_email'][$key]['password'] = ''; $data['monitored_email'][$key]['ssl'] = '1'; $data['monitored_email'][$key]['port'] = '993'; } } } $event->setConfig($data, 'emailconfig'); } }
public function onConfigBeforeSave(ConfigEvent $event) { $values = $event->getConfig(); // Preserve existing value $event->unsetIfEmpty('transifex_password'); // Check if the selected locale has been downloaded already, fetch it if not $installedLanguages = $this->coreParametersHelper->getParameter('supported_languages'); if (!array_key_exists($values['coreconfig']['locale'], $installedLanguages)) { $fetchLanguage = $this->languageHelper->extractLanguagePackage($values['coreconfig']['locale']); // If there is an error, fall back to 'en_US' as it is our system default if ($fetchLanguage['error']) { $values['coreconfig']['locale'] = 'en_US'; $message = 'mautic.core.could.not.set.language'; $messageVars = []; if (isset($fetchLanguage['message'])) { $message = $fetchLanguage['message']; } if (isset($fetchLanguage['vars'])) { $messageVars = $fetchLanguage['vars']; } $event->setError($message, $messageVars); } } $event->setConfig($values); }
public function onConfigBeforeSave(ConfigEvent $event) { $values = $event->getConfig(); // Preserve existing value $event->unsetIfEmpty('transifex_password'); // Check if the selected locale has been downloaded already, fetch it if not $installedLanguages = $this->factory->getParameter('supported_languages'); if (!array_key_exists($values['coreconfig']['locale'], $installedLanguages)) { /** @var \Mautic\CoreBundle\Helper\LanguageHelper $languageHelper */ $languageHelper = $this->factory->getHelper('language'); $fetchLanguage = $languageHelper->extractLanguagePackage($values['coreconfig']['locale']); // If there is an error, fall back to 'en_US' as it is our system default if ($fetchLanguage['error']) { $values['coreconfig']['locale'] = 'en_US'; // TODO - Raise a flash message $this->factory->getSession()->getFlashBag()->add('notice', 'mautic.core.could.not.set.language'); } } $event->setConfig($values); }
public function onConfigBeforeSave(ConfigEvent $event) { $event->unsetIfEmpty(array('mailer_password', 'mailer_api_key')); $data = $event->getConfig('emailconfig'); // Get the original data so that passwords aren't lost $monitoredEmail = $this->factory->getParameter('monitored_email'); if (isset($data['monitored_email'])) { foreach ($data['monitored_email'] as $key => $monitor) { if (empty($monitor['password']) && !empty($monitoredEmail[$key]['password'])) { $data['monitored_email'][$key]['password'] = $monitoredEmail[$key]['password']; } if ($key != 'general') { if (empty($monitor['host']) || empty($monitor['address']) || empty($monitor['folder'])) { $data['monitored_email'][$key]['override_settings'] = ''; $data['monitored_email'][$key]['address'] = ''; $data['monitored_email'][$key]['host'] = ''; $data['monitored_email'][$key]['user'] = ''; $data['monitored_email'][$key]['password'] = ''; $data['monitored_email'][$key]['ssl'] = '1'; $data['monitored_email'][$key]['port'] = '993'; } } } } // Ensure that percent signs are decoded in the unsubscribe/webview settings $decode = array('unsubscribe_text', 'webview_text', 'unsubscribe_message', 'resubscribe_message'); foreach ($decode as $key) { if (strpos($data[$key], '%') !== false) { $data[$key] = urldecode($data[$key]); if (preg_match_all('/([^%]|^)(%{1}[^%]\\S+[^%]%{1})([^%]|$)/i', $data[$key], $matches)) { // Encode any left over to prevent Symfony from crashing foreach ($matches[0] as $matchKey => $match) { $replaceWith = $matches[1][$matchKey] . '%' . $matches[2][$matchKey] . '%' . $matches[3][$matchKey]; $data[$key] = str_replace($match, $replaceWith, $data[$key]); } } } } $event->setConfig($data, 'emailconfig'); }