fix router error for /index/nonexistent

This commit is contained in:
Miraty 2024-01-28 00:13:29 +01:00
parent 7330f3a769
commit 2bdff41e80

View file

@ -11,18 +11,25 @@ define('PAGE_ADDRESS', $pageAddress . ((substr($pageAddress, -1) === '/' OR $pag
define('PAGE_LINEAGE', explode('/', PAGE_ADDRESS)); define('PAGE_LINEAGE', explode('/', PAGE_ADDRESS));
define('SERVICE', dirname(PAGE_ADDRESS)); define('SERVICE', dirname(PAGE_ADDRESS));
function pageNotFound(): never {
http_response_code(404);
exit(_('Page not found.'));
}
function getPageInformations(array $pages, array $pageElements): array { // Recursively retrieves page metadata from pages.php function getPageInformations(array $pages, array $pageElements): array { // Recursively retrieves page metadata from pages.php
if (!isset($pages['index']) OR $pageElements[0] === 'index') if (!isset($pages['index']) OR $pageElements[0] === 'index') {
if (count($pageElements) !== 1)
pageNotFound();
return [ return [
'titles_lineage' => [$pages[$pageElements[0]]['title'] ?? false], 'titles_lineage' => [$pages[$pageElements[0]]['title'] ?? pageNotFound()],
'page_metadata' => $pages[$pageElements[0]] ?? NULL, 'page_metadata' => $pages[$pageElements[0]],
'terminal' => $pageElements[0] !== 'index' 'terminal' => $pageElements[0] !== 'index'
]; ];
}
$result = $pages['index']['title']; $result = $pages['index']['title'];
if (!isset($pageElements[1])) if (!isset($pageElements[1]))
unset($pages['index']); unset($pages['index']);
else else
$pages = $pages[array_shift($pageElements)] ?? false; $pages = $pages[array_shift($pageElements)] ?? [];
$results = getPageInformations($pages, $pageElements); $results = getPageInformations($pages, $pageElements);
$results['titles_lineage'][] = $result; $results['titles_lineage'][] = $result;
return $results; return $results;
@ -32,11 +39,6 @@ define('TITLES_LINEAGE', array_reverse($pageInformations['titles_lineage']));
define('PAGE_METADATA', $pageInformations['page_metadata']); define('PAGE_METADATA', $pageInformations['page_metadata']);
define('PAGE_TERMINAL', $pageInformations['terminal']); define('PAGE_TERMINAL', $pageInformations['terminal']);
if (!TITLES_LINEAGE[array_key_last(TITLES_LINEAGE)]) {
http_response_code(404);
exit('Page not found.');
}
if (isset($_SERVER['SERVER_NAME']) !== true) if (isset($_SERVER['SERVER_NAME']) !== true)
exit('Missing <code>$_SERVER[\'SERVER_NAME\']</code>'); exit('Missing <code>$_SERVER[\'SERVER_NAME\']</code>');
if (in_array($_SERVER['SERVER_NAME'], CONF['common']['public_domains'], true) !== true) if (in_array($_SERVER['SERVER_NAME'], CONF['common']['public_domains'], true) !== true)