Throw an exception if Parser::disableCache is called before mOutput initialized ...
[lhc/web/wiklou.git] / includes / OutputPage.php
index 4495714..87712fd 100644 (file)
@@ -1918,27 +1918,34 @@ class OutputPage extends ContextSource {
                if ( $this->mRedirect != '' ) {
                        # Standards require redirect URLs to be absolute
                        $this->mRedirect = wfExpandUrl( $this->mRedirect, PROTO_CURRENT );
-                       if( $this->mRedirectCode == '301' || $this->mRedirectCode == '303' ) {
-                               if( !$wgDebugRedirects ) {
-                                       $message = HttpStatus::getMessage( $this->mRedirectCode );
-                                       $response->header( "HTTP/1.1 {$this->mRedirectCode} $message" );
+
+                       $redirect = $this->mRedirect;
+                       $code = $this->mRedirectCode;
+
+                       if( wfRunHooks( "BeforePageRedirect", array( $this, &$redirect, &$code ) ) ) {
+                               if( $code == '301' || $code == '303' ) {
+                                       if( !$wgDebugRedirects ) {
+                                               $message = HttpStatus::getMessage( $code );
+                                               $response->header( "HTTP/1.1 $code $message" );
+                                       }
+                                       $this->mLastModified = wfTimestamp( TS_RFC2822 );
+                               }
+                               if ( $wgVaryOnXFP ) {
+                                       $this->addVaryHeader( 'X-Forwarded-Proto' );
+                               }
+                               $this->sendCacheControl();
+
+                               $response->header( "Content-Type: text/html; charset=utf-8" );
+                               if( $wgDebugRedirects ) {
+                                       $url = htmlspecialchars( $redirect );
+                                       print "<html>\n<head>\n<title>Redirect</title>\n</head>\n<body>\n";
+                                       print "<p>Location: <a href=\"$url\">$url</a></p>\n";
+                                       print "</body>\n</html>\n";
+                               } else {
+                                       $response->header( 'Location: ' . $redirect );
                                }
-                               $this->mLastModified = wfTimestamp( TS_RFC2822 );
-                       }
-                       if ( $wgVaryOnXFP ) {
-                               $this->addVaryHeader( 'X-Forwarded-Proto' );
-                       }
-                       $this->sendCacheControl();
-
-                       $response->header( "Content-Type: text/html; charset=utf-8" );
-                       if( $wgDebugRedirects ) {
-                               $url = htmlspecialchars( $this->mRedirect );
-                               print "<html>\n<head>\n<title>Redirect</title>\n</head>\n<body>\n";
-                               print "<p>Location: <a href=\"$url\">$url</a></p>\n";
-                               print "</body>\n</html>\n";
-                       } else {
-                               $response->header( 'Location: ' . $this->mRedirect );
                        }
+
                        wfProfileOut( __METHOD__ );
                        return;
                } elseif ( $this->mStatusCode ) {