5 * @author Jan Altensen (Stricted)
6 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
7 * @copyright 2013-2015 Jan Altensen (Stricted)
15 private $sessionID = null;
22 private $sessionData = array();
25 * initial session system
27 public function __construct () {
28 if ($this->sessionID
=== null) {
29 $this->sessionID
= session_id();
32 /* delete expired sessions */
33 $sql = "DELETE FROM dns_session WHERE expire < ?";
34 DNS
::getDB()->query($sql, array(time()));
36 /* load data from database */
37 $sql ="SELECT * FROM dns_session where sessionID = ?";
38 $res = DNS
::getDB()->query($sql, array($this->sessionID
));
39 $data = DNS
::getDB()->fetch_array($res);
40 if (isset($data['sessionID']) && !empty($data['sessionID'])) {
41 if (isset($data['sessionData']) && !empty($data['sessionData'])) {
42 $this->sessionData
= json_decode($data['sessionData'], true);
46 $sql = "INSERT INTO dns_session (id, sessionID, expire, sessionData) VALUES (NULL, ?, ?, ?)";
47 DNS
::getDB()->query($sql, array($this->sessionID
, time() +
3600 * 24, ''));
52 * Checks if the active user has the given permission
56 public function checkPermission($permission) {
58 /* get permissionID */
59 $sql = "SELECT * FROM dns_permissions where permission = ?";
60 $res = DNS
::getDB()->query($sql, array($permission));
61 $data = DNS
::getDB()->fetch_array($res);
63 /* get permission from user */
64 $sql = "SELECT * FROM dns_permissions_to_user where userID = ? and permissionID = ?";
65 $res = DNS
::getDB()->query($sql, array($this->userID
, $data['id']));
66 $row = DNS
::getDB()->fetch_array($res);
68 if (isset($row['permission']) && $row['permission'] == $permission) {
76 * Provides access to session data.
81 public function __get($key) {
82 return $this->getVar($key);
86 * Provides access to session data.
91 public function getVar($key) {
92 if (isset($this->sessionData
[$key])) {
93 return $this->sessionData
[$key];
100 * Unsets a session variable.
104 public function unregister($key) {
105 if (isset($this->sessionData
[$key])) {
106 unset($this->sessionData
[$key]);
111 * Registers a session variable.
114 * @param string $value
116 public function register($key, $value) {
117 $this->sessionData
[$key] = $value;
119 $data = json_encode($this->sessionData
);
120 $sql = "UPDATE dns_session SET sessionData = ?, expire = ? WHERE sessionID = ?";
121 DNS
::getDB()->query($sql, array($data, time() +
3600 * 24, $this->sessionID
));
125 * Registers a session variable.
128 * @param string $value
130 public function __set($key, $value) {
131 $this->register($key, $value);
135 * destroy the session
137 public function destroy() {
138 $this->sessionData
= array();
140 $sql = "DELETE FROM dns_session WHERE sessionID = ?";
141 DNS
::getDB()->query($sql, array($this->sessionID
));
145 * Registers a session variable.
148 * @param string $value
150 public function update($key, $value) {
151 $this->register($key, $value);