/** * 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')); } }
/** * 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'); }