Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
100.00% |
38 / 38 |
|
100.00% |
4 / 4 |
CRAP | |
100.00% |
1 / 1 |
Session | |
100.00% |
38 / 38 |
|
100.00% |
4 / 4 |
9 | |
100.00% |
1 / 1 |
readEntity | |
100.00% |
9 / 9 |
|
100.00% |
1 / 1 |
3 | |||
updateEntity | |
100.00% |
8 / 8 |
|
100.00% |
1 / 1 |
1 | |||
deleteEntity | |
100.00% |
6 / 6 |
|
100.00% |
1 / 1 |
2 | |||
deleteByTimeInterval | |
100.00% |
15 / 15 |
|
100.00% |
1 / 1 |
3 |
1 | <?php |
2 | |
3 | namespace BO\Zmsdb; |
4 | |
5 | use BO\Zmsentities\Session as Entity; |
6 | |
7 | class Session extends Base |
8 | { |
9 | /** |
10 | * Fetch status from db |
11 | * |
12 | * @return \BO\Zmsentities\Session |
13 | */ |
14 | public function readEntity($sessionName, $sessionId) |
15 | { |
16 | $query = new Query\Session(Query\Base::SELECT); |
17 | $query |
18 | ->addEntityMapping() |
19 | ->addConditionSessionId($sessionId) |
20 | ->addConditionSessionName($sessionName); |
21 | $session = $this->fetchOne($query, new Entity()); |
22 | if ($session && ! $session->hasId()) { |
23 | return null; |
24 | } |
25 | return $session; |
26 | } |
27 | |
28 | public function updateEntity($session) |
29 | { |
30 | $query = Query\Session::QUERY_WRITE; |
31 | $this->perform($query, array( |
32 | $session['id'], |
33 | $session['name'], |
34 | json_encode($session['content']) |
35 | )); |
36 | $entity = $this->readEntity($session['name'], $session['id']); |
37 | return $entity; |
38 | } |
39 | |
40 | public function deleteEntity($sessionName, $sessionId) |
41 | { |
42 | $query = Query\Session::QUERY_DELETE; |
43 | $result = $this->perform($query, array( |
44 | $sessionId, |
45 | $sessionName |
46 | )); |
47 | return ($result) ? true : false; |
48 | } |
49 | |
50 | public function deleteByTimeInterval($sessionName, $deleteInSeconds) |
51 | { |
52 | $selectQuery = new Query\Session(Query\Base::SELECT); |
53 | $selectQuery |
54 | ->addEntityMapping() |
55 | ->addConditionSessionName($sessionName) |
56 | ->addConditionSessionDeleteInterval($deleteInSeconds); |
57 | $statement = $this->fetchStatement($selectQuery); |
58 | while ($sessionData = $statement->fetch(\PDO::FETCH_ASSOC)) { |
59 | $sessionData = (new Query\Session(Query\Base::SELECT))->postProcessJoins($sessionData); |
60 | $entity = new Entity($sessionData); |
61 | if ($entity instanceof Entity) { |
62 | $deleteQuery = new Query\Session(Query\Base::DELETE); |
63 | $deleteQuery |
64 | ->addConditionSessionName($sessionName) |
65 | ->addConditionSessionId($entity->id); |
66 | $this->deleteItem($deleteQuery); |
67 | } |
68 | } |
69 | } |
70 | } |