Allow member info to be customized by trigger

문서나 댓글을 작성하거나 수정할 때 트리거에서 회원 정보를 조작할 수
있도록 허용함. $obj->manual_member_info = true 로 바꾸어 반환하면
글쓴이의 정보가 현재 로그인한 사용자나 최초 작성시 정보로 덮어씌워지지
않고 트리거에서 지정한 그대로 남음.

기존에도 $manual_inserted 를 사용하면 이런 기능을 구현할 수 있었으나,
이 변수는 트리거에서 조작할 수 없으며 다른 체크도 모두 건너뛰는 등
여러 가지 불편이 있어서 이렇게 일부 정보만 변경하도록 허용하는 새 방법을
제공함. 익명 게시판 등을 좀더 편리하게 개발할 수 있을 것으로 예상됨.
This commit is contained in:
Kijin Sung 2017-11-24 23:42:28 +09:00
parent 17ca61eed3
commit 509b403eff
2 changed files with 11 additions and 7 deletions

View file

@ -346,6 +346,7 @@ class commentController extends comment
$obj->__isupdate = FALSE;
// call a trigger (before)
unset($obj->manual_member_info);
$output = ModuleHandler::triggerCall('comment.insertComment', 'before', $obj);
if(!$output->toBool())
{
@ -394,9 +395,9 @@ class commentController extends comment
}
// input the member's information if logged-in
if(Context::get('is_logged'))
$logged_info = Context::get('logged_info');
if(Context::get('is_logged') && !$obj->manual_member_info)
{
$logged_info = Context::get('logged_info');
$obj->member_srl = $logged_info->member_srl;
// user_id, user_name and nick_name already encoded
@ -708,6 +709,7 @@ class commentController extends comment
$obj->__isupdate = TRUE;
// call a trigger (before)
unset($obj->manual_member_info);
$output = ModuleHandler::triggerCall('comment.updateComment', 'before', $obj);
if(!$output->toBool())
{
@ -750,7 +752,7 @@ class commentController extends comment
// set modifier's information if logged-in and posting author and modifier are matched.
$logged_info = Context::get('logged_info');
if(Context::get('is_logged'))
if(Context::get('is_logged') && !$obj->manual_member_info)
{
if($source_obj->member_srl == $logged_info->member_srl)
{
@ -763,7 +765,7 @@ class commentController extends comment
}
// if nick_name of the logged-in author doesn't exist
if($source_obj->get('member_srl') && !$obj->nick_name)
if($source_obj->get('member_srl') && !$obj->nick_name && !$obj->manual_member_info)
{
$obj->member_srl = $source_obj->get('member_srl');
$obj->user_name = $source_obj->get('user_name');