Bump development Monolog version
[lhc/web/wiklou.git] / includes / WebRequest.php
index c99e484..824e684 100644 (file)
@@ -315,7 +315,9 @@ class WebRequest {
                        }
                } else {
                        global $wgContLang;
-                       $data = isset( $wgContLang ) ? $wgContLang->normalize( $data ) : UtfNormal\Validator::cleanUp( $data );
+                       $data = isset( $wgContLang ) ?
+                               $wgContLang->normalize( $data ) :
+                               UtfNormal\Validator::cleanUp( $data );
                }
                return $data;
        }
@@ -754,7 +756,8 @@ class WebRequest {
         * Appends or replaces value of query variables.
         *
         * @param array $array Array of values to replace/add to query
-        * @param bool $onlyquery Whether to only return the query string and not the complete URL [deprecated]
+        * @param bool $onlyquery Whether to only return the query string
+        *  and not the complete URL [deprecated]
         * @return string
         */
        public function appendQueryArray( $array, $onlyquery = true ) {
@@ -871,7 +874,7 @@ class WebRequest {
        /**
         * Initialise the header list
         */
-       private function initHeaders() {
+       protected function initHeaders() {
                if ( count( $this->headers ) ) {
                        return;
                }
@@ -962,8 +965,7 @@ class WebRequest {
         * @return bool
         */
        public function checkUrlExtension( $extWhitelist = array() ) {
-               global $wgScriptExtension;
-               $extWhitelist[] = ltrim( $wgScriptExtension, '.' );
+               $extWhitelist[] = 'php';
                if ( IEUrlExtension::areServerVarsBad( $_SERVER, $extWhitelist ) ) {
                        if ( !$this->wasPosted() ) {
                                $newUrl = IEUrlExtension::fixUrlForIE6(
@@ -1174,120 +1176,6 @@ HTML;
        }
 }
 
-/**
- * Object to access the $_FILES array
- */
-class WebRequestUpload {
-       protected $request;
-       protected $doesExist;
-       protected $fileInfo;
-
-       /**
-        * Constructor. Should only be called by WebRequest
-        *
-        * @param WebRequest $request The associated request
-        * @param string $key Key in $_FILES array (name of form field)
-        */
-       public function __construct( $request, $key ) {
-               $this->request = $request;
-               $this->doesExist = isset( $_FILES[$key] );
-               if ( $this->doesExist ) {
-                       $this->fileInfo = $_FILES[$key];
-               }
-       }
-
-       /**
-        * Return whether a file with this name was uploaded.
-        *
-        * @return bool
-        */
-       public function exists() {
-               return $this->doesExist;
-       }
-
-       /**
-        * Return the original filename of the uploaded file
-        *
-        * @return string|null Filename or null if non-existent
-        */
-       public function getName() {
-               if ( !$this->exists() ) {
-                       return null;
-               }
-
-               global $wgContLang;
-               $name = $this->fileInfo['name'];
-
-               # Safari sends filenames in HTML-encoded Unicode form D...
-               # Horrid and evil! Let's try to make some kind of sense of it.
-               $name = Sanitizer::decodeCharReferences( $name );
-               $name = $wgContLang->normalize( $name );
-               wfDebug( __METHOD__ . ": {$this->fileInfo['name']} normalized to '$name'\n" );
-               return $name;
-       }
-
-       /**
-        * Return the file size of the uploaded file
-        *
-        * @return int File size or zero if non-existent
-        */
-       public function getSize() {
-               if ( !$this->exists() ) {
-                       return 0;
-               }
-
-               return $this->fileInfo['size'];
-       }
-
-       /**
-        * Return the path to the temporary file
-        *
-        * @return string|null Path or null if non-existent
-        */
-       public function getTempName() {
-               if ( !$this->exists() ) {
-                       return null;
-               }
-
-               return $this->fileInfo['tmp_name'];
-       }
-
-       /**
-        * Return the upload error. See link for explanation
-        * http://www.php.net/manual/en/features.file-upload.errors.php
-        *
-        * @return int One of the UPLOAD_ constants, 0 if non-existent
-        */
-       public function getError() {
-               if ( !$this->exists() ) {
-                       return 0; # UPLOAD_ERR_OK
-               }
-
-               return $this->fileInfo['error'];
-       }
-
-       /**
-        * Returns whether this upload failed because of overflow of a maximum set
-        * in php.ini
-        *
-        * @return bool
-        */
-       public function isIniSizeOverflow() {
-               if ( $this->getError() == UPLOAD_ERR_INI_SIZE ) {
-                       # PHP indicated that upload_max_filesize is exceeded
-                       return true;
-               }
-
-               $contentLength = $this->request->getHeader( 'CONTENT_LENGTH' );
-               if ( $contentLength > wfShorthandToInteger( ini_get( 'post_max_size' ) ) ) {
-                       # post_max_size is exceeded
-                       return true;
-               }
-
-               return false;
-       }
-}
-
 /**
  * WebRequest clone which takes values from a provided array.
  *
@@ -1297,6 +1185,7 @@ class FauxRequest extends WebRequest {
        private $wasPosted = false;
        private $session = array();
        private $requestUrl;
+       protected $cookies = array();
 
        /**
         * @param array $data Array of *non*-urlencoded key => value pairs, the
@@ -1324,11 +1213,10 @@ class FauxRequest extends WebRequest {
        }
 
        /**
-        * @param string $method
-        * @throws MWException
+        * Initialise the header list
         */
-       private function notImplemented( $method ) {
-               throw new MWException( "{$method}() not implemented" );
+       protected function initHeaders() {
+               // Nothing to init
        }
 
        /**
@@ -1371,7 +1259,38 @@ class FauxRequest extends WebRequest {
        }
 
        public function getCookie( $key, $prefix = null, $default = null ) {
-               return $default;
+               if ( $prefix === null ) {
+                       global $wgCookiePrefix;
+                       $prefix = $wgCookiePrefix;
+               }
+               $name = $prefix . $key;
+               return isset( $this->cookies[$name] ) ? $this->cookies[$name] : $default;
+       }
+
+       /**
+        * @since 1.26
+        * @param string $name Unprefixed name of the cookie to set
+        * @param string|null $value Value of the cookie to set
+        * @param string|null $prefix Cookie prefix. Defaults to $wgCookiePrefix
+        */
+       public function setCookie( $key, $value, $prefix = null ) {
+               $this->setCookies( array( $key => $value ), $prefix );
+       }
+
+       /**
+        * @since 1.26
+        * @param array $cookies
+        * @param string|null $prefix Cookie prefix. Defaults to $wgCookiePrefix
+        */
+       public function setCookies( $cookies, $prefix = null ) {
+               if ( $prefix === null ) {
+                       global $wgCookiePrefix;
+                       $prefix = $wgCookiePrefix;
+               }
+               foreach ( $cookies as $key => $value ) {
+                       $name = $prefix . $key;
+                       $this->cookies[$name] = $value;
+               }
        }
 
        public function checkSessionCookie() {
@@ -1393,17 +1312,23 @@ class FauxRequest extends WebRequest {
                return $this->protocol;
        }
 
-       private function initHeaders() {
-               return;
-       }
-
        /**
         * @param string $name
         * @param string $val
         */
        public function setHeader( $name, $val ) {
-               $name = strtoupper( $name );
-               $this->headers[$name] = $val;
+               $this->setHeaders( array( $name => $val ) );
+       }
+
+       /**
+        * @since 1.26
+        * @param array $headers
+        */
+       public function setHeaders( $headers ) {
+               foreach ( $headers as $name => $val ) {
+                       $name = strtoupper( $name );
+                       $this->headers[$name] = $val;
+               }
        }
 
        /**