Completed
Push — master ( 5c0dbc...42c9a9 )
by Nazar
04:27
created

Data::get_data_internal()   A

Complexity

Conditions 3
Paths 4

Size

Total Lines 4
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 3

Importance

Changes 0
Metric Value
cc 3
eloc 3
nc 4
nop 1
dl 0
loc 4
ccs 3
cts 3
cp 1
crap 3
rs 10
c 0
b 0
f 0
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 2
	function get_data ($item, $session_id = null) {
23 2
		$session_data = $this->get_data_internal($session_id);
24 2
		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 2
	protected function get_data_internal ($session_id) {
32 2
		$session_id = $session_id ?: $this->session_id;
33 2
		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 2
	function set_data ($item, $value, $session_id = null) {
46 2
		$session_data = $this->get_data_internal($session_id);
47
		/**
48
		 * If there is no session yet - let's create one
49
		 */
50 2
		if (!$session_data) {
51 2
			$session_id   = $this->add(User::GUEST_ID);
52 2
			$session_data = $this->get_data_internal($session_id);
53
		}
54 2
		$session_data['data'][$item] = $value;
55 2
		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 2
	function del_data ($item, $session_id = null) {
67 2
		$session_data = $this->get_data_internal($session_id);
68 2
		if (!isset($session_data['data'][$item])) {
69 2
			return true;
70
		}
71 2
		unset($session_data['data'][$item]);
72 2
		return $this->update($session_data) && $this->cache->del($session_data['id']);
73
	}
74
}
75