예제 #1
0
파일: Serve.php 프로젝트: rsids/bright_api
 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;
     }
 }
예제 #2
0
 /**
  * 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);
 }
예제 #3
0
 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);
 }