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 @@