X-Git-Url: http://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FWebResponse.php;h=193101b1a7581388c837b7d1589e00d12812f2b7;hb=9994758337412d3c0263f66317e1e88393c17a0c;hp=9baaf3ba869189fb23e6b7367dfde9fe64aba623;hpb=d3cd73cc256d856fa4a2ec5ed89d1deca413c915;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/WebResponse.php b/includes/WebResponse.php index 9baaf3ba86..193101b1a7 100644 --- a/includes/WebResponse.php +++ b/includes/WebResponse.php @@ -2,6 +2,21 @@ /** * Classes used to send headers and cookies back to the user * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/gpl.html + * * @file */ @@ -28,29 +43,37 @@ class WebResponse { * @param $name String: name of cookie * @param $value String: value to give cookie * @param $expire Int: number of seconds til cookie expires + * @param $prefix String: Prefix to use, if not $wgCookiePrefix (use '' for no prefix) + * @param @domain String: Cookie domain to use, if not $wgCookieDomain */ - public function setcookie( $name, $value, $expire = 0 ) { + public function setcookie( $name, $value, $expire = 0, $prefix = null, $domain = null ) { global $wgCookiePath, $wgCookiePrefix, $wgCookieDomain; global $wgCookieSecure,$wgCookieExpiration, $wgCookieHttpOnly; if ( $expire == 0 ) { $expire = time() + $wgCookieExpiration; } + if( $prefix === null ) { + $prefix = $wgCookiePrefix; + } + if( $domain === null ) { + $domain = $wgCookieDomain; + } $httpOnlySafe = wfHttpOnlySafe() && $wgCookieHttpOnly; wfDebugLog( 'cookie', 'setcookie: "' . implode( '", "', array( - $wgCookiePrefix . $name, + $prefix . $name, $value, $expire, $wgCookiePath, - $wgCookieDomain, + $domain, $wgCookieSecure, $httpOnlySafe ) ) . '"' ); - setcookie( $wgCookiePrefix . $name, + setcookie( $prefix . $name, $value, $expire, $wgCookiePath, - $wgCookieDomain, + $domain, $wgCookieSecure, $httpOnlySafe ); } @@ -62,6 +85,7 @@ class WebResponse { class FauxResponse extends WebResponse { private $headers; private $cookies; + private $code; /** * Stores a HTTP header @@ -70,10 +94,19 @@ class FauxResponse extends WebResponse { * @param $http_response_code null|int Forces the HTTP response code to the specified value. */ public function header( $string, $replace = true, $http_response_code = null ) { - list( $key, $val ) = explode( ":", $string, 2 ); + if ( substr( $string, 0, 5 ) == 'HTTP/' ) { + $parts = explode( ' ', $string, 3 ); + $this->code = intval( $parts[1] ); + } else { + list( $key, $val ) = array_map( 'trim', explode( ":", $string, 2 ) ); + + if( $replace || !isset( $this->headers[$key] ) ) { + $this->headers[$key] = $val; + } + } - if( $replace || !isset( $this->headers[$key] ) ) { - $this->headers[$key] = $val; + if ( $http_response_code !== null ) { + $this->code = intval( $http_response_code ); } } @@ -82,15 +115,32 @@ class FauxResponse extends WebResponse { * @return string */ public function getheader( $key ) { - return $this->headers[$key]; + if ( isset( $this->headers[$key] ) ) { + return $this->headers[$key]; + } + return null; } /** + * Get the HTTP response code, null if not set + * + * @return Int or null + */ + public function getStatusCode() { + return $this->code; + } + + /** + * @todo document. It just ignore optional parameters. + * * @param $name String: name of cookie * @param $value String: value to give cookie - * @param $expire Int: number of seconds til cookie expires + * @param $expire Int: number of seconds til cookie expires (Default: 0) + * @param $prefix TODO DOCUMENT (Default: null) + * @param $domain TODO DOCUMENT (Default: null) + * */ - public function setcookie( $name, $value, $expire = 0 ) { + public function setcookie( $name, $value, $expire = 0, $prefix = null, $domain = null ) { $this->cookies[$name] = $value; }