Implement test SMS sending

This commit is contained in:
Kijin Sung 2016-12-14 00:38:14 +09:00
parent 85c9b633ec
commit b44175aba2
5 changed files with 104 additions and 13 deletions

View file

@ -211,7 +211,7 @@ class Advanced_MailerAdminController extends Advanced_Mailer
}
/**
* Send a test email using a temporary configuration.
* Send a test mail.
*/
public function procAdvanced_MailerAdminTestSendMail()
{
@ -250,23 +250,23 @@ class Advanced_MailerAdminController extends Advanced_Mailer
if (!$result)
{
if (count($oMail->errors))
if (count($oMail->getErrors()))
{
if (config('mail.type') === 'smtp')
{
if (strpos(config('mail.smtp.smtp_host'), 'gmail.com') !== false && strpos(implode("\n", $oMail->errors), 'code "535"') !== false)
if (strpos(config('mail.smtp.smtp_host'), 'gmail.com') !== false && strpos(implode("\n", $oMail->getErrors()), 'code "535"') !== false)
{
$this->add('test_result', Context::getLang('msg_advanced_mailer_google_account_security'));
return;
}
if (strpos(config('mail.smtp.smtp_host'), 'naver.com') !== false && strpos(implode("\n", $oMail->errors), 'Failed to authenticate') !== false)
if (strpos(config('mail.smtp.smtp_host'), 'naver.com') !== false && strpos(implode("\n", $oMail->getErrors()), 'Failed to authenticate') !== false)
{
$this->add('test_result', Context::getLang('msg_advanced_mailer_naver_smtp_disabled'));
return;
}
}
$this->add('test_result', nl2br(htmlspecialchars(implode("\n", $oMail->errors))));
$this->add('test_result', nl2br(htmlspecialchars(implode("\n", $oMail->getErrors()))));
return;
}
else
@ -285,4 +285,56 @@ class Advanced_MailerAdminController extends Advanced_Mailer
$this->add('test_result', Context::getLang('msg_advanced_mailer_test_success'));
return;
}
/**
* Send a test SMS.
*/
public function procAdvanced_MailerAdminTestSendSMS()
{
$advanced_mailer_config = $this->getConfig();
$recipient_number = Context::get('recipient_number');
$country_code = intval(Context::get('country_code'));
$content = trim(Context::get('content'));
if (!$recipient_number)
{
$this->add('test_result', 'Error: ' . Context::getLang('msg_advanced_mailer_recipient_number_is_empty'));
return;
}
if (!$content)
{
$this->add('test_result', 'Error: ' . Context::getLang('msg_advanced_mailer_content_is_empty'));
return;
}
try
{
$oSMS = new Rhymix\Framework\SMS();
$oSMS->addTo($recipient_number, $country_code);
$oSMS->setBody($content);
$result = $oSMS->send();
if (!$result)
{
if (count($oSMS->getErrors()))
{
$this->add('test_result', nl2br(htmlspecialchars(implode("\n", $oSMS->getErrors()))));
return;
}
else
{
$this->add('test_result', Context::getLang('msg_advanced_mailer_unknown_error'));
return;
}
}
}
catch (Exception $e)
{
$this->add('test_result', nl2br(htmlspecialchars($e->getMessage())));
return;
}
$this->add('test_result', Context::getLang('msg_advanced_mailer_test_success_sms'));
return;
}
}

View file

@ -119,3 +119,10 @@ $lang->cmd_advanced_mailer_clear_log_condition_all = 'Everything';
$lang->cmd_advanced_mailer_clear_log_condition = 'Over %d days';
$lang->cmd_advanced_mailer_clear_log_button = 'Clear old logs';
$lang->cmd_advanced_mailer_sms_test = 'SMS Test';
$lang->cmd_advanced_mailer_recipient_number = 'Recipient\'s number';
$lang->cmd_advanced_mailer_country_code = 'Country code';
$lang->cmd_advanced_mailer_country_code_help = 'Please leave the country code empty if you are sending to a domestic number.';
$lang->cmd_advanced_mailer_test_content = 'This is an SMS test from Rhymix.';
$lang->msg_advanced_mailer_recipient_number_is_empty = 'Please enter a phone number for the recipient.';
$lang->msg_advanced_mailer_content_is_empty = 'Please enter the content for your test SMS.';
$lang->msg_advanced_mailer_test_success_sms = 'The test was successful. Please check your SMS.';

View file

@ -119,3 +119,10 @@ $lang->cmd_advanced_mailer_clear_log_condition_all = '모두';
$lang->cmd_advanced_mailer_clear_log_condition = '%d일 이상';
$lang->cmd_advanced_mailer_clear_log_button = '오래된 기록 삭제';
$lang->cmd_advanced_mailer_sms_test = 'SMS 테스트';
$lang->cmd_advanced_mailer_recipient_number = '받는이 전화번호';
$lang->cmd_advanced_mailer_country_code = '국가코드';
$lang->cmd_advanced_mailer_country_code_help = '국내 번호로 발송하실 경우 국가코드는 비워 두시기 바랍니다.';
$lang->cmd_advanced_mailer_test_content = '라이믹스 SMS 발송 테스트입니다.';
$lang->msg_advanced_mailer_recipient_number_is_empty = '받는이 전화번호를 입력해 주십시오.';
$lang->msg_advanced_mailer_content_is_empty = 'SMS 내용을 입력해 주십시오.';
$lang->msg_advanced_mailer_test_success_sms = '테스트에 성공하였습니다. SMS를 확인해 보시기 바랍니다.';

View file

@ -9,7 +9,7 @@
$(this).attr("disabled", "disabled");
var ajax_data = {
recipient_name: $("#advanced_mailer_recipient_name").val(),
recipient_email: $("#advanced_mailer_recipient_email").val(),
recipient_email: $("#advanced_mailer_recipient_email").val()
};
$.exec_json(
"advanced_mailer.procAdvanced_mailerAdminTestSendMail", ajax_data,
@ -24,6 +24,28 @@
);
});
$("#advanced_mailer_test_send_sms").click(function(event) {
event.preventDefault();
$("#advanced_mailer_test_result").text("");
$(this).attr("disabled", "disabled");
var ajax_data = {
recipient_number: $("#advanced_mailer_recipient_number").val(),
country_code: $("#advanced_mailer_country_code").val(),
content: $("#advanced_mailer_content").val()
};
$.exec_json(
"advanced_mailer.procAdvanced_mailerAdminTestSendSMS", ajax_data,
function(response) {
$("#advanced_mailer_test_result").html(response.test_result);
$("#advanced_mailer_test_send").removeAttr("disabled");
},
function(response) {
$("#advanced_mailer_test_result").text("AJAX Error");
$("#advanced_mailer_test_send").removeAttr("disabled");
}
);
});
});
} (jQuery));

View file

@ -4,7 +4,7 @@
<form class="x_form-horizontal" action="./" method="post" id="advanced_mailer">
<input type="hidden" name="module" value="advanced_mailer" />
<input type="hidden" name="act" value="procAdvanced_mailerAdminTestSendMail" />
<input type="hidden" name="act" value="procAdvanced_mailerAdminTestSendSMS" />
<input type="hidden" name="success_return_url" value="{getRequestUriByServerEnviroment()}" />
<div cond="$XE_VALIDATOR_MESSAGE" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
@ -13,19 +13,22 @@
<section class="section">
<h2>{$lang->cmd_advanced_mailer_mail_test}</h2>
<h2>{$lang->cmd_advanced_mailer_sms_test}</h2>
<div class="x_control-group">
<label class="x_control-label" for="advanced_mailer_recipient_name">{$lang->cmd_advanced_mailer_recipient_name}</label>
<label class="x_control-label" for="advanced_mailer_recipient_number">{$lang->cmd_advanced_mailer_recipient_number}</label>
<div class="x_controls">
<input type="text" id="advanced_mailer_recipient_name" value="{Context::get('logged_info')->nick_name}" />
<input type="text" id="advanced_mailer_recipient_number" value="{config('sms.default_from')}" />
&nbsp;{$lang->cmd_advanced_mailer_country_code}&nbsp;
<input type="number" id="advanced_mailer_country_code" value="" />
<p class="x_help-block">{$lang->cmd_advanced_mailer_country_code_help}</p>
</div>
</div>
<div class="x_control-group">
<label class="x_control-label" for="advanced_mailer_recipient_email">{$lang->cmd_advanced_mailer_recipient_email}</label>
<label class="x_control-label" for="advanced_mailer_content">{$lang->cmd_advanced_mailer_status_content}</label>
<div class="x_controls">
<input type="text" id="advanced_mailer_recipient_email" value="{Context::get('logged_info')->email_address}" />
<textarea id="advanced_mailer_content">{$lang->cmd_advanced_mailer_test_content}</textarea>
</div>
</div>
@ -39,7 +42,7 @@
</section>
<div class="btnArea x_clearfix">
<button id="advanced_mailer_test_send_mail" type="submit" class="x_btn x_btn-primary x_pull-right">{$lang->cmd_advanced_mailer_send}</button>
<button id="advanced_mailer_test_send_sms" type="submit" class="x_btn x_btn-primary x_pull-right">{$lang->cmd_advanced_mailer_send}</button>
</div>
</form>