コード例 #1
0
 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');
     }
 }
コード例 #2
0
 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);
 }
コード例 #3
0
 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);
 }
コード例 #4
0
ファイル: ConfigSubscriber.php プロジェクト: Yame-/mautic
 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');
 }