cookie_Core   A
last analyzed

Complexity

Total Complexity 10

Size/Duplication

Total Lines 73
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Importance

Changes 2
Bugs 1 Features 0
Metric Value
c 2
b 1
f 0
dl 0
loc 73
rs 10
wmc 10
lcom 0
cbo 1

3 Methods

Rating   Name   Duplication   Size   Complexity  
C set() 0 23 7
A get() 0 4 1
A delete() 0 12 2
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
    /**
16
     * Sets a cookie with the given parameters.
17
     *
18
     * @param   string   cookie name or array of config options
19
     * @param   string   cookie value
20
     * @param   integer  number of seconds before the cookie expires
21
     * @param   string   URL path to allow
22
     * @param   string   URL domain to allow
23
     * @param   boolean  HTTPS only
24
     * @param   boolean  HTTP only (requires PHP 5.2 or higher)
25
     * @return  boolean
26
     */
27
    public static function set($name, $value = null, $expire = null, $path = null, $domain = null, $secure = null, $httponly = null)
28
    {
29
        if (headers_sent()) {
30
            return false;
31
        }
32
33
        // If the name param is an array, we import it
34
        is_array($name) and extract($name, EXTR_OVERWRITE);
35
36
        // Fetch default options
37
        $config = Kohana::config('cookie');
38
39
        foreach (array('value', 'expire', 'domain', 'path', 'secure', 'httponly') as $item) {
40
            if ($$item === null and isset($config[$item])) {
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)
0 ignored issues
show
Coding Style introduced by
delete uses the super-global variable $_COOKIE which is generally not recommended.

Instead of super-globals, we recommend to explicitly inject the dependencies of your class. This makes your code less dependent on global state and it becomes generally more testable:

// Bad
class Router
{
    public function generate($path)
    {
        return $_SERVER['HOST'].$path;
    }
}

// Better
class Router
{
    private $host;

    public function __construct($host)
    {
        $this->host = $host;
    }

    public function generate($path)
    {
        return $this->host.$path;
    }
}

class Controller
{
    public function myAction(Request $request)
    {
        // Instead of
        $page = isset($_GET['page']) ? intval($_GET['page']) : 1;

        // Better (assuming you use the Symfony2 request)
        $page = $request->query->get('page', 1);
    }
}
Loading history...
73
    {
74
        if (! isset($_COOKIE[$name])) {
75
            return false;
76
        }
77
78
        // Delete the cookie from globals
79
        unset($_COOKIE[$name]);
80
81
        // Sets the cookie value to an empty string, and the expiration to 24 hours ago
82
        return cookie::set($name, '', -86400, $path, $domain, false, false);
83
    }
84
} // End cookie
85