Separate $wgArticlePath from $wgUsePathInfo.
authorDaniel Friesen <pub-github@nadir-seen-fire.com>
Sat, 24 Mar 2012 08:25:01 +0000 (01:25 -0700)
committerDaniel Friesen <pub-github@nadir-seen-fire.com>
Sat, 24 Mar 2012 10:44:08 +0000 (03:44 -0700)
- $wgUsePathInfo is now only used on servers not passing REQUEST_URI to determine if PATH_INFO should be used
- WebRequest now extracts information from REQUEST_URI even when $wgUsePathInfo is false
- HTMLForm bases it's decision on whether or not to include a hidden 'title' input on whether $wgArticlePath uses a query instead of assuming that $wgUsePathInfo was used to set the article path

Change-Id: I1b461fef88b26d045f4edd7553b59255c5e595d8

RELEASE-NOTES-1.20
includes/HTMLForm.php
includes/WebRequest.php

index d4533aa..72b9683 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;
                }
        }