Moved `sessionVariables` back
authorAlexander Ebert <ebert@woltlab.com>
Thu, 24 Nov 2016 17:51:27 +0000 (18:51 +0100)
committerAlexander Ebert <ebert@woltlab.com>
Thu, 24 Nov 2016 18:46:47 +0000 (19:46 +0100)
com.woltlab.wcf/update_1.sql
com.woltlab.wcf/update_3.sql
wcfsetup/install/files/acp/update_com.woltlab.wcf_3.0_dropColumns.php
wcfsetup/install/files/acp/update_com.woltlab.wcf_3.0_pre_sql.php
wcfsetup/install/files/lib/data/acp/session/ACPSession.class.php
wcfsetup/install/files/lib/data/acp/session/virtual/ACPSessionVirtual.class.php
wcfsetup/install/files/lib/system/session/SessionHandler.class.php
wcfsetup/setup/db/install.sql

index abc6b000503a8b6fc4a2e8769456681704d21115..e09b2b897c67593e89fd64a1c0fe34ec3f08e446 100644 (file)
@@ -21,7 +21,6 @@ ALTER TABLE wcf1_acp_session DROP COLUMN parentObjectType;
 ALTER TABLE wcf1_acp_session DROP COLUMN parentObjectID;
 ALTER TABLE wcf1_acp_session DROP COLUMN objectType;
 ALTER TABLE wcf1_acp_session DROP COLUMN objectID;
-ALTER TABLE wcf1_acp_session DROP COLUMN sessionVariables;
 
 ALTER TABLE wcf1_application DROP COLUMN cookiePath;
 ALTER TABLE wcf1_application DROP COLUMN isPrimary;
index 9d98bf1a1256a316fd39301b13a3d978ec550b56..86df6546785d74c8922e8c43a7ca1e04a182e924 100644 (file)
@@ -5,8 +5,6 @@ ALTER TABLE wcf1_session ADD parentPageObjectID INT(10);
 ALTER TABLE wcf1_session ADD KEY pageID (pageID, pageObjectID);
 ALTER TABLE wcf1_session ADD KEY parentPageID (parentPageID, parentPageObjectID);
 
-ALTER TABLE wcf1_session_virtual ADD sessionVariables MEDIUMTEXT;
-
 DROP TABLE IF EXISTS wcf1_sitemap;
 
 ALTER TABLE wcf1_smiley ADD smileyPath2x VARCHAR(255) NOT NULL DEFAULT '';
index cac9ea3bd1a08b953c956e9c37d2e03a5e839b48..ae47579c2d441f13091ffa0c022dd8ac7cf8e4af 100644 (file)
@@ -10,7 +10,7 @@ use wcf\util\StringUtil;
  * @package    WoltLabSuite\Core
  */
 $data = <<<DATA
-ALTER TABLE wcf1_session DROP COLUMN controller, DROP COLUMN parentObjectType, DROP COLUMN parentObjectID, DROP COLUMN objectType, DROP COLUMN objectID, DROP COLUMN sessionVariables;
+ALTER TABLE wcf1_session DROP COLUMN controller, DROP COLUMN parentObjectType, DROP COLUMN parentObjectID, DROP COLUMN objectType, DROP COLUMN objectID;
 ALTER TABLE wcf1_user DROP COLUMN signatureEnableBBCodes, DROP COLUMN signatureEnableSmilies, DROP COLUMN socialNetworkPrivacySettings;
 ALTER TABLE wcf1_user_avatar DROP COLUMN cropX, DROP COLUMN cropY;
 DATA;
index 6008ae864b2fceaff27bf9cf75fa309c7ea4bb92..10af0fc76920ef5ba07444356bafb2fd53aa9f36 100644 (file)
@@ -15,15 +15,14 @@ $sql = "CREATE TABLE wcf".WCF_N."_acp_session_virtual (
        sessionID CHAR(40) NOT NULL,
        ipAddress VARCHAR(39) NOT NULL DEFAULT '',
        userAgent VARCHAR(191) NOT NULL DEFAULT '',
-       lastActivityTime INT(10) NOT NULL DEFAULT 0,
-       sessionVariables MEDIUMTEXT,
+       lastActivityTime INT(10) NOT NULL DEFAULT 0
        UNIQUE KEY (sessionID, ipAddress, userAgent)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci";
 $statement = WCF::getDB()->prepareStatement($sql);
 $statement->execute();
 
 // create virtual session for current user
-$sql = "INSERT INTO wcf".WCF_N."_acp_session_virtual (sessionID, ipAddress, userAgent, lastActivityTime, sessionVariables) SELECT sessionID, ipAddress, userAgent, lastActivityTime, sessionVariables FROM wcf".WCF_N."_acp_session WHERE sessionID = ?";
+$sql = "INSERT INTO wcf".WCF_N."_acp_session_virtual (sessionID, ipAddress, userAgent, lastActivityTime) SELECT sessionID, ipAddress, userAgent, lastActivityTime FROM wcf".WCF_N."_acp_session WHERE sessionID = ?";
 $statement = \wcf\system\WCF::getDB()->prepareStatement($sql);
 $statement->execute([WCF::getSession()->sessionID]);
 
index 6e865956b8308d34adfeee42616d1954eff26995..f072e463e0f5aa489cf564e1f6d2ec674fba84a6 100644 (file)
@@ -18,6 +18,7 @@ use wcf\system\WCF;
  * @property-read      integer         $lastActivityTime       timestamp at which the latest activity occured
  * @property-read      string          $requestURI             uri of the latest request
  * @property-read      string          $requestMethod          used request method of the latest request (`GET`, `POST`)
+ * @property-read      string          $sessionVariables       serialized array with variables stored on a session-basis
  */
 class ACPSession extends DatabaseObject {
        /**
index 39d2c67acb521be4f32be631dc4722e57b0c2ca5..bb98a6c21cc8a4155fd451f63924c5afbd053c97 100644 (file)
@@ -22,8 +22,7 @@ use wcf\util\UserUtil;
  * @property-read      string          $sessionID              id of the acp session the virtual acp session belongs to
  * @property-read      string          $ipAddress              id of the user whom the virtual acp session belongs to
  * @property-read      string          $userAgent              user agent of the user whom the virtual acp session belongs to
- * @property-read      integer         $lastActivityTime       timestamp at which the latest activity occured
- * @property-read      string          $sessionVariables       serialized array with variables stored on a session-basis
+ * @property-read      integer         $lastActivityTime       timestamp at which the latest activity occurred
  */
 class ACPSessionVirtual extends DatabaseObject {
        /**
index 887a46c62e7dd0677a297f5a6d478cf5dce27b25..1c536ad4622f5408603830a46cffc772de249546 100644 (file)
@@ -399,7 +399,7 @@ class SessionHandler extends SingletonFactory {
         * Initializes session variables.
         */
        protected function loadVariables() {
-               @$this->variables = unserialize($this->virtualSession->sessionVariables);
+               @$this->variables = unserialize($this->session->sessionVariables);
                if (!is_array($this->variables)) {
                        $this->variables = [];
                }
@@ -848,7 +848,7 @@ class SessionHandler extends SingletonFactory {
                                        $this->session = $session;
                                        
                                        // inherit security token
-                                       $variables = @unserialize($this->virtualSession->sessionVariables);
+                                       $variables = @unserialize($this->session->sessionVariables);
                                        if (is_array($variables) && !empty($variables['__SECURITY_TOKEN'])) {
                                                $this->register('__SECURITY_TOKEN', $variables['__SECURITY_TOKEN']);
                                        }
@@ -875,6 +875,9 @@ class SessionHandler extends SingletonFactory {
                        'requestMethod' => $this->requestMethod,
                        'lastActivityTime' => TIME_NOW
                ];
+               if ($this->variablesChanged) {
+                       $data['sessionVariables'] = serialize($this->variables);
+               }
                if (!class_exists('wcf\system\CLIWCF', false) && !$this->isACP && !$this->disableTracking) {
                        $pageLocations = PageLocationManager::getInstance()->getLocations();
                        if (isset($pageLocations[0])) {
@@ -905,13 +908,8 @@ class SessionHandler extends SingletonFactory {
                        else {
                                $virtualSessionEditor = new SessionVirtualEditor($this->virtualSession);
                        }
-                       $virtualSessionEditor->updateLastActivityTime();
                        
-                       $data = [];
-                       if ($this->variablesChanged) {
-                               $data['sessionVariables'] = serialize($this->variables);
-                       }
-                       $virtualSessionEditor->update($data);
+                       $virtualSessionEditor->updateLastActivityTime();
                }
        }
        
index eaa81f0f7767e3aaa5eab2f16d4f894616eb5ed2..1a5494940f292c03fdd40cf57fb9efbc2959f1f9 100644 (file)
@@ -110,6 +110,7 @@ CREATE TABLE wcf1_acp_session_log (
        userAgent VARCHAR(255) NOT NULL DEFAULT '',
        time INT(10) NOT NULL DEFAULT 0,
        lastActivityTime INT(10) NOT NULL DEFAULT 0,
+       sessionVariables MEDIUMTEXT,
        KEY sessionID (sessionID)
 );
 
@@ -120,7 +121,6 @@ CREATE TABLE wcf1_acp_session_virtual (
        ipAddress VARCHAR(39) NOT NULL DEFAULT '',
        userAgent VARCHAR(191) NOT NULL DEFAULT '',
        lastActivityTime INT(10) NOT NULL DEFAULT 0,
-       sessionVariables MEDIUMTEXT,
        UNIQUE KEY (sessionID, ipAddress, userAgent)
 );
 
@@ -1095,6 +1095,7 @@ CREATE TABLE wcf1_session (
        parentPageID INT(10),
        parentPageObjectID INT(10),
        spiderID INT(10),
+       sessionVariables MEDIUMTEXT,
        KEY packageID (lastActivityTime, spiderID),
        KEY pageID (pageID, pageObjectID),
        KEY parentPageID (parentPageID, parentPageObjectID),
@@ -1108,7 +1109,6 @@ CREATE TABLE wcf1_session_virtual (
        ipAddress VARCHAR(39) NOT NULL DEFAULT '',
        userAgent VARCHAR(191) NOT NULL DEFAULT '',
        lastActivityTime INT(10) NOT NULL DEFAULT 0,
-       sessionVariables MEDIUMTEXT,
        UNIQUE KEY (sessionID, ipAddress, userAgent)
 );