/**
  * Save the exception configuration.
  */
 public function procAdvanced_MailerAdminInsertExceptions()
 {
     // Get the current configuration.
     $config = $this->getConfig();
     $sending_methods = Rhymix\Framework\Mail::getSupportedDrivers();
     // Get and validate the list of exceptions.
     $exceptions = array();
     for ($i = 1; $i <= 3; $i++) {
         $method = strval(Context::get('exception_' . $i . '_method'));
         $domains = trim(Context::get('exception_' . $i . '_domains'));
         if ($method !== '' && $domains !== '') {
             if ($method !== 'default' && !isset($sending_methods[$method])) {
                 return new Object(-1, 'msg_advanced_mailer_sending_method_is_invalid');
             }
             if ($method !== 'default') {
                 foreach ($this->sending_methods[$method]['required'] as $conf_name) {
                     if (!Rhymix\Framework\Config::get("mail.{$method}.{$conf_name}")) {
                         return new Object(-1, sprintf(Context::getLang('msg_advanced_mailer_sending_method_is_not_configured'), Context::getLang('cmd_advanced_mailer_sending_method_' . $method)));
                     }
                 }
             }
             $exceptions[$i]['method'] = $method;
             $exceptions[$i]['domains'] = array();
             $domains = array_map('trim', preg_split('/[,\\n]/', $domains, null, PREG_SPLIT_NO_EMPTY));
             foreach ($domains as $domain) {
                 if (strpos($domain, 'xn--') !== false) {
                     $domain = Rhymix\Framework\URL::decodeIdna($domain);
                 }
                 $exceptions[$i]['domains'][] = $domain;
             }
         }
     }
     // Save the new configuration.
     $config->exceptions = $exceptions;
     $output = getController('module')->insertModuleConfig('advanced_mailer', $config);
     if ($output->toBool()) {
         $this->setMessage('success_registed');
     } else {
         return $output;
     }
     if (Context::get('success_return_url')) {
         $this->setRedirectUrl(Context::get('success_return_url'));
     } else {
         $this->setRedirectUrl(getNotEncodedUrl('', 'module', 'admin', 'act', 'dispAdvanced_mailerAdminExceptions'));
     }
 }
Example #2
0
 /**
  * Migrate from previous configuration format.
  */
 public function migrateConfig($config)
 {
     $systemconfig = array();
     if (isset($config->sending_method)) {
         $systemconfig['mail.type'] = $config->sending_method;
     } elseif (isset($config->send_type)) {
         $systemconfig['mail.type'] = $config->send_type;
     }
     if ($systemconfig['mail.type'] === 'mail') {
         $systemconfig['mail.type'] = 'mailfunction';
     }
     if (isset($config->username)) {
         if (in_array('username', $this->sending_methods[$config->sending_method]['conf'])) {
             $config->{$config->sending_method . '_username'} = $config->username;
         }
         unset($config->username);
     }
     if (isset($config->password)) {
         if (in_array('password', $this->sending_methods[$config->sending_method]['conf'])) {
             $config->{$config->sending_method . '_password'} = $config->password;
         }
         unset($config->password);
     }
     if (isset($config->domain)) {
         if (in_array('domain', $this->sending_methods[$config->sending_method]['conf'])) {
             $config->{$config->sending_method . '_domain'} = $config->domain;
         }
         unset($config->domain);
     }
     if (isset($config->api_key)) {
         if (in_array('api_key', $this->sending_methods[$config->sending_method]['conf'])) {
             $config->{$config->sending_method . '_api_key'} = $config->api_key;
         }
         unset($config->api_key);
     }
     if (isset($config->account_type)) {
         if (in_array('account_type', $this->sending_methods[$config->sending_method]['conf'])) {
             $config->{$config->sending_method . '_account_type'} = $config->account_type;
         }
         unset($config->account_type);
     }
     if (isset($config->aws_region)) {
         $config->ses_region = $config->aws_region;
         unset($config->aws_region);
     }
     if (isset($config->aws_access_key)) {
         $config->ses_access_key = $config->aws_access_key;
         unset($config->aws_access_key);
     }
     if (isset($config->aws_secret_key)) {
         $config->ses_secret_key = $config->aws_secret_key;
         unset($config->aws_secret_key);
     }
     $mail_drivers = Rhymix\Framework\Mail::getSupportedDrivers();
     foreach ($mail_drivers as $driver_name => $driver_definition) {
         foreach ($config as $key => $value) {
             if (strncmp($key, $driver_name . '_', strlen($driver_name) + 1) === 0) {
                 $subkey = substr($key, strlen($driver_name) + 1);
                 switch ($subkey) {
                     case 'host':
                     case 'port':
                     case 'security':
                         $systemconfig["mail.{$driver_name}.smtp_" . $subkey] = $value;
                         break;
                     case 'username':
                     case 'password':
                         $systemconfig["mail.{$driver_name}." . ($driver_name === 'smtp' ? 'smtp_' : 'api_') . substr($subkey, 0, 4)] = $value;
                         break;
                     case 'account_type':
                     case 'region':
                         $systemconfig["mail.{$driver_name}.api_type"] = $value;
                         break;
                     case 'access_key':
                         $systemconfig["mail.{$driver_name}.api_user"] = $value;
                         break;
                     case 'secret_key':
                         $systemconfig["mail.{$driver_name}.api_pass"] = $value;
                         break;
                     case 'domain':
                         $systemconfig["mail.{$driver_name}.api_domain"] = $value;
                         break;
                     case 'api_key':
                         $systemconfig["mail.{$driver_name}.api_token"] = $value;
                         break;
                     default:
                         break;
                 }
                 unset($config->{$key});
             }
         }
     }
     if (count($systemconfig)) {
         foreach ($systemconfig as $key => $value) {
             Rhymix\Framework\Config::set($key, $value);
         }
         Rhymix\Framework\Config::save();
     }
     unset($config->is_enabled);
     unset($config->sending_method);
     unset($config->send_type);
     $config->log_sent_mail = toBool($config->log_sent_mail);
     $config->log_errors = toBool($config->log_errors);
     $config->force_sender = toBool($config->force_sender);
     if (!isset($config->exceptions)) {
         $config->exceptions = array();
     }
     return $config;
 }
 /**
  * Display the error log.
  */
 public function dispAdvanced_MailerAdminErrors()
 {
     $obj = new stdClass();
     $obj->status = 'error';
     $obj->page = $page = Context::get('page') ?: 1;
     $maillog = executeQuery('advanced_mailer.getLogByType', $obj);
     $maillog = $maillog->toBool() ? $this->procMailLog($maillog->data) : array();
     Context::set('advanced_mailer_log', $maillog);
     Context::set('advanced_mailer_status', 'error');
     $paging = $this->procPaging('error', $page);
     Context::set('total_count', $paging->total_count);
     Context::set('total_page', $paging->total_page);
     Context::set('page', $paging->page);
     Context::set('page_navigation', $paging->page_navigation);
     $sending_methods = Rhymix\Framework\Mail::getSupportedDrivers();
     Context::set('sending_methods', $sending_methods);
     $this->setTemplatePath($this->module_path . 'tpl');
     $this->setTemplateFile('view_log');
 }