1: | <?php |
2: | /* |
3: | You may not change or alter any portion of this comment or credits |
4: | of supporting developers from this source code or any supporting source code |
5: | which is considered copyrighted (c) material of the original comment or credit authors. |
6: | |
7: | This program is distributed in the hope that it will be useful, |
8: | but WITHOUT ANY WARRANTY; without even the implied warranty of |
9: | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
10: | */ |
11: | |
12: | namespace Xmf\Module\Helper; |
13: | |
14: | /** |
15: | * Manage session variables for a module. Session variable will be |
16: | * prefixed with the module name to separate it from variables set |
17: | * by other modules or system functions. All data is serialized, so |
18: | * any arbitrary data (i.e. array) can be stored. |
19: | * |
20: | * @category Xmf\Module\Helper\Session |
21: | * @package Xmf |
22: | * @author trabis <lusopoemas@gmail.com> |
23: | * @author Richard Griffith <richard@geekwright.com> |
24: | * @copyright 2011-2018 XOOPS Project (https://xoops.org) |
25: | * @license GNU GPL 2.0 or later (https://www.gnu.org/licenses/gpl-2.0.html) |
26: | * @link https://xoops.org |
27: | */ |
28: | class Session extends AbstractHelper |
29: | { |
30: | /** |
31: | * @var string |
32: | */ |
33: | protected $prefix; |
34: | |
35: | /** |
36: | * Initialize parent::__construct calls this after verifying module object. |
37: | * |
38: | * @return void |
39: | */ |
40: | public function init() |
41: | { |
42: | $this->prefix = $this->module->getVar('dirname') . '_'; |
43: | } |
44: | |
45: | /** |
46: | * Add our module prefix to a name |
47: | * |
48: | * @param string $name name to prefix |
49: | * |
50: | * @return string module prefixed name |
51: | */ |
52: | protected function prefix($name) |
53: | { |
54: | $prefixedName = $this->prefix . $name; |
55: | |
56: | return $prefixedName; |
57: | } |
58: | |
59: | /** |
60: | * Sets a named session variable respecting our module prefix |
61: | * |
62: | * @param string $name name of variable |
63: | * @param mixed $value value of variable |
64: | * |
65: | * @return void |
66: | */ |
67: | public function set($name, $value) |
68: | { |
69: | $prefixedName = $this->prefix($name); |
70: | $_SESSION[$prefixedName] = serialize($value); |
71: | } |
72: | |
73: | /** |
74: | * Fetch a named session variable respecting our module prefix |
75: | * |
76: | * @param string $name name of variable |
77: | * @param mixed $default default value to return if config $name is not set |
78: | * |
79: | * @return mixed $value value of session variable or false if not set |
80: | */ |
81: | public function get($name, $default = false) |
82: | { |
83: | $prefixedName = $this->prefix($name); |
84: | if (isset($_SESSION[$prefixedName])) { |
85: | return unserialize($_SESSION[$prefixedName]); |
86: | } else { |
87: | return $default; |
88: | } |
89: | } |
90: | |
91: | /** |
92: | * Deletes a named session variable respecting our module prefix |
93: | * |
94: | * @param string $name name of variable |
95: | * |
96: | * @return void |
97: | */ |
98: | public function del($name) |
99: | { |
100: | $prefixedName = $this->prefix($name); |
101: | $_SESSION[$prefixedName] = null; |
102: | unset($_SESSION[$prefixedName]); |
103: | } |
104: | |
105: | /** |
106: | * Delete all session variable starting with our module prefix |
107: | * |
108: | * @return void |
109: | */ |
110: | public function destroy() |
111: | { |
112: | foreach ($_SESSION as $key => $value) { |
113: | if (0 == substr_compare($key, $this->prefix, 0, strlen($this->prefix))) { |
114: | $_SESSION[$key] = null; |
115: | unset($_SESSION[$key]); |
116: | } |
117: | } |
118: | } |
119: | } |
120: |