Added a function that returns the list of supported formats to ApiMain
[lhc/web/wiklou.git] / includes / Exception.php
index ad345a3..67ad329 100644 (file)
@@ -88,7 +88,7 @@ class MWException extends Exception {
                $args = array_slice( func_get_args(), 2 );
 
                if ( $this->useMessageCache() ) {
-                       return wfMsgReal( $key, $args );
+                       return wfMsgNoTrans( $key, $args );
                } else {
                        return wfMsgReplaceArgs( $fallback, $args );
                }
@@ -133,13 +133,8 @@ class MWException extends Exception {
 
        /* Return titles of this error page */
        function getPageTitle() {
-               if ( $this->useMessageCache() ) {
-                       return wfMsg( 'internalerror' );
-               } else {
-                       global $wgSitename;
-
-                       return "$wgSitename error";
-               }
+               global $wgSitename;
+               return $this->msg( 'internalerror', "$wgSitename error" );
        }
 
        /**
@@ -265,7 +260,7 @@ ENDL
 
                $header = Html::element( 'img', array(
                        'src' => $wgLogo,
-                       'alt' => '' ), $this->getPageTitle() );
+                       'alt' => '' ) );
 
                $attribs = array( 'dir' => $dir, 'lang' => $code );
 
@@ -324,13 +319,35 @@ class ErrorPageError extends MWException {
                $this->title = $title;
                $this->msg = $msg;
                $this->params = $params;
-               parent::__construct( wfMsg( $msg ) );
+
+               if( $msg instanceof Message ){
+                       parent::__construct( $msg );
+               } else {
+                       parent::__construct( wfMsg( $msg ) );
+               }
        }
 
        function report() {
                global $wgOut;
 
-               $wgOut->showErrorPage( $this->title, $this->msg, $this->params );
+               if ( $wgOut->getTitle() ) {
+                       $wgOut->debug( 'Original title: ' . $wgOut->getTitle()->getPrefixedText() . "\n" );
+               }
+               $wgOut->setPageTitle( wfMsg( $this->title ) );
+               $wgOut->setHTMLTitle( wfMsg( 'errorpagetitle' ) );
+               $wgOut->setRobotPolicy( 'noindex,nofollow' );
+               $wgOut->setArticleRelated( false );
+               $wgOut->enableClientCache( false );
+               $wgOut->mRedirect = '';
+               $wgOut->clearHTML();
+
+               if( $this->msg instanceof Message ){
+                       $wgOut->addHTML( $this->msg->parse() );
+               } else {
+                       $wgOut->addWikiMsgArray( $this->msg, $this->params );
+               }
+
+               $wgOut->returnToMain();
                $wgOut->output();
        }
 }
@@ -384,6 +401,23 @@ class ReadOnlyError extends ErrorPageError {
        }
 }
 
+/**
+ * Show an error when the user hits a rate limit
+ */
+class ThrottledError extends ErrorPageError {
+       public function __construct(){
+               parent::__construct(
+                       'actionthrottled',
+                       'actionthrottledtext'
+               );
+       }
+       public function report(){
+               global $wgOut;
+               $wgOut->setStatusCode( 503 );
+               return parent::report();
+       }
+}
+
 /**
  * Show an error when the user tries to do something whilst blocked
  */