Merge pull request #3158 from Krymonota/fix-veoh-privacy-policy-link-text
[GitHub/WoltLab/WCF.git] / wcfsetup / install / files / acp / update_com.woltlab.wcf_3.0_pre_sql.php
CommitLineData
96ad3d1d 1<?php
81597b0b 2use wcf\system\exception\SystemException;
96ad3d1d 3use wcf\system\WCF;
21980a9f 4
81597b0b
AE
5$phpVersion = phpversion();
6$comparePhpVersion = preg_replace('/^(\d+\.\d+\.\d+).*$/', '\\1', $phpVersion);
7$neededPhpVersion = '5.5.4';
8if (!(version_compare($comparePhpVersion, $neededPhpVersion) >= 0)) {
9 $message = "Your PHP version '{$phpVersion}' is insufficient for installation of this software. PHP version {$neededPhpVersion} or greater is required.";
10 if (WCF::getLanguage()->getFixedLanguageCode() === 'de') {
11 $message = "Ihre PHP Version '{$phpVersion}' ist unzureichend f&uuml;r die Installation dieser Software. PHP Version {$neededPhpVersion} oder h&ouml;her wird ben&ouml;tigt.";
12 }
13
14 throw new SystemException($message);
15}
16
96ad3d1d
MW
17// change encoding of wcf1_acp_session; necessary for foreign key in wcf1_acp_session_virtual
18$sql = "ALTER TABLE wcf".WCF_N."_acp_session CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci";
19$statement = WCF::getDB()->prepareStatement($sql);
20$statement->execute();
21
22// create wcf1_acp_session_virtual
23$sql = "DROP TABLE IF EXISTS wcf".WCF_N."_acp_session_virtual";
24$statement = WCF::getDB()->prepareStatement($sql);
25$statement->execute();
26$sql = "CREATE TABLE wcf".WCF_N."_acp_session_virtual (
27 virtualSessionID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,
28 sessionID CHAR(40) NOT NULL,
29 ipAddress VARCHAR(39) NOT NULL DEFAULT '',
30 userAgent VARCHAR(191) NOT NULL DEFAULT '',
5c4282aa 31 lastActivityTime INT(10) NOT NULL DEFAULT 0
96ad3d1d
MW
32 UNIQUE KEY (sessionID, ipAddress, userAgent)
33) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci";
34$statement = WCF::getDB()->prepareStatement($sql);
35$statement->execute();
36
37// create virtual session for current user
5c4282aa 38$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 = ?";
96ad3d1d 39$statement = \wcf\system\WCF::getDB()->prepareStatement($sql);
81597b0b
AE
40// WARNING: do not use [...] array syntax here, as this file is also used to check for PHP 5.5+
41$statement->execute(array(WCF::getSession()->sessionID));
96ad3d1d
MW
42
43// create session cookie
44@header('Set-Cookie: '.rawurlencode(COOKIE_PREFIX . 'cookieHash_acp').'='.rawurlencode(WCF::getSession()->sessionID).'; path=/'.(\wcf\system\request\RouteHandler::secureConnection() ? '; secure' : '').'; HttpOnly', false);