Make 5.4_session_3_migrate_session.php idempotent
authorTim Düsterhus <duesterhus@woltlab.com>
Tue, 2 Feb 2021 10:31:21 +0000 (11:31 +0100)
committerTim Düsterhus <duesterhus@woltlab.com>
Tue, 2 Feb 2021 10:31:21 +0000 (11:31 +0100)
Fixes #3923

wcfsetup/install/files/acp/update_com.woltlab.wcf_5.4_session_3_migrate_session.php

index a50a88ce15429f26e97c5428b8144ef87624ad69..a828489a90249b2d32eddb97446ca174ca06f0bf 100644 (file)
 use wcf\system\session\SessionHandler;
 use wcf\system\WCF;
 
+$sql = "SELECT  userID
+        FROM    wcf" . WCF_N . "_user_session
+        WHERE   sessionID = ?";
+$statement = WCF::getDB()->prepareStatement($sql);
+$statement->execute([
+    SessionHandler::getInstance()->sessionID,
+]);
+
+// Check if a matching session already exists.
+if ($statement->fetchSingleColumn() == SessionHandler::getInstance()->userID) {
+    return;
+}
+
 $sql = "INSERT INTO wcf" . WCF_N . "_user_session
                     (sessionID, userID, userAgent, ipAddress, lastActivityTime, sessionVariables)
         VALUES      (?, ?, ?, ?, ?, ?)";