위키에서 글 수정 시 수정한 사람의 닉네임 정보가 반영이 되게 해달라는 요청이 있었습니다.

1. 위키에서 글 작성시 발동되는 함수는 wiki.controller.php 파일의 procWikiInsertDocument 함수입니다.

$output = $oDocumentController->updateDocument($oDocument,$obj);

이렇게 $output 으로 document 모듈의 updateDocument함수가 실행이 되게 하는 건데요.


2. document 모듈의 updateDocument 함수를 보면

document.controller.php 894라인에서 updateDocument 함수가 있습니다. 

function updateDocument($source_obj, $obj, $manual_updated = FALSE)
// Preserve original author info.
if ($source_obj->get('member_srl'))
{
    $obj->member_srl = $source_obj->get('member_srl');
    $obj->user_id = $source_obj->get('user_id');
    $obj->user_name = $source_obj->get('user_name');
    $obj->nick_name = $source_obj->get('nick_name');
    $obj->email_address = $source_obj->get('email_address');
    $obj->homepage = $source_obj->get('homepage');
    $obj->ipaddress = $source_obj->get('ipaddress');
}

3. 위키 모듈에서 updateDocument($oDocument, $obj) 이렇게 있는데

document 모듈의 해당 함수 인자를 순서대로 보면 $source_obj가 $oDocument 이고,  $obj가 위키함수에서 $obj입니다.

그러면 위키 모듈에서 output을 실행할 때, $source_obj 즉 $oDocument에서 글쓴이 인자값을 같이 전달해주면 되겠습니다.

// 글 업데이트 시 로그인 유저 정보 반영(v.2.5)
$oDocument->variables['member_srl'] = $logged_info->member_srl;
$oDocument->variables['user_id'] = $logged_info->user_id;
$oDocument->variables['user_name'] = $logged_info->user_name;
$oDocument->variables['nick_name'] = $logged_info->nick_name;

$output = $oDocumentController->updateDocument($oDocument,$obj);

이렇게 해주시면 글쓴이 정보도 같이 업데이트가 되겠습니다.

 

여담으로 처음에는 무조건 글정보는 document 모듈에서 진행되는 거고, 코어 모듈은 못 건드리니깐 $source_obj를 애드온에서 값을 전달해야하나 싶어서 삽질을 좀 했는데요 -_-;

위키모듈에서 $output 다음에

//        exit(var_dump($oDocument->variables));

이런 식으로 해당 전달인자값을 정확하게 보고 나니깐 어떻게 작성해주면 되는지 알겠더군요.

이런 변수값만 정확하게 파악이 되면 프로그래밍 해답을 찾기가 수월해집니다. ^_^

 
댓글은 로그인 사용자만 작성 가능합니다. 로그인하기