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

View file

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

View file

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

View file

@ -41,6 +41,13 @@ class ncenterliteView extends ncenterlite
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');
$member_srl = Context::get('member_srl');
$logged_info = Context::get('logged_info');
@ -50,6 +57,7 @@ class ncenterliteView extends ncenterlite
{
$member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl);
}
if($logged_info->is_admin != 'Y' && $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');
}
}
$oNcenterliteModel = getModel('ncenterlite');
$output = $oNcenterliteModel->getUserConfig($member_srl);
Context::set('member_info', $member_info);

View file

@ -80,6 +80,18 @@
<p class="x_help-block">{$lang->about_member_menu_view}</p>
</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">
<label class="x_control-label">{$lang->ncenterlite_document_event_read}</label>
<div class="x_controls">