aboutsummaryrefslogtreecommitdiff
path: root/lib/phplib/CT_Sql.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/phplib/CT_Sql.php')
-rw-r--r--lib/phplib/CT_Sql.php101
1 files changed, 101 insertions, 0 deletions
diff --git a/lib/phplib/CT_Sql.php b/lib/phplib/CT_Sql.php
new file mode 100644
index 0000000..220af22
--- /dev/null
+++ b/lib/phplib/CT_Sql.php
@@ -0,0 +1,101 @@
+<?php
+
+##
+## Copyright (c) 1998-2000 NetUSE AG
+## Boris Erdmann, Kristian Koehntopp
+##
+## Copyright (c) 1998-2000 Sascha Schumann <sascha@schumann.cx>
+##
+## PHPLIB Data Storage Container using a SQL database
+## for use with Stud.IP and PDO only!
+
+class CT_Sql {
+
+ ##
+ ## Define these parameters by overwriting or by
+ ## deriving your own class from it (recommened)
+ ##
+
+ var $database_table = "session_data";
+ var $gzip_level = 0;
+ var $exists = '';
+
+ ## end of configuration
+
+ function ac_start() {
+ }
+
+ function ac_get_lock() {
+ return true;
+ }
+
+ function ac_release_lock() {
+ return true;
+ }
+
+ function ac_gc($gc_time, $name = null) {
+ return DBManager::get()->exec(sprintf("DELETE FROM %s WHERE changed < FROM_UNIXTIME(%s) ",
+ $this->database_table,
+ (time() - ($gc_time * 60))
+ ));
+ }
+
+ function ac_store($id, $name, $str) {
+ $db = DBManager::get();
+ if ($this->gzip_level){
+ $str = gzcompress($str, $this->gzip_level);
+ }
+ if ($this->exists === $id) {
+ $stmt = $db->prepare(sprintf("UPDATE %s SET val = ? WHERE sid = ?", $this->database_table));
+ } else {
+ $stmt = $db->prepare(sprintf("REPLACE INTO %s ( val, sid ) VALUES (?, ?)", $this->database_table));
+ }
+ $stmt->execute([$str, $id]);
+ return $stmt->rowCount();
+ }
+
+ function ac_delete($id, $name = null) {
+ return DBManager::get()->exec(sprintf("DELETE FROM %s WHERE sid = '%s' LIMIT 1",
+ $this->database_table,
+ $id));
+ }
+
+ function ac_get_value($id, $name = null) {
+ $rs = DBManager::get()->query(sprintf("SELECT val FROM %s where sid = '%s'",
+ $this->database_table,
+ $id));
+ $str = $rs->fetchColumn();
+ if ($this->gzip_level){
+ $str = @gzuncompress($str);
+ }
+ if ($str) $this->exists = $id;
+ return $str;
+ }
+
+ function ac_get_changed($id, $name = null){
+ $rs = DBManager::get()->query(sprintf("SELECT UNIX_TIMESTAMP(changed) FROM %s WHERE sid = '%s'",
+ $this->database_table,
+ $id));
+ return $rs->fetchColumn();
+ }
+
+ function ac_set_changed($id, $name, $timestamp){
+ $db = DBManager::get();
+ $stmt = $db->prepare(sprintf("UPDATE %s SET changed = FROM_UNIXTIME(?) WHERE sid = ?", $this->database_table));
+ $stmt->execute([$timestamp, $id]);
+ return $stmt->rowCount();
+ }
+
+ function ac_newid($str, $name = null) {
+ $db = DBManager::get();
+ $query = "SELECT sid FROM " . $this->database_table . " WHERE sid = '$str'";
+ if (!$db->query($query)->fetchColumn()) {
+ return $str;
+ } else {
+ return FALSE;
+ }
+ }
+
+ function ac_halt($s) {
+ }
+}