Completed
Push — master ( a8898a...5c0dbc )
by Nazar
04:15
created

Data::del_data()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 8
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 12

Importance

Changes 1
Bugs 1 Features 1
Metric Value
cc 3
eloc 6
c 1
b 1
f 1
nc 3
nop 2
dl 0
loc 8
ccs 0
cts 8
cp 0
crap 12
rs 9.4285
1
<?php
2
/**
3
 * @package   CleverStyle Framework
4
 * @author    Nazar Mokrynskyi <[email protected]>
5
 * @copyright Copyright (c) 2011-2016, Nazar Mokrynskyi
6
 * @license   MIT License, see license.txt
7
 */
8
namespace cs\Session;
9
use
10
	cs\User;
11
12
trait Data {
13
	/**
14
	 * Get data, stored with session
15
	 *
16
	 * @param string      $item
17
	 * @param null|string $session_id
18
	 *
19
	 * @return false|mixed
20
	 *
21
	 */
22
	function get_data ($item, $session_id = null) {
23
		$session_data = $this->get_data_internal($session_id);
24
		return isset($session_data['data'][$item]) ? $session_data['data'][$item] : false;
25
	}
26
	/*
27
	 * @param null|string $session_id
28
	 *
29
	 * @return array|false
30
	 */
31
	protected function get_data_internal ($session_id) {
32
		$session_id = $session_id ?: $this->session_id;
33
		return is_md5($session_id) ? $this->get_internal($session_id) : false;
34
	}
35
	/**
36
	 * Store data with session
37
	 *
38
	 * @param string      $item
39
	 * @param mixed       $value
40
	 * @param null|string $session_id
41
	 *
42
	 * @return bool
43
	 *
44
	 */
45
	function set_data ($item, $value, $session_id = null) {
46
		$session_data = $this->get_data_internal($session_id);
47
		/**
48
		 * If there is no session yet - let's create one
49
		 */
50
		if (!$session_data) {
51
			$session_id   = $this->add(User::GUEST_ID);
52
			$session_data = $this->get_data_internal($session_id);
53
		}
54
		$session_data['data'][$item] = $value;
55
		return $this->update($session_data) && $this->cache->del($session_data['id']);
56
	}
57
	/**
58
	 * Delete data, stored with session
59
	 *
60
	 * @param string      $item
61
	 * @param null|string $session_id
62
	 *
63
	 * @return bool
64
	 *
65
	 */
66
	function del_data ($item, $session_id = null) {
67
		$session_data = $this->get_data_internal($session_id);
68
		if (!isset($session_data['data'][$item])) {
69
			return true;
70
		}
71
		unset($session_data['data'][$item]);
72
		return $this->update($session_data) && $this->cache->del($session_data['id']);
73
	}
74
}
75