diff --git a/classes/context/Context.class.php b/classes/context/Context.class.php index aa63095c9..fdf1632d6 100644 --- a/classes/context/Context.class.php +++ b/classes/context/Context.class.php @@ -1524,7 +1524,6 @@ class Context if ($status != 200) { $oMessageObject->setHttpStatusCode($status); - ModuleHandler::_setHttpStatusMessage($status); } if (in_array(Context::getRequestMethod(), array('XMLRPC', 'JSON', 'JS_CALLBACK'))) diff --git a/classes/display/DisplayHandler.class.php b/classes/display/DisplayHandler.class.php index d98f250ed..bffe15e19 100644 --- a/classes/display/DisplayHandler.class.php +++ b/classes/display/DisplayHandler.class.php @@ -83,7 +83,7 @@ class DisplayHandler extends Handler // header output $httpStatusCode = $oModule->getHttpStatusCode(); - if($httpStatusCode && $httpStatusCode != 200 && !in_array(Context::getRequestMethod(), array('XMLRPC', 'JSON', 'JS_CALLBACK'))) + if($httpStatusCode !== 200 && !in_array(Context::getRequestMethod(), array('XMLRPC', 'JSON', 'JS_CALLBACK'))) { self::_printHttpStatusCode($httpStatusCode); } diff --git a/classes/module/ModuleHandler.class.php b/classes/module/ModuleHandler.class.php index ded0c827a..4ffe9e363 100644 --- a/classes/module/ModuleHandler.class.php +++ b/classes/module/ModuleHandler.class.php @@ -207,6 +207,20 @@ class ModuleHandler extends Handler { unset($module_info); } + + // if the secret document permission does not have, specify HTTP 403 + if(Context::getRequestMethod() == 'GET') + { + $oDocumentModel = getModel('document'); + $oDocument = $oDocumentModel->getDocument($this->document_srl); + if($oDocument->isSecret() || $oDocument->get('status') === $oDocumentModel->getConfigStatus('temp')) + { + if(!$oDocument->isGranted() && !$oDocument->isAccessible()) + { + $this->httpStatusCode = '403'; + } + } + } } } @@ -632,7 +646,7 @@ class ModuleHandler extends Handler { self::_setInputErrorToContext(); - $this->error = 'msg_is_not_administrator'; + $this->error = 'admin.msg_is_not_administrator'; $oMessageObject = self::getModuleInstance('message', $display_mode); $oMessageObject->setError(-1); $oMessageObject->setMessage($this->error); @@ -646,7 +660,7 @@ class ModuleHandler extends Handler if(!$grant->manager) { self::_setInputErrorToContext(); - $this->error = 'msg_is_not_administrator'; + $this->error = 'admin.msg_is_not_administrator'; $oMessageObject = self::getModuleInstance('message', $display_mode); $oMessageObject->setError(-1); $oMessageObject->setMessage($this->error); @@ -658,7 +672,7 @@ class ModuleHandler extends Handler if(!$grant->is_admin && $this->module != $this->orig_module->module && $xml_info->permission->{$this->act} != 'manager') { self::_setInputErrorToContext(); - $this->error = 'msg_is_not_administrator'; + $this->error = 'admin.msg_is_not_administrator'; $oMessageObject = self::getModuleInstance('message', $display_mode); $oMessageObject->setError(-1); $oMessageObject->setMessage($this->error); @@ -897,7 +911,6 @@ class ModuleHandler extends Handler $methodList = array('XMLRPC' => 1, 'JSON' => 1, 'JS_CALLBACK' => 1); if(!isset($methodList[Context::getRequestMethod()])) { - if($_SESSION['XE_VALIDATOR_RETURN_URL']) { header('location: ' . $_SESSION['XE_VALIDATOR_RETURN_URL']); @@ -914,24 +927,25 @@ class ModuleHandler extends Handler $oMessageObject->setMessage($this->error); $oMessageObject->dispMessage(); - if($oMessageObject->getHttpStatusCode() && $oMessageObject->getHttpStatusCode() != '200') + // display Error Page + if(!in_array($oMessageObject->getHttpStatusCode(), array(200, 403))) { - self::_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()); $oModule->setTemplateFile($oMessageObject->getTemplateFile()); + $oModule->setHttpStatusCode($oMessageObject->getHttpStatusCode()); // Otherwise, set message instance as the target module } else { $oModule = $oMessageObject; } - + self::_clearErrorSession(); } @@ -1049,7 +1063,16 @@ class ModuleHandler extends Handler } } } - + + // Set http status code + if($this->httpStatusCode && $oModule->getHttpStatusCode() === 200) + { + $oModule->setHttpStatusCode($this->httpStatusCode); + } + + // Set http status message + self::_setHttpStatusMessage($oModule->getHttpStatusCode()); + // Display contents $oDisplayHandler = new DisplayHandler(); $oDisplayHandler->printContent($oModule); diff --git a/classes/module/ModuleObject.class.php b/classes/module/ModuleObject.class.php index 99ee0b6a7..08cefd9f9 100644 --- a/classes/module/ModuleObject.class.php +++ b/classes/module/ModuleObject.class.php @@ -191,7 +191,7 @@ class ModuleObject extends Object { case 'root' : case 'manager' : - $this->stop('msg_is_not_administrator'); + $this->stop('admin.msg_is_not_administrator'); return; case 'member' : if(!$is_logged) @@ -236,7 +236,8 @@ class ModuleObject extends Object $this->setTemplatePath($oMessageObject->getTemplatePath()); $this->setTemplateFile($oMessageObject->getTemplateFile()); - + $this->setHttpStatusCode($oMessageObject->getHttpStatusCode()); + return $this; } diff --git a/classes/object/Object.class.php b/classes/object/Object.class.php index 9fbb9c491..2715a579a 100644 --- a/classes/object/Object.class.php +++ b/classes/object/Object.class.php @@ -31,7 +31,7 @@ class Object * http status code. * @var int */ - var $httpStatusCode = NULL; + var $httpStatusCode = 200; /** * Constructor @@ -73,9 +73,9 @@ class Object * @param int $code HTTP status code. Default value is `200` that means successful * @return void */ - function setHttpStatusCode($code = '200') + function setHttpStatusCode($code = 200) { - $this->httpStatusCode = $code; + $this->httpStatusCode = (int) $code; } /** diff --git a/common/js/xml_handler.js b/common/js/xml_handler.js index 9d246a88b..40c9c73ed 100644 --- a/common/js/xml_handler.js +++ b/common/js/xml_handler.js @@ -203,7 +203,7 @@ // If the response contains an error, display the error message. if(data.error != "0" && data.error > -1000) { - if(data.error == -1 && data.message == "msg_is_not_administrator") { + if(data.error == -1 && data.message == "admin.msg_is_not_administrator") { alert("You are not logged in as an administrator."); if ($.isFunction(callback_error)) { callback_error(data); diff --git a/modules/admin/admin.admin.controller.php b/modules/admin/admin.admin.controller.php index 95f0813ee..31380efbe 100644 --- a/modules/admin/admin.admin.controller.php +++ b/modules/admin/admin.admin.controller.php @@ -22,7 +22,7 @@ class adminAdminController extends admin $logged_info = $oMemberModel->getLoggedInfo(); if($logged_info->is_admin != 'Y') { - return $this->stop("msg_is_not_administrator"); + return $this->stop("admin.msg_is_not_administrator"); } } diff --git a/modules/admin/admin.admin.view.php b/modules/admin/admin.admin.view.php index d77f7e0e3..4341dab4d 100644 --- a/modules/admin/admin.admin.view.php +++ b/modules/admin/admin.admin.view.php @@ -40,7 +40,7 @@ class adminAdminView extends admin $logged_info = $oMemberModel->getLoggedInfo(); if($logged_info->is_admin != 'Y') { - return $this->stop("msg_is_not_administrator"); + return $this->stop("admin.msg_is_not_administrator"); } // change into administration layout diff --git a/modules/adminlogging/adminlogging.controller.php b/modules/adminlogging/adminlogging.controller.php index eebde5a00..2b6b330fb 100644 --- a/modules/adminlogging/adminlogging.controller.php +++ b/modules/adminlogging/adminlogging.controller.php @@ -23,7 +23,7 @@ class adminloggingController extends adminlogging $logged_info = $oMemberModel->getLoggedInfo(); if($logged_info->is_admin != 'Y') { - return $this->stop("msg_is_not_administrator"); + return $this->stop("admin.msg_is_not_administrator"); } } diff --git a/modules/board/board.view.php b/modules/board/board.view.php index b59acb0a1..c6db99834 100644 --- a/modules/board/board.view.php +++ b/modules/board/board.view.php @@ -1136,9 +1136,9 @@ class boardView extends board **/ function dispBoardMessage($msg_code) { - $msg = lang($msg_code); - if(!$msg) $msg = $msg_code; - Context::set('message', $msg); + Context::set('message', lang($msg_code)); + + $this->setHttpStatusCode(403); $this->setTemplateFile('message'); } @@ -1189,7 +1189,9 @@ class boardView extends board function alertMessage($message) { $script = sprintf('', lang($message)); - Context::addHtmlFooter( $script ); + Context::addHtmlFooter($script); + + $this->setHttpStatusCode(403); } } diff --git a/modules/message/message.mobile.php b/modules/message/message.mobile.php index 1b2041541..422c3f3fa 100644 --- a/modules/message/message.mobile.php +++ b/modules/message/message.mobile.php @@ -20,12 +20,15 @@ class messageMobile extends messageView $config = $oModuleModel->getModuleConfig('message'); if(!is_object($config)) $config = new stdClass; if(!$config->mskin) $config->mskin = 'default'; + // Set the template path $template_path = sprintf('%sm.skins/%s', $this->module_path, $config->mskin); + // Get the member configuration $oModuleModel = getModel('module'); $member_config = $oModuleModel->getModuleConfig('member'); Context::set('member_config', $member_config); + // Set a flag to check if the https connection is made when using SSL and create https url $ssl_mode = false; if($member_config->enable_ssl == 'Y') @@ -41,6 +44,12 @@ class messageMobile extends messageView $this->setTemplatePath($template_path); $this->setTemplateFile('system_message'); + + // Default 403 Error + if($this->getHttpStatusCode() === 200) + { + $this->setHttpStatusCode(403); + } } } /* End of file message.mobile.php */ diff --git a/modules/message/message.view.php b/modules/message/message.view.php index 6360e4c0e..fd3169eec 100644 --- a/modules/message/message.view.php +++ b/modules/message/message.view.php @@ -31,27 +31,16 @@ class messageView extends message if(!$config->skin) { $config->skin = 'xedition'; - $template_path = sprintf('%sskins/%s', $this->module_path, $config->skin); - } - else - { - //check theme - $config_parse = explode('|@|', $config->skin); - if (count($config_parse) > 1) - { - $template_path = sprintf('./themes/%s/modules/message/', $config_parse[0]); - } - else - { - $template_path = sprintf('%sskins/%s', $this->module_path, $config->skin); - } } + $template_path = sprintf('%sskins/%s', $this->module_path, $config->skin); + // Template path $this->setTemplatePath($template_path); // Get the member configuration $member_config = $oModuleModel->getModuleConfig('member'); Context::set('member_config', $member_config); + // Set a flag to check if the https connection is made when using SSL and create https url $ssl_mode = false; if($member_config->enable_ssl == 'Y') @@ -64,6 +53,12 @@ class messageView extends message Context::set('system_message_detail', nl2br($detail)); $this->setTemplateFile('system_message'); + + // Default 403 Error + if($this->getHttpStatusCode() === 200) + { + $this->setHttpStatusCode(403); + } } } /* End of file message.view.php */ diff --git a/modules/message/skins/default/http_status_code.html b/modules/message/skins/default/http_status_code.html index e119e9a86..790081673 100644 --- a/modules/message/skins/default/http_status_code.html +++ b/modules/message/skins/default/http_status_code.html @@ -11,7 +11,7 @@ section{margin-top:20px}
-

404 Not Found

+

{$http_status_code} {$http_status_message}

{$lang->msg_module_is_not_exists}

diff --git a/modules/message/skins/xedition/http_status_code.html b/modules/message/skins/xedition/http_status_code.html index d0c31de59..5666332e7 100644 --- a/modules/message/skins/xedition/http_status_code.html +++ b/modules/message/skins/xedition/http_status_code.html @@ -30,7 +30,7 @@
-

404

-

Oops, Sorry.
Page is not found!

+

{$http_status_code}

+

Oops, Sorry.
Page is {$http_status_message}!