Support user config of notification types, fixes #994

코어에서 지원하는 알림 종류 및 알림 수신 방법이 늘어남에 따라,
관리자가 설정한 범위 내에서 회원들이 알림 수신 방법을 선택할 수 있도록 합니다.
기존에는 수신 여부만 선택할 수 있었으나 이제 더 세부적인 설정이 가능합니다.
예를 들어 웹 알림과 푸시알림은 받고, 메일 알림과 문자 알림은 끌 수 있습니다.

이 기능을 지원하기 위해 ncenterlite_user_set 테이블 스키마를 대폭 조정합니다.
기존 설정은 가능하면 그대로 유지하려고 노력하였습니다.
This commit is contained in:
Kijin Sung 2020-12-17 23:41:31 +09:00
parent 3032784ca7
commit c52187a8f2
14 changed files with 435 additions and 531 deletions

View file

@ -2,15 +2,18 @@
$lang->ncenterlite = 'Notification Center Lite';
$lang->ncenterlite_install_version = 'Installed version';
$lang->ncenterlite_advenced_config = 'Advenced Setting';
$lang->ncenterlite_document = 'document';
$lang->ncenterlite_document = 'post';
$lang->ncenterlite_comment = 'comment';
$lang->ncenterlite_mention = 'Mention';
$lang->ncenterlite_cmd_vote = 'Vote';
$lang->ncenterlite_cmd_scrap = 'Scrap';
$lang->ncenterlite_comment_comment = 'Reply to Comment';
$lang->ncenterlite_admin_content = 'Admin Notification';
$lang->ncenterlite_custom = 'Other';
$lang->ncenterlite_type_message = 'message';
$lang->ncenterlite_type_document = 'New document';
$lang->ncenterlite_type_comment = 'New comment';
$lang->ncenterlite_type_comment_comment = 'Reply on comment';
$lang->ncenterlite_type_mention = 'Mention';
$lang->ncenterlite_type_vote = 'Vote';
$lang->ncenterlite_type_scrap = 'Scrap';
$lang->ncenterlite_type_message = 'Direct message';
$lang->ncenterlite_type_test = 'Test notification';
$lang->ncenterlite_type_admin_content = 'Admin notification';
$lang->ncenterlite_type_custom = 'Other';
$lang->ncenterlite_sender = 'Sender';
$lang->ncenterlite_addressee = 'Recipient';
$lang->ncenterlite_noti_contents = 'Contents';
@ -23,14 +26,14 @@ $lang->ncenterlite_my_settings = 'My notification settings';
$lang->ncenterlite_user_settings = 'User notification settings';
$lang->ncenterlite_userconfig_title = 'Notification Center Settings of %s';
$lang->ncenterlite_userconfig_about = 'Personalized settings of notification center can be controlled by you.';
$lang->ncenterlite_comment_noti = 'Comment notice';
$lang->ncenterlite_comment_noti_about = 'Get notice of a comment after someone replies to my documents or comments.';
$lang->ncenterlite_mention_noti = 'New Direct Message';
$lang->ncenterlite_mention_noti_about = 'Get notice of a mention after someone mention me on documents and/or comments. ( @Nickname to mention )';
$lang->ncenterlite_message_noti = 'New Message';
$lang->ncenterlite_message_noti_about = 'Get notice of a message after someone send the message to me.';
$lang->ncenterlite_comment_comment_noti = 'New Comment';
$lang->ncenterlite_vote_noti = 'New Upvote';
$lang->ncenterlite_comment_noti_about = 'Receive notifications for new comments on my posts.';
$lang->ncenterlite_comment_comment_noti_about = 'Receive notifications for replies to my comments.';
$lang->ncenterlite_mention_noti_about = 'Receive notifications for mentions (@%s).';
$lang->ncenterlite_message_noti_about = 'Receive notifications for direct messages.';
$lang->ncenterlite_vote_noti_about = 'Receive notifications when someone votes on my post or comment.';
$lang->ncenterlite_scrap_noti_about = 'Receive notifications when someone scraps my post.';
$lang->ncenterlite_admin_content_noti_about = 'Receive administrator notifications.';
$lang->ncenterlite_custom_noti_about = 'Receive all other notifications.';
$lang->ncenterlite_activate = 'Activate';
$lang->ncenterlite_inactivate = 'Inactivate';
$lang->ncenterlite_userconfig_about_warning = 'Watch out! You are controlling other user\'s settings via this page.';
@ -65,7 +68,6 @@ $lang->ncenterlite_not_have_message = 'You have no new notifications.';
$lang->ncenterlite_thisistest = '[*] This is a test notice.';
$lang->ncenterlite_delete_all = 'delete all';
$lang->ncenterlite_more = 'More';
$lang->ncenterlite_stop_login_required = 'Sign in to control your own notification settings.';
$lang->ncenterlite_stop_no_permission_other_user = 'You don\'t have the authority to read settings of other members.';
$lang->ncenterlite_stop_no_permission_other_user_settings = 'You don\'t have the authority to control settings of other members.';
$lang->ncenterlite_message_delete_notification_before = 'Notifications before %s are deleted.';
@ -125,6 +127,11 @@ $lang->anonymous_scrap = 'anonymous scrap';
$lang->about_anonymous_scrap = 'anonymize scrapper in scrap notification';
$lang->highlight_effect = 'highlight effect';
$lang->about_highlight_effect = 'it gives highlight effect to the comment when access the comment URL.';
$lang->fail_module_install = 'Failed to install module.';
$lang->cmd_web_notify = 'Web';
$lang->cmd_mail_notify = 'Email';
$lang->cmd_sms_notify = 'SMS';
$lang->cmd_push_notify = 'Push';
$lang->msg_denger_rhymix_user = '<strong>Warning!</strong> Rhymix includes notification center by default.<br />Please remove this XE-only module and reinstall the Rhymix native version.';
$lang->ncenterlite_content_type = 'Type of the contents';

View file

@ -4,12 +4,16 @@ $lang->ncenterlite_install_version = '설치된 버전';
$lang->ncenterlite_advenced_config = '고급 설정';
$lang->ncenterlite_document = '글';
$lang->ncenterlite_comment = '댓글';
$lang->ncenterlite_mention = '멘션';
$lang->ncenterlite_cmd_vote = '추천';
$lang->ncenterlite_cmd_scrap = '스크랩';
$lang->ncenterlite_comment_comment = '대댓글';
$lang->ncenterlite_type_message = '쪽지';
$lang->ncenterlite_type_test = '테스트';
$lang->ncenterlite_type_document = '글 알림';
$lang->ncenterlite_type_comment = '댓글 알림';
$lang->ncenterlite_type_comment_comment = '대댓글 알림';
$lang->ncenterlite_type_mention = '멘션 알림';
$lang->ncenterlite_type_vote = '추천 알림';
$lang->ncenterlite_type_scrap = '스크랩 알림';
$lang->ncenterlite_type_message = '쪽지 알림';
$lang->ncenterlite_type_test = '테스트 알림';
$lang->ncenterlite_type_admin_content = '관리자 알림';
$lang->ncenterlite_type_custom = '기타 알림';
$lang->ncenterlite_sender = '보낸 사람';
$lang->ncenterlite_addressee = '받는 사람';
$lang->ncenterlite_noti_contents = '내용';
@ -17,8 +21,6 @@ $lang->ncenterlite_notify_setting = '알림 미표시 페이지';
$lang->ncenterlite_about_notify_setting = '선택한 모듈에서는 알림을 표시하지 않습니다. 그리고 알림을 전송하지도 않습니다.';
$lang->ncenterlite_notify_mid_all = '관리자 알림 페이지';
$lang->ncenterlite_about_mid_all = '선택한 모듈에서는 모든 알림이 관리자에게도 전달됩니다.';
$lang->ncenterlite_admin_content = '관리자 알림';
$lang->ncenterlite_custom = '기타 알림';
$lang->ncenterlite_read = '읽음 확인';
$lang->ncenterlite_read_y = '읽음';
$lang->ncenterlite_read_n = '읽지 않음';
@ -29,18 +31,14 @@ $lang->ncenterlite_user_settings = '사용자 알림 설정';
$lang->ncenterlite_notify_settings = '알림 설정';
$lang->ncenterlite_userconfig_title = '%s님의 알림센터 설정';
$lang->ncenterlite_userconfig_about = '알림센터의 개인의 설정을 저장하도록 합니다.';
$lang->ncenterlite_comment_noti = '댓글 알림';
$lang->ncenterlite_comment_noti_about = '내 게시물에 댓글이 달릴 경우 알림을 받습니다.';
$lang->ncenterlite_mention_noti = '멘션 알림';
$lang->ncenterlite_mention_noti_about = '누군가 글, 혹은 댓글을 통해서 나를 멘션 했을 경우 알림을 받습니다. (멘션 방법 @닉네임 )';
$lang->ncenterlite_message_noti = '쪽지 알림';
$lang->ncenterlite_message_noti_about = '누군가에게 받은 쪽지를 알림을 받습니다.';
$lang->ncenterlite_comment_comment_noti = '대댓글 알림';
$lang->ncenterlite_comment_comment_noti_about = '내 댓글에 댓글이 달릴 경우 알림을 받습니다.';
$lang->ncenterlite_vote_noti = '추천 알림';
$lang->ncenterlite_vote_noti_about = '내 게시글, 혹은 댓글이 추천을 받았을 때 알림을 받습니다.';
$lang->ncenterlite_scrap_noti = '스크랩 알림';
$lang->ncenterlite_scrap_noti_about = '누군가 내 게시글을 스크랩 했을 경우 알림을 받습니다.';
$lang->ncenterlite_comment_noti_about = '내 글에 댓글이 달리면 알림을 받습니다.';
$lang->ncenterlite_comment_comment_noti_about = '내 댓글에 대댓글이 달리면 알림을 받습니다.';
$lang->ncenterlite_mention_noti_about = '누군가 글이나 댓글에서 나를 멘션(@%s)하면 알림을 받습니다.';
$lang->ncenterlite_message_noti_about = '새 쪽지가 도착하면 알림을 받습니다.';
$lang->ncenterlite_vote_noti_about = '내 글이나 댓글이 추천을 받으면 알림을 받습니다.';
$lang->ncenterlite_scrap_noti_about = '누군가 내 글을 스크랩하면 알림을 받습니다.';
$lang->ncenterlite_admin_content_noti_about = '관리자 알림을 받습니다.';
$lang->ncenterlite_custom_noti_about = '기타 알림을 받습니다.';
$lang->ncneterlite_block_individual = '개별 문서/댓글 알림 차단';
$lang->ncneterlite_block_individual_about = '개별적으로 문서/댓글을 차단할 수 있습니다.';
$lang->ncenterlite_activate = '사용';
@ -81,10 +79,9 @@ $lang->ncenterlite_not_have_message = '새 알림이 없습니다.';
$lang->ncenterlite_thisistest = '[*] 시험용 알림입니다';
$lang->ncenterlite_delete_all = '모두 삭제';
$lang->ncenterlite_more = '더보기';
$lang->ncenterlite_stop_login_required = '알림센터 설정을 하시려면 로그인 해주세요.';
$lang->ncenterlite_stop_no_permission_other_user = '다른 회원의 설정을 볼 권한이 없습니다.';
$lang->ncenterlite_stop_no_permission_other_user_settings = '다른 회원의 설정을 변경할 권한이 없습니다.';
$lang->ncenterlite_stop_no_permission_other_user_block_settings = '다른 회원의 차단 설정을 변경할 권한이 없습니다.';
$lang->ncenterlite_stop_no_permission_other_user_block_settings = '다른 회원의 설정을 변경할 권한이 없습니다.';
$lang->ncenterlite_message_delete_notification_before = '%s까지 알림 정보를 삭제했습니다.';
$lang->ncenterlite_message_delete_notification_all = '모든 알림을 삭제했습니다.';
$lang->ncenterlite_notice_list = '알림 목록';
@ -156,7 +153,8 @@ $lang->about_mention_suffix_always_cut = '\'알림센터님\'이라는 회원과
$lang->mention_limit = '멘션 갯수 제한';
$lang->about_mention_limit = '서버 과부하와 스팸을 방지하기 위해 한 글에서 지나치게 많은 회원들을 호출하지 못하도록 합니다.';
$lang->ncenterlite_msg_setting_error = '설정에 오류가 있습니다. 다시 설정해 주세요.';
$lang->ncenterlite_use_help = '회원들에게 전송할 알림을 선택할 수 있습니다. <br /> 모든 댓글 작성자에게 알림 기능은 게시글의 작성자가 댓글을 남길경우 게시글을 작성한 작성자를 제외하고 해당 글의 <strong>모든 댓글 작성자</strong>들에게 알림을 전송합니다.';
$lang->ncenterlite_use_help = '회원들에게 전송할 알림의 종류와 전달 방식을 선택할 수 있습니다.';
$lang->ncenterlite_use_othercomment_help = '글 작성자가 댓글을 남기면 해당 글에 댓글을 작성한 모든 사람에게 알림을 전송합니다.';
$lang->member_phone_variable = '회원 전화번호 변수';
$lang->member_phone_variable_about = '문자 알림 사용시 회원의 전화번호를 어디에서 불러올지 선택합니다. 회원정보의 전화번호 또는 확장변수를 선택할 수 있습니다.<br />전화번호 형태의 확장변수가 1개뿐인 경우 설치시 자동으로 설정이 저장됩니다.';
$lang->member_phone_builtin_field = '회원정보의 전화정보';
@ -166,7 +164,7 @@ $lang->anonymous_scrap = '스크랩 익명';
$lang->about_anonymous_scrap = '스크랩 알림시 스크랩한 사람을 익명으로 처리합니다.';
$lang->highlight_effect = '하이라이트 효과';
$lang->about_highlight_effect = '댓글 URL로 접근시 해당 댓글에 하이라이트 효과를 줍니다.';
$lang->fail_module_install = '모듈설치에 실패하였습니다.';
$lang->fail_module_install = '모듈 설치에 실패하였습니다.';
$lang->cmd_web_notify = '웹 알림';
$lang->cmd_mail_notify = '메일 알림';
$lang->cmd_sms_notify = '문자 알림';

View file

@ -11,28 +11,11 @@ class ncenterliteAdminView extends ncenterlite
{
$oNcenterliteModel = getModel('ncenterlite');
if(Rhymix\Framework\SMS::getDefaultDriver()->getName() === 'Dummy')
{
$sms_available = false;
}
else
{
$sms_available = true;
}
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);
Context::set('push_available', $push_avaliable);
Context::set('notify_types', NcenterliteModel::getNotifyTypes());
Context::set('sms_available', Rhymix\Framework\SMS::getDefaultDriver()->getName() !== 'Dummy');
Context::set('push_available', count(Rhymix\Framework\Config::get('push.types')) > 0);
}
function dispNcenterliteAdminSeletedmid()

View file

@ -63,72 +63,37 @@ class ncenterlite extends ModuleObject
}
}
if(!$oDB->isColumnExists('ncenterlite_notify', 'readed'))
foreach(['notify_type', 'readed', 'target_body', 'target_browser', 'target_p_srl'] as $column_name)
{
return true;
if(!$oDB->isColumnExists('ncenterlite_notify', $column_name))
{
return true;
}
}
foreach(['idx_srl', 'idx_member_srl', 'idx_regdate', 'idx_readed', 'idx_target_srl', 'idx_target_p_srl', 'idx_target_member_srl', 'idx_member_srl_and_readed'] as $index_name)
{
if(!$oDB->isIndexExists('ncenterlite_notify', $index_name))
{
return true;
}
}
if(!$oDB->isColumnExists('ncenterlite_notify', 'target_body'))
foreach(NcenterliteModel::getNotifyTypes() as $type => $srl)
{
return true;
if(!$oDB->isColumnExists('ncenterlite_user_set', $type . '_notify'))
{
return true;
}
else
{
$column_info = $oDB->getColumnInfo('ncenterlite_user_set', $type . '_notify');
if (strtolower($column_info->dbtype) !== 'varchar' || $column_info->size < 40)
{
return true;
}
}
}
if(!$oDB->isColumnExists('ncenterlite_notify', 'notify_type'))
{
return true;
}
if(!$oDB->isColumnExists('ncenterlite_notify', 'target_browser'))
{
return true;
}
if(!$oDB->isColumnExists('ncenterlite_notify', 'target_p_srl'))
{
return true;
}
if(!$oDB->isIndexExists('ncenterlite_notify', 'idx_srl'))
{
return true;
}
if(!$oDB->isIndexExists('ncenterlite_notify', 'idx_target_srl'))
{
return true;
}
if(!$oDB->isIndexExists('ncenterlite_notify', 'idx_target_p_srl'))
{
return true;
}
if(!$oDB->isIndexExists('ncenterlite_notify', 'idx_target_member_srl'))
{
return true;
}
// Composite index to speed up getNotifyList
if(!$oDB->isIndexExists('ncenterlite_notify', 'idx_member_srl_and_readed'))
{
return true;
}
if(!$oDB->isColumnExists('ncenterlite_user_set', 'comment_comment_notify'))
{
return true;
}
if(!$oDB->isColumnExists('ncenterlite_user_set', 'vote_notify'))
{
return true;
}
if(!$oDB->isColumnExists('ncenterlite_user_set', 'scrap_notify'))
{
return true;
}
// PK duplicate
if($oDB->isIndexExists('ncenterlite_notify', 'idx_notify'))
{
@ -177,54 +142,53 @@ class ncenterlite extends ModuleObject
}
}
if(!$oDB->isColumnExists('ncenterlite_notify','readed'))
{
$oDB->addColumn('ncenterlite_notify', 'readed', 'char', 1, 'N', true);
$oDB->addIndex('ncenterlite_notify', 'idx_readed', array('readed'));
$oDB->addIndex('ncenterlite_notify', 'idx_member_srl', array('member_srl'));
$oDB->addIndex('ncenterlite_notify', 'idx_regdate', array('regdate'));
}
if(!$oDB->isColumnExists('ncenterlite_notify','target_browser'))
{
$oDB->addColumn('ncenterlite_notify', 'target_browser', 'varchar', 50, true);
}
if(!$oDB->isColumnExists('ncenterlite_notify','target_body'))
{
$oDB->addColumn('ncenterlite_notify', 'target_body', 'varchar', 255, true);
}
if(!$oDB->isColumnExists('ncenterlite_notify','notify_type'))
{
$oDB->addColumn('ncenterlite_notify', 'notify_type', 'number', 11, 0);
}
if(!$oDB->isColumnExists('ncenterlite_notify','readed'))
{
$oDB->addColumn('ncenterlite_notify', 'readed', 'char', 1, 'N', true);
}
if(!$oDB->isColumnExists('ncenterlite_notify','target_body'))
{
$oDB->addColumn('ncenterlite_notify', 'target_body', 'varchar', 255, true);
}
if(!$oDB->isColumnExists('ncenterlite_notify','target_browser'))
{
$oDB->addColumn('ncenterlite_notify', 'target_browser', 'varchar', 50, true);
}
if(!$oDB->isColumnExists('ncenterlite_notify','target_p_srl'))
{
$oDB->addColumn('ncenterlite_notify', 'target_p_srl', 'number', 10, true);
}
if(!$oDB->isIndexExists('ncenterlite_notify', 'idx_srl'))
foreach(['idx_srl', 'idx_member_srl', 'idx_regdate', 'idx_readed', 'idx_target_srl', 'idx_target_p_srl', 'idx_target_member_srl'] as $index_name)
{
$oDB->addIndex('ncenterlite_notify', 'idx_srl', array('srl'));
if(!$oDB->isIndexExists('ncenterlite_notify', $index_name))
{
$oDB->addIndex('ncenterlite_notify', $index_name, array(substr($index_name, 4)));
}
}
if(!$oDB->isIndexExists('ncenterlite_notify', 'idx_target_srl'))
$prev_type = '';
foreach(NcenterliteModel::getNotifyTypes() as $type => $srl)
{
$oDB->addIndex('ncenterlite_notify', 'idx_target_srl', array('target_srl'));
if(!$oDB->isColumnExists('ncenterlite_user_set', $type . '_notify'))
{
$oDB->addColumn('ncenterlite_user_set', $type . '_notify', 'varchar', 40, null, true, $prev_type ? ($prev_type . '_notify') : 'member_srl');
}
else
{
$column_info = $oDB->getColumnInfo('ncenterlite_user_set', $type . '_notify');
if (strtolower($column_info->dbtype) !== 'varchar' || $column_info->size < 40)
{
$oDB->modifyColumn('ncenterlite_user_set', $type . '_notify', 'varchar', 40, null, true, $prev_type ? ($prev_type . '_notify') : 'member_srl');
}
}
$prev_type = $type;
}
if(!$oDB->isIndexExists('ncenterlite_notify', 'idx_target_p_srl'))
{
$oDB->addIndex('ncenterlite_notify', 'idx_target_p_srl', array('target_p_srl'));
}
if(!$oDB->isIndexExists('ncenterlite_notify', 'idx_target_member_srl'))
{
$oDB->addIndex('ncenterlite_notify', 'idx_target_member_srl', array('target_member_srl'));
}
// Composite index to speed up getNotifyList
if(!$oDB->isIndexExists('ncenterlite_notify', 'idx_member_srl_and_readed'))
{
@ -237,21 +201,6 @@ class ncenterlite extends ModuleObject
$oDB->dropIndex('ncenterlite_notify', 'idx_notify');
}
if(!$oDB->isColumnExists('ncenterlite_user_set','comment_comment_notify'))
{
$oDB->addColumn('ncenterlite_user_set', 'comment_comment_notify', 'char', 1, null, true, 'comment_notify');
}
if(!$oDB->isColumnExists('ncenterlite_user_set','vote_notify'))
{
$oDB->addColumn('ncenterlite_user_set', 'vote_notify', 'char', 1, null, true, 'mention_notify');
}
if(!$oDB->isColumnExists('ncenterlite_user_set','scrap_notify'))
{
$oDB->addColumn('ncenterlite_user_set', 'scrap_notify', 'char', 1, null, true, 'vote_notify');
}
$config = getModel('ncenterlite')->getConfig();
if(!$config)
{

View file

@ -53,40 +53,53 @@ class ncenterliteController extends ncenterlite
function procNcenterliteUserConfig()
{
$logged_info = Context::get('logged_info');
$oNcenterliteModel = getModel('ncenterlite');
$config = $oNcenterliteModel->getConfig();
$config = NcenterliteModel::getConfig();
if(!Rhymix\Framework\Session::isMember())
{
throw new Rhymix\Framework\Exceptions\MustLogin;
}
if($config->user_notify_setting != 'Y')
{
throw new Rhymix\Framework\Exception('msg_not_use_user_setting');
}
$logged_info = Context::get('logged_info');
$member_srl = Context::get('member_srl');
if(!$member_srl)
{
$member_srl = $logged_info->member_srl;
}
if($logged_info->member_srl != $member_srl && $logged_info->is_admin != 'Y')
{
throw new Rhymix\Framework\Exception('ncenterlite_stop_no_permission_other_user_settings');
}
$user_config = $oNcenterliteModel->getUserConfig($member_srl);
$obj = Context::getRequestVars();
$vars = Context::getRequestVars();
$notify_types = NcenterliteModel::getNotifyTypes();
$args = new stdClass();
$args->member_srl = $member_srl;
$args->comment_notify = $obj->comment_notify;
$args->comment_comment_notify = $obj->comment_comment_notify;
$args->mention_notify = $obj->mention_notify;
$args->message_notify = $obj->message_notify;
$args->vote_notify = $obj->vote_notify;
$args->scrap_notify = $obj->scrap_notify;
foreach ($notify_types as $type => $srl)
{
if ($type !== 'admin_content' && $type !== 'custom')
{
$disabled_list = array();
foreach (['web', 'mail', 'sms', 'push'] as $method)
{
if (isset($config->use[$type][$method]) && $config->use[$type][$method])
{
if (!isset($vars->use[$type][$method]) || !$vars->use[$type][$method])
{
$disabled_list[] = '!' . $method;
}
}
}
$args->{$type . '_notify'} = implode(',', $disabled_list);
}
}
if(!$user_config->data)
$user_config = NcenterliteModel::getUserConfig($member_srl);
if(!$user_config)
{
$insert_output = executeQuery('ncenterlite.insertUserConfig', $args);
if(!$insert_output->toBool())
@ -102,9 +115,9 @@ class ncenterliteController extends ncenterlite
return $update_output;
}
}
Rhymix\Framework\Cache::delete('ncenterlite:user_config:' . $member_srl);
$this->setMessage('success_updated');
if (Context::get('success_return_url'))
{
$this->setRedirectUrl(Context::get('success_return_url'));
@ -117,20 +130,16 @@ class ncenterliteController extends ncenterlite
function procNcenterliteInsertUnsubscribe()
{
/** @var ncenterliteModel $oNcenterliteModel */
$oNcenterliteModel = getModel('ncenterlite');
$config = $oNcenterliteModel->getConfig();
$config = NcenterliteModel::getConfig();
if(!Rhymix\Framework\Session::isMember())
{
throw new Rhymix\Framework\Exceptions\MustLogin;
}
if($config->unsubscribe !== 'Y')
{
throw new Rhymix\Framework\Exception('msg_unsubscribe_block_not_support');
}
if(!Rhymix\Framework\Session::isMember())
{
throw new Rhymix\Framework\Exception\MustLogin;
}
$obj = Context::getRequestVars();
if(!$this->user->member_srl || (!intval($obj->unsubscribe_srl) && !intval($obj->target_srl)))
@ -140,6 +149,7 @@ class ncenterliteController extends ncenterlite
if($obj->target_srl)
{
$oNcenterliteModel = getModel('ncenterlite');
$userBlockData = $oNcenterliteModel->getUserUnsubscribeConfigByTargetSrl($obj->target_srl, $this->user->member_srl);
// If there was a record directed by unsubscribe_srl, the record should be used to validate the input data.
@ -298,7 +308,7 @@ class ncenterliteController extends ncenterlite
$oModuleModel = getModel('module');
$oNcenterliteModel = getModel('ncenterlite');
$config = $oNcenterliteModel->getConfig();
$config = NcenterliteModel::getConfig();
$mention_targets = $this->_getMentionTarget($obj->title . ' ' . $obj->content);
@ -356,7 +366,7 @@ class ncenterliteController extends ncenterlite
{
/** @var ncenterliteModel $oNcenterliteModel */
$oNcenterliteModel = getModel('ncenterlite');
$config = $oNcenterliteModel->getConfig();
$config = NcenterliteModel::getConfig();
$logged_info = Context::get('logged_info');
@ -476,9 +486,8 @@ class ncenterliteController extends ncenterlite
$abs_member_srl = abs($oComment->member_srl);
if($config->user_notify_setting == 'Y')
{
$comment_member_config = $oNcenterliteModel->getUserConfig($abs_member_srl);
$parent_member_config = $comment_member_config->data;
if($parent_member_config->comment_comment_notify == 'N')
$parent_member_config = NcenterliteModel::getUserConfig($abs_member_srl);
if($parent_member_config && !$parent_member_config->comment_comment)
{
return;
}
@ -491,11 +500,6 @@ class ncenterliteController extends ncenterlite
if(!in_array($abs_member_srl, $notify_member_srls) && (!Context::get('is_logged') || ($abs_member_srl != 0 && $abs_member_srl != $logged_info->member_srl)))
{
if($oNcenterliteModel->getUserConfig($abs_member_srl)->data->comment_comment_notify == 'N')
{
return;
}
// 받는 사람이 문서를 차단하고 있을 경우
if($oNcenterliteModel->getUserUnsubscribeConfigByTargetSrl($document_srl, $abs_member_srl))
{
@ -548,9 +552,8 @@ class ncenterliteController extends ncenterlite
if($config->user_notify_setting == 'Y')
{
$comment_member_config = $oNcenterliteModel->getUserConfig($abs_member_srl);
$document_comment_member_config = $comment_member_config->data;
if($document_comment_member_config->comment_notify == 'N')
$document_comment_member_config = NcenterliteModel::getUserConfig($abs_member_srl);
if($document_comment_member_config && !$document_comment_member_config->comment)
{
return;
}
@ -585,7 +588,7 @@ class ncenterliteController extends ncenterlite
function triggerAfterSendMessage($obj)
{
$oNcenterliteModel = getModel('ncenterlite');
$config = $oNcenterliteModel->getConfig();
$config = NcenterliteModel::getConfig();
$communication_config = getModel('communication')->getConfig();
if($communication_config->enable_message != 'Y')
@ -600,9 +603,8 @@ class ncenterliteController extends ncenterlite
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 == 'N')
$target_member_config = NcenterliteModel::getUserConfig($obj->receiver_srl);
if($target_member_config && !$target_member_config->message)
{
return;
}
@ -631,15 +633,19 @@ class ncenterliteController extends ncenterlite
function triggerAfterScrap($obj)
{
$oNcenterliteModel = getModel('ncenterlite');
$config = $oNcenterliteModel->getConfig();
$config = NcenterliteModel::getConfig();
if(!isset($config->use['scrap']))
{
return;
}
if($config->user_notify_setting == 'Y' && $oNcenterliteModel->getUserConfig(abs($obj->target_member_srl))->data->scrap_notify == 'N')
if($config->user_notify_setting === 'Y')
{
return;
$target_member_config = NcenterliteModel::getUserConfig(abs($obj->target_member_srl));
if($target_member_config && !$target_member_config->scrap)
{
return;
}
}
$oModuleModel = getModel('module');
@ -668,7 +674,7 @@ class ncenterliteController extends ncenterlite
function triggerAfterDocumentVotedUpdate(&$obj)
{
$oNcenterliteModel = getModel('ncenterlite');
$config = $oNcenterliteModel->getConfig();
$config = NcenterliteModel::getConfig();
if(!isset($config->use['vote']))
{
return;
@ -677,9 +683,13 @@ class ncenterliteController extends ncenterlite
{
return;
}
if($config->user_notify_setting == 'Y' && $oNcenterliteModel->getUserConfig(abs($obj->member_srl))->data->vote_notify == 'N')
if($config->user_notify_setting == 'Y')
{
return;
$target_member_config = NcenterliteModel::getUserConfig(abs($obj->member_srl));
if ($target_member_config && !$target_member_config->vote)
{
return;
}
}
$oDocumentModel = getModel('document');
@ -705,7 +715,7 @@ class ncenterliteController extends ncenterlite
function triggerAfterDocumentVotedCancel($obj)
{
$oNcenterliteModel = getModel('ncenterlite');
$config = $oNcenterliteModel->getConfig();
$config = NcenterliteModel::getConfig();
if(empty($config->use))
{
return;
@ -734,7 +744,7 @@ class ncenterliteController extends ncenterlite
function triggerAfterCommentVotedCount($obj)
{
$oNcenterliteModel = getModel('ncenterlite');
$config = $oNcenterliteModel->getConfig();
$config = NcenterliteModel::getConfig();
if(!isset($config->use['vote']))
{
return;
@ -743,9 +753,13 @@ class ncenterliteController extends ncenterlite
{
return;
}
if($config->user_notify_setting == 'Y' && $oNcenterliteModel->getUserConfig(abs($obj->member_srl))->data->vote_notify == 'N')
if($config->user_notify_setting == 'Y')
{
return;
$target_member_config = NcenterliteModel::getUserConfig(abs($obj->member_srl));
if ($target_member_config && !$target_member_config->vote)
{
return;
}
}
$oCommentModel = getModel('comment');
@ -774,7 +788,7 @@ class ncenterliteController extends ncenterlite
function triggerAfterCommentVotedCancel($obj)
{
$oNcenterliteModel = getModel('ncenterlite');
$config = $oNcenterliteModel->getConfig();
$config = NcenterliteModel::getConfig();
if(empty($config->use))
{
return;
@ -803,7 +817,7 @@ class ncenterliteController extends ncenterlite
function triggerAfterDeleteComment(&$obj)
{
$oNcenterliteModel = getModel('ncenterlite');
$config = $oNcenterliteModel->getConfig();
$config = NcenterliteModel::getConfig();
if(empty($config->use))
{
return;
@ -836,7 +850,7 @@ class ncenterliteController extends ncenterlite
function triggerAfterDeleteDocument(&$obj)
{
$oNcenterliteModel = getModel('ncenterlite');
$config = $oNcenterliteModel->getConfig();
$config = NcenterliteModel::getConfig();
if(empty($config->use))
{
return;
@ -865,7 +879,7 @@ class ncenterliteController extends ncenterlite
}
}
$config = $oNcenterliteModel->getConfig();
$config = NcenterliteModel::getConfig();
if(empty($config->use))
{
@ -897,7 +911,7 @@ class ncenterliteController extends ncenterlite
}
$oNcenterliteModel = getModel('ncenterlite');
$config = $oNcenterliteModel->getConfig();
$config = NcenterliteModel::getConfig();
// if the array is empty, lets return.
if(empty($config->use))
{
@ -990,7 +1004,7 @@ class ncenterliteController extends ncenterlite
$module_info = Context::get('module_info');
$oNcenterliteModel = getModel('ncenterlite');
$config = $oNcenterliteModel->getConfig();
$config = NcenterliteModel::getConfig();
// if the array is empty, dose not output the notification.
if(empty($config->use))
@ -1079,7 +1093,7 @@ class ncenterliteController extends ncenterlite
$oNcenterliteModel = getModel('ncenterlite');
$oMemberController = getController('member');
$config = $oNcenterliteModel->getConfig();
$config = NcenterliteModel::getConfig();
if($config->user_config_list == 'Y')
{
@ -1118,7 +1132,7 @@ class ncenterliteController extends ncenterlite
}
$oNcenterliteModel = getModel('ncenterlite');
$config = $oNcenterliteModel->getConfig();
$config = NcenterliteModel::getConfig();
if(!Mobile::isFromMobilePhone())
{
if($config->colorset && file_exists(FileHandler::getRealPath($this->template_path . 'ncenterlite.' . $config->colorset . '.css')))
@ -1343,6 +1357,16 @@ class ncenterliteController extends ncenterlite
$args->target_user_id = '';
$args->target_email_address = '';
}
// 수신자가 웹 알림을 거부한 경우 이미 읽은 것으로 처리
if($config->user_notify_setting == 'Y')
{
$target_member_config = NcenterliteModel::getUserConfig($args->member_srl);
if($target_member_config && isset($target_member_config->{$args->config_type}) && !in_array('web', $target_member_config->{$args->config_type}))
{
$args->readed = 'Y';
}
}
$trigger_output = ModuleHandler::triggerCall('ncenterlite._insertNotify', 'before', $args);
if(!$trigger_output->toBool() || $trigger_output->getMessage() === 'cancel')
@ -1419,7 +1443,7 @@ class ncenterliteController extends ncenterlite
{
$oNcenterliteModel = getModel('ncenterlite');
$oMemberModel = getModel('member');
$config = $oNcenterliteModel->getConfig();
$config = NcenterliteModel::getConfig();
$logged_info = Context::get('logged_info');
// Extract mentions.
@ -1493,19 +1517,25 @@ class ncenterliteController extends ncenterlite
function sendPushMessage($args)
{
$oNcenterliteModel = getModel('ncenterlite');
$config = $oNcenterliteModel->getConfig();
$config = NcenterliteModel::getConfig();
if(!isset($config->use[$args->config_type]['push']))
{
return false;
}
if($config->user_notify_setting == 'Y')
{
$target_member_config = NcenterliteModel::getUserConfig($args->member_srl);
if($target_member_config && isset($target_member_config->{$args->config_type}) && !in_array('push', $target_member_config->{$args->config_type}))
{
return;
}
}
if($this->user->member_srl == $args->member_srl && $args->target_type != $this->_TYPE_CUSTOM)
{
return false;
}
$oNcenterliteModel = getModel('ncenterlite');
$content = $oNcenterliteModel->getNotificationText($args);
$content = htmlspecialchars_decode(preg_replace('/<\/?(strong|)[^>]*>/', '', $content));
@ -1526,19 +1556,25 @@ class ncenterliteController extends ncenterlite
function sendSmsMessage($args)
{
$oNcenterliteModel = getModel('ncenterlite');
$config = $oNcenterliteModel->getConfig();
$config = NcenterliteModel::getConfig();
if(!isset($config->use[$args->config_type]['sms']))
{
return false;
}
if($config->user_notify_setting == 'Y')
{
$target_member_config = NcenterliteModel::getUserConfig($args->member_srl);
if($target_member_config && isset($target_member_config->{$args->config_type}) && !in_array('sms', $target_member_config->{$args->config_type}))
{
return;
}
}
if($this->user->member_srl == $args->member_srl && $args->target_type != $this->_TYPE_CUSTOM)
{
return false;
}
$oNcenterliteModel = getModel('ncenterlite');
$content = $oNcenterliteModel->getNotificationText($args);
$content = htmlspecialchars_decode(preg_replace('/<\/?(strong|)[^>]*>/', '', $content));
@ -1548,7 +1584,7 @@ class ncenterliteController extends ncenterlite
return false;
}
$member_info = getModel('member')->getMemberInfoByMemberSrl($args->member_srl);
$member_info = MemberModel::getMemberInfoByMemberSrl($args->member_srl);
if($config->variable_name)
{
if($config->variable_name === '#')
@ -1588,43 +1624,33 @@ class ncenterliteController extends ncenterlite
function sendMailMessage($args)
{
$oNcenterliteModel = getModel('ncenterlite');
$config = $oNcenterliteModel->getConfig();
$config = NcenterliteModel::getConfig();
if(!isset($config->use[$args->config_type]['mail']))
{
return false;
}
if($config->user_notify_setting == 'Y')
{
$target_member_config = NcenterliteModel::getUserConfig($args->member_srl);
if($target_member_config && isset($target_member_config->{$args->config_type}) && !in_array('mail', $target_member_config->{$args->config_type}))
{
return;
}
}
if($this->user->member_srl == $args->member_srl && $args->target_type != $this->_TYPE_CUSTOM)
{
return false;
}
$oNcenterliteModel = getModel('ncenterlite');
$content = $oNcenterliteModel->getNotificationText($args);
switch ($args->config_type)
$mail_title = lang('ncenterlite_type_' . $args->config_type);
if ($mail_title === 'ncenterlite_type_' . $args->config_type)
{
case 'admin_content':
$mail_title = Context::getSiteTitle() . ' - ' . lang('ncenterlite_admin_content');
break;
case 'comment_comment':
$mail_title = Context::getSiteTitle() . ' - ' . lang('ncenterlite_comment_comment_noti');
break;
case 'comment':
$mail_title = Context::getSiteTitle() . ' - ' . lang('ncenterlite_comment_noti');
break;
case 'message':
$mail_title = Context::getSiteTitle() . ' - ' . lang('ncenterlite_message_noti');
break;
case 'vote':
$mail_title = Context::getSiteTitle() . ' - ' . lang('ncenterlite_vote_noti');
break;
case 'mention':
$mail_title = Context::getSiteTitle() . ' - ' . lang('ncenterlite_mention_noti');
break;
default:
return false;
$mail_title = lang('ncenterlite_type_custom');
}
$mail_title = Context::getSiteTitle() . ' - ' . $mail_title;
$target_url = $args->target_url;
if (!preg_match('!^https?://!', $target_url))
@ -1633,7 +1659,7 @@ class ncenterliteController extends ncenterlite
}
$mail_content = sprintf("<p>%s</p>\n<p>%s</p>\n", $content, $target_url);
$member_info = getModel('member')->getMemberInfoByMemberSrl($args->member_srl);
$member_info = MemberModel::getMemberInfoByMemberSrl($args->member_srl);
$oMail = new \Rhymix\Framework\Mail();
$oMail->setSubject($mail_title);
@ -1654,7 +1680,7 @@ class ncenterliteController extends ncenterlite
function insertMentionByTargets($mention_targets, $obj, $module_info, $is_anonymous, $type = 'D')
{
$oNcenterliteModel = getModel('ncenterlite');
$config = $oNcenterliteModel->getConfig();
$config = NcenterliteModel::getConfig();
if(!is_array($mention_targets))
{
@ -1671,9 +1697,8 @@ class ncenterliteController extends ncenterlite
{
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')
$target_member_config = NcenterliteModel::getUserConfig($mention_member_srl);
if ($target_member_config && !$target_member_config->mention)
{
continue;
}
@ -1738,7 +1763,7 @@ class ncenterliteController extends ncenterlite
/** @var ncenterliteModel $oNcenterliteModel */
$oNcenterliteModel = getModel('ncenterlite');
$config = $oNcenterliteModel->getConfig();
$config = NcenterliteModel::getConfig();
if($config->unsubscribe !== 'Y') return;
@ -1762,7 +1787,7 @@ class ncenterliteController extends ncenterlite
/** @var ncenterliteModel $oNcenterliteModel */
$oNcenterliteModel = getModel('ncenterlite');
$config = $oNcenterliteModel->getConfig();
$config = NcenterliteModel::getConfig();
if($config->unsubscribe !== 'Y') return;

View file

@ -1,13 +1,14 @@
<?php
class ncenterliteModel extends ncenterlite
{
private static $config = NULL;
var $notify_args;
var $notify_arguments;
protected static $_config = NULL;
protected static $_user_config = [];
public $notify_args;
public $notify_arguments;
function getConfig()
public static function getConfig()
{
if(self::$config === NULL)
if(self::$_config === NULL)
{
$oModuleModel = getModel('module');
$config = $oModuleModel->getModuleConfig('ncenterlite');
@ -21,14 +22,11 @@ class ncenterliteModel extends ncenterlite
{
if($config->use == 'Y')
{
$config->use = array(
'mention' => array('web' => 1),
'comment' => array('web' => 1),
'comment_comment' => array('web' => 1),
'vote' => array('web' => 1),
'message' => array('web' => 1),
'admin_content' => array('web' => 1),
);
$config->use = array();
foreach (self::getNotifyTypes() as $type => $srl)
{
$config->use[$type] = array('web' => 1);
}
}
else
{
@ -78,10 +76,43 @@ class ncenterliteModel extends ncenterlite
$config->highlight_effect = 'Y';
}
self::$config = $config;
self::$_config = $config;
}
return self::$config;
return self::$_config;
}
public static function getNotifyTypes()
{
$default = array(
'comment' => 0,
'comment_comment' => 0,
'mention' => 0,
'vote' => 0,
'scrap' => 0,
'message' => 0,
);
if (Context::get('logged_info')->is_admin === 'Y')
{
$default['admin_content'] = 0;
}
$custom_types = Rhymix\Framework\Cache::get('ncenterlite:notify_types');
if (!$custom_types)
{
$custom_types = executeQueryArray('ncenterlite.getNotifyType', [])->data;
Rhymix\Framework\Cache::set('ncenterlite:notify_types', $custom_types, 0, true);
}
foreach ($custom_types as $type)
{
if (!isset($default[$type->notify_type_id]))
{
$default[$type->notify_type_id] = $type->notify_type_srl;
}
}
$default['custom'] = 0;
return $default;
}
function getNotifyTypebySrl($notify_srl)
@ -133,7 +164,9 @@ class ncenterliteModel extends ncenterlite
function insertNotifyType($args)
{
return executeQuery('ncenterlite.insertNotifyType',$args);
$output = executeQuery('ncenterlite.insertNotifyType', $args);
Rhymix\Framework\Cache::delete('ncenterlite:notify_types');
return $output;
}
/**
@ -141,23 +174,63 @@ class ncenterliteModel extends ncenterlite
* @param null $member_srl
* @return object|bool
*/
function getUserConfig($member_srl = null)
public static function getUserConfig($member_srl = null)
{
if(!$member_srl)
{
if(!Context::get('is_logged'))
$logged_info = Context::get('logged_info');
$member_srl = $logged_info->member_srl ?? 0;
if (!$member_srl)
{
return false;
}
$logged_info = Context::get('logged_info');
$member_srl = $logged_info->member_srl;
}
$member_srl = intval($member_srl);
$config = self::$_user_config[$member_srl] ?? null;
if ($config !== null)
{
return $config;
}
$config = Rhymix\Framework\Cache::get('ncenterlite:user_config:' . $member_srl);
if ($config !== null)
{
return $config;
}
$args = new stdClass();
$args->member_srl = $member_srl;
$output = executeQuery('ncenterlite.getUserConfig', $args);
return $output;
if (!$output->data)
{
$config = false;
}
else
{
$config = new stdClass;
foreach (self::getNotifyTypes() as $type => $srl)
{
$disabled_list = $output->data->{$type . '_notify'} ?? '';
if ($disabled_list === 'N' || strlen($disabled_list) === 1)
{
$config->{$type} = [];
}
elseif ($disabled_list === '')
{
$config->{$type} = ['web', 'mail', 'sms', 'push'];
}
else
{
$disabled_list = array_map(function($str) { return substr($str, 1); }, explode(',', $disabled_list));
$config->{$type} = array_diff(['web', 'mail', 'sms', 'push'], $disabled_list);
}
}
}
self::$_user_config[$member_srl] = $config;
Rhymix\Framework\Cache::set('ncenterlite:user_config:' . $member_srl, $config);
return $config;
}
function getAllMemberConfig()
@ -463,7 +536,7 @@ class ncenterliteModel extends ncenterlite
// Message.
case 'E':
$type = lang('ncenterlite_type_message');
$type = lang('member_message');
break;
// Test.

View file

@ -48,27 +48,30 @@ class ncenterliteView extends ncenterlite
throw new Rhymix\Framework\Exception('msg_not_use_user_setting');
}
$oMemberModel = getModel('member');
$member_srl = Context::get('member_srl');
$logged_info = Context::get('logged_info');
if(!Context::get('is_logged')) throw new Rhymix\Framework\Exception('ncenterlite_stop_login_required');
if($logged_info->is_admin == 'Y' && $member_srl)
if(!Rhymix\Framework\Session::getMemberSrl())
{
$member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl);
throw new Rhymix\Framework\Exceptions\MustLogin;
}
if($logged_info->is_admin != 'Y' && $member_srl)
$member_srl = Context::get('member_srl');
if($this->user->isAdmin() && $member_srl)
{
if($member_srl != $logged_info->member_srl)
$member_info = MemberModel::getMemberInfoByMemberSrl($member_srl);
}
if(!$this->user->isAdmin() && $member_srl)
{
if($member_srl != $this->user->member_srl)
{
throw new Rhymix\Framework\Exception('ncenterlite_stop_no_permission_other_user');
throw new Rhymix\Framework\Exceptions\NotPermitted('ncenterlite_stop_no_permission_other_user');
}
}
$output = $oNcenterliteModel->getUserConfig($member_srl);
Context::set('member_info', $member_info);
Context::set('user_config', $output->data);
Context::set('user_config', NcenterliteModel::getUserConfig($member_srl));
Context::set('module_config', NcenterliteModel::getConfig());
Context::set('notify_types', NcenterliteModel::getNotifyTypes());
Context::set('sms_available', Rhymix\Framework\SMS::getDefaultDriver()->getName() !== 'Dummy');
Context::set('push_available', count(Rhymix\Framework\Config::get('push.types')) > 0);
$this->setTemplateFile('userconfig');
}
@ -89,19 +92,17 @@ class ncenterliteView extends ncenterlite
if(!Rhymix\Framework\Session::getMemberSrl())
{
throw new Rhymix\Framework\Exception('ncenterlite_stop_login_required');
throw new Rhymix\Framework\Exceptions\MustLogin;
}
$member_srl = Context::get('member_srl');
if(!$member_srl)
{
$member_srl = $this->user->member_srl;
}
if($this->user->is_admin !== 'Y' && intval($this->user->member_srl) !== intval($member_srl))
if(!$this->user->isAdmin() && intval($this->user->member_srl) !== intval($member_srl))
{
throw new \Rhymix\Framework\Exception('msg_unsubscribe_not_permission');
throw new Rhymix\Framework\Exceptions\NotPermitted('msg_unsubscribe_not_permission');
}
$args = new stdClass();

View file

@ -2,12 +2,13 @@
<tables>
<table name="ncenterlite_notify_type" />
</tables>
<columns>
<column name="*" />
</columns>
<conditions>
<condition operation="equal" column="notify_type_srl" var="notify_type_srl" notnull="notnull" />
<condition operation="equal" column="notify_type_srl" var="notify_type_srl" />
</conditions>
<navigation>
<index var="list_order" default="notify_type_srl" order="asc" />
</navigation>
</query>

View file

@ -17,7 +17,8 @@
<column name="target_summary" var="target_summary" />
<column name="target_browser" var="target_browser" />
<column name="target_url" var="target_url" notnull="notnull" />
<column name="regdate" var="regdate" />
<column name="readed" var="readed" default="N" />
<column name="regdate" var="regdate" default="curdate()" />
<column name="target_p_srl" var="target_p_srl" filter="number" />
<column name="notify_type" var="notify_type" />
</columns>

View file

@ -1,10 +1,12 @@
<table name="ncenterlite_user_set">
<column name="member_srl" type="number" size="11" notnull="notnull" primary_key="primary_key" brief="member_srl 고유맴버 번호" />
<column name="comment_notify" type="char" size="1" notnull="notnull" />
<column name="comment_comment_notify" type="char" size="1" notnull="notnull" />
<column name="mention_notify" type="char" size="1" notnull="notnull" />
<column name="vote_notify" type="char" size="1" notnull="notnull" />
<column name="scrap_notify" type="char" size="1" notnull="notnull" />
<column name="message_notify" type="char" size="1" notnull="notnull" />
<column name="member_srl" type="number" size="11" notnull="notnull" primary_key="primary_key" />
<column name="comment_notify" type="varchar" size="40" notnull="notnull" />
<column name="comment_comment_notify" type="varchar" size="40" notnull="notnull" />
<column name="mention_notify" type="varchar" size="40" notnull="notnull" />
<column name="vote_notify" type="varchar" size="40" notnull="notnull" />
<column name="scrap_notify" type="varchar" size="40" notnull="notnull" />
<column name="message_notify" type="varchar" size="40" notnull="notnull" />
<column name="admin_content_notify" type="varchar" size="40" notnull="notnull" />
<column name="custom_notify" type="varchar" size="40" notnull="notnull" />
<column name="regdate" type="date" index="idx_regdate" />
</table>

View file

@ -20,78 +20,33 @@
</h1>
<p>{$lang->ncenterlite_userconfig_about} <strong style="color:#ff0000" cond="$member_srl && $member_srl != $logged_info->member_srl">({$lang->ncenterlite_userconfig_about_warning})</strong></p>
<div class="control-group">
<label class="control-label">{$lang->ncenterlite_comment_noti}</label>
<div class="controls">
<label class="inline">
<input type="radio" name="comment_notify" value="Y" checked="checked"|cond="$user_config->comment_notify != 'N'" /> {$lang->ncenterlite_activate}
</label>
<label class="inline">
<input type="radio" name="comment_notify" value="N" checked="checked"|cond="$user_config->comment_notify == 'N'" /> {$lang->ncenterlite_inactivate}
</label>
<p class="help-block">{$lang->ncenterlite_comment_noti_about}</p>
</div>
</div>
<div class="control-group">
<label class="control-label">{$lang->ncenterlite_mention_noti}</label>
<div class="controls">
<label class="inline">
<input type="radio" name="mention_notify" value="Y" checked="checked"|cond="$user_config->mention_notify != 'N'" /> {$lang->ncenterlite_activate}
</label>
<label class="inline">
<input type="radio" name="mention_notify" value="N" checked="checked"|cond="$user_config->mention_notify == 'N'" /> {$lang->ncenterlite_inactivate}
</label>
<p class="help-block">{$lang->ncenterlite_mention_noti_about}</p>
</div>
</div>
<div class="control-group">
<label class="control-label">{$lang->ncenterlite_message_noti}</label>
<div class="controls">
<label class="inline">
<input type="radio" name="message_notify" value="Y" checked="checked"|cond="$user_config->message_notify != 'N'" /> {$lang->ncenterlite_activate}
</label>
<label class="inline">
<input type="radio" name="message_notify" value="N" checked="checked"|cond="$user_config->message_notify == 'N'" /> {$lang->ncenterlite_inactivate}
</label>
<p class="help-block">{$lang->ncenterlite_message_noti_about}</p>
</div>
</div>
<div class="control-group">
<label class="control-label">{$lang->ncenterlite_vote_noti}</label>
<div class="controls">
<label class="inline">
<input type="radio" name="vote_notify" value="Y" checked="checked"|cond="$user_config->vote_notify != 'N'" /> {$lang->ncenterlite_activate}
</label>
<label class="inline">
<input type="radio" name="vote_notify" value="N" checked="checked"|cond="$user_config->vote_notify == 'N'" /> {$lang->ncenterlite_inactivate}
</label>
<p class="help-block">{$lang->ncenterlite_vote_noti_about}</p>
</div>
</div>
<div class="control-group">
<label class="control-label">{$lang->ncenterlite_scrap_noti}</label>
<div class="controls">
<label class="inline">
<input type="radio" name="scrap_notify" value="Y" checked="checked"|cond="$user_config->scrap_notify != 'N'" /> {$lang->ncenterlite_activate}
</label>
<label class="inline">
<input type="radio" name="scrap_notify" value="N" checked="checked"|cond="$user_config->scrap_notify == 'N'" /> {$lang->ncenterlite_inactivate}
</label>
<p class="help-block">{$lang->ncenterlite_scrap_noti_about}</p>
</div>
</div>
<div class="control-group">
<label class="control-label">{$lang->ncenterlite_comment_comment_noti}</label>
<div class="controls">
<label class="inline">
<input type="radio" name="comment_comment_notify" value="Y" checked="checked"|cond="$user_config->comment_comment_notify != 'N'" /> {$lang->ncenterlite_activate}
</label>
<label class="inline">
<input type="radio" name="comment_comment_notify" value="N" checked="checked"|cond="$user_config->comment_comment_notify == 'N'" /> {$lang->ncenterlite_inactivate}
</label>
<p class="help-block">{$lang->ncenterlite_comment_comment_noti_about}</p>
</div>
</div>
{@ $uc = get_object_vars($user_config)}
<!--@foreach($notify_types as $notify_type => $notify_srl)-->
<!--@if($notify_type !== 'admin_content' && $notify_type !== 'custom')-->
<div class="control-group">
<label class="x_control-label">{$lang->get('ncenterlite_type_' . $notify_type)}</label>
<div class="x_controls">
{@ $available = isset($module_config->use[$notify_type]['web']) && $module_config->use[$notify_type]['web'] !== 'N'}
{@ $selected = in_array('web', $uc[$notify_type])}
<label class="x_inline"><input type="checkbox" name="use[{$notify_type}][web]" value="1" disabled="disabled"|cond="!$available" checked="checked"|cond="$available && $selected" /> {$lang->cmd_web_notify}</label>
{@ $available = isset($module_config->use[$notify_type]['mail']) && $module_config->use[$notify_type]['mail'] !== 'N'}
{@ $selected = in_array('mail', $uc[$notify_type])}
<label class="x_inline"><input type="checkbox" name="use[{$notify_type}][mail]" value="1" disabled="disabled"|cond="!$available" checked="checked"|cond="$available && $selected" /> {$lang->cmd_mail_notify}</label>
<!--@if($sms_available)-->
{@ $available = isset($module_config->use[$notify_type]['sms']) && $module_config->use[$notify_type]['sms'] !== 'N'}
{@ $selected = in_array('sms', $uc[$notify_type])}
<label class="x_inline"><input type="checkbox" name="use[{$notify_type}][sms]" value="1" disabled="disabled"|cond="!$available" checked="checked"|cond="$available && $selected" /> {$lang->cmd_sms_notify}</label>
<!--@endif-->
<!--@if($push_available)-->
{@ $available = isset($module_config->use[$notify_type]['push']) && $module_config->use[$notify_type]['push'] !== 'N'}
{@ $selected = in_array('push', $uc[$notify_type])}
<label class="x_inline"><input type="checkbox" name="use[{$notify_type}][push]" value="1" disabled="disabled"|cond="!$available" checked="checked"|cond="$available && $selected" /> {$lang->cmd_push_notify}</label>
<!--@endif-->
<p class="help-block">{sprintf($lang->get('ncenterlite_' . $notify_type . '_noti_about'), $logged_info->nick_name)}</p>
</div>
</div>
<!--@endif-->
<!--@endforeach-->
</section>
<div class="clearfix btnArea">
<div class="pull-right">

View file

@ -2,7 +2,7 @@
<include target="../../../member/skins/default/common_header.html" />
<div class="xm">
<div cond="$XE_VALIDATOR_MESSAGE && $XE_VALIDATOR_ID == 'modules/ncenterlite/skins/default_bottom/userconfig/1'" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
<div cond="$XE_VALIDATOR_MESSAGE && $XE_VALIDATOR_ID == 'modules/ncenterlite/skins/default/userconfig/1'" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
<p>{$XE_VALIDATOR_MESSAGE}</p>
</div>
@ -10,7 +10,7 @@
<form ruleset="insertConfig" action="./" method="post" class="form-horizontal" id="fo_ncenterlite">
<input type="hidden" name="module" value="ncenterlite" />
<input type="hidden" name="act" value="procNcenterliteUserConfig" />
<input type="hidden" name="xe_validator_id" value="modules/ncenterlite/skins/default_bottom/userconfig/1" />
<input type="hidden" name="xe_validator_id" value="modules/ncenterlite/skins/default/userconfig/1" />
<input type="hidden" name="member_srl" value="{$member_srl}">
<section class="section">
<h1><block cond="$member_info">{@$user_str = $member_info->nick_name}</block>
@ -20,78 +20,33 @@
</h1>
<p>{$lang->ncenterlite_userconfig_about} <strong style="color:#ff0000" cond="$member_srl && $member_srl != $logged_info->member_srl">({$lang->ncenterlite_userconfig_about_warning})</strong></p>
<div class="control-group">
<label class="control-label">{$lang->ncenterlite_comment_noti}</label>
<div class="controls">
<label class="inline">
<input type="radio" name="comment_notify" value="Y" checked="checked"|cond="$user_config->comment_notify != 'N'" /> {$lang->ncenterlite_activate}
</label>
<label class="inline">
<input type="radio" name="comment_notify" value="N" checked="checked"|cond="$user_config->comment_notify == 'N'" /> {$lang->ncenterlite_inactivate}
</label>
<p class="help-block">{$lang->ncenterlite_comment_noti_about}</p>
</div>
</div>
<div class="control-group">
<label class="control-label">{$lang->ncenterlite_mention_noti}</label>
<div class="controls">
<label class="inline">
<input type="radio" name="mention_notify" value="Y" checked="checked"|cond="$user_config->mention_notify != 'N'" /> {$lang->ncenterlite_activate}
</label>
<label class="inline">
<input type="radio" name="mention_notify" value="N" checked="checked"|cond="$user_config->mention_notify == 'N'" /> {$lang->ncenterlite_inactivate}
</label>
<p class="help-block">{$lang->ncenterlite_mention_noti_about}</p>
</div>
</div>
<div class="control-group">
<label class="control-label">{$lang->ncenterlite_message_noti}</label>
<div class="controls">
<label class="inline">
<input type="radio" name="message_notify" value="Y" checked="checked"|cond="$user_config->message_notify != 'N'" /> {$lang->ncenterlite_activate}
</label>
<label class="inline">
<input type="radio" name="message_notify" value="N" checked="checked"|cond="$user_config->message_notify == 'N'" /> {$lang->ncenterlite_inactivate}
</label>
<p class="help-block">{$lang->ncenterlite_message_noti_about}</p>
</div>
</div>
<div class="control-group">
<label class="control-label">{$lang->ncenterlite_vote_noti}</label>
<div class="controls">
<label class="inline">
<input type="radio" name="vote_notify" value="Y" checked="checked"|cond="$user_config->vote_notify != 'N'" /> {$lang->ncenterlite_activate}
</label>
<label class="inline">
<input type="radio" name="vote_notify" value="N" checked="checked"|cond="$user_config->vote_notify == 'N'" /> {$lang->ncenterlite_inactivate}
</label>
<p class="help-block">{$lang->ncenterlite_vote_noti_about}</p>
</div>
</div>
<div class="control-group">
<label class="control-label">{$lang->ncenterlite_scrap_noti}</label>
<div class="controls">
<label class="inline">
<input type="radio" name="scrap_notify" value="Y" checked="checked"|cond="$user_config->scrap_notify != 'N'" /> {$lang->ncenterlite_activate}
</label>
<label class="inline">
<input type="radio" name="scrap_notify" value="N" checked="checked"|cond="$user_config->scrap_notify == 'N'" /> {$lang->ncenterlite_inactivate}
</label>
<p class="help-block">{$lang->ncenterlite_scrap_noti_about}</p>
</div>
</div>
<div class="control-group">
<label class="control-label">{$lang->ncenterlite_comment_comment_noti}</label>
<div class="controls">
<label class="inline">
<input type="radio" name="comment_comment_notify" value="Y" checked="checked"|cond="$user_config->comment_comment_notify != 'N'" /> {$lang->ncenterlite_activate}
</label>
<label class="inline">
<input type="radio" name="comment_comment_notify" value="N" checked="checked"|cond="$user_config->comment_comment_notify == 'N'" /> {$lang->ncenterlite_inactivate}
</label>
<p class="help-block">{$lang->ncenterlite_comment_comment_noti_about}</p>
</div>
</div>
{@ $uc = get_object_vars($user_config)}
<!--@foreach($notify_types as $notify_type => $notify_srl)-->
<!--@if($notify_type !== 'admin_content' && $notify_type !== 'custom')-->
<div class="control-group">
<label class="x_control-label">{$lang->get('ncenterlite_type_' . $notify_type)}</label>
<div class="x_controls">
{@ $available = isset($module_config->use[$notify_type]['web']) && $module_config->use[$notify_type]['web'] !== 'N'}
{@ $selected = in_array('web', $uc[$notify_type])}
<label class="x_inline"><input type="checkbox" name="use[{$notify_type}][web]" value="1" disabled="disabled"|cond="!$available" checked="checked"|cond="$available && $selected" /> {$lang->cmd_web_notify}</label>
{@ $available = isset($module_config->use[$notify_type]['mail']) && $module_config->use[$notify_type]['mail'] !== 'N'}
{@ $selected = in_array('mail', $uc[$notify_type])}
<label class="x_inline"><input type="checkbox" name="use[{$notify_type}][mail]" value="1" disabled="disabled"|cond="!$available" checked="checked"|cond="$available && $selected" /> {$lang->cmd_mail_notify}</label>
<!--@if($sms_available)-->
{@ $available = isset($module_config->use[$notify_type]['sms']) && $module_config->use[$notify_type]['sms'] !== 'N'}
{@ $selected = in_array('sms', $uc[$notify_type])}
<label class="x_inline"><input type="checkbox" name="use[{$notify_type}][sms]" value="1" disabled="disabled"|cond="!$available" checked="checked"|cond="$available && $selected" /> {$lang->cmd_sms_notify}</label>
<!--@endif-->
<!--@if($push_available)-->
{@ $available = isset($module_config->use[$notify_type]['push']) && $module_config->use[$notify_type]['push'] !== 'N'}
{@ $selected = in_array('push', $uc[$notify_type])}
<label class="x_inline"><input type="checkbox" name="use[{$notify_type}][push]" value="1" disabled="disabled"|cond="!$available" checked="checked"|cond="$available && $selected" /> {$lang->cmd_push_notify}</label>
<!--@endif-->
<p class="help-block">{sprintf($lang->get('ncenterlite_' . $notify_type . '_noti_about'), $logged_info->nick_name)}</p>
</div>
</div>
<!--@endif-->
<!--@endforeach-->
</section>
<div class="clearfix btnArea">
<div class="pull-right">
@ -100,4 +55,4 @@
</div>
</form>
</div>
<include target="../../../member/skins/default/common_footer.html" />
<include target="../../../member/skins/default/common_footer.html" />

View file

@ -9,64 +9,18 @@
<section class="section">
<div class="x_control-group">
<label class="x_control-label">{$lang->ncenterlite_mention}</label>
<!--@foreach($notify_types as $notify_type => $notify_srl)-->
<label class="x_control-label">{$lang->get('ncenterlite_type_' . $notify_type)}</label>
<div class="x_controls">
<label class="x_inline"><input type="checkbox" name="use[{$notify_type}][web]" value="1" checked="checked"|cond="isset($config->use[$notify_type]['web'])" /> {$lang->cmd_web_notify}</label>
<label class="x_inline"><input type="checkbox" name="use[{$notify_type}][mail]" value="1" checked="checked"|cond="isset($config->use[$notify_type]['mail'])" /> {$lang->cmd_mail_notify}</label>
<label class="x_inline" disabled="disabled"|cond="!$sms_available"><input type="checkbox" name="use[{$notify_type}][sms]" value="1" disabled="disabled"|cond="!$sms_available" checked="checked"|cond="isset($config->use[$notify_type]['sms'])" /> {$lang->cmd_sms_notify}</label>
<label class="x_inline" disabled="disabled"|cond="!$push_available"><input type="checkbox" name="use[{$notify_type}][push]" value="1" disabled="disabled"|cond="!$push_available" checked="checked"|cond="isset($config->use[$notify_type]['push'])" /> {$lang->cmd_push_notify}</label>
</div>
<!--@endforeach-->
<label class="x_control-label">&nbsp;</label>
<div class="x_controls">
<label for="mention_web" class="x_inline"><input type="checkbox" name="use[mention][web]" id="mention_web" value="1" checked="checked"|cond="isset($config->use['mention']['web'])" /> {$lang->cmd_web_notify}</label>
<label for="mention_mail" class="x_inline"><input type="checkbox" name="use[mention][mail]" id="mention_mail" value="1" checked="checked"|cond="isset($config->use['mention']['mail'])" /> {$lang->cmd_mail_notify}</label>
<label for="mention_sms" class="x_inline" disabled="disabled"|cond="!$sms_available"><input type="checkbox" name="use[mention][sms]" id="mention_sms" value="1" disabled="disabled"|cond="!$sms_available" checked="checked"|cond="isset($config->use['mention']['sms'])" /> {$lang->cmd_sms_notify}</label>
<label for="mention_push" class="x_inline" disabled="disabled"|cond="!$push_available"><input type="checkbox" name="use[mention][push]" id="mention_push" value="1" disabled="disabled"|cond="!$push_available" checked="checked"|cond="isset($config->use['mention']['push'])" /> {$lang->cmd_push_notify}</label>
</div>
<label class="x_control-label">{$lang->ncenterlite_comment}</label>
<div class="x_controls">
<label for="comment_web" class="x_inline"><input type="checkbox" name="use[comment][web]" id="comment_web" value="1" checked="checked"|cond="isset($config->use['comment']['web'])" /> {$lang->cmd_web_notify}</label>
<label for="comment_mail" class="x_inline"><input type="checkbox" name="use[comment][mail]" id="comment_mail" value="1" checked="checked"|cond="isset($config->use['comment']['mail'])" /> {$lang->cmd_mail_notify}</label>
<label for="comment_sms" class="x_inline" disabled="disabled"|cond="!$sms_available"><input type="checkbox" name="use[comment][sms]" id="comment_sms" value="1" disabled="disabled"|cond="!$sms_available" checked="checked"|cond="isset($config->use['comment']['sms'])" /> {$lang->cmd_sms_notify}</label>
<label for="comment_push" class="x_inline" disabled="disabled"|cond="!$push_available"><input type="checkbox" name="use[comment][push]" id="comment_push" value="1" disabled="disabled"|cond="!$push_available" checked="checked"|cond="isset($config->use['comment']['push'])" /> {$lang->cmd_push_notify}</label>
</div>
<label class="x_control-label">{$lang->ncenterlite_comment_comment}</label>
<div class="x_controls">
<label for="comment_comment_web" class="x_inline"><input type="checkbox" name="use[comment_comment][web]" id="comment_comment_web" value="1" checked="checked"|cond="isset($config->use['comment_comment']['web'])" /> {$lang->cmd_web_notify}</label>
<label for="comment_comment_mail" class="x_inline"><input type="checkbox" name="use[comment_comment][mail]" id="comment_comment_mail" value="1" checked="checked"|cond="isset($config->use['comment_comment']['mail'])" /> {$lang->cmd_mail_notify}</label>
<label for="comment_comment_sms" class="x_inline" disabled="disabled"|cond="!$sms_available"><input type="checkbox" name="use[comment_comment][sms]" id="comment_comment_sms" value="1" disabled="disabled"|cond="!$sms_available" checked="checked"|cond="isset($config->use['comment_comment']['sms'])" /> {$lang->cmd_sms_notify}</label>
<label for="comment_comment_push" class="x_inline" disabled="disabled"|cond="!$push_available"><input type="checkbox" name="use[comment_comment][push]" id="comment_comment_push" value="1" disabled="disabled"|cond="!$push_available" checked="checked"|cond="isset($config->use['comment_comment']['push'])" /> {$lang->cmd_push_notify}</label>
</div>
<label class="x_control-label">{$lang->ncenterlite_cmd_vote}</label>
<div class="x_controls">
<label for="vote_web" class="x_inline"><input type="checkbox" name="use[vote][web]" id="vote_web" value="1" checked="checked"|cond="isset($config->use['vote']['web'])" /> {$lang->cmd_web_notify}</label>
<label for="vote_mail" class="x_inline"><input type="checkbox" name="use[vote][mail]" id="vote_mail" value="1" checked="checked"|cond="isset($config->use['vote']['mail'])" /> {$lang->cmd_mail_notify}</label>
<label for="vote_sms" class="x_inline" disabled="disabled"|cond="!$sms_available"><input type="checkbox" name="use[vote][sms]" id="vote_sms" value="1" disabled="disabled"|cond="!$sms_available" checked="checked"|cond="isset($config->use['vote']['sms'])" /> {$lang->cmd_sms_notify}</label>
<label for="vote_push" class="x_inline" disabled="disabled"|cond="!$push_available"><input type="checkbox" name="use[vote][push]" id="vote_push" value="1" disabled="disabled"|cond="!$push_available" checked="checked"|cond="isset($config->use['vote']['push'])" /> {$lang->cmd_push_notify}</label>
</div>
<label class="x_control-label">{$lang->ncenterlite_cmd_scrap}</label>
<div class="x_controls">
<label for="scrap_web" class="x_inline"><input type="checkbox" name="use[scrap][web]" id="scrap_web" value="1" checked="checked"|cond="isset($config->use['scrap']['web'])" /> {$lang->cmd_web_notify}</label>
<label for="scrap_mail" class="x_inline"><input type="checkbox" name="use[scrap][mail]" id="scrap_mail" value="1" checked="checked"|cond="isset($config->use['scrap']['mail'])" /> {$lang->cmd_mail_notify}</label>
<label for="scrap_sms" class="x_inline" disabled="disabled"|cond="!$sms_available"><input type="checkbox" name="use[scrap][sms]" id="scrap_sms" value="1" disabled="disabled"|cond="!$sms_available" checked="checked"|cond="isset($config->use['scrap']['sms'])" /> {$lang->cmd_sms_notify}</label>
<label for="scrap_push" class="x_inline" disabled="disabled"|cond="!$push_available"><input type="checkbox" name="use[scrap][push]" id="scrap_push" value="1" disabled="disabled"|cond="!$push_available" checked="checked"|cond="isset($config->use['scrap']['push'])" /> {$lang->cmd_push_notify}</label>
</div>
<label class="x_control-label">{$lang->ncenterlite_message_noti}</label>
<div class="x_controls">
<label for="message_web" class="x_inline"><input type="checkbox" name="use[message][web]" id="message_web" value="1" checked="checked"|cond="isset($config->use['message']['web'])" /> {$lang->cmd_web_notify}</label>
<label for="message_mail" class="x_inline"><input type="checkbox" name="use[message][mail]" id="message_mail" value="1" checked="checked"|cond="isset($config->use['message']['mail'])" /> {$lang->cmd_mail_notify}</label>
<label for="message_sms" class="x_inline" disabled="disabled"|cond="!$sms_available"><input type="checkbox" name="use[message][sms]" id="message_sms" value="1" disabled="disabled"|cond="!$sms_available" checked="checked"|cond="isset($config->use['message']['sms'])" /> {$lang->cmd_sms_notify}</label>
<label for="message_push" class="x_inline" disabled="disabled"|cond="!$push_available"><input type="checkbox" name="use[message][push]" id="message_push" value="1" disabled="disabled"|cond="!$push_available" checked="checked"|cond="isset($config->use['message']['push'])" /> {$lang->cmd_push_notify}</label>
</div>
<label class="x_control-label">{$lang->ncenterlite_admin_content}</label>
<div class="x_controls">
<label for="admin_content_web" class="x_inline"><input type="checkbox" name="use[admin_content][web]" id="admin_content_web" value="1" checked="checked"|cond="isset($config->use['admin_content']['web'])" /> {$lang->cmd_web_notify}</label>
<label for="admin_content_mail" class="x_inline"><input type="checkbox" name="use[admin_content][mail]" id="admin_content_mail" value="1" checked="checked"|cond="isset($config->use['admin_content']['mail'])" /> {$lang->cmd_mail_notify}</label>
<label for="admin_content_sms" class="x_inline" disabled="disabled"|cond="!$sms_available"><input type="checkbox" name="use[admin_content][sms]" id="admin_content_sms" value="1" disabled="disabled"|cond="!$sms_available" checked="checked"|cond="isset($config->use['admin_content']['sms'])" /> {$lang->cmd_sms_notify}</label>
<label for="admin_content_push" class="x_inline" disabled="disabled"|cond="!$push_available"><input type="checkbox" name="use[admin_content][push]" id="admin_content_push" value="1" disabled="disabled"|cond="!$push_available" checked="checked"|cond="isset($config->use['admin_content']['push'])" /> {$lang->cmd_push_notify}</label>
</div>
<label class="x_control-label">{$lang->ncenterlite_custom}</label>
<div class="x_controls">
<label for="custom_web" class="x_inline"><input type="checkbox" name="use[custom][web]" id="custom_web" value="1" checked="checked"|cond="isset($config->use['custom']['web'])" /> {$lang->cmd_web_notify}</label>
<label for="custom_mail" class="x_inline"><input type="checkbox" name="use[custom][mail]" id="custom_mail" value="1" checked="checked"|cond="isset($config->use['custom']['mail'])" /> {$lang->cmd_mail_notify}</label>
<label for="custom_sms" class="x_inline" disabled="disabled"|cond="!$sms_available"><input type="checkbox" name="use[custom][sms]" id="custom_sms" value="1" disabled="disabled"|cond="!$sms_available" checked="checked"|cond="isset($config->use['custom']['sms'])" /> {$lang->cmd_sms_notify}</label>
<label for="custom_push" class="x_inline" disabled="disabled"|cond="!$push_available"><input type="checkbox" name="use[custom][push]" id="custom_push" value="1" disabled="disabled"|cond="!$push_available" checked="checked"|cond="isset($config->use['custom']['push'])" /> {$lang->cmd_push_notify}</label>
<p>
<div>{$lang->ncenterlite_use_help}</div>
</p>
<p class="x_help-block">{$lang->ncenterlite_use_help}</p>
</div>
</div>
<div class="x_control-group">

View file

@ -18,7 +18,7 @@
<label class="x_inline">
<input type="radio" id="comment_all_n" name="comment_all" value="N" checked="checked"|cond="$config->comment_all != 'Y'" /> {$lang->notuse}
</label>
<p class="x_help-block">{$lang->ncenterlite_use_help}</p>
<p class="x_help-block">{$lang->ncenterlite_use_othercomment_help}</p>
</div>
</div>
<div class="x_control-group">