public function serveSpecial($type) { switch ($type) { case Serve::$SPECIAL_403: if (!isset($_SERVER['REDIRECT_STATUS']) || $_SERVER['REDIRECT_STATUS'] != 403) { $_SERVER['REDIRECT_STATUS'] = 403; header('Status: 403 Forbidden'); header($_SERVER['SERVER_PROTOCOL'] . ' 403 Forbidden'); } // Include 403 $bright_uri = USEPREFIX ? '/' . $_SESSION['language'] . '/403' : '/403'; $nodes = $this->_router->getTreeNodes($bright_uri); $this->servepage($nodes); break; case Serve::$SPECIAL_404: if (isset($_SERVER['REDIRECT_STATUS']) && $_SERVER['REDIRECT_STATUS'] == 403) { // 403 requested, but no 403 error page defined exit; } if (!isset($_SERVER['HTTP_REFERER'])) { $_SERVER['HTTP_REFERER'] = 'unknown'; } $bright_log = date('r') . ': ' . $_SERVER['REQUEST_URI'] . ' resulted in a 404, came from: ' . $_SERVER['HTTP_REFERER']; Log::addTo404Log($bright_log); if (!isset($_SERVER['REDIRECT_STATUS']) || $_SERVER['REDIRECT_STATUS'] != 404) { $_SERVER['REDIRECT_STATUS'] = 404; header('Status: 404 Not Found'); header($_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found'); } // Fix for beluga server, THIS SHOULD NEVER HAPPEN! if (!array_key_exists('language', $_SESSION)) { error_log('LANGUAGE NOT SET'); error_log(var_export($_SESSION, true)); $this->_setLanguage(); } // Include 404 $bright_uri = USEPREFIX ? '/' . $_SESSION['language'] . '/404/' : '/404/'; $nodes = $this->_router->getTreeNodes($bright_uri); $this->servepage($nodes); break; } }