diff --git a/modules/board/board.controller.php b/modules/board/board.controller.php index 2561a0d09..9ea8f252c 100644 --- a/modules/board/board.controller.php +++ b/modules/board/board.controller.php @@ -196,8 +196,6 @@ class boardController extends board $oMail->send(); } } - - } } diff --git a/modules/ncenterlite/lang/ko.php b/modules/ncenterlite/lang/ko.php index 2338e2200..40830be52 100644 --- a/modules/ncenterlite/lang/ko.php +++ b/modules/ncenterlite/lang/ko.php @@ -17,7 +17,6 @@ $lang->ncenterlite_about_notify_setting = '선택한 모듈에서는 알림을 $lang->ncenterlite_notify_mid_all = '관리자 알림 페이지'; $lang->ncenterlite_about_mid_all = '선택한 모듈에서는 모든 알림이 관리자에게도 전달됩니다.'; $lang->ncenterlite_admin_content = '관리자 알림'; -$lang->about_admin_content = '관리자 알림을 받을 모듈은 "모듈별 사용 설정" 페이지에서 선택할 수 있습니다.'; $lang->ncenterlite_read = '읽음 확인'; $lang->ncenterlite_read_y = '읽음'; $lang->ncenterlite_read_n = '읽지 않음'; @@ -25,8 +24,8 @@ $lang->ncenterlite_no_target = '대상 없음'; $lang->ncenterlite_my_list = '내 알림 목록'; $lang->ncenterlite_my_settings = '내 알림 설정'; $lang->ncenterlite_user_settings = '사용자 알림 설정'; +$lang->ncenterlite_notify_settings = '알림 설정'; $lang->ncenterlite_userconfig_title = '%s님의 알림센터 설정'; -$lang->ncenterlite_sms_message_use = 'SMS 문자알림'; $lang->ncenterlite_userconfig_about = '알림센터의 개인의 설정을 저장하도록 합니다.'; $lang->ncenterlite_comment_noti = '댓글 알림'; $lang->ncenterlite_comment_noti_about = '내 게시물의 혹은 내 댓글에 댓글이 달릴경우 알림을 받습니다.'; @@ -124,7 +123,12 @@ $lang->about_mention_suffix_always_cut = '\'알림센터님\'이라는 회원과 $lang->mention_limit = '멘션 갯수 제한'; $lang->about_mention_limit = '서버 과부하와 스팸을 방지하기 위해 한 글에서 지나치게 많은 회원들을 호출하지 못하도록 합니다.'; $lang->ncenterlite_msg_setting_error = '설정에 오류가 있습니다. 다시 설정해 주세요.'; -$lang->ncenterlite_use_sms_help = '이 옵션을 사용하게 되면 회원들에게 문자메세지 서비스를 이용하여 알림을 보낼 수 있습니다.'; +$lang->ncenterlite_use_help = '회원들에게 전송할 알림을 선택할 수 있습니다.'; +$lang->ncenterlite_dont_use_push = '푸시 알림은 현재 지원중이 아닙니다.'; $lang->member_phone_variable = '회원전화번호 변수'; $lang->member_phone_variable_about = '회원전화번호 변수를 선택합니다. 회원전화번호 변수가 1개일 경우 설치시 자동으로 설정이 저장됩니다. 이 경우 설정을 할 필요가 없어서 설정을 선택할 수 없습니다.'; $lang->fail_module_install = '모듈설치에 실패하였습니다.'; +$lang->cmd_web_notify = '웹 알림'; +$lang->cmd_mail_notify = '메일 알림'; +$lang->cmd_sms_notify = '문자 알림'; +$lang->cmd_push_notify = '푸시 알림'; diff --git a/modules/ncenterlite/ncenterlite.admin.controller.php b/modules/ncenterlite/ncenterlite.admin.controller.php index dfb533e4c..d3ee75128 100644 --- a/modules/ncenterlite/ncenterlite.admin.controller.php +++ b/modules/ncenterlite/ncenterlite.admin.controller.php @@ -38,7 +38,7 @@ class ncenterliteAdminController extends ncenterlite } } - if ($obj->disp_act == 'dispNcenterliteAdminConfig') + if ($obj->disp_act == 'dispNcenterliteAdminNotifyConfig') { if (!$obj->use) { diff --git a/modules/ncenterlite/ncenterlite.admin.view.php b/modules/ncenterlite/ncenterlite.admin.view.php index 3b9e442c8..3dbd33898 100644 --- a/modules/ncenterlite/ncenterlite.admin.view.php +++ b/modules/ncenterlite/ncenterlite.admin.view.php @@ -4,7 +4,7 @@ class ncenterliteAdminView extends ncenterlite function init() { $this->setTemplatePath($this->module_path.'tpl'); - $this->setTemplateFile(lcfirst(str_replace('dispNcenterliteAdmin', '', $this->act))); + $this->setTemplateFile(strtolower(str_replace('dispNcenterliteAdmin', '', $this->act))); } function dispNcenterliteAdminConfig() @@ -22,9 +22,12 @@ class ncenterliteAdminView extends ncenterlite $sms_available = true; } + $push_avaliable = false; + $config = $oNcenterliteModel->getConfig(); Context::set('config', $config); Context::set('sms_available', $sms_available); + Context::set('push_available', $push_avaliable); } function dispNcenterliteAdminSeletedmid() diff --git a/modules/ncenterlite/ncenterlite.class.php b/modules/ncenterlite/ncenterlite.class.php index be5713ad2..538e623bf 100644 --- a/modules/ncenterlite/ncenterlite.class.php +++ b/modules/ncenterlite/ncenterlite.class.php @@ -45,7 +45,6 @@ class ncenterlite extends ModuleObject array('document.updateVotedCount', 'ncenterlite', 'controller', 'triggerAfterVotedupdate', 'after'), array('moduleHandler.init', 'ncenterlite', 'controller', 'triggerAddMemberMenu', 'after'), array('document.moveDocumentToTrash', 'ncenterlite', 'controller', 'triggerAfterMoveToTrash', 'after'), - array('member.insertMember', 'ncenterlite', 'controller', 'triggerAfterMemberInsert', 'after'), ); private $delete_triggers = array( diff --git a/modules/ncenterlite/ncenterlite.controller.php b/modules/ncenterlite/ncenterlite.controller.php index d5fe8e105..6ac351ce1 100644 --- a/modules/ncenterlite/ncenterlite.controller.php +++ b/modules/ncenterlite/ncenterlite.controller.php @@ -112,6 +112,7 @@ class ncenterliteController extends ncenterlite } $args = new stdClass(); + $args->config_type = 'mention'; $args->member_srl = $mention_member_srl; $args->srl = $obj->document_srl; $args->target_p_srl = $obj->document_srl; @@ -143,6 +144,7 @@ class ncenterliteController extends ncenterlite } $args = new stdClass(); + $args->config_type = 'admin_content'; $args->member_srl = $admins; $args->srl = $obj->document_srl; $args->target_p_srl = $obj->document_srl; @@ -201,6 +203,7 @@ class ncenterliteController extends ncenterlite continue; } $args = new stdClass(); + $args->config_type = 'admin_content'; $args->member_srl = $admins; $args->target_p_srl = $obj->comment_srl; $args->srl = $obj->document_srl; @@ -243,6 +246,7 @@ class ncenterliteController extends ncenterlite } $args = new stdClass(); + $args->config_type = 'mention'; $args->member_srl = $mention_member_srl; $args->target_p_srl = $obj->comment_srl; $args->srl = $obj->document_srl; @@ -283,6 +287,7 @@ class ncenterliteController extends ncenterlite if(!in_array(abs($member_srl), $notify_member_srl) && (!$logged_info || ($member_srl != 0 && abs($member_srl) != $logged_info->member_srl)) && $parent_member_config->comment_notify != 'N') { $args = new stdClass(); + $args->config_type = 'comment_comment'; $args->member_srl = abs($member_srl); $args->srl = $obj->document_srl; $args->target_p_srl = $parent_srl; @@ -319,6 +324,7 @@ class ncenterliteController extends ncenterlite if(!in_array(abs($member_srl), $notify_member_srl) && (!$logged_info || ($member_srl != 0 && abs($member_srl) != $logged_info->member_srl)) && $document_comment_member_config->comment_notify != 'N') { $args = new stdClass(); + $args->config_type = 'comment'; $args->member_srl = abs($member_srl); $args->srl = $document_srl; $args->target_p_srl = $comment_srl; @@ -361,6 +367,7 @@ class ncenterliteController extends ncenterlite if($message_member_config->message_notify != 'N') { $args = new stdClass(); + $args->config_type = 'message'; $args->member_srl = $trigger_obj->receiver_srl; $args->srl = $trigger_obj->related_srl; $args->target_p_srl = '1'; @@ -393,6 +400,7 @@ class ncenterliteController extends ncenterlite } $args = new stdClass(); + $args->config_type = 'vote'; $args->member_srl = $obj->member_srl; $args->srl = $obj->document_srl; $args->target_p_srl = '1'; @@ -496,31 +504,6 @@ class ncenterliteController extends ncenterlite return new Object(); } - function triggerAfterMemberInsert(&$obj) - { - // 관리자가 회원을 추가하는 경우 알림을 발송하지 않는다. - if($obj->is_admin && Context::get('logged_info')->is_admin === 'Y') - { - return new Object(); - } - - $args = new stdClass(); - $args->member_srl = $obj->member_srl; - $args->srl = $obj->member_srl; - $args->target_p_srl = '1'; - $args->target_srl = $obj->member_srl; - $args->target_member_srl = $obj->member_srl; - $args->type = $this->_TYPE_INSERT_MEMBER; - $args->target_type = $this->_TYPE_INSERT_MEMBER; - $args->target_summary = lang('cmd_signup'); - $args->regdate = date('YmdHis'); - $args->notify = $this->_getNotifyId($args); - $args->target_url = getNotEncodedFullUrl('', 'act', 'dispMemberInfo'); - $this->_insertNotify($args); - - return new Object(); - } - function triggerAfterModuleHandlerProc(&$oModule) { $vars = Context::getRequestVars(); @@ -1102,6 +1085,7 @@ class ncenterliteController extends ncenterlite } $this->sendSmsMessage($args); + $this->sendMailMessage($args); if($output->toBool()) { @@ -1238,18 +1222,24 @@ class ncenterliteController extends ncenterlite function sendSmsMessage($args) { + $oNcenterliteModel = getModel('ncenterlite'); + + $config = $oNcenterliteModel->getConfig(); + if(!isset($config->use[$args->config_type]['sms'])) + { + return false; + } + $logged_info = Context::get('logged_info'); if($logged_info->member_srl == $args->member_srl) { return false; } - $config = getModel('ncenterlite')->getConfig(); - - $content = getModel('ncenterlite')->getNotificationText($args); + $content = $oNcenterliteModel->getNotificationText($args); $content = preg_replace('/<\/?(strong|)[^>]*>/', '', $content); - $sms = getModel('ncenterlite')->getSmsHandler(); + $sms = $oNcenterliteModel->getSmsHandler(); if($sms === false) { return false; @@ -1278,4 +1268,33 @@ class ncenterliteController extends ncenterlite return $output; } + + function sendMailMessage($args) + { + $oNcenterliteModel = getModel('ncenterlite'); + $config = $oNcenterliteModel->getConfig(); + if(!isset($config->use[$args->config_type]['mail'])) + { + return false; + } + + $logged_info = Context::get('logged_info'); + if($logged_info->member_srl == $args->member_srl) + { + return false; + } + $content = $oNcenterliteModel->getNotificationText($args); + $content_cut = preg_replace('/<\/?(strong|)[^>]*>/', '', $content); + $mail_title = cut_str($content_cut, 20); + + $member_config = getModel('member')->getMemberConfig(); + $member_info = getModel('member')->getMemberInfoByMemberSrl($args->member_srl); + + $oMail = new Mail(); + $oMail->setTitle($mail_title); + $oMail->setContent($content); + $oMail->setSender($member_config->webmaster_name ?: null, $member_config->webmaster_email); + $oMail->setReceiptor($member_info->email_address, $member_info->email_address); + $oMail->send(); + } } diff --git a/modules/ncenterlite/ncenterlite.model.php b/modules/ncenterlite/ncenterlite.model.php index eec9fd314..d51c4bfa8 100644 --- a/modules/ncenterlite/ncenterlite.model.php +++ b/modules/ncenterlite/ncenterlite.model.php @@ -20,6 +20,19 @@ class ncenterliteModel extends ncenterlite { $config->use = array('message' => 1); } + else + { + if(count($config->use) && !is_array(array_first($config->use))) + { + $config->use['mention']['web'] = $config->use['mention']; + $config->use['comment']['web'] = $config->use['comment']; + $config->use['comment_comment']['web'] = $config->use['comment_comment']; + $config->use['vote']['web'] = $config->use['vote']; + $config->use['message']['web'] = $config->use['message']; + $config->use['admin_content']['web'] = $config->use['admin_content']; + getController('module')->insertModuleConfig('ncenterlite', $config); + } + } if(!$config->display_use) $config->display_use = 'all'; if(!$config->mention_names) $config->mention_names = 'nick_name'; @@ -38,7 +51,6 @@ class ncenterliteModel extends ncenterlite if(!$config->skin) $config->skin = 'default'; if(!$config->colorset) $config->colorset = 'black'; if(!$config->zindex) $config->zindex = '9999'; - if(!$config->use_sms) $config->use_sms = 'N'; self::$config = $config; } @@ -508,37 +520,28 @@ class ncenterliteModel extends ncenterlite if($oSmsHandler === null) { - $config = self::getConfig(); - if($config->use_sms != 'Y') + $oSmsHandler = new Rhymix\Framework\SMS; + + if($oSmsHandler::getDefaultDriver()->getName() === 'Dummy') { $oSmsHandler = false; return $oSmsHandler; } - else + + $variable_name = array(); + $member_config = getModel('member')->getMemberConfig(); + foreach($member_config->signupForm as $value) { - $oSmsHandler = new Rhymix\Framework\SMS; - - if($oSmsHandler::getDefaultDriver()->getName() === 'Dummy') + if($value->type == 'tel') { - $oSmsHandler = false; - return $oSmsHandler; + $variable_name[] = $value->name; } + } - $variable_name = array(); - $member_config = getModel('member')->getMemberConfig(); - foreach($member_config->signupForm as $value) - { - if($value->type == 'tel') - { - $variable_name[] = $value->name; - } - } - - if(empty($variable_name)) - { - $oSmsHandler = false; - return $oSmsHandler; - } + if(empty($variable_name)) + { + $oSmsHandler = false; + return $oSmsHandler; } } diff --git a/modules/ncenterlite/tpl/config.html b/modules/ncenterlite/tpl/config.html index 6e407137b..d7470f639 100644 --- a/modules/ncenterlite/tpl/config.html +++ b/modules/ncenterlite/tpl/config.html @@ -9,25 +9,51 @@
- +
- - - - - - -

{$lang->about_admin_content}

+ + + +
-
-
- +
- -

{$lang->ncenterlite_use_sms_help}

+ + + + +
+ +
+ + + + +
+ +
+ + + + +
+ +
+ + + + +
+ +
+ + + + +

+

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