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 | } |