(fixes for r54590 & bug 20103) Use now only one query and add number to messages...
[lhc/web/wiklou.git] / includes / WebResponse.php
index f157888..09d3738 100644 (file)
@@ -2,19 +2,59 @@
 /**
  * Allow programs to request this object from WebRequest::response()
  * and handle all outputting (or lack of outputting) via it.
+ * @ingroup HTTP
  */
 class WebResponse {
 
-       /** Output a HTTP header */
-       function header($string, $replace=true) {
+       /** 
+        * Output a HTTP header, wrapper for PHP's
+        * header()
+        * @param $string String: header to output
+        * @param $replace Bool: replace current similar header
+        */
+       public function header($string, $replace=true) {
                header($string,$replace);
        }
 
-       /** Set the browser cookie */
-       function setcookie($name, $value, $expire) {
-               global $wgCookiePath, $wgCookieDomain, $wgCookieSecure;
-               setcookie($name,$value,$expire, $wgCookiePath, $wgCookieDomain, $wgCookieSecure);
+       /** Set the browser cookie
+        * @param $name String: name of cookie
+        * @param $value String: value to give cookie
+        * @param $expire Int: number of seconds til cookie expires
+        */
+       public function setcookie( $name, $value, $expire = 0 ) {
+               global $wgCookiePath, $wgCookiePrefix, $wgCookieDomain;
+               global $wgCookieSecure,$wgCookieExpiration, $wgCookieHttpOnly;
+               if ( $expire == 0 ) {
+                       $expire = time() + $wgCookieExpiration;
+               }
+               $httpOnlySafe = wfHttpOnlySafe();
+               wfDebugLog( 'cookie',
+                       'setcookie: "' . implode( '", "',
+                               array(
+                                       $wgCookiePrefix . $name,
+                                       $value,
+                                       $expire,
+                                       $wgCookiePath,
+                                       $wgCookieDomain,
+                                       $wgCookieSecure,
+                                       $httpOnlySafe && $wgCookieHttpOnly ) ) . '"' );
+               if( $httpOnlySafe && isset( $wgCookieHttpOnly ) ) {
+                       setcookie( $wgCookiePrefix . $name,
+                               $value,
+                               $expire,
+                               $wgCookiePath,
+                               $wgCookieDomain,
+                               $wgCookieSecure,
+                               $wgCookieHttpOnly );
+               } else {
+                       // setcookie() fails on PHP 5.1 if you give it future-compat paramters.
+                       // stab stab!
+                       setcookie( $wgCookiePrefix . $name,
+                               $value,
+                               $expire,
+                               $wgCookiePath,
+                               $wgCookieDomain,
+                               $wgCookieSecure );
+               }
        }
 }
-
-