mirror of
https://github.com/friendica/friendica
synced 2025-04-27 21:50:11 +00:00
Add themed error pages
- Module init, post and rawContent-triggered HTTPException generate the classic bare HTTP status page - Module content-triggered HTTPException generate themed error pages - Trim System::httpExit to the bare minimum
This commit is contained in:
parent
8eba329111
commit
358baa9f62
5 changed files with 262 additions and 189 deletions
|
@ -120,58 +120,17 @@ class System extends BaseObject
|
|||
/**
|
||||
* @brief Send HTTP status header and exit.
|
||||
*
|
||||
* @param integer $val HTTP status result value
|
||||
* @param array $description optional message
|
||||
* 'title' => header title
|
||||
* 'description' => optional message
|
||||
* @throws InternalServerErrorException
|
||||
* @param integer $val HTTP status result value
|
||||
* @param string $message Error message. Optional.
|
||||
* @param string $content Response body. Optional.
|
||||
* @throws \Exception
|
||||
*/
|
||||
public static function httpExit($val, $description = [])
|
||||
public static function httpExit($val, $message = '', $content = '')
|
||||
{
|
||||
$err = '';
|
||||
if ($val >= 400) {
|
||||
if (!empty($description['title'])) {
|
||||
$err = $description['title'];
|
||||
} else {
|
||||
$title = [
|
||||
'400' => L10n::t('Error 400 - Bad Request'),
|
||||
'401' => L10n::t('Error 401 - Unauthorized'),
|
||||
'403' => L10n::t('Error 403 - Forbidden'),
|
||||
'404' => L10n::t('Error 404 - Not Found'),
|
||||
'500' => L10n::t('Error 500 - Internal Server Error'),
|
||||
'503' => L10n::t('Error 503 - Service Unavailable'),
|
||||
];
|
||||
$err = defaults($title, $val, 'Error ' . $val);
|
||||
$description['title'] = $err;
|
||||
}
|
||||
if (empty($description['description'])) {
|
||||
// Explanations are taken from https://en.wikipedia.org/wiki/List_of_HTTP_status_codes
|
||||
$explanation = [
|
||||
'400' => L10n::t('The server cannot or will not process the request due to an apparent client error.'),
|
||||
'401' => L10n::t('Authentication is required and has failed or has not yet been provided.'),
|
||||
'403' => L10n::t('The request was valid, but the server is refusing action. The user might not have the necessary permissions for a resource, or may need an account.'),
|
||||
'404' => L10n::t('The requested resource could not be found but may be available in the future.'),
|
||||
'500' => L10n::t('An unexpected condition was encountered and no more specific message is suitable.'),
|
||||
'503' => L10n::t('The server is currently unavailable (because it is overloaded or down for maintenance). Please try again later.'),
|
||||
];
|
||||
if (!empty($explanation[$val])) {
|
||||
$description['description'] = $explanation[$val];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($val >= 200 && $val < 300) {
|
||||
$err = 'OK';
|
||||
}
|
||||
|
||||
Logger::log('http_status_exit ' . $val);
|
||||
header($_SERVER["SERVER_PROTOCOL"] . ' ' . $val . ' ' . $err);
|
||||
header($_SERVER["SERVER_PROTOCOL"] . ' ' . $val . ' ' . $message);
|
||||
|
||||
if (isset($description["title"])) {
|
||||
$tpl = Renderer::getMarkupTemplate('http_status.tpl');
|
||||
echo Renderer::replaceMacros($tpl, ['$title' => $description["title"],
|
||||
'$description' => defaults($description, 'description', '')]);
|
||||
}
|
||||
echo $content;
|
||||
|
||||
exit();
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue