Completed
Push — master ( 03a8a6...6c4aaa )
by Patrick
08:28
created

DataTableSessionHandler::gc()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
nc 1
nop 1
dl 0
loc 6
rs 10
c 0
b 0
f 0
1
<?php
2
namespace Data;
3
4
class DataTableSessionHandler implements \SessionHandlerInterface
5
{
6
    private $dataSetName;
7
    private $dataTableName;
8
    protected $dataTable;
9
10
    public function __construct($dataSet, $dataTable)
11
    {
12
        $this->dataSetName = $dataSet;
13
        $this->dataTableName = $dataTable;
14
    }
15
16
    public function open($savePath, $sessionName)
17
    {
18
       $this->dataTable = \DataSetFactory::getDataTableByNames($this->dataSetName, $this->dataTableName);
19
       if($this->dataTable)
20
       {
21
           return true;
22
       }
23
       return false;
24
    }
25
26
    public function close()
27
    {
28
        return true;
29
    }
30
31
    public function read($id)
32
    {
33
        $filter = new \Data\Filter("sessionId eq '$id'");
34
        $data = $this->dataTable->read($filter, array('sessionData'));
35
        if(empty($data))
36
        {
37
            return '';
38
        }
39
        return $data[0]['sessionData'];
40
    }
41
42
    public function write($id, $data)
43
    {
44
        $filter = new \Data\Filter("sessionId eq '$id'");
45
        $res = $this->dataTable->update($filter, array('sessionData'=>$data, 'sessionLastAccess'=>date("Y-m-d H:i:s")));
46
        if($res === false)
47
        {
48
            $res = $this->dataTable->create(array('sessionId'=>$id, 'sessionData'=>$data, 'sessionLastAccess'=>date("Y-m-d H:i:s")));
49
        }
50
        if($res === false)
51
        {
52
            var_dump($res);
0 ignored issues
show
Security Debugging Code introduced by
var_dump($res); looks like debug code. Are you sure you do not want to remove it? This might expose sensitive data.
Loading history...
53
        }
54
        return $res;
55
    }
56
57
    public function destroy($id)
58
    {
59
        $filter = new \Data\Filter("sessionId eq '$id'");
60
        return $this->dataTable->delete($filter);
61
    }
62
63
    public function gc($maxlifetime)
64
    {
65
        $date = date("Y-m-d H:i:s", time()-$maxlifetime);
66
        $filter = new \Data\Filter("sessionLastAccess lt $date");
67
        return $this->dataTable->delete($filter);
68
    }
69
}
70