]> git.datanom.net - qtadmin.git/blobdiff - lib/utils.inc.php
Fix bug in session handler
[qtadmin.git] / lib / utils.inc.php
index 21724ec002921e43ca1e18ca5a38f8ef672d168b..723a133080e51f2d0a915200edd928c062945a61 100644 (file)
@@ -2,7 +2,7 @@
 /* vim: set ts=4 tw=0 sw=4 noet: */
 require_once $CFG->root .'config.php';
 
 /* vim: set ts=4 tw=0 sw=4 noet: */
 require_once $CFG->root .'config.php';
 
-class Utils {
+class Utils implements Serializable {
 
     private static $_instance = null;
     private $server;
 
     private static $_instance = null;
     private $server;
@@ -55,10 +55,23 @@ class Utils {
         }
         $_SESSION['user'] = $this->user;
         $_SESSION['is_admin'] = $this->is_admin;
         }
         $_SESSION['user'] = $this->user;
         $_SESSION['is_admin'] = $this->is_admin;
+        $_SESSION['Utils'] = serialize($this);
     }
 
     private function __clone() {}
 
     }
 
     private function __clone() {}
 
+    public function serialize() {
+        file_put_contents('/tmp/dump', 'Serialize called: '.var_export($this, true), FILE_APPEND);
+        return serialize(get_object_vars($this));
+    }
+
+    public function unserialize($data) {
+        $values = unserialize($data);
+        foreach ($values as $key=>$value) {
+            $this->$key = $value;
+        }
+    }
+
     private function startSession() {
         global $CFG;
 
     private function startSession() {
         global $CFG;
 
@@ -82,7 +95,12 @@ class Utils {
         global $CFG;
 
         if (!is_object(self::$_instance)) {
         global $CFG;
 
         if (!is_object(self::$_instance)) {
-            self::$_instance = new Utils();
+            if (isset($_SESSION['Utils'])) {
+                self::$_instance = unserialize($_SESSION['Utils']);
+                file_put_contents('/tmp/dump', 'Unserialize called: '.var_export($this, true), FILE_APPEND);
+            } else {
+                self::$_instance = new Utils();
+            }
         }
 
         $time = $_SERVER['REQUEST_TIME'];
         }
 
         $time = $_SERVER['REQUEST_TIME'];
@@ -92,8 +110,9 @@ class Utils {
             exit;
             session_unset();
             session_destroy();
             exit;
             session_unset();
             session_destroy();
-            self::$_instance->user = null;
+            self::$_instance = null;
             self::$_instance->is_admin = false;
             self::$_instance->is_admin = false;
+            $_SESSION['Utils'] = serialize(self::$_instance);
         } else {
             $_SESSION['LAST_ACTIVITY'] = $time;
         }
         } else {
             $_SESSION['LAST_ACTIVITY'] = $time;
         }
@@ -167,6 +186,8 @@ class Utils {
             $this->loginStatus = 'Connect to LDAP server failed';
         }
 
             $this->loginStatus = 'Connect to LDAP server failed';
         }
 
+        $_SESSION['Utils'] = serialize($this);
+
         return $result;
     }
 
         return $result;
     }
 
@@ -197,6 +218,9 @@ class Utils {
             echo 'R_TIME: '.date('c', $_SERVER['REQUEST_TIME']).' L_ACT: '.date('c', $_SESSION['LAST_ACTIVITY']);
             exit;
         }
             echo 'R_TIME: '.date('c', $_SERVER['REQUEST_TIME']).' L_ACT: '.date('c', $_SESSION['LAST_ACTIVITY']);
             exit;
         }
+
+        $_SESSION['Utils'] = serialize($this);
+
         return $loggedIn;
     }
 
         return $loggedIn;
     }
 
@@ -225,6 +249,8 @@ class Utils {
         $this->header = str_replace('__TITLE__', $heading, $this->header);
         $this->header = str_replace('__ROOT__', $CFG->wwwroot, $this->header);
         $this->header = str_replace('__TIMEOUT__', $timeout, $this->header);
         $this->header = str_replace('__TITLE__', $heading, $this->header);
         $this->header = str_replace('__ROOT__', $CFG->wwwroot, $this->header);
         $this->header = str_replace('__TIMEOUT__', $timeout, $this->header);
+
+        $_SESSION['Utils'] = serialize($this);
     }
 
     public function convertContent($code) {
     }
 
     public function convertContent($code) {
This page took 0.048493 seconds and 5 git commands to generate.