diff --git a/classes/context/Context.class.php b/classes/context/Context.class.php index 6bca4401c..aa63095c9 100644 --- a/classes/context/Context.class.php +++ b/classes/context/Context.class.php @@ -1521,9 +1521,21 @@ class Context // Set the message. $oMessageObject = getView('message'); $oMessageObject->setError(-1); - $oMessageObject->setHttpStatusCode($status); - $oMessageObject->setMessage($title); - $oMessageObject->dispMessage($message); + if ($status != 200) + { + $oMessageObject->setHttpStatusCode($status); + ModuleHandler::_setHttpStatusMessage($status); + } + + if (in_array(Context::getRequestMethod(), array('XMLRPC', 'JSON', 'JS_CALLBACK'))) + { + $oMessageObject->setMessage(trim($title . "\n\n" . $message)); + } + else + { + $oMessageObject->setMessage($title); + $oMessageObject->dispMessage($message); + } // Display the message. $oModuleHandler = new ModuleHandler; diff --git a/classes/display/DisplayHandler.class.php b/classes/display/DisplayHandler.class.php index ebbdbb3e4..d98f250ed 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) + if($httpStatusCode && $httpStatusCode != 200 && !in_array(Context::getRequestMethod(), array('XMLRPC', 'JSON', 'JS_CALLBACK'))) { self::_printHttpStatusCode($httpStatusCode); } diff --git a/common/framework/debug.php b/common/framework/debug.php index f3702a5a2..75d96d523 100644 --- a/common/framework/debug.php +++ b/common/framework/debug.php @@ -417,7 +417,8 @@ class Debug } // Localize the error message. - $message = ini_get('display_errors') ? $message : lang('msg_server_error_see_log'); + $display_error_message = ini_get('display_errors') || (\Context::get('logged_info') && toBool(\Context::get('logged_info')->is_admin)); + $message = $display_error_message ? $message : lang('msg_server_error_see_log'); if ($message === 'msg_server_error_see_log') { $message = 'Your server is configured to hide error messages. Please see your server\'s error log for details.';