Avail feature updated
[ninja.git] / system / helpers / cookie.php
blob3290c707fb61d9101a6f8be88ad21f460b3f0bdb
1 <?php defined('SYSPATH') OR die('No direct access allowed.');
2 /**
3 * Cookie helper class.
5 * $Id: cookie.php 3917 2009-01-21 03:06:22Z zombor $
7 * @package Core
8 * @author Kohana Team
9 * @copyright (c) 2007-2008 Kohana Team
10 * @license http://kohanaphp.com/license.html
12 class cookie {
14 /**
15 * Sets a cookie with the given parameters.
17 * @param string cookie name or array of config options
18 * @param string cookie value
19 * @param integer number of seconds before the cookie expires
20 * @param string URL path to allow
21 * @param string URL domain to allow
22 * @param boolean HTTPS only
23 * @param boolean HTTP only (requires PHP 5.2 or higher)
24 * @return boolean
26 public static function set($name, $value = NULL, $expire = NULL, $path = NULL, $domain = NULL, $secure = NULL, $httponly = NULL)
28 if (headers_sent())
29 return FALSE;
31 // If the name param is an array, we import it
32 is_array($name) and extract($name, EXTR_OVERWRITE);
34 // Fetch default options
35 $config = Kohana::config('cookie');
37 foreach (array('value', 'expire', 'domain', 'path', 'secure', 'httponly') as $item)
39 if ($$item === NULL AND isset($config[$item]))
41 $$item = $config[$item];
45 // Expiration timestamp
46 $expire = ($expire == 0) ? 0 : time() + (int) $expire;
48 return setcookie($name, $value, $expire, $path, $domain, $secure, $httponly);
51 /**
52 * Fetch a cookie value, using the Input library.
54 * @param string cookie name
55 * @param mixed default value
56 * @return string
58 public static function get($name, $default = NULL)
60 return Input::instance()->cookie($name, $default);
63 /**
64 * Nullify and unset a cookie.
66 * @param string cookie name
67 * @param string URL path
68 * @param string URL domain
69 * @return boolean
71 public static function delete($name, $path = NULL, $domain = NULL)
73 if ( ! isset($_COOKIE[$name]))
74 return FALSE;
76 // Delete the cookie from globals
77 unset($_COOKIE[$name]);
79 // Sets the cookie value to an empty string, and the expiration to 24 hours ago
80 return cookie::set($name, '', -86400, $path, $domain, FALSE, FALSE);
83 } // End cookie