Add option to user notify setting.

This commit is contained in:
BJRambo 2017-08-19 16:55:02 +09:00
parent 76f3df792f
commit 6b11100822
6 changed files with 87 additions and 33 deletions

View file

@ -98,3 +98,6 @@ $lang->ncenterlite_message_event_about = 'Do not notify message (Use XE Core mes
$lang->ncenterlite_all_delete = 'Delete all'; $lang->ncenterlite_all_delete = 'Delete all';
$lang->ncenterlite_month_before_delete = 'Delete older than 1 month'; $lang->ncenterlite_month_before_delete = 'Delete older than 1 month';
$lang->dont_check_notify_delete = 'Unread notifications will be deleted, too.'; $lang->dont_check_notify_delete = 'Unread notifications will be deleted, too.';
$lang->user_notify_setting = 'User notify setting.';
$lang->about_user_notify_setting = 'Each member can set a notify settings. Warning! If a member setting not use notifications, they will not be notified regardless of their default settings.';
$lang->msg_not_use_user_setting = 'user setting\'s not use. Please contact your administrator.';

View file

@ -110,6 +110,8 @@ $lang->member_menu_view = '회원 메뉴 표시';
$lang->member_menu_on = '표시'; $lang->member_menu_on = '표시';
$lang->member_menu_off = '표시하지 않음'; $lang->member_menu_off = '표시하지 않음';
$lang->about_member_menu_view = '각 회원이 알림 설정을 변경할 수 있는 메뉴를 추가합니다.'; $lang->about_member_menu_view = '각 회원이 알림 설정을 변경할 수 있는 메뉴를 추가합니다.';
$lang->user_notify_setting = '회원알림설정';
$lang->about_user_notify_setting = '각 맴버회원들의 알림을 설정할 수 있습니다. 회원들이 알림을 받지 않도록 설정되어 있다면 해당 회원이 알림센터를 통해서 알림을 못받을 수 있습니다.';
$lang->ncenterlite_no_notify = '알림 내역이 없습니다.'; $lang->ncenterlite_no_notify = '알림 내역이 없습니다.';
$lang->ncenterlite_all_delete = '전체 삭제'; $lang->ncenterlite_all_delete = '전체 삭제';
$lang->ncenterlite_month_before_delete = '한 달 이전의 알림 삭제'; $lang->ncenterlite_month_before_delete = '한 달 이전의 알림 삭제';
@ -140,3 +142,4 @@ $lang->ncenterlite_type_content = '알림 타입 내용';
$lang->ncenterlite_notify_type = '알림 타입 리스트'; $lang->ncenterlite_notify_type = '알림 타입 리스트';
$lang->msg_do_not_notify_type = '생성한 알림타입이 존재하지 않습니다.'; $lang->msg_do_not_notify_type = '생성한 알림타입이 존재하지 않습니다.';
$lang->ncenterlite_custom_list = '커스텀 리스트'; $lang->ncenterlite_custom_list = '커스텀 리스트';
$lang->msg_not_use_user_setting = '유저 세팅을 제공하지 않습니다. 관리자에게 문의하세요.';

View file

@ -28,6 +28,7 @@ class ncenterliteAdminController extends ncenterlite
'mlayout_srl', 'mlayout_srl',
'use_sms', 'use_sms',
'variable_name', 'variable_name',
'user_notify_setting',
); );
foreach($config_vars as $val) foreach($config_vars as $val)

View file

@ -6,6 +6,11 @@ class ncenterliteController extends ncenterlite
{ {
$logged_info = Context::get('logged_info'); $logged_info = Context::get('logged_info');
$oNcenterliteModel = getModel('ncenterlite'); $oNcenterliteModel = getModel('ncenterlite');
$config = $oNcenterliteModel->getConfig();
if($config->user_notify_setting != 'Y')
{
return new Object(-1, 'msg_not_use_user_setting');
}
$member_srl = Context::get('member_srl'); $member_srl = Context::get('member_srl');
@ -219,14 +224,22 @@ class ncenterliteController extends ncenterlite
$oCommentModel = getModel('comment'); $oCommentModel = getModel('comment');
$oComment = $oCommentModel->getComment($parent_srl); $oComment = $oCommentModel->getComment($parent_srl);
$member_srl = $oComment->member_srl; $member_srl = $oComment->member_srl;
$comment_member_config = $oNcenterliteModel->getUserConfig($member_srl); if($config->user_notify_setting == 'Y')
$parent_member_config = $comment_member_config->data; {
if(is_array($admin_list) && in_array(abs($member_srl), $admin_list) && isset($config->use['admin_content']) && $$obj->admin_comment_notify == true) $comment_member_config = $oNcenterliteModel->getUserConfig($member_srl);
$parent_member_config = $comment_member_config->data;
if($parent_member_config->comment_notify != 'Y')
{
return new Object();
}
}
if(is_array($admin_list) && in_array(abs($member_srl), $admin_list) && isset($config->use['admin_content']) && $obj->admin_comment_notify == true)
{ {
return new Object(); return new Object();
} }
if(!in_array(abs($member_srl), $notify_member_srls) && (!$logged_info || ($member_srl != 0 && abs($member_srl) != $logged_info->member_srl)) && $parent_member_config->comment_notify != 'N') if(!in_array(abs($member_srl), $notify_member_srls) && (!Context::get('is_logged') || ($member_srl != 0 && abs($member_srl) != $logged_info->member_srl)))
{ {
$args = new stdClass(); $args = new stdClass();
$args->config_type = 'comment_comment'; $args->config_type = 'comment_comment';
@ -243,7 +256,7 @@ class ncenterliteController extends ncenterlite
$args->regdate = $regdate; $args->regdate = $regdate;
$args->target_browser = $module_info->browser_title; $args->target_browser = $module_info->browser_title;
$args->notify = $this->_getNotifyId($args); $args->notify = $this->_getNotifyId($args);
$output = $this->_insertNotify($args, $is_anonymous); $this->_insertNotify($args, $is_anonymous);
$notify_member_srls[] = abs($member_srl); $notify_member_srls[] = abs($member_srl);
} }
} }
@ -259,10 +272,18 @@ class ncenterliteController extends ncenterlite
{ {
return new Object(); return new Object();
} }
$comment_member_config = $oNcenterliteModel->getUserConfig($member_srl);
$document_comment_member_config = $comment_member_config->data;
if(!in_array(abs($member_srl), $notify_member_srls) && (!$logged_info || ($member_srl != 0 && abs($member_srl) != $logged_info->member_srl)) && $document_comment_member_config->comment_notify != 'N') if($config->user_notify_setting == 'Y')
{
$comment_member_config = $oNcenterliteModel->getUserConfig($member_srl);
$document_comment_member_config = $comment_member_config->data;
if($document_comment_member_config->comment_notify != 'Y')
{
return new Object();
}
}
if(!in_array(abs($member_srl), $notify_member_srls) && (!$logged_info || ($member_srl != 0 && abs($member_srl) != $logged_info->member_srl)))
{ {
$args = new stdClass(); $args = new stdClass();
$args->config_type = 'comment'; $args->config_type = 'comment';
@ -279,14 +300,14 @@ class ncenterliteController extends ncenterlite
$args->regdate = $regdate; $args->regdate = $regdate;
$args->target_browser = $module_info->browser_title; $args->target_browser = $module_info->browser_title;
$args->notify = $this->_getNotifyId($args); $args->notify = $this->_getNotifyId($args);
$output = $this->_insertNotify($args, $is_anonymous); $this->_insertNotify($args, $is_anonymous);
} }
} }
return new Object(); return new Object();
} }
function triggerAfterSendMessage(&$trigger_obj) function triggerAfterSendMessage($obj)
{ {
$oNcenterliteModel = getModel('ncenterlite'); $oNcenterliteModel = getModel('ncenterlite');
$config = $oNcenterliteModel->getConfig(); $config = $oNcenterliteModel->getConfig();
@ -302,25 +323,29 @@ class ncenterliteController extends ncenterlite
return new Object(); return new Object();
} }
$messages_member_config = $oNcenterliteModel->getUserConfig($trigger_obj->receiver_srl); if($config->user_notify_setting == 'Y')
$message_member_config = $messages_member_config->data;
if($message_member_config->message_notify != 'N')
{ {
$args = new stdClass(); $messages_member_config = $oNcenterliteModel->getUserConfig($obj->receiver_srl);
$args->config_type = 'message'; $message_member_config = $messages_member_config->data;
$args->member_srl = $trigger_obj->receiver_srl; if($message_member_config->message_notify != 'Y')
$args->srl = $trigger_obj->related_srl; {
$args->target_p_srl = '1'; return new Object();
$args->target_srl = $trigger_obj->message_srl; }
$args->type = $this->_TYPE_MESSAGE;
$args->target_type = $this->_TYPE_MESSAGE;
$args->target_summary = $trigger_obj->title;
$args->regdate = date('YmdHis');
$args->notify = $this->_getNotifyId($args);
$args->target_url = getNotEncodedFullUrl('', 'act', 'dispCommunicationMessages', 'message_srl', $trigger_obj->related_srl);
$output = $this->_insertNotify($args);
} }
$args = new stdClass();
$args->config_type = 'message';
$args->member_srl = $obj->receiver_srl;
$args->srl = $obj->related_srl;
$args->target_p_srl = '1';
$args->target_srl = $obj->message_srl;
$args->type = $this->_TYPE_MESSAGE;
$args->target_type = $this->_TYPE_MESSAGE;
$args->target_summary = $obj->title;
$args->regdate = date('YmdHis');
$args->notify = $this->_getNotifyId($args);
$args->target_url = getNotEncodedFullUrl('', 'act', 'dispCommunicationMessages', 'message_srl', $obj->related_srl);
$this->_insertNotify($args);
} }
function triggerAfterVotedupdate(&$obj) function triggerAfterVotedupdate(&$obj)
@ -1280,6 +1305,7 @@ class ncenterliteController extends ncenterlite
function insertMentionByTargets($mention_targets, $obj, $module_info, $is_anonymous, $type = 'D') function insertMentionByTargets($mention_targets, $obj, $module_info, $is_anonymous, $type = 'D')
{ {
$oNcenterliteModel = getModel('ncenterlite'); $oNcenterliteModel = getModel('ncenterlite');
$config = $oNcenterliteModel->getConfig();
if(!is_array($mention_targets)) if(!is_array($mention_targets))
{ {
@ -1294,12 +1320,14 @@ class ncenterliteController extends ncenterlite
$notify_member_srls = array(); $notify_member_srls = array();
foreach ($mention_targets as $mention_member_srl) foreach ($mention_targets as $mention_member_srl)
{ {
$target_member_config = $oNcenterliteModel->getUserConfig($mention_member_srl); if($config->user_notify_setting == 'Y')
$notify_member_config = $target_member_config->data;
if ($notify_member_config->mention_notify == 'N')
{ {
continue; $target_member_config = $oNcenterliteModel->getUserConfig($mention_member_srl);
$notify_member_config = $target_member_config->data;
if ($notify_member_config->mention_notify == 'N')
{
continue;
}
} }
$args = new stdClass(); $args = new stdClass();

View file

@ -41,6 +41,13 @@ class ncenterliteView extends ncenterlite
function dispNcenterliteUserConfig() function dispNcenterliteUserConfig()
{ {
$oNcenterliteModel = getModel('ncenterlite');
$config = $oNcenterliteModel->getConfig();
if($config->user_notify_setting != 'Y')
{
return new Object(-1, 'msg_not_use_user_setting');
}
$oMemberModel = getModel('member'); $oMemberModel = getModel('member');
$member_srl = Context::get('member_srl'); $member_srl = Context::get('member_srl');
$logged_info = Context::get('logged_info'); $logged_info = Context::get('logged_info');
@ -50,6 +57,7 @@ class ncenterliteView extends ncenterlite
{ {
$member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl); $member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl);
} }
if($logged_info->is_admin != 'Y' && $member_srl) if($logged_info->is_admin != 'Y' && $member_srl)
{ {
if($member_srl != $logged_info->member_srl) if($member_srl != $logged_info->member_srl)
@ -57,7 +65,6 @@ class ncenterliteView extends ncenterlite
return new Object(-1, 'ncenterlite_stop_no_permission_other_user'); return new Object(-1, 'ncenterlite_stop_no_permission_other_user');
} }
} }
$oNcenterliteModel = getModel('ncenterlite');
$output = $oNcenterliteModel->getUserConfig($member_srl); $output = $oNcenterliteModel->getUserConfig($member_srl);
Context::set('member_info', $member_info); Context::set('member_info', $member_info);

View file

@ -80,6 +80,18 @@
<p class="x_help-block">{$lang->about_member_menu_view}</p> <p class="x_help-block">{$lang->about_member_menu_view}</p>
</div> </div>
</div> </div>
<div class="x_control-group">
<label class="x_control-label">{$lang->user_notify_setting}</label>
<div class="x_controls">
<label class="x_inline">
<input type="radio" id="user_notify_setting_y" name="user_notify_setting" value="Y" checked="checked"|cond="$config->user_notify_setting == 'Y'" /> {$lang->use}
</label>
<label class="x_inline">
<input type="radio" id="user_notify_setting_n" name="user_notify_setting" value="N" checked="checked"|cond="$config->user_notify_setting != 'Y'" /> {$lang->notuse}
</label>
<p class="x_help-block">{$lang->about_user_notify_setting}</p>
</div>
</div>
<div class="x_control-group"> <div class="x_control-group">
<label class="x_control-label">{$lang->ncenterlite_document_event_read}</label> <label class="x_control-label">{$lang->ncenterlite_document_event_read}</label>
<div class="x_controls"> <div class="x_controls">