Modified Special:Categories to subclass SpecialPage
[lhc/web/wiklou.git] / includes / HttpFunctions.php
index 3023c3c..9464895 100644 (file)
@@ -12,9 +12,10 @@ class Http {
 
        /**
         * Perform an HTTP request
-        * @param $method string HTTP method. Usually GET/POST
-        * @param $url string Full URL to act on
-        * @param $options options to pass to HttpRequest object.
+        *
+        * @param $method String: HTTP method. Usually GET/POST
+        * @param $url String: full URL to act on
+        * @param $options Array: options to pass to HttpRequest object.
         *      Possible keys for the array:
         *    - timeout             Timeout length in seconds
         *    - postData            An array of key-value pairs or a url-encoded form data
@@ -28,11 +29,11 @@ class Http {
         *    - followRedirects     Whether to follow redirects (defaults to false). 
         *                                  Note: this should only be used when the target URL is trusted,
         *                                  to avoid attacks on intranet services accessible by HTTP.
-        * @returns mixed (bool)false on failure or a string on success
+        * @return Mixed: (bool)false on failure or a string on success
         */
        public static function request( $method, $url, $options = array() ) {
                $url = wfExpandUrl( $url );
-               wfDebug( "HTTP: $method: $url" );
+               wfDebug( "HTTP: $method: $url\n" );
                $options['method'] = strtoupper( $method );
                if ( !isset( $options['timeout'] ) ) {
                        $options['timeout'] = 'default';
@@ -65,8 +66,9 @@ class Http {
 
        /**
         * Check if the URL can be served by localhost
-        * @param $url string Full url to check
-        * @return bool
+        *
+        * @param $url String: full url to check
+        * @return Boolean
         */
        public static function isLocalURL( $url ) {
                global $wgCommandLineMode, $wgConf;
@@ -99,7 +101,7 @@ class Http {
 
        /**
         * A standard user-agent we can use for external requests.
-        * @returns string
+        * @return String
         */
        public static function userAgent() {
                global $wgVersion;
@@ -108,8 +110,9 @@ class Http {
 
        /**
         * Checks that the given URI is a valid one
+        *
         * @param $uri Mixed: URI to check for validity
-        * @returns bool
+        * @returns Boolean
         */
        public static function isValidURI( $uri ) {
                return preg_match(
@@ -152,8 +155,8 @@ class HttpRequest {
        public $status;
 
        /**
-        * @param $url   string url to use
-        * @param $options array (optional) extra params to pass (see Http::request())
+        * @param $url String: url to use
+        * @param $options Array: (optional) extra params to pass (see Http::request())
         */
        function __construct( $url, $options = array() ) {
                global $wgHTTPTimeout;
@@ -210,7 +213,8 @@ class HttpRequest {
 
        /**
         * Get the body, or content, of the response to the request
-        * @return string
+        *
+        * @return String
         */
        public function getContent() {
                return $this->content;
@@ -218,7 +222,8 @@ class HttpRequest {
 
        /**
         * Set the parameters of the request
-        * @param $params array
+        
+        * @param $args Array
         * @todo overload the args param
         */
        public function setData($args) {
@@ -228,7 +233,8 @@ class HttpRequest {
        /**
         * Take care of setting up the proxy
         * (override in subclass)
-        * @return string
+        *
+        * @return String
         */
        public function proxySetup() {
                global $wgHTTPProxy;
@@ -286,7 +292,8 @@ class HttpRequest {
 
        /**
         * Set the callback
-        * @param $callback callback
+        *
+        * @param $callback Callback
         */
        public function setCallback( $callback ) {
                $this->callback = $callback;
@@ -295,8 +302,9 @@ class HttpRequest {
        /**
         * A generic callback to read the body of the response from a remote
         * server.
+        *
         * @param $fh handle
-        * @param $content string
+        * @param $content String
         */
        public function read( $fh, $content ) {
                $this->content .= $content;
@@ -305,6 +313,7 @@ class HttpRequest {
 
        /**
         * Take care of whatever is necessary to perform the URI request.
+        *
         * @return Status
         */
        public function execute() {
@@ -341,7 +350,8 @@ class HttpRequest {
         * Parses the headers, including the HTTP status code and any
         * Set-Cookie headers.  This function expectes the headers to be
         * found in an array in the member variable headerList.
-        * @returns nothing
+        *
+        * @return nothing
         */
        protected function parseHeader() {
                $lastname = "";
@@ -364,7 +374,8 @@ class HttpRequest {
        /**
         * Sets the member variable status to a fatal status if the HTTP
         * status code was not 200.
-        * @returns nothing
+        *
+        * @return nothing
         */
        protected function setStatus() {
                if( !$this->respHeaders ) {
@@ -380,7 +391,8 @@ class HttpRequest {
 
        /**
         * Returns true if the last status code was a redirect.
-        * @return bool
+        *
+        * @return Boolean
         */
        public function isRedirect() {
                if( !$this->respHeaders ) {
@@ -399,7 +411,8 @@ class HttpRequest {
         * request has been executed.  Because some headers
         * (e.g. Set-Cookie) can appear more than once the, each value of
         * the associative array is an array of the values given.
-        * @return array
+        *
+        * @return Array
         */
        public function getResponseHeaders() {
                if( !$this->respHeaders ) {
@@ -410,8 +423,9 @@ class HttpRequest {
 
        /**
         * Returns the value of the given response header.
-        * @param $header string
-        * @return string
+        *
+        * @param $header String
+        * @return String
         */
        public function getResponseHeader($header) {
                if( !$this->respHeaders ) {
@@ -426,6 +440,7 @@ class HttpRequest {
 
        /**
         * Tells the HttpRequest object to use this pre-loaded CookieJar.
+        *
         * @param $jar CookieJar
         */
        public function setCookieJar( $jar ) {
@@ -434,6 +449,7 @@ class HttpRequest {
 
        /**
         * Returns the cookie jar in use.
+        *
         * @returns CookieJar
         */
        public function getCookieJar() {
@@ -473,7 +489,8 @@ class HttpRequest {
 
        /**
         * Returns the final URL after all redirections.
-        * @returns string
+        *
+        * @return String
         */
        public function getFinalUrl() {
                $location = $this->getResponseHeader("Location");
@@ -515,9 +532,9 @@ class Cookie {
         * Sets a cookie.  Used before a request to set up any individual
         * cookies.      Used internally after a request to parse the
         * Set-Cookie headers.
-        * @param $name string the name of the cookie
-        * @param $value string the value of the cookie
-        * @param $attr array possible key/values:
+        *
+        * @param $value String: the value of the cookie
+        * @param $attr Array: possible key/values:
         *              expires  A date string
         *              path     The path this cookie is used on
         *              domain   Domain this cookie is used on
@@ -550,9 +567,9 @@ class Cookie {
         * A better method might be to use a blacklist like
         * http://publicsuffix.org/
         *
-        * @param $domain string the domain to validate
-        * @param $originDomain string (optional) the domain the cookie originates from
-        * @return bool
+        * @param $domain String: the domain to validate
+        * @param $originDomain String: (optional) the domain the cookie originates from
+        * @return Boolean
         */
        public static function validateCookieDomain( $domain, $originDomain = null) {
                // Don't allow a trailing dot
@@ -560,9 +577,6 @@ class Cookie {
 
                $dc = explode(".", $domain);
 
-               // Don't allow cookies for "localhost", "ls" or other dot-less hosts
-               if( count($dc) < 2 ) return false;
-
                // Only allow full, valid IP addresses
                if( preg_match( '/^[0-9.]+$/', $domain ) ) {
                        if( count( $dc ) != 4 ) return false;
@@ -601,9 +615,10 @@ class Cookie {
 
        /**
         * Serialize the cookie jar into a format useful for HTTP Request headers.
-        * @param $path string the path that will be used. Required.
-        * @param $domain string the domain that will be used. Required.
-        * @return string
+        *
+        * @param $path String: the path that will be used. Required.
+        * @param $domain String: the domain that will be used. Required.
+        * @return String
         */
        public function serializeToHttpRequest( $path, $domain ) {
                $ret = "";
@@ -679,7 +694,9 @@ class CookieJar {
 
        /**
         * Parse the content of an Set-Cookie HTTP Response header.
-        * @param $cookie string
+        *
+        * @param $cookie String
+        * @param $domain String: cookie's domain
         */
        public function parseCookieResponseHeader ( $cookie, $domain ) {
                $len = strlen( "Set-Cookie:" );
@@ -705,7 +722,6 @@ class CookieJar {
                        } elseif ( !Cookie::validateCookieDomain( $attr['domain'], $domain ) ) {
                                return null;
                        }
-
                        $this->setCookie( $name, $value, $attr );
                }
        }
@@ -783,7 +799,7 @@ class CurlHttpRequest extends HttpRequest {
                if ( $this->followRedirects && $this->canFollowRedirects() ) {
                        if ( ! @curl_setopt( $curlHandle, CURLOPT_FOLLOWLOCATION, true ) ) {
                                wfDebug( __METHOD__.": Couldn't set CURLOPT_FOLLOWLOCATION. " .
-                                       "Probably safe_mode or open_basedir is set. ");
+                                       "Probably safe_mode or open_basedir is set.\n");
                                // Continue the processing. If it were in curl_setopt_array, 
                                // processing would have halted on its entry
                        }