/** * @fn error($code, $headers) * @short Redirects the request to the error page for the desired HTTP error code. * @details This method redirects the request to the ErrorController action method that * handles the HTTP error code <tt>code</tt>, optionally sending a set of headers. * @param code The HTTP error code. * @param headers An optional set of HTTP headers to send to the client. */ public static function error($code = 500, $headers = array()) { if ($code != 400) { $error = new ServerError(array('code' => $code, 'description' => var_export($_SERVER, TRUE), 'occurred_at' => date('Y-m-d H:i:s'))); $error->save(); } foreach ($headers as $header => $value) { header("{$header}: {$value}"); } $_SESSION['error_processed'] = TRUE; header(sprintf("Location: http://%s%serror/%s.html", $_SERVER['HTTP_HOST'], APPLICATION_ROOT, $code)); exit; }
/** * @fn generate_error($code) * @short Private common error handler. * @param code An error code. */ private function generate_error($code) { $desc = self::$descriptions[$code]; header("HTTP/1.1 {$code} {$desc}"); if (isset($_SESSION['error_processed'])) { unset($_SESSION['error_processed']); return; } if ($code == 404) { return; } $error = new ServerError(array('code' => $code, 'description' => var_export($_SERVER, TRUE), 'occurred_at' => date('Y-m-d H:i:s'))); $error->save(); }
/** * @inheritdoc */ public function __construct($message = self::DEFAULT_MESSAGE, $code = Status::SERVICE_UNAVAILABLE, \Exception $previous = null) { parent::__construct($message, $code, $previous); }
/** * @fn server_error_delete * @short Action method that deletes server error items. */ public function server_error_delete() { if (!empty($_GET['id'])) { $this->redirect_to(array('action' => 'server_error_read', 'id' => $_GET['id'])); } else { if (!empty($_POST['id'])) { if (is_array($_POST['id'])) { $conn = Db::get_connection(); $conn->prepare('DELETE FROM `server_errors` ' . "WHERE FIND_IN_SET(`id`, '{1}') " . 'LIMIT {2}', implode(',', $_POST['id']), count($_POST['id'])); $conn->exec(); Db::close_connection($conn); } else { $error = new ServerError(); $error->find_by_id($_REQUEST['id']); $error->delete(); } } $this->redirect_to(array('action' => 'server_error_list')); } }