5 * @author Jan Altensen (Stricted)
6 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
7 * @copyright 2013-2016 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) {
57 /* get permissionID */
58 $sql = "SELECT * FROM dns_permissions where permission = ?";
59 $res = DNS
::getDB()->query($sql, array($permission));
60 $data = DNS
::getDB()->fetch_array($res);
62 /* get permission from user */
63 $sql = "SELECT * FROM dns_permissions_to_user where userID = ? and permissionID = ?";
64 $res = DNS
::getDB()->query($sql, array($this->userID
, $data['id']));
65 $row = DNS
::getDB()->fetch_array($res);
67 if (isset($row['permission']) && $row['permission'] == $permission) {
75 * Provides access to session data.
80 public function __get($key) {
81 return $this->getVar($key);
85 * Provides access to session data.
90 public function getVar($key) {
91 if (isset($this->sessionData
[$key])) {
92 return $this->sessionData
[$key];
99 * Unsets a session variable.
103 public function unregister($key) {
104 if (isset($this->sessionData
[$key])) {
105 unset($this->sessionData
[$key]);
110 * Registers a session variable.
113 * @param string $value
115 public function register($key, $value) {
116 $this->sessionData
[$key] = $value;
118 $data = json_encode($this->sessionData
);
119 $sql = "UPDATE dns_session SET sessionData = ?, expire = ? WHERE sessionID = ?";
120 DNS
::getDB()->query($sql, array($data, time() +
3600 * 24, $this->sessionID
));
124 * Registers a session variable.
127 * @param string $value
129 public function __set($key, $value) {
130 $this->register($key, $value);
134 * destroy the session
136 public function destroy() {
137 $this->sessionData
= array();
139 $sql = "DELETE FROM dns_session WHERE sessionID = ?";
140 DNS
::getDB()->query($sql, array($this->sessionID
));
144 * Registers a session variable.
147 * @param string $value
149 public function update($key, $value) {
150 $this->register($key, $value);