/
cookie.php
138 lines (124 loc) · 3.74 KB
/
cookie.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
<?php
/**
* Part of the Fuel framework.
*
* @package Fuel
* @version 1.7
* @author Fuel Development Team
* @license MIT License
* @copyright 2010 - 2013 Fuel Development Team
* @link http://fuelphp.com
*/
namespace Fuel\Core;
/**
* Cookie class
*
* @package Fuel
* @category Helpers
* @author Kohana Team
* @modified Fuel Development Team
* @copyright (c) 2008-2010 Kohana Team
* @license http://kohanaframework.org/license
* @link http://docs.fuelphp.com/classes/cookie.html
*/
class Cookie {
/**
*
* @var array Cookie class configuration defaults
*/
private static $config = array (
'expiration' => 0,
'path' => '/',
'domain' => null,
'secure' => false,
'http_only' => false
);
/*
* initialisation and auto configuration
*/
public static function _init() {
static::$config = array_merge ( static::$config, \Config::get ( 'cookie', array () ) );
}
/**
* Gets the value of a signed cookie.
* Cookies without signatures will not
* be returned. If the cookie signature is present, but invalid, the cookie
* will be deleted.
*
* // Get the "theme" cookie, or use "blue" if the cookie does not exist
* $theme = Cookie::get('theme', 'blue');
*
* @param
* string cookie name
* @param
* mixed default value to return
* @return string
*/
public static function get($name = null, $default = null) {
return \Input::cookie ( $name, $default );
}
/**
* Sets a signed cookie.
* Note that all cookie values must be strings and no
* automatic serialization will be performed!
*
* // Set the "theme" cookie
* Cookie::set('theme', 'red');
*
* @param
* string name of cookie
* @param
* string value of cookie
* @param
* integer lifetime in seconds
* @param
* string path of the cookie
* @param
* string domain of the cookie
* @param
* boolean if true, the cookie should only be transmitted over a secure HTTPS connection
* @param
* boolean if true, the cookie will be made accessible only through the HTTP protocol
* @return boolean
*/
public static function set($name, $value, $expiration = null, $path = null, $domain = null, $secure = null, $http_only = null) {
// you can't set cookies in CLi mode
if (\Fuel::$is_cli) {
return false;
}
$value = \Fuel::value ( $value );
// use the class defaults for the other parameters if not provided
is_null ( $expiration ) and $expiration = static::$config ['expiration'];
is_null ( $path ) and $path = static::$config ['path'];
is_null ( $domain ) and $domain = static::$config ['domain'];
is_null ( $secure ) and $secure = static::$config ['secure'];
is_null ( $http_only ) and $http_only = static::$config ['http_only'];
// add the current time so we have an offset
$expiration = $expiration > 0 ? $expiration + time () : 0;
return setcookie ( $name, $value, $expiration, $path, $domain, $secure, $http_only );
}
/**
* Deletes a cookie by making the value null and expiring it.
*
* Cookie::delete('theme');
*
* @param
* string cookie name
* @param
* string path of the cookie
* @param
* string domain of the cookie
* @param
* boolean if true, the cookie should only be transmitted over a secure HTTPS connection
* @param
* boolean if true, the cookie will be made accessible only through the HTTP protocol
* @return boolean
* @uses static::set
*/
public static function delete($name, $path = null, $domain = null, $secure = null, $http_only = null) {
// Remove the cookie
unset ( $_COOKIE [$name] );
// Nullify the cookie and make it expire
return static::set ( $name, null, - 86400, $path, $domain, $secure, $http_only );
}
}