[ Index ]

PHP Cross Reference of MediaWiki-1.24.0

title

Body

[close]

/includes/exception/ -> HttpError.php (source)

   1  <?php
   2  /**
   3   * This program is free software; you can redistribute it and/or modify
   4   * it under the terms of the GNU General Public License as published by
   5   * the Free Software Foundation; either version 2 of the License, or
   6   * (at your option) any later version.
   7   *
   8   * This program is distributed in the hope that it will be useful,
   9   * but WITHOUT ANY WARRANTY; without even the implied warranty of
  10   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11   * GNU General Public License for more details.
  12   *
  13   * You should have received a copy of the GNU General Public License along
  14   * with this program; if not, write to the Free Software Foundation, Inc.,
  15   * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  16   * http://www.gnu.org/copyleft/gpl.html
  17   *
  18   * @file
  19   */
  20  
  21  /**
  22   * Show an error that looks like an HTTP server error.
  23   * Replacement for wfHttpError().
  24   *
  25   * @since 1.19
  26   * @ingroup Exception
  27   */
  28  class HttpError extends MWException {
  29      private $httpCode, $header, $content;
  30  
  31      /**
  32       * Constructor
  33       *
  34       * @param int $httpCode HTTP status code to send to the client
  35       * @param string|Message $content Content of the message
  36       * @param string|Message $header Content of the header (\<title\> and \<h1\>)
  37       */
  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  
  45      /**
  46       * Returns the HTTP status code supplied to the constructor.
  47       *
  48       * @return int
  49       */
  50  	public function getStatusCode() {
  51          return $this->httpCode;
  52      }
  53  
  54      /**
  55       * Report the HTTP error.
  56       * Sends the appropriate HTTP status code and outputs an
  57       * HTML page with an error message.
  58       */
  59  	public function report() {
  60          $httpMessage = HttpStatus::getMessage( $this->httpCode );
  61  
  62          header( "Status: {$this->httpCode} {$httpMessage}", true, $this->httpCode );
  63          header( 'Content-type: text/html; charset=utf-8' );
  64  
  65          print $this->getHTML();
  66      }
  67  
  68      /**
  69       * Returns HTML for reporting the HTTP error.
  70       * This will be a minimal but complete HTML document.
  71       *
  72       * @return string HTML
  73       */
  74  	public function getHTML() {
  75          if ( $this->header === null ) {
  76              $header = HttpStatus::getMessage( $this->httpCode );
  77          } elseif ( $this->header instanceof Message ) {
  78              $header = $this->header->escaped();
  79          } else {
  80              $header = htmlspecialchars( $this->header );
  81          }
  82  
  83          if ( $this->content instanceof Message ) {
  84              $content = $this->content->escaped();
  85          } else {
  86              $content = htmlspecialchars( $this->content );
  87          }
  88  
  89          return "<!DOCTYPE html>\n" .
  90          "<html><head><title>$header</title></head>\n" .
  91          "<body><h1>$header</h1><p>$content</p></body></html>\n";
  92      }
  93  }


Generated: Fri Nov 28 14:03:12 2014 Cross-referenced by PHPXref 0.7.1