Deprecated: Assigning the return value of new by reference is deprecated in /home/bluestat/public_html/source/index.php on line 477
ISSO - Commitdiff - ViewGit - Blue Static

BSFunctions::cookie() no longer depends on static member values for the domain, timeout, and path

Robert Sesek [2009-05-01 20:55]
BSFunctions::cookie() no longer depends on static member values for the domain, timeout, and path

* Functions.php:
(BSFunctions::cookie): Use paramters instead
diff --git a/CHANGES b/CHANGES
index f5afae8..41e1161 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,7 @@
+3.3.0
+===================
+- Change: BSFunctions::cookie() does not use static member values, but only parameters
+
 3.2.3
 ===================
 - Change: More BSDecorator styling updates, creating a .button class to style button links
diff --git a/Functions.php b/Functions.php
index bb4c2bf..6b9fdbb 100644
--- a/Functions.php
+++ b/Functions.php
@@ -39,24 +39,6 @@
 class BSFunctions
 {
 	/**
-	 * Cookie path
-	 * @var	string
-	 */
-	private static $cookiePath = '/';
-
-	/**
-	 * Cookie domain setting
-	 * @var	string
-	 */
-	private static $cookieDomain = '';
-
-	/**
-	 * Cookie expiration time
-	 * @var	integer
-	 */
-	private static $cookieTimeout = 900;
-
-	/**
 	 * Current swapped CSS class
 	 * @var	string
 	 */
@@ -69,62 +51,38 @@ class BSFunctions
 	{}

 	/**
-	 * Sets the cookie path
-	 *
-	 * @param	string	New path
-	 */
-	public static function set_cookie_path($path)
-	{
-		self::$cookiePath = $path;
-	}
-
-	/**
-	 * Sets the cookie domain setting
-	 *
-	 * @param	string	Cookie domain
-	 */
-	public static function set_cookie_domain($domain)
-	{
-		self::$cookieDomain = $domain;
-	}
-
-	/**
-	 * Sets the cookie timeout
-	 *
-	 * @param	integer	Cookie timeout
-	 */
-	public static function set_cookie_timeout($timeout)
-	{
-		self::$cookieTimeout = intval($timeout);
-	}
-
-	/**
 	 * Sets a cookie in the user's computer/browing session
 	 *
 	 * @param	string	Name of the cookie
-	 * @param	string	Value of the cookie, FALSE to clear
-	 * @param	bool	Is the cookie permanent?
+	 * @param	string	Value of the cookie
+	 * @param	integer	Timeout in seconds for non-sticky cookies. Can also be ::COOKIE_EXPIRE or ::COOKIE_STICKY
+	 * @param	string	Cookie path
+	 * @param	string	Domain
 	 */
-	public static function cookie($name, $value, $sticky = true)
+	const COOKIE_EXPIRE = -1;
+	const COOKIE_STICKY = -2;
+
+	public static function cookie($name, $value, $timeout = 900, $path = '/', $domain = '')
 	{
 		// expire the cookie
-		if ($value === false)
+		if ($timeout == self::COOKIE_EXPIRE)
 		{
-			setcookie($name, $value, time() - (2 * self::$cookieTimeout), self::$cookiePath, self::$cookieDomain);
+			setcookie($name, $value, time() - 1800, $path, $domain);
 		}
 		// set the cookie
 		else
 		{
-			if ($sticky)
+			// it's sticky so keep it around for a while
+			if ($timeout == self::COOKIE_STICKY)
 			{
 				$expire = time() + 60 * 60 * 24 * 365;
 			}
 			else
 			{
-				$expire = time() + self::$cookieTimeout;
+				$expire = time() + $timeout;
 			}

-			setcookie($name, $value, $expire, self::$cookiePath, self::$cookieDomain);
+			setcookie($name, $value, $expire, $path, $domain);
 		}
 	}