Passed
Push — master ( d7f029...202469 )
by Jean-Christophe
15:08
created

PhpSession   A

Complexity

Total Complexity 18

Size/Duplication

Total Lines 67
Duplicated Lines 0 %

Test Coverage

Coverage 63.64%

Importance

Changes 1
Bugs 0 Features 1
Metric Value
wmc 18
eloc 33
c 1
b 0
f 1
dl 0
loc 67
ccs 28
cts 44
cp 0.6364
rs 10

9 Methods

Rating   Name   Duplication   Size   Complexity  
A set() 0 2 1
A get() 0 2 1
A delete() 0 2 1
A terminate() 0 12 3
A start() 0 10 5
A exists() 0 2 1
A isStarted() 0 2 1
A getAll() 0 2 1
A visitorCount() 0 14 4
1
<?php
2
3
namespace Ubiquity\utils\http\session;
4
5
/**
6
 * Default php session.
7
 * Ubiquity\utils\http\session$PhpSession
8
 * This class is part of Ubiquity
9
 *
10
 * @author jcheron <[email protected]>
11
 * @version 1.0.2
12
 *
13
 */
14
class PhpSession extends AbstractSession {
15
16 15
	public function set($key, $value) {
17 15
		return $_SESSION [$key] = $value;
18
	}
19
20 43
	public function get($key, $default = null) {
21 43
		return $_SESSION [$key] ?? $default;
22
	}
23
24 58
	public function start($name = null) {
25 58
		if (! $this->isStarted ()) {
26 35
			if (isset ( $name ) && $name !== '') {
27
				$this->name = $name;
28
			}
29 35
			if (isset ( $this->name )) {
30
				\session_name ( $this->name );
31
			}
32 35
			\session_start ();
33 35
			$this->verifyCsrf->start ();
34
		}
35 58
	}
36
37 2
	public function terminate() {
38 2
		if (! $this->isStarted ())
39
			return;
40 2
		$this->start ();
41 2
		$this->verifyCsrf->clear ();
42 2
		$_SESSION = array ();
43
44 2
		if (\ini_get ( 'session.use_cookies' )) {
45 2
			$params = \session_get_cookie_params ();
46 2
			\setcookie ( \session_name (), '', \time () - 42000, $params ['path'], $params ['domain'], $params ['secure'], $params ['httponly'] );
47
		}
48 2
		\session_destroy ();
49 2
	}
50
51 58
	public function isStarted() {
52 58
		return \session_status () == PHP_SESSION_ACTIVE;
53
	}
54
55 19
	public function exists($key) {
56 19
		return isset ( $_SESSION [$key] );
57
	}
58
59
	public function getAll() {
60
		return $_SESSION;
61
	}
62
63 4
	public function delete($key) {
64 4
		unset ( $_SESSION [$key] );
65 4
	}
66
67
	public function visitorCount(): int {
68
		$sessionPath = \ini_get ( 'session.save_path' );
69
		$sessionLifetime = \ini_get ( 'session.gc_maxlifetime' );
70
		$files = glob ( $sessionPath . DS . 'sess_*' );
71
		$now = time ();
72
		$count = 0;
73
		foreach ( $files as $file ) {
74
			if (is_file ( $file )) {
75
				if ($now - filemtime ( $file ) <= $sessionLifetime) {
76
					$count ++;
77
				}
78
			}
79
		}
80
		return $count;
81
	}
82
}
83
84