Initial Kohana install
[speedfreak] / Server / system / helpers / cookie.php
1 <?php defined('SYSPATH') OR die('No direct access allowed.');
2 /**
3  * Cookie helper class.
4  *
5  * $Id: cookie.php 3769 2008-12-15 00:48:56Z zombor $
6  *
7  * @package    Core
8  * @author     Kohana Team
9  * @copyright  (c) 2007-2008 Kohana Team
10  * @license    http://kohanaphp.com/license.html
11  */
12 class cookie_Core {
13
14         /**
15          * Sets a cookie with the given parameters.
16          *
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
25          */
26         public static function set($name, $value = NULL, $expire = NULL, $path = NULL, $domain = NULL, $secure = NULL, $httponly = NULL)
27         {
28                 if (headers_sent())
29                         return FALSE;
30
31                 // If the name param is an array, we import it
32                 is_array($name) and extract($name, EXTR_OVERWRITE);
33
34                 // Fetch default options
35                 $config = Kohana::config('cookie');
36
37                 foreach (array('value', 'expire', 'domain', 'path', 'secure', 'httponly') as $item)
38                 {
39                         if ($$item === NULL AND isset($config[$item]))
40                         {
41                                 $$item = $config[$item];
42                         }
43                 }
44
45                 // Expiration timestamp
46                 $expire = ($expire == 0) ? 0 : time() + (int) $expire;
47
48                 return setcookie($name, $value, $expire, $path, $domain, $secure, $httponly);
49         }
50
51         /**
52          * Fetch a cookie value, using the Input library.
53          *
54          * @param   string   cookie name
55          * @param   mixed    default value
56          * @param   boolean  use XSS cleaning on the value
57          * @return  string
58          */
59         public static function get($name, $default = NULL, $xss_clean = FALSE)
60         {
61                 return Input::instance()->cookie($name, $default, $xss_clean);
62         }
63
64         /**
65          * Nullify and unset a cookie.
66          *
67          * @param   string   cookie name
68          * @param   string   URL path
69          * @param   string   URL domain
70          * @return  boolean
71          */
72         public static function delete($name, $path = NULL, $domain = NULL)
73         {
74                 if ( ! isset($_COOKIE[$name]))
75                         return FALSE;
76
77                 // Delete the cookie from globals
78                 unset($_COOKIE[$name]);
79
80                 // Sets the cookie value to an empty string, and the expiration to 24 hours ago
81                 return cookie::set($name, '', -86400, $path, $domain, FALSE, FALSE);
82         }
83
84 } // End cookie