diff --git a/modules/ncenterlite/lang/ko.php b/modules/ncenterlite/lang/ko.php index 6f623438b..dde9428e1 100644 --- a/modules/ncenterlite/lang/ko.php +++ b/modules/ncenterlite/lang/ko.php @@ -157,7 +157,6 @@ $lang->mention_limit = '멘션 갯수 제한'; $lang->about_mention_limit = '서버 과부하와 스팸을 방지하기 위해 한 글에서 지나치게 많은 회원들을 호출하지 못하도록 합니다.'; $lang->ncenterlite_msg_setting_error = '설정에 오류가 있습니다. 다시 설정해 주세요.'; $lang->ncenterlite_use_help = '회원들에게 전송할 알림을 선택할 수 있습니다.
모든 댓글 작성자에게 알림 기능은 게시글의 작성자가 댓글을 남길경우 게시글을 작성한 작성자를 제외하고 해당 글의 모든 댓글 작성자들에게 알림을 전송합니다.'; -$lang->ncenterlite_dont_use_push = '푸시 알림은 현재 지원중이 아닙니다.'; $lang->member_phone_variable = '회원 전화번호 변수'; $lang->member_phone_variable_about = '문자 알림 사용시 회원의 전화번호를 어디에서 불러올지 선택합니다. 회원정보의 전화번호 또는 확장변수를 선택할 수 있습니다.
전화번호 형태의 확장변수가 1개뿐인 경우 설치시 자동으로 설정이 저장됩니다.'; $lang->member_phone_builtin_field = '회원정보의 전화정보'; diff --git a/modules/ncenterlite/ncenterlite.admin.view.php b/modules/ncenterlite/ncenterlite.admin.view.php index d69627414..af6747c45 100644 --- a/modules/ncenterlite/ncenterlite.admin.view.php +++ b/modules/ncenterlite/ncenterlite.admin.view.php @@ -19,9 +19,16 @@ class ncenterliteAdminView extends ncenterlite { $sms_available = true; } - - $push_avaliable = false; - + + if(count(Rhymix\Framework\Config::get('push.types'))) + { + $push_avaliable = true; + } + else + { + $push_avaliable = false; + } + $config = $oNcenterliteModel->getConfig(); Context::set('config', $config); Context::set('sms_available', $sms_available); diff --git a/modules/ncenterlite/ncenterlite.controller.php b/modules/ncenterlite/ncenterlite.controller.php index 35088933d..b653ebce0 100644 --- a/modules/ncenterlite/ncenterlite.controller.php +++ b/modules/ncenterlite/ncenterlite.controller.php @@ -7,12 +7,12 @@ class ncenterliteController extends ncenterlite * * @param int $from_member_srl Sender * @param int $to_member_srl Recipient - * @param string $message Message content + * @param string|object $message Message content * @param string $url The URL to redirect to when the recipient clicks the notification * @param int $target_srl The sequence number associated with this notification * @return BaseObject */ - public function sendNotification($from_member_srl, $to_member_srl, $message, $url, $target_srl = 0) + public function sendNotification($from_member_srl, $to_member_srl, $message, $url = '', $target_srl = 0) { $args = new stdClass(); $args->config_type = 'custom'; @@ -27,7 +27,20 @@ class ncenterliteController extends ncenterlite $args->target_url = $url; $args->target_browser = ''; $args->target_summary = ''; - $args->target_body = $message; + + if (is_object($message)) + { + $args->target_body = $message->subject; + $args->target_url = $message->url ?: $args->target_url; + $args->extra_content = $message->content; + $args->extra_image = $message->image; + $args->extra_data = $message->data ?: []; + } + else + { + $args->target_body = $message; + } + $output = $this->_insertNotify($args); if(!$output->toBool()) { @@ -1337,6 +1350,7 @@ class ncenterliteController extends ncenterlite if($output->toBool()) { ModuleHandler::triggerCall('ncenterlite._insertNotify', 'after', $args); + $this->sendPushMessage($args); $this->sendSmsMessage($args); $this->sendMailMessage($args); $this->removeFlagFile($args->member_srl); @@ -1473,6 +1487,40 @@ class ncenterliteController extends ncenterlite return array_values($members); } + function sendPushMessage($args) + { + $oNcenterliteModel = getModel('ncenterlite'); + + $config = $oNcenterliteModel->getConfig(); + if(!isset($config->use[$args->config_type]['push'])) + { + return false; + } + + if($this->user->member_srl == $args->member_srl && $args->target_type != $this->_TYPE_CUSTOM) + { + return false; + } + + $content = $oNcenterliteModel->getNotificationText($args); + $content = htmlspecialchars_decode(preg_replace('/<\/?(strong|)[^>]*>/', '', $content)); + + $target_url = $args->target_url; + if (!preg_match('!^https?://!', $target_url)) + { + $target_url = Rhymix\Framework\URL::getCurrentDomainUrl($target_url); + } + + $oPush = new \Rhymix\Framework\Push(); + $oPush->setSubject($content); + $oPush->setContent($args->extra_content); + $oPush->setImage($args->extra_image); + $oPush->setData($args->extra_data); + $oPush->setURL($target_url); + $oPush->addTo($args->member_srl); + $oPush->send(); + } + function sendSmsMessage($args) { $oNcenterliteModel = getModel('ncenterlite'); @@ -1483,13 +1531,13 @@ class ncenterliteController extends ncenterlite return false; } - if($this->user->member_srl == $args->member_srl) + if($this->user->member_srl == $args->member_srl && $args->target_type != $this->_TYPE_CUSTOM) { return false; } $content = $oNcenterliteModel->getNotificationText($args); - $content = preg_replace('/<\/?(strong|)[^>]*>/', '', $content); + $content = htmlspecialchars_decode(preg_replace('/<\/?(strong|)[^>]*>/', '', $content)); $sms = $this->getSmsHandler(); if($sms === false) @@ -1544,11 +1592,11 @@ class ncenterliteController extends ncenterlite return false; } - $logged_info = Context::get('logged_info'); - if($logged_info->member_srl == $args->member_srl) + if($this->user->member_srl == $args->member_srl && $args->target_type != $this->_TYPE_CUSTOM) { return false; } + $content = $oNcenterliteModel->getNotificationText($args); switch ($args->config_type) diff --git a/modules/ncenterlite/tpl/config.html b/modules/ncenterlite/tpl/config.html index 2007a2cc0..2309dcc78 100644 --- a/modules/ncenterlite/tpl/config.html +++ b/modules/ncenterlite/tpl/config.html @@ -66,7 +66,6 @@

{$lang->ncenterlite_use_help}
-
{$lang->ncenterlite_warning} {$lang->ncenterlite_dont_use_push}