Code style tweaks per brion's suggestions on Wikitech-l
[lhc/web/wiklou.git] / includes / WebRequest.php
index f4b0294..3533695 100644 (file)
  *
  * @package MediaWiki
  */
+
+/**
+ * Some entry points may use this file without first enabling the 
+ * autoloader.
+ */
+if ( !function_exists( '__autoload' ) ) {
+       require_once( dirname(__FILE__) . '/normal/UtfNormal.php' );
+}
+
 class WebRequest {
        function WebRequest() {
                $this->checkMagicQuotes();
                global $wgUsePathInfo;
-               if( isset( $_SERVER['PATH_INFO'] ) && ($_SERVER['PATH_INFO'] != '') && $wgUsePathInfo ) {
-                       # Stuff it!
-                       $_GET['title'] = $_REQUEST['title'] =
-                               substr( $_SERVER['PATH_INFO'], 1 );
+               if ( $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
+                               $_GET['title'] = $_REQUEST['title'] = substr( $_SERVER['ORIG_PATH_INFO'], 1 );
+                       } elseif ( isset( $_SERVER['PATH_INFO'] ) && ($_SERVER['PATH_INFO'] != '') && $wgUsePathInfo ) {
+                               $_GET['title'] = $_REQUEST['title'] = substr( $_SERVER['PATH_INFO'], 1 );
+                       }
                }
        }
+       
+       private $_response;
 
        /**
         * Recursively strips slashes from the given array;
@@ -117,7 +133,6 @@ class WebRequest {
                                        $data = $wgContLang->checkTitleEncoding( $data );
                                }
                        }
-                       require_once( 'normal/UtfNormal.php' );
                        $data = $this->normalizeUnicode( $data );
                        return $data;
                } else {
@@ -437,6 +452,19 @@ class WebRequest {
                wfDebug( "WebRequest::getFileName() '" . $_FILES[$key]['name'] . "' normalized to '$name'\n" );
                return $name;
        }
+       
+       /**
+        * Return a handle to WebResponse style object, for setting cookies, 
+        * headers and other stuff, for Request being worked on.
+        */
+       function response() {
+               /* Lazy initialization of response object for this request */
+               if (!is_object($this->_response)) {
+                       $this->_response = new WebResponse;
+               } 
+               return $this->_response;
+       }
+       
 }
 
 /**
@@ -445,15 +473,14 @@ class WebRequest {
  * @package MediaWiki
  */
 class FauxRequest extends WebRequest {
-       private
-               $data = null,
-               $wasPosted = false ;
+       var $data = null;
+       var $wasPosted = false;
 
        function FauxRequest( $data, $wasPosted = false ) {
                if( is_array( $data ) ) {
                        $this->data = $data;
                } else {
-                       wfDebugDieBacktrace( "FauxRequest() got bogus data" );
+                       throw new MWException( "FauxRequest() got bogus data" );
                }
                $this->wasPosted = $wasPosted;
        }
@@ -480,11 +507,11 @@ class FauxRequest extends WebRequest {
        }
 
        function getRequestURL() {
-               wfDebugDieBacktrace( 'FauxRequest::getRequestURL() not implemented' );
+               throw new MWException( 'FauxRequest::getRequestURL() not implemented' );
        }
 
        function appendQuery( $query ) {
-               wfDebugDieBacktrace( 'FauxRequest::appendQuery() not implemented' );
+               throw new MWException( 'FauxRequest::appendQuery() not implemented' );
        }
 
 }