issue 78 developement http status code display

git-svn-id: http://xe-core.googlecode.com/svn/branches/1.5.0@9569 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
ovclas 2011-10-11 05:52:33 +00:00
parent b5d4771754
commit 138eeaf2e3
3 changed files with 115 additions and 24 deletions

View file

@ -60,9 +60,16 @@
if(method_exists($handler, "prepareToPrint")) $handler->prepareToPrint($output);
// header output
if($this->gz_enabled) header("Content-Encoding: gzip");
$httpStatusCode = $oModule->getHttpStatusCode();
if($httpStatusCode && $httpStatusCode != 200) $this->_printHttpStatusCode($httpStatusCode);
else
{
if(Context::getResponseMethod() == 'JSON') $this->_printJSONHeader();
else if(Context::getResponseMethod() != 'HTML') $this->_printXMLHeader();
else $this->_printHTMLHeader();
}
// debugOutput output
$this->content_size = strlen($output);
$output .= $this->_debugOutput();
@ -252,7 +259,12 @@
}
/**
* @brief print a HTTP HEADER for HTML, which is encoded in UTF-8
**/
function _printHttpStatusCode($code) {
$statusMessage = Context::get('http_status_message');
header("HTTP/1.0 $code $statusMessage");
}
}
?>

View file

@ -20,6 +20,7 @@
var $module_info = NULL; ///< Module Info. Object
var $error = NULL; ///< an error code.
var $httpStatusCode = NULL; ///< http status code.
/**
* @brief constructor
@ -109,7 +110,7 @@
}
// If module_info is not set still, and $module does not exist, find the default module
if(!$module_info && !$this->module) $module_info = $site_module_info;
if(!$module_info && !$this->module && !$this->mid) $module_info = $site_module_info;
if(!$module_info && !$this->module && $site_module_info->module_site_srl) $module_info = $site_module_info;
@ -147,7 +148,11 @@
$this->module_info->site_srl = $site_module_info->site_srl;
// Still no module? it's an error
if(!$this->module) $this->error = 'msg_module_does_not_exist';
if(!$this->module)
{
$this->error = 'msg_module_does_not_exist';
$this->httpStatusCode = '404';
}
// If mid exists, set mid into context
if($this->mid) Context::set('mid', $this->mid, true);
@ -179,6 +184,10 @@
$oMessageObject->setError(-1);
$oMessageObject->setMessage($this->error);
$oMessageObject->dispMessage();
if($this->httpStatusCode)
{
$oMessageObject->setHttpStatusCode($this->httpStatusCode);
}
return $oMessageObject;
}
@ -507,6 +516,12 @@
$oMessageObject->setMessage($this->error);
$oMessageObject->dispMessage();
if($oMessageObject->getHttpStatusCode() && $oMessageObject->getHttpStatusCode() != '200')
{
$this->_setHttpStatusMessage($oMessageObject->getHttpStatusCode());
$oMessageObject->setTemplateFile('http_status_code');
}
// If module was called normally, change the templates of the module into ones of the message view module
if($oModule) {
$oModule->setTemplatePath($oMessageObject->getTemplatePath());
@ -705,5 +720,58 @@
return new Object();
}
/**
* @brief get http status message by http status code
**/
function _setHttpStatusMessage($code) {
$statusMessageList = array(
'100'=>'Continue',
'101'=>'Switching Protocols',
'201'=>'OK',
'201'=>'Created',
'202'=>'Accepted',
'203'=>'Non-Authoritative Information',
'204'=>'No Content',
'205'=>'Reset Content',
'206'=>'Partial Content',
'300'=>'Multiple Choices',
'301'=>'Moved Permanently',
'302'=>'Found',
'303'=>'See Other',
'304'=>'Not Modified',
'305'=>'Use Proxy',
'307'=>'Temporary Redirect',
'400'=>'Bad Request',
'401'=>'Unauthorized',
'402'=>'Payment Required',
'403'=>'Forbidden',
'404'=>'Not Found',
'405'=>'Method Not Allowed',
'406'=>'Not Acceptable',
'407'=>'Proxy Authentication Required',
'408'=>'Request Timeout',
'409'=>'Conflict',
'410'=>'Gone',
'411'=>'Length Required',
'412'=>'Precondition Failed',
'413'=>'Request Entity Too Large',
'414'=>'Request-URI Too Long',
'415'=>'Unsupported Media Type',
'416'=>'Requested Range Not Satisfiable',
'417'=>'Expectation Failed',
'500'=>'Internal Server Error',
'501'=>'Not Implemented',
'502'=>'Bad Gateway',
'503'=>'Service Unavailable',
'504'=>'Gateway Timeout',
'505'=>'HTTP Version Not Supported',
);
$statusMessage = $statusMessageList[$code];
if(!$statusMessage) $statusMessage = 'OK';
Context::set('http_status_code', $code);
Context::set('http_status_message', $statusMessage);
}
}
?>

View file

@ -13,6 +13,7 @@
var $message = 'success'; // / "Error message (if success, it is not an error)
var $variables = array(); // /< an additional variable
var $httpStatusCode = NULL; ///< http status code.
/**
* @brief constructor
@ -37,6 +38,16 @@
return $this->error;
}
function setHttpStatusCode($code = '200')
{
$this->httpStatusCode = $code;
}
function getHttpStatusCode()
{
return $this->httpStatusCode;
}
/**
* @brief Setter to set set the error message
* @param[in] $message a messge string