문서 및 댓글 신고시 간단한 관리자 알림 기능 #588

This commit is contained in:
Kijin Sung 2018-05-30 22:12:29 +09:00
parent 1a3cbb7ae0
commit 89abb2ef8e
7 changed files with 104 additions and 1 deletions

View file

@ -1566,6 +1566,38 @@ class commentController extends comment
$this->add('declared_count', $declared_count + 1);
// Send message to admin
$message_targets = array();
$module_srl = $oComment->get('module_srl');
$oModuleModel = getModel('module');
$comment_config = $oModuleModel->getModulePartConfig('comment', $module_srl);
if ($comment_config->declared_message && in_array('admin', $comment_config->declared_message))
{
$output = executeQueryArray('member.getAdmins', new stdClass);
foreach ($output->data as $admin)
{
$message_targets[$admin->member_srl] = true;
}
}
if ($comment_config->declared_message && in_array('manager', $comment_config->declared_message))
{
$output = executeQueryArray('module.getModuleAdmin', (object)['module_srl' => $module_srl]);
foreach ($output->data as $manager)
{
$message_targets[$manager->member_srl] = true;
}
}
if ($message_targets)
{
$oCommunicationController = getController('communication');
$message_title = lang('document.declared_message_title');
$message_content = sprintf('<p><a href="%s">%s</a></p><p>%s</p>', $oComment->getPermanentUrl(), $oComment->getContentText(50), $declare_message);
foreach ($message_targets as $target_member_srl => $val)
{
$oCommunicationController->sendMessage($this->user->member_srl, $target_member_srl, $message_title, $message_content, false);
}
}
// Call a trigger (after)
$trigger_obj->declared_count = $declared_count + 1;
ModuleHandler::triggerCall('comment.declaredComment', 'after', $trigger_obj);
@ -1654,6 +1686,10 @@ class commentController extends comment
$comment_config->use_vote_down = 'Y';
}
$comment_config->declared_message = Context::get('declared_message');
if(!is_array($comment_config->declared_message)) $comment_config->declared_message = array();
$comment_config->declared_message = array_values($comment_config->declared_message);
$comment_config->use_comment_validation = Context::get('use_comment_validation');
if(!$comment_config->use_comment_validation)
{

View file

@ -42,6 +42,13 @@
<p class="x_help-inline">{$lang->about_comment_validation}</p>
</div>
</div>
<div class="x_control-group">
<label class="x_control-label">{lang('document.cmd_declared_message')}</label>
<div class="x_controls">
<label class="x_inline" for="declared_message_admin"><input type="checkbox" name="declared_message[]" id="declared_message_admin" value="admin" checked="checked"|cond="in_array('admin', $comment_config->declared_message)" /> {$lang->cmd_declared_message_admin}</label>
<label class="x_inline" for="declared_message_manager"><input type="checkbox" name="declared_message[]" id="declared_message_manager" value="manager" checked="checked"|cond="in_array('manager', $comment_config->declared_message)" /> {$lang->cmd_declared_message_manager}</label>
</div>
</div>
<div class="x_clearfix btnArea">
<button type="submit" class="x_btn x_btn-primary">{$lang->cmd_save}</button>
</div>

View file

@ -1608,6 +1608,38 @@ class documentController extends document
}
$this->add('declared_count', $declared_count + 1);
// Send message to admin
$message_targets = array();
$module_srl = $oDocument->get('module_srl');
$oModuleModel = getModel('module');
$document_config = $oModuleModel->getModulePartConfig('document', $module_srl);
if ($document_config->declared_message && in_array('admin', $document_config->declared_message))
{
$output = executeQueryArray('member.getAdmins', new stdClass);
foreach ($output->data as $admin)
{
$message_targets[$admin->member_srl] = true;
}
}
if ($document_config->declared_message && in_array('manager', $document_config->declared_message))
{
$output = executeQueryArray('module.getModuleAdmin', (object)['module_srl' => $module_srl]);
foreach ($output->data as $manager)
{
$message_targets[$manager->member_srl] = true;
}
}
if ($message_targets)
{
$oCommunicationController = getController('communication');
$message_title = lang('document.declared_message_title');
$message_content = sprintf('<p><a href="%s">%s</a></p><p>%s</p>', $oDocument->getPermanentUrl(), $oDocument->getTitleText(), $declare_message);
foreach ($message_targets as $target_member_srl => $val)
{
$oCommunicationController->sendMessage($this->user->member_srl, $target_member_srl, $message_title, $message_content, false);
}
}
// Call a trigger (after)
$trigger_obj->declared_count = $declared_count + 1;
@ -2754,7 +2786,9 @@ Content;
$document_config->use_vote_down = Context::get('use_vote_down');
if(!$document_config->use_vote_down) $document_config->use_vote_down = 'Y';
$document_config->use_status = Context::get('use_status');
$document_config->declared_message = Context::get('declared_message');
if(!is_array($document_config->declared_message)) $document_config->declared_message = array();
$document_config->declared_message = array_values($document_config->declared_message);
$oModuleController = getController('module');
foreach ($module_srl as $srl)

View file

@ -52,6 +52,9 @@ $lang->alias = 'Alias';
$lang->history = 'History';
$lang->about_use_history = 'You can set whether to use History which allows you to restore an updated article to the previous version.';
$lang->trace_only = 'Trace only';
$lang->cmd_declared_message = 'Report notification';
$lang->cmd_declared_message_admin = 'To administrator';
$lang->cmd_declared_message_manager = 'To module moderators';
$lang->cmd_trash = 'Recycle Bin';
$lang->cmd_restore = 'Restore';
$lang->cmd_restore_all = 'Restore All';
@ -94,6 +97,7 @@ $lang->improper_document_declare = 'Report an improper document';
$lang->original_date = 'Original date';
$lang->declared_count = 'Report count';
$lang->latest_declared_date = 'Last reported date';
$lang->declared_message_title = 'A post has been reported.';
$lang->declaring_user = 'Reporter';
$lang->improper_document_declare_reason = 'Reason';
$lang->improper_document_reasons['advertisement'] = 'Advertisements that do not fit the topics or themes.';

View file

@ -61,6 +61,9 @@ $lang->alias = '별칭(Alias)';
$lang->history = '히스토리';
$lang->about_use_history = '히스토리 기능의 사용여부를 지정합니다. 히스토리 기능을 사용할 경우, 문서 수정 후 이전 수정판으로 복원할 수 있습니다.';
$lang->trace_only = '흔적만 남김';
$lang->cmd_declared_message = '신고 알림 쪽지';
$lang->cmd_declared_message_admin = '최고관리자';
$lang->cmd_declared_message_manager = '게시판 관리자';
$lang->cmd_trash = '휴지통';
$lang->cmd_restore = '복원';
$lang->cmd_restore_all = '모두 복원';
@ -94,6 +97,7 @@ $lang->improper_document_declare = '불량 게시글 신고';
$lang->original_date = '작성 날짜';
$lang->declared_count = '신고 수';
$lang->latest_declared_date = '최근 신고 날짜';
$lang->declared_message_title = '신고가 접수되었습니다.';
$lang->declaring_user = '신고자';
$lang->improper_document_declare_reason = '신고 이유';
$lang->improper_document_reasons['advertisement'] = '주제나 흐름에 맞지 않는 광고 글입니다.';

View file

@ -37,6 +37,13 @@
</select>
</div>
</div>
<div class="x_control-group">
<label class="x_control-label">{$lang->cmd_declared_message}</label>
<div class="x_controls">
<label class="x_inline" for="declared_message_admin"><input type="checkbox" name="declared_message[]" id="declared_message_admin" value="admin" checked="checked"|cond="in_array('admin', $document_config->declared_message)" /> {$lang->cmd_declared_message_admin}</label>
<label class="x_inline" for="declared_message_manager"><input type="checkbox" name="declared_message[]" id="declared_message_manager" value="manager" checked="checked"|cond="in_array('manager', $document_config->declared_message)" /> {$lang->cmd_declared_message_manager}</label>
</div>
</div>
<div class="btnArea">
<button type="submit" class="x_btn x_btn-primary">{$lang->cmd_save}</button>
</div>

View file

@ -0,0 +1,11 @@
<query id="getAdmins" action="select">
<tables>
<table name="member" />
</tables>
<columns>
<column name="member_srl" />
</columns>
<conditions>
<condition operation="equal" column="is_admin" default="Y" notnull="notnull" />
</conditions>
</query>