XE Trigger 완전 정복하기 3-2편
글 삭제 시 저장한 정보를 삭제하기
function moduleInstall()
{
$oModuleController = &getController('module');
$oModuleController->insertTrigger('document.deleteDocument', 'triggersample', 'controller', 'triggerDeleteTriggersample', 'after');
return new Object();
}
function checkUpdate()
{
$oModuleModel = &getModel('module');
if(!$oModuleModel->getTrigger('document.deleteDocument', 'triggersample', 'controller', 'triggerDeleteTriggersample', 'after'))
{
return true;
}
return false;
}
function moduleUpdate()
{
$oModuleModel = &getModel('module');
$oModuleController = &getController('module');
if(!$oModuleModel->getTrigger('document.deleteDocument', 'triggersample', 'controller', 'triggerDeleteTriggersample', 'after'))
{
$oModuleController->insertTrigger('document.deleteDocument', 'triggersample', 'controller', 'triggerDeleteTriggersample', 'after');
}
return new Object(0,'success_updated');
}
{
$oModuleController = &getController('module');
$oModuleController->insertTrigger('document.deleteDocument', 'triggersample', 'controller', 'triggerDeleteTriggersample', 'after');
return new Object();
}
function checkUpdate()
{
$oModuleModel = &getModel('module');
if(!$oModuleModel->getTrigger('document.deleteDocument', 'triggersample', 'controller', 'triggerDeleteTriggersample', 'after'))
{
return true;
}
return false;
}
function moduleUpdate()
{
$oModuleModel = &getModel('module');
$oModuleController = &getController('module');
if(!$oModuleModel->getTrigger('document.deleteDocument', 'triggersample', 'controller', 'triggerDeleteTriggersample', 'after'))
{
$oModuleController->insertTrigger('document.deleteDocument', 'triggersample', 'controller', 'triggerDeleteTriggersample', 'after');
}
return new Object(0,'success_updated');
}
/**
* @brief 정보 삭제
**/
function triggerDeleteTriggersample(&$obj)
{
$args->module_srl = $obj->module_srl;
$args->document_srl = $obj->document_srl;
$this->deleteTriggersample($args);
}
/**
* @brief 정보 추가
**/
function insertTriggersample($args = NULL)
{
if($args == NULL)
{
return new Object(-1, "msg_error_occured");
}
// begin transaction
$oDB = &DB::getInstance();
$oDB->begin();
$output = executeQuery('triggersample.insertTriggersample', $args);
if(!$output->toBool())
{
$oDB->rollback();
return new Object(-1, "msg_error_occured");
}
// commit
$oDB->commit();
return $output;
}
* @brief 정보 삭제
**/
function triggerDeleteTriggersample(&$obj)
{
$args->module_srl = $obj->module_srl;
$args->document_srl = $obj->document_srl;
$this->deleteTriggersample($args);
}
/**
* @brief 정보 추가
**/
function insertTriggersample($args = NULL)
{
if($args == NULL)
{
return new Object(-1, "msg_error_occured");
}
// begin transaction
$oDB = &DB::getInstance();
$oDB->begin();
$output = executeQuery('triggersample.insertTriggersample', $args);
if(!$output->toBool())
{
$oDB->rollback();
return new Object(-1, "msg_error_occured");
}
// commit
$oDB->commit();
return $output;
}
접속자를 확인 후 특정 IP차단하기
function moduleInstall()
{
$oModuleController = &getController('module');
$oModuleController->insertTrigger('moduleObject.proc', 'triggersample', 'controller', 'triggerProcTriggersample', 'before');
return new Object();
}
function checkUpdate()
{
$oModuleModel = &getModel('module');
if(!$oModuleModel->getTrigger('moduleObject.proc', 'triggersample', 'controller', 'triggerProcTriggersample', 'before'))
{
return true;
}
return false;
}
function moduleUpdate()
{
$oModuleModel = &getModel('module');
$oModuleController = &getController('module');
if(!$oModuleModel->getTrigger('moduleObject.proc', 'triggersample', 'controller', 'triggerProcTriggersample', 'before'))
{
$oModuleController->insertTrigger('moduleObject.proc', 'triggersample', 'controller', 'triggerProcTriggersample', 'before');
}
return new Object(0,'success_updated');
}
{
$oModuleController = &getController('module');
$oModuleController->insertTrigger('moduleObject.proc', 'triggersample', 'controller', 'triggerProcTriggersample', 'before');
return new Object();
}
function checkUpdate()
{
$oModuleModel = &getModel('module');
if(!$oModuleModel->getTrigger('moduleObject.proc', 'triggersample', 'controller', 'triggerProcTriggersample', 'before'))
{
return true;
}
return false;
}
function moduleUpdate()
{
$oModuleModel = &getModel('module');
$oModuleController = &getController('module');
if(!$oModuleModel->getTrigger('moduleObject.proc', 'triggersample', 'controller', 'triggerProcTriggersample', 'before'))
{
$oModuleController->insertTrigger('moduleObject.proc', 'triggersample', 'controller', 'triggerProcTriggersample', 'before');
}
return new Object(0,'success_updated');
}
/**
* @brief IP차단하기
**/
function triggerProcTriggersample()
{
// 로그인 정보 가져오기
$logged_info = Context::get('logged_info');
if($logged_info->is_admin == 'Y')
{
return;
}
if($_SERVER['REMOTE_ADDR'] == '127.0.0.1')
{
Context::setResponseMethod('XMLRPC');
$header_message = sprintf("%s %s", 403, 'Forbidden');
header("HTTP/1.0 ".$header_message);
header("Status: ".$header_message);
header("Content-Type: text/html; charset=UTF-8");
$html = sprintf(
'<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"><html lang="en" xml:lang="en"><head><title>'.
'%s</title></head><body><h1>%s</h1>IP block..</body></html>',
$header_message, 'Forbidden'
);
die($html);
return new Object();
}
}
* @brief IP차단하기
**/
function triggerProcTriggersample()
{
// 로그인 정보 가져오기
$logged_info = Context::get('logged_info');
if($logged_info->is_admin == 'Y')
{
return;
}
if($_SERVER['REMOTE_ADDR'] == '127.0.0.1')
{
Context::setResponseMethod('XMLRPC');
$header_message = sprintf("%s %s", 403, 'Forbidden');
header("HTTP/1.0 ".$header_message);
header("Status: ".$header_message);
header("Content-Type: text/html; charset=UTF-8");
$html = sprintf(
'<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"><html lang="en" xml:lang="en"><head><title>'.
'%s</title></head><body><h1>%s</h1>IP block..</body></html>',
$header_message, 'Forbidden'
);
die($html);
return new Object();
}
}
본문출력 전 메시지 출력하기
function moduleInstall()
{
$oModuleController = &getController('module');
$oModuleController->insertTrigger('display', 'triggersample', 'controller', 'triggerDisplayTriggersample', 'before');
return new Object();
}
function checkUpdate()
{
$oModuleModel = &getModel('module');
if(!$oModuleModel->getTrigger('display', 'triggersample', 'controller', 'triggerDisplayTriggersample', 'before'))
{
return true;
}
return false;
}
function moduleUpdate()
{
$oModuleModel = &getModel('module');
$oModuleController = &getController('module');
if(!$oModuleModel->getTrigger('display', 'triggersample', 'controller', 'triggerDisplayTriggersample', 'before'))
{
$oModuleController->insertTrigger('display', 'triggersample', 'controller', 'triggerDisplayTriggersample', 'before');
}
return new Object(0,'success_updated');
}
{
$oModuleController = &getController('module');
$oModuleController->insertTrigger('display', 'triggersample', 'controller', 'triggerDisplayTriggersample', 'before');
return new Object();
}
function checkUpdate()
{
$oModuleModel = &getModel('module');
if(!$oModuleModel->getTrigger('display', 'triggersample', 'controller', 'triggerDisplayTriggersample', 'before'))
{
return true;
}
return false;
}
function moduleUpdate()
{
$oModuleModel = &getModel('module');
$oModuleController = &getController('module');
if(!$oModuleModel->getTrigger('display', 'triggersample', 'controller', 'triggerDisplayTriggersample', 'before'))
{
$oModuleController->insertTrigger('display', 'triggersample', 'controller', 'triggerDisplayTriggersample', 'before');
}
return new Object(0,'success_updated');
}
/**
* @brief 본문출력 전 메시지 출력하기
**/
function triggerDisplayTriggersample(&$output)
{
if((Context::get('module') != 'admin') && !Context::get('act'))
{
$message = "<font style='font-size:30px;font-weight:bold;'>Triggersample 예제입니다.</font>
";
$output = "{$message}{$output}";
}
}
* @brief 본문출력 전 메시지 출력하기
**/
function triggerDisplayTriggersample(&$output)
{
if((Context::get('module') != 'admin') && !Context::get('act'))
{
$message = "<font style='font-size:30px;font-weight:bold;'>Triggersample 예제입니다.</font>
";
$output = "{$message}{$output}";
}
}
관리자페이지 설정메뉴 트리거 사용하기
function moduleInstall()
{
$oModuleController = &getController('module');
$oModuleController->insertTrigger('module.dispAdditionSetup', 'triggersample', 'controller', 'triggerDispTriggersampleAdditionSetup', 'after');
return new Object();
}
function checkUpdate()
{
$oModuleModel = &getModel('module');
if(!$oModuleModel->getTrigger('module.dispAdditionSetup', 'triggersample', 'controller', 'triggerDispTriggersampleAdditionSetup', 'after'))
{
return true;
}
return false;
}
function moduleUpdate()
{
$oModuleModel = &getModel('module');
$oModuleController = &getController('module');
if(!$oModuleModel->getTrigger('module.dispAdditionSetup', 'triggersample', 'controller', 'triggerDispTriggersampleAdditionSetup', 'after'))
{
$oModuleController->insertTrigger('module.dispAdditionSetup', 'triggersample', 'controller', 'triggerDispTriggersampleAdditionSetup', 'after');
}
return new Object(0,'success_updated');
}
{
$oModuleController = &getController('module');
$oModuleController->insertTrigger('module.dispAdditionSetup', 'triggersample', 'controller', 'triggerDispTriggersampleAdditionSetup', 'after');
return new Object();
}
function checkUpdate()
{
$oModuleModel = &getModel('module');
if(!$oModuleModel->getTrigger('module.dispAdditionSetup', 'triggersample', 'controller', 'triggerDispTriggersampleAdditionSetup', 'after'))
{
return true;
}
return false;
}
function moduleUpdate()
{
$oModuleModel = &getModel('module');
$oModuleController = &getController('module');
if(!$oModuleModel->getTrigger('module.dispAdditionSetup', 'triggersample', 'controller', 'triggerDispTriggersampleAdditionSetup', 'after'))
{
$oModuleController->insertTrigger('module.dispAdditionSetup', 'triggersample', 'controller', 'triggerDispTriggersampleAdditionSetup', 'after');
}
return new Object(0,'success_updated');
}
/**
* @brief 관리자페이지 게시판 추가설정에 표시하기
**/
function triggerDispTriggersampleAdditionSetup(&$obj)
{
$oTemplate = &TemplateHandler::getInstance();
$tpl = $oTemplate->compile($this->module_path.'tpl', 'triggersample_setup');
$obj .= $tpl;
return new Object();
}
* @brief 관리자페이지 게시판 추가설정에 표시하기
**/
function triggerDispTriggersampleAdditionSetup(&$obj)
{
$oTemplate = &TemplateHandler::getInstance();
$tpl = $oTemplate->compile($this->module_path.'tpl', 'triggersample_setup');
$obj .= $tpl;
return new Object();
}
내 모듈에서 트리거 만들기
/**
* @brief 정보 추가
**/
function insertTriggersample($args = NULL)
{
if($args == NULL)
{
return new Object(-1, "msg_error_occured");
}
// trigger 호출 (before)
$output = ModuleHandler::triggerCall('triggersample.insertTriggersample', 'before', $args);
if(!$output->toBool()) return $output;
// begin transaction
$oDB = &DB::getInstance();
$oDB->begin();
$output = executeQuery('triggersample.insertTriggersample', $args);
if(!$output->toBool())
{
$oDB->rollback();
return new Object(-1, "msg_error_occured");
}
// trigger 호출 (after)
if($output->toBool()) {
$trigger_output = ModuleHandler::triggerCall('triggersample.insertTriggersample', 'after', $args);
if(!$trigger_output->toBool()) {
$oDB->rollback();
return $trigger_output;
}
}
// commit
$oDB->commit();
return $output;
}
* @brief 정보 추가
**/
function insertTriggersample($args = NULL)
{
if($args == NULL)
{
return new Object(-1, "msg_error_occured");
}
// trigger 호출 (before)
$output = ModuleHandler::triggerCall('triggersample.insertTriggersample', 'before', $args);
if(!$output->toBool()) return $output;
// begin transaction
$oDB = &DB::getInstance();
$oDB->begin();
$output = executeQuery('triggersample.insertTriggersample', $args);
if(!$output->toBool())
{
$oDB->rollback();
return new Object(-1, "msg_error_occured");
}
// trigger 호출 (after)
if($output->toBool()) {
$trigger_output = ModuleHandler::triggerCall('triggersample.insertTriggersample', 'after', $args);
if(!$trigger_output->toBool()) {
$oDB->rollback();
return $trigger_output;
}
}
// commit
$oDB->commit();
return $output;
}
3편 마무리
의외의 분량이 나왔기에 트리거가 없는 대상 처리는 다음편에서 다루겠습니다. 이번 내용은 그간 1, 2편에서 설명했던 내용을 토대로 기본 예제를 만들어 구현을 해보았습니다. 예제는 첨부파일에 모듈로 만들어져있으며, 본 예제와 4편의 예제를 포함한 모듈입니다. 다음 4편에서는 트리거가 없는 대상 트리거 만들기를 통하여 일반 Javscript에서 jQuery, JAF를 이용한 방법까지 예제를 적어보겠습니다.
댓글 0