Test Failed
Push — master ( 6ccab2...d43578 )
by Jean-Christophe
20:52
created

PhpSession::isStarted()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 2
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
eloc 1
dl 0
loc 2
ccs 2
cts 2
cp 1
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
crap 1
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.3
12
 *
13
 */
14
class PhpSession extends AbstractSession {
15
16 18
	public function set(string $key, $value) {
17 18
		return $_SESSION [$key] = $value;
18
	}
19
20 49
	public function get(string $key, $default = null) {
21 49
		return $_SESSION [$key] ?? $default;
22
	}
23
24 77
	public function start(string $name = null) {
25 77
		if (! $this->isStarted ()) {
26 41
			if (isset ( $name ) && $name !== '') {
27
				$this->name = $name;
28
			}
29 41
			if (isset ( $this->name )) {
30
				\session_name ( $this->name );
31
			}
32 41
			\session_start ();
33 41
			$this->verifyCsrf->start ();
34
		}
35
	}
36
37 3
	public function terminate(): void {
38 3
		if (! $this->isStarted ()) {
39
			return;
40 3
		}
41 3
		$this->verifyCsrf->clear ();
42 3
		$_SESSION = [];
43
44 3
		if (\ini_get ( 'session.use_cookies' )) {
45 3
			$params = \session_get_cookie_params ();
46 3
			\setcookie ( \session_name (), '', \time () - 42000, $params ['path'], $params ['domain'], $params ['secure'], $params ['httponly'] );
47
		}
48 3
		\session_destroy ();
49
	}
50
51 77
	public function isStarted(): bool {
52 77
		return \session_status () == PHP_SESSION_ACTIVE;
53
	}
54
55 19
	public function exists(string $key): bool {
56 19
		return isset ( $_SESSION [$key] );
57
	}
58
59
	public function getAll(): array {
60
		return $_SESSION;
61
	}
62
63 5
	public function delete(string $key) {
64 5
		unset ( $_SESSION [$key] );
65
	}
66
	
67
	public function regenerateId(bool $deleteOldSession=false):bool {
68
		return \session_regenerate_id($deleteOldSession);
69
	}
70
71
	public function visitorCount(): int {
72
		$sessionPath = \ini_get ( 'session.save_path' );
73
		$sessionLifetime = \ini_get ( 'session.gc_maxlifetime' );
74
		$files = glob ( $sessionPath . DS . 'sess_*' );
75
		$now = time ();
76
		$count = 0;
77
		foreach ( $files as $file ) {
78
			if (is_file ( $file )) {
79
				if ($now - filemtime ( $file ) <= $sessionLifetime) {
80
					$count ++;
81
				}
82
			}
83
		}
84
		return $count;
85
	}
86
}
87
88