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; } }
/** * Logs an Error, should be in Config, but that doesn't extend permissions * @param string $error The error stacktrace * @throws \Exception */ public function logError($error) { if (!is_string($error)) { throw $this->throwException(2003); } $error = strip_tags($error); Log::addToLog('-------------------------------------------'); Log::addToLog(date('r') . ':'); Log::addToLog($error); Log::addToLog('-------------------------------------------'); $mailer = new Mailer(); $message = 'An error occurred at ' . date('r') . ' on ' . SITENAME . "\r\nThe stacktrace is:\r\n" . $error; $mailer->sendPlainMail(SYSMAIL, SYSMAIL, 'Bright Error', $message); }
public function throwException($id, $vars = null) { Log::addToLog("Error {$id} " . print_r($vars, true)); if (array_key_exists($id, $this->_exceptions)) { $exc = $this->_exceptions[$id]; if ($vars) { if (!is_array($vars)) { $vars = array($vars); } for ($i = 0; $i < count($vars); $i++) { $exc = str_replace('#' . $i, $vars[$i], $exc); } } return new \Exception($exc, $id); } return new \Exception('An unspecified error occured', $id); }