Merge "Handle missing namespace prefix in XML dumps more gracefully"
[lhc/web/wiklou.git] / includes / exception / ErrorPageError.php
index 6366c74..2bed87a 100644 (file)
@@ -24,7 +24,7 @@
  * @since 1.7
  * @ingroup Exception
  */
-class ErrorPageError extends MWException {
+class ErrorPageError extends MWException implements ILocalizedException {
        public $title, $msg, $params;
 
        /**
@@ -34,24 +34,32 @@ class ErrorPageError extends MWException {
         * @param string|Message $msg Message key (string) for error text, or a Message object
         * @param array $params Array with parameters to wfMessage()
         */
-       public function __construct( $title, $msg, $params = array() ) {
+       public function __construct( $title, $msg, $params = [] ) {
                $this->title = $title;
                $this->msg = $msg;
                $this->params = $params;
 
-               // Bug 44111: Messages in the log files should be in English and not
+               // T46111: Messages in the log files should be in English and not
                // customized by the local wiki. So get the default English version for
                // passing to the parent constructor. Our overridden report() below
                // makes sure that the page shown to the user is not forced to English.
-               if ( $msg instanceof Message ) {
-                       $enMsg = clone $msg;
-               } else {
-                       $enMsg = wfMessage( $msg, $params );
-               }
+               $enMsg = $this->getMessageObject();
                $enMsg->inLanguage( 'en' )->useDatabase( false );
                parent::__construct( $enMsg->text() );
        }
 
+       /**
+        * Return a Message object for this exception
+        * @since 1.29
+        * @return Message
+        */
+       public function getMessageObject() {
+               if ( $this->msg instanceof Message ) {
+                       return clone $this->msg;
+               }
+               return wfMessage( $this->msg, $this->params );
+       }
+
        public function report() {
                global $wgOut;