위키에서 글 수정 시 수정한 사람의 닉네임 정보가 반영이 되게 해달라는 요청이 있었습니다. 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));
이런 식으로 해당 전달인자값을 정확하게 보고 나니깐 어떻게 작성해주면 되는지 알겠더군요.
이런 변수값만 정확하게 파악이 되면 프로그래밍 해답을 찾기가 수월해집니다. ^_^