Merge "Separate $wgArticlePath from $wgUsePathInfo."
authorBrion VIBBER <brion@wikimedia.org>
Wed, 4 Apr 2012 18:12:09 +0000 (18:12 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Wed, 4 Apr 2012 18:12:09 +0000 (18:12 +0000)
RELEASE-NOTES-1.20
includes/HTMLForm.php
includes/WebRequest.php

index 94062b4..c14ed66 100644 (file)
@@ -11,6 +11,9 @@ MediaWiki 1.20 is an alpha-quality branch and is not recommended for use in
 production.
 
 === Configuration changes in 1.20 ===
+* `$wgUsePathInfo = true;` is no longer needed to make $wgArticlePath work on servers
+  using like nginx, lighttpd, and apache over fastcgi. MediaWiki now always extracts
+  path info from REQUEST_URI if it's available.
 
 === New features in 1.20 ===
 * Added TitleIsAlwaysKnown hook which gets called when determining if a page exists.
index dccf967..74174b5 100644 (file)
@@ -516,7 +516,7 @@ class HTMLForm extends ContextSource {
         * @return String HTML.
         */
        function getHiddenFields() {
-               global $wgUsePathInfo;
+               global $wgArticlePath;
 
                $html = '';
                if( $this->getMethod() == 'post' ){
@@ -524,7 +524,7 @@ class HTMLForm extends ContextSource {
                        $html .= Html::hidden( 'title', $this->getTitle()->getPrefixedText() ) . "\n";
                }
 
-               if ( !$wgUsePathInfo && $this->getMethod() == 'get' ) {
+               if ( strpos( $wgArticlePath, '?' ) !== false && $this->getMethod() == 'get' ) {
                        $html .= Html::hidden( 'title', $this->getTitle()->getPrefixedText() ) . "\n";
                }
 
index 9b66d7d..81f42dc 100644 (file)
@@ -77,6 +77,7 @@ class WebRequest {
         * @return Array: Any query arguments found in path matches.
         */
        static public function getPathInfo( $want = 'all' ) {
+               global $wgUsePathInfo;
                // PATH_INFO is mangled due to http://bugs.php.net/bug.php?id=31892
                // And also by Apache 2.x, double slashes are converted to single slashes.
                // So we will use REQUEST_URI if possible.
@@ -134,15 +135,17 @@ class WebRequest {
 
                                $matches = $router->parse( $path );
                        }
-               } elseif ( isset( $_SERVER['ORIG_PATH_INFO'] ) && $_SERVER['ORIG_PATH_INFO'] != '' ) {
-                       // Mangled PATH_INFO
-                       // http://bugs.php.net/bug.php?id=31892
-                       // Also reported when ini_get('cgi.fix_pathinfo')==false
-                       $matches['title'] = substr( $_SERVER['ORIG_PATH_INFO'], 1 );
-
-               } elseif ( isset( $_SERVER['PATH_INFO'] ) && ($_SERVER['PATH_INFO'] != '') ) {
-                       // Regular old PATH_INFO yay
-                       $matches['title'] = substr( $_SERVER['PATH_INFO'], 1 );
+               } elseif ( $wgUsePathInfo ) {
+                       if ( isset( $_SERVER['ORIG_PATH_INFO'] ) && $_SERVER['ORIG_PATH_INFO'] != '' ) {
+                               // Mangled PATH_INFO
+                               // http://bugs.php.net/bug.php?id=31892
+                               // Also reported when ini_get('cgi.fix_pathinfo')==false
+                               $matches['title'] = substr( $_SERVER['ORIG_PATH_INFO'], 1 );
+
+                       } elseif ( isset( $_SERVER['PATH_INFO'] ) && ($_SERVER['PATH_INFO'] != '') ) {
+                               // Regular old PATH_INFO yay
+                               $matches['title'] = substr( $_SERVER['PATH_INFO'], 1 );
+                       }
                }
 
                return $matches;
@@ -206,18 +209,14 @@ class WebRequest {
         * available variant URLs.
         */
        public function interpolateTitle() {
-               global $wgUsePathInfo;
-
                // bug 16019: title interpolation on API queries is useless and sometimes harmful
                if ( defined( 'MW_API' ) ) {
                        return;
                }
 
-               if ( $wgUsePathInfo ) {
-                       $matches = self::getPathInfo( 'title' );
-                       foreach( $matches as $key => $val) {
-                               $this->data[$key] = $_GET[$key] = $_REQUEST[$key] = $val;
-                       }
+               $matches = self::getPathInfo( 'title' );
+               foreach( $matches as $key => $val) {
+                       $this->data[$key] = $_GET[$key] = $_REQUEST[$key] = $val;
                }
        }