Tpl: add display_ajax_error() helper method

This commit is contained in:
Benjamin Renard 2023-11-20 18:45:50 +01:00
parent 85544a36b8
commit 945bf76d7d
Signed by: bn8
GPG key ID: 3E2E1CE1907115BC

View file

@ -524,16 +524,21 @@ class Tpl {
/**
* Display AJAX return
* @param array|null $data AJAX returned data (optional)
* @param int|null $error_code HTTP error code (optional, default: 400 if not $data['success'])
* @param bool $pretty AJAX returned data
* (optional, default: true if $_REQUEST['pretty'] is set, False otherwise)
* @return never
*/
public static function display_ajax_return($data=null, $pretty=false) {
public static function display_ajax_return($data=null, $error_code=null, $pretty=false) {
if (!is_array($data))
$data = array();
// Adjust HTTP error code on unsuccessfull request
elseif (isset($data['success']) && !$data['success'] && http_response_code() == 200)
http_response_code(400);
// Adjust HTTP error code on unsuccessfull request (or if custom error code is provided)
if (
$error_code
|| (isset($data['success']) && !$data['success'] && http_response_code() == 200)
)
http_response_code($error_code ? $error_code : 400);
$data['messages'] = self :: get_messages();
if (!$data['messages']) unset($data['messages']);
@ -550,6 +555,29 @@ class Tpl {
exit();
}
/**
* Display AJAX error
* @param string|null $error Error message (optional)
* @param int|null $error_code HTTP error code (optional, default: 400)
* @param bool $pretty AJAX returned data
* (optional, default: true if $_REQUEST['pretty'] is set, False otherwise)
* @return never
*/
public static function display_ajax_error($error=null, $error_code=null, $pretty=false) {
self :: display_ajax_return(
array(
'success' => false,
'error' => (
$error?
$error:
I18n::_("Unexpected error occured. If problem persist, please contact support.")
),
),
$error_code,
$pretty
);
}
/**
* Handle a fatal error
* @param string $error The error message
@ -576,7 +604,7 @@ class Tpl {
// Handle API mode
if (Url :: api_mode())
self :: display_ajax_return(array('success' => false, 'error' => $error));
self :: display_ajax_error($error);
self :: assign('fatal_error', $error);
self :: display('fatal_error.tpl');