오픈 소스 프로젝트 - XE 개발 포럼
매뉴얼을 봐도 어디에 어떤 변수가 있는지 알 수가 없네요;;
제가 하고자 하는 것은 회원이 게시물을 읽었을 때 표시를 하려는 겁니다.
처음엔 간단하게 생각했는데요.
작동 방법이 이해가 잘 안되서 힘드네요.
document_srl이 유니크하게 있다고 하니까 회원이 글을 읽을 때 디비에는 document_srl과 user_id만 입력을 해주면
나중에 게시물을 출력할 때 확인을 할 수 있을 것 같은데요.
일단 카운터를 참고로 하고 있습니다.
모듈이 디비를 생성하고 입력하는 함수를 가지고 있고
애드온이 게시물을 읽을 때 모듈의 프로시져를 호출하는 방법으로 하려고 합니다.
현재 애드온이 모듈의 함수를 호출하는건 되는거 같구요...
(이것도 제대로 한건지는 모르겠지만-_-;; action 같은게 이해가 잘 안되네요.)
디비에 입력할 때 document_srl과 user_id를 가져와야는데 이게 잘 안되는거 같네요.
코드를 첨부합니다.
제작하고 계시는 분들은 금방 파악하실 수 있을 것 같습니다.
조언 좀 부탁드립니다.
모듈의 컨트롤러 입니다.
class view_checkerController extends view_checker {
/**
* @brief 초기화
**/
function init() {
}
/**
* @brief 데이터베이스에 기록
**/
function procView_CheckerExecute() {
$oDB = &DB::getInstance();
$oDB->begin();
// 이미 확인한 문서인지 체크
$oViewCheckerModel = &getModel('view_checker');
// 체크가 없으면 기록
if(!$oViewCheckerModel->isInserted()) {
$this->insertCheck();
}
$oDB->commit();
}
/**
* @brief 체크 기록
**/
function insertCheck() {
$logged_info = Context::get('logged_info');
$args->user_id = $logged_info->user_id;
$args->document_srl = Context::get('document_srl');
return executeQuery('view_checker.insertCheck', $args);
}
}
애드온 입니다.
if(Context::getResponseMethod() == 'XMLRPC' || Context::get('module') == 'admin') return;
// 실행 대상 모듈이 아니면 종료
if($addon_info->mid_list && !in_array(Context::get('mid'), $addon_info->mid_list)) return;
if($called_position == 'before_module_init') {
if($this->module != 'admin') Context::addJsFile('./modules/view_checker/tpl/js/checker.js');
}




애드온 코드에서 procView_CheckerExecute()를 직접 호출하도록 하시는게 편하고 좀 더 효율적일 것 같습니다.
애드온에서….
$oViewCheckerController = &getController('view_checker');
$oViewCheckerController->procView_CheckerExecute();
요렇게만 넣으셔도 될거라 생각됩니다.
insertCheck()에서는 user_id와 document_srl이 없을 때를 대비하는 등의 예외처리를 해주시면 될 것 같구요.
debugPrint(Context::getAll()); 하시면 XE전반에 걸쳐 세팅된 변수 전부를 볼 수 있습니다.
/files/_debug_message.php 파일에 기록되니 파일을 열어보시면 되구요.