git-svn-id: http://xe-core.googlecode.com/svn/trunk@153 201d5d3c-b55e-5fd7-737f-ddc643e51545

This commit is contained in:
zero 2007-02-22 03:06:50 +00:00
parent 693103aaa0
commit 17c29c6957
15 changed files with 108 additions and 107 deletions

View file

@ -244,6 +244,7 @@
* 만약 code에 해당하는 문자열이 없다면 code를 그대로 리턴
**/
function getLang($code) {
if(!$code) return;
if($GLOBALS['lang']->{$code}) return $GLOBALS['lang']->{$code};
return $code;
}

View file

@ -19,12 +19,6 @@
**/
function printContent(&$oModule) {
// 모듈이 정상적이지 않으면 system message 출력
if(!is_object($oModule)) {
$oModule = &getView('message');
Context::set('system_message', Context::getLang('msg_invalid_request_module'));
}
// header 출력
$this->_printHeader();

View file

@ -21,7 +21,7 @@
var $module_info = NULL; ///< 모듈의 정보
var $check_standalone = false; ///< 요청된 모듈의 standalone을 체크할 것인지에 설정
var $error = NULL; ///< 진행 도중 에러 발생시 에러 코드를 정의, message 모듈을 호출시 사용
/**
* @brief constructor
@ -52,9 +52,6 @@
* @brief module, mid, document_srl을 이용하여 모듈을 찾고 act를 실행하기 위한 준비를
**/
function init() {
// 일반적인 요청으로 간주 standalone를 체크하도록 설정
$this->check_standalone = true;
// ModuleModel 객체 생성
$oModuleModel = &getModel('module');
@ -76,10 +73,7 @@
}
// 여기까지도 모듈 정보를 찾지 못했다면 깔끔하게 시스템 오류 표시
if(!$this->module) {
$this->module = 'message';
Context::set('system_message', Context::getLang('msg_mid_not_exists'));
}
if(!$this->module) $this->error = 'msg_module_is_not_exists';
// mid값이 있을 경우 mid값을 세팅
if($this->mid) Context::set('mid', $this->mid, true);
@ -90,8 +84,8 @@
* @brief 모듈과 관련된 정보를 이용하여 객체를 구하고 act 실행까지 진행시킴
**/
function procModule() {
// $module이 세팅되어 있지 않다면 return NULL, 이럴 경우가 없어야 함
if(!$this->module) return;
// 에러가 있으면 return
if($this->error) return;
// ModuleModel 객체 생성
$oModuleModel = &getModel('module');
@ -99,33 +93,64 @@
// 해당 모듈의 conf/action.xml 을 분석하여 action 정보를 얻어옴
$xml_info = $oModuleModel->getModuleXmlInfo($this->module);
// module_info가 없고(mid가 없다는 의미) standalone이 false이면 오류 표시
if($this->check_standalone && !$this->mid && !$xml_info->standalone) {
$this->module = 'message';
Context::set('system_message', Context::getLang('msg_invalid_request_module'));
$xml_info = $oModuleModel->getModuleXmlInfo($this->module);
}
// 현재 요청된 act가 있으면 $xml_info에서 type을 찾음, 없다면 기본 action을 이용
if(!$this->act || !$xml_info->action->{$this->act}) $this->act = $xml_info->default_action;
// 설정된 mid가 없을 경우 요청된 act의 standalone 여부 체크
if(!$this->mid && !$xml_info->action->{$this->act}->standalone) return $this->error = 'msg_module_is_not_standalone';
// type, grant 값 구함
$type = $xml_info->action->{$this->act}->type;
$grant = $xml_info->action->{$this->act}->grant;
// 모듈 객체 생성
$oModule = &$this->getModuleInstance($this->module, $type);
if(!is_object($oModule)) return;
$this->oModule = &$this->getModuleInstance($this->module, $type);
if(!is_object($this->oModule)) return $this->error = 'msg_module_is_not_exists';
// 모듈에 act값을 세팅
$oModule->setAct($this->act);
$this->oModule->setAct($this->act);
// 모듈 정보 세팅
$oModule->setModuleInfo($this->module_info, $xml_info);
$this->oModule->setModuleInfo($this->module_info, $xml_info);
$oModule->proc();
// 모듈을 수행하고 결과가 false이면 message 모듈 호출 지정
if(!$this->oModule->proc()) $this->error = $this->oModule->getMessage();
}
return $oModule;
/**
* @ 실행된 모듈의 컨텐츠를 출력
**/
function displayContent() {
// 설정된 모듈이 정상이지 않을 경우 message 모듈 객체 생성
if(!$this->oModule || !is_object($this->oModule)) {
$this->error = 'msg_module_is_not_exists';
}
// 에러가 발생하였을시 처리
if($this->error) {
// message 모듈 객체를 생성해서 컨텐츠 생성
$oModule = &getView('message');
$oModule->setError(-1);
$oModule->setMessage($this->error);
$oModule->dispContent();
// 정상적으로 호출된 객체가 있을 경우 해당 객체의 template를 변경
if($this->oModule) {
$this->oModule->setTemplatePath($oModule->getTemplatePath());
$this->oModule->setTemplateFile($oModule->getTemplateFile());
// 그렇지 않으면 message 객체를 호출된 객체로 지정
} else {
$this->oModule = $oModule;
}
}
// 컨텐츠 출력
$oDisplayHandler = new DisplayHandler();
$oDisplayHandler->printContent($this->oModule);
// DB 및 기타 자원의 종결 처리
Context::close();
}
/**

View file

@ -23,7 +23,7 @@
var $layout_path = './common/tpl/'; ///< 레이아웃 경로
var $layout_file = 'default_layout.html'; ///< 레이아웃 파일
var $stop_proc = false; ///< action 수행중 dispMessage를 호출하면 ModuleObject::proc()를 수행하지 않음
var $stop_proc = false; ///< action 수행중 stop()를 호출하면 ModuleObject::proc()를 수행하지 않음
/**
* @brief 현재 모듈의 이름을 지정
@ -126,21 +126,13 @@
/**
* @brief 메세지 출력
**/
function dispMessage($msg_code) {
function stop($msg_code) {
// proc 수행을 중지 시키기 위한 플래그 세팅
$this->stop_proc = true;
// RequestMethod가 XMLRPC일 경우를 대비
if(Context::getRequestMethod()=='XMLRPC') {
$this->setError(-1);
$this->setMessage($msg_code);
} else {
Context::set('system_message', Context::getLang($msg_code));
$oMessageView = &getView('message');
$oMessageView->dispMessage();
$this->setTemplatePath($oMessageView->getTemplatePath());
$this->setTemplateFile($oMessageView->getTemplateFile());
}
// 에러 처리
$this->setError(-1);
$this->setMessage($msg_code);
}
/**
@ -213,10 +205,10 @@
**/
function proc() {
// stop_proc==true이면 그냥 패스
if($this->stop_proc==true) return;
if($this->stop_proc==true) return false;
// 기본 act조차 없으면 return
if(!method_exists($this, $this->act)) return;
if(!method_exists($this, $this->act)) return false;
// this->act값으로 method 실행
$output = call_user_method($this->act, $this);
@ -224,7 +216,10 @@
if(is_a($output, 'Object') || is_subclass_of($output, 'Object')) {
$this->setError($output->getError());
$this->setMessage($output->getMessage());
return false;
}
return true;
}
}
?>