MediaWiki REL1_34
HttpError.php
Go to the documentation of this file.
1<?php
22
30class HttpError extends MWException {
32
38 public function __construct( $httpCode, $content, $header = null ) {
39 parent::__construct( $content );
40 $this->httpCode = (int)$httpCode;
41 $this->header = $header;
42 $this->content = $content;
43 }
44
54 public function isLoggable() {
55 return false;
56 }
57
63 public function getStatusCode() {
64 return $this->httpCode;
65 }
66
72 public function report() {
73 $this->doLog();
74
75 HttpStatus::header( $this->httpCode );
76 header( 'Content-type: text/html; charset=utf-8' );
77
78 print $this->getHTML();
79 }
80
81 private function doLog() {
82 $logger = LoggerFactory::getInstance( 'HttpError' );
84
85 if ( $content instanceof Message ) {
86 $content = $content->text();
87 }
88
89 $context = [
90 'file' => $this->getFile(),
91 'line' => $this->getLine(),
92 'http_code' => $this->httpCode,
93 ];
94
95 $logMsg = "$content ({http_code}) from {file}:{line}";
96
97 if ( $this->getStatusCode() < 500 ) {
98 $logger->info( $logMsg, $context );
99 } else {
100 $logger->error( $logMsg, $context );
101 }
102 }
103
110 public function getHTML() {
111 if ( $this->header === null ) {
112 $titleHtml = htmlspecialchars( HttpStatus::getMessage( $this->httpCode ) );
113 } elseif ( $this->header instanceof Message ) {
114 $titleHtml = $this->header->escaped();
115 } else {
116 $titleHtml = htmlspecialchars( $this->header );
117 }
118
119 if ( $this->content instanceof Message ) {
120 $contentHtml = $this->content->escaped();
121 } else {
122 $contentHtml = nl2br( htmlspecialchars( $this->content ) );
123 }
124
125 return "<!DOCTYPE html>\n" .
126 "<html><head><title>$titleHtml</title></head>\n" .
127 "<body><h1>$titleHtml</h1><p>$contentHtml</p></body></html>\n";
128 }
129}
getFile()
Get the file for this page, if one exists.
Show an error that looks like an HTTP server error.
Definition HttpError.php:30
report()
Report and log the HTTP error.
Definition HttpError.php:72
getStatusCode()
Returns the HTTP status code supplied to the constructor.
Definition HttpError.php:63
__construct( $httpCode, $content, $header=null)
Definition HttpError.php:38
isLoggable()
We don't want the default exception logging as we got our own logging set up in self::report.
Definition HttpError.php:54
getHTML()
Returns HTML for reporting the HTTP error.
MediaWiki exception.
static header( $header)
Send a header, if we haven't already sent them.
PSR-3 logger instance factory.
The Message class provides methods which fulfil two basic services:
Definition Message.php:162
while(( $__line=Maintenance::readconsole()) !==false) print
Definition eval.php:64
$context
Definition load.php:45