Move sessionVariables into virtual session
authorTim Düsterhus <duesterhus@woltlab.com>
Fri, 25 Mar 2016 19:58:33 +0000 (20:58 +0100)
committerTim Düsterhus <duesterhus@woltlab.com>
Fri, 25 Mar 2016 19:58:33 +0000 (20:58 +0100)
wcfsetup/install/files/lib/system/session/SessionHandler.class.php
wcfsetup/setup/db/install.sql

index 6d5489d1be68dab15c4e66aee6033e0e0ddabfa0..6352dda2d1a64bac4f24cab07443975d62646256 100644 (file)
@@ -386,7 +386,7 @@ class SessionHandler extends SingletonFactory {
         * Initializes session variables.
         */
        protected function loadVariables() {
-               @$this->variables = unserialize($this->session->sessionVariables);
+               @$this->variables = unserialize($this->virtualSession->sessionVariables);
                if (!is_array($this->variables)) {
                        $this->variables = array();
                }
@@ -839,7 +839,7 @@ class SessionHandler extends SingletonFactory {
                                        $this->session = $session;
                                        
                                        // inherit security token
-                                       $variables = @unserialize($this->session->sessionVariables);
+                                       $variables = @unserialize($this->virtualSession->sessionVariables);
                                        if (is_array($variables) && !empty($variables['__SECURITY_TOKEN'])) {
                                                $this->register('__SECURITY_TOKEN', $variables['__SECURITY_TOKEN']);
                                        }
@@ -873,9 +873,6 @@ class SessionHandler extends SingletonFactory {
                        $data['objectType'] = RequestHandler::getInstance()->getActiveRequest()->getRequestObject()->getObjectType();
                        $data['objectID'] = RequestHandler::getInstance()->getActiveRequest()->getRequestObject()->getObjectID();
                }
-               if ($this->variablesChanged) {
-                       $data['sessionVariables'] = serialize($this->variables);
-               }
                
                // update session
                /** @var \wcf\data\DatabaseObjectEditor $sessionEditor */
@@ -890,6 +887,12 @@ class SessionHandler extends SingletonFactory {
                                $virtualSessionEditor = new SessionVirtualEditor($this->virtualSession);
                        }
                        $virtualSessionEditor->updateLastActivityTime();
+                       
+                       $data = [];
+                       if ($this->variablesChanged) {
+                               $data['sessionVariables'] = serialize($this->variables);
+                       }
+                       $virtualSessionEditor->update($data);
                }
        }
        
index 383938ae78af9656bbb06831c7523c93f0814f3c..9339d25f8dcafb25ddd5fc5320308c56646df7e2 100644 (file)
@@ -74,8 +74,7 @@ CREATE TABLE wcf1_acp_session (
        parentObjectType VARCHAR(255) NOT NULL DEFAULT '',
        parentObjectID INT(10) NOT NULL DEFAULT 0,
        objectType VARCHAR(255) NOT NULL DEFAULT '',
-       objectID INT(10) NOT NULL DEFAULT 0,
-       sessionVariables MEDIUMTEXT
+       objectID INT(10) NOT NULL DEFAULT 0
 );
 
 DROP TABLE IF EXISTS wcf1_acp_session_access_log;
@@ -110,6 +109,7 @@ CREATE TABLE wcf1_acp_session_virtual (
        ipAddress VARCHAR(39) NOT NULL DEFAULT '',
        userAgent VARCHAR(255) NOT NULL DEFAULT '',
        lastActivityTime INT(10) NOT NULL DEFAULT 0,
+       sessionVariables MEDIUMTEXT,
        UNIQUE KEY (sessionID, ipAddress, userAgent)
 );
 
@@ -1074,7 +1074,6 @@ CREATE TABLE wcf1_session (
        parentObjectID INT(10) NOT NULL DEFAULT 0,
        objectType VARCHAR(255) NOT NULL DEFAULT '',
        objectID INT(10) NOT NULL DEFAULT 0,
-       sessionVariables MEDIUMTEXT,
        spiderID INT(10),
        KEY packageID (lastActivityTime, spiderID),
        UNIQUE KEY uniqueUserID (userID)
@@ -1087,6 +1086,7 @@ CREATE TABLE wcf1_session_virtual (
        ipAddress VARCHAR(39) NOT NULL DEFAULT '',
        userAgent VARCHAR(255) NOT NULL DEFAULT '',
        lastActivityTime INT(10) NOT NULL DEFAULT 0,
+       sessionVariables MEDIUMTEXT,
        UNIQUE KEY (sessionID, ipAddress, userAgent)
 );