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

Data   A

Complexity

Total Complexity 11

Size/Duplication

Total Lines 63
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 0

Test Coverage

Coverage 0%

Importance

Changes 1
Bugs 1 Features 1
Metric Value
c 1
b 1
f 1
dl 0
loc 63
ccs 0
cts 25
cp 0
rs 10
wmc 11
lcom 1
cbo 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A get_data() 0 4 2
A get_data_internal() 0 4 3
A set_data() 0 12 3
A del_data() 0 8 3
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