diff --git a/.github/workflows/sql.yml b/.github/workflows/sql.yml deleted file mode 100644 index b402641f65b..00000000000 --- a/.github/workflows/sql.yml +++ /dev/null @@ -1,23 +0,0 @@ -name: SQL - -on: - push: - branches: - - "6.0" - - master - paths: - - wcfsetup/setup/db/install.sql - pull_request: - paths: - - wcfsetup/setup/db/install.sql - -jobs: - syntax: - name: "Check install.sql" - runs-on: ubuntu-latest - steps: - - run: sudo service mysql start - - run: mysqladmin -uroot -proot create test - - uses: actions/checkout@v4 - - run: | - cat wcfsetup/setup/db/install.sql |mysql -uroot -proot -Dtest diff --git a/wcfsetup/install/files/lib/data/user/option/UserOptionEditor.class.php b/wcfsetup/install/files/lib/data/user/option/UserOptionEditor.class.php index e2d6e7f3b4d..aa4a0561649 100644 --- a/wcfsetup/install/files/lib/data/user/option/UserOptionEditor.class.php +++ b/wcfsetup/install/files/lib/data/user/option/UserOptionEditor.class.php @@ -150,14 +150,12 @@ public static function getColumnDefinition($optionType) case 'boolean': $column['notNull'] = true; $column['default'] = 0; - $column['length'] = 1; $column['type'] = 'tinyint'; break; case 'integer': $column['notNull'] = true; $column['default'] = 0; - $column['length'] = 10; $column['type'] = 'int'; break; diff --git a/wcfsetup/install/files/lib/system/WCFSetup.class.php b/wcfsetup/install/files/lib/system/WCFSetup.class.php index 39624f90254..63e61e25bac 100644 --- a/wcfsetup/install/files/lib/system/WCFSetup.class.php +++ b/wcfsetup/install/files/lib/system/WCFSetup.class.php @@ -14,6 +14,7 @@ use wcf\system\database\Database; use wcf\system\database\exception\DatabaseException; use wcf\system\database\MySQLDatabase; +use wcf\system\database\table\DatabaseTableChangeProcessor; use wcf\system\database\util\SQLParser; use wcf\system\devtools\DevtoolsSetup; use wcf\system\exception\SystemException; @@ -200,7 +201,7 @@ protected function calcProgress(int $currentStep): void \file_put_contents(\TMP_DIR . 'lastStep', $currentStep); // calculate progress - $progress = \round((100 / 22) * ++$currentStep, 0); + $progress = \round((100 / 14) * ++$currentStep, 0); self::getTPL()->assign(['progress' => $progress]); } @@ -275,23 +276,23 @@ protected function dispatch(): ResponseInterface return $this->createDB(); case 'unzipFiles': - $this->calcProgress(18); + $this->calcProgress(10); $this->assertNotUnzipped(); return $this->unzipFiles(); case 'installLanguage': - $this->calcProgress(19); + $this->calcProgress(11); return $this->installLanguage(); case 'createUser': - $this->calcProgress(20); + $this->calcProgress(12); return $this->createUser(); case 'installPackages': - $this->calcProgress(21); + $this->calcProgress(13); return $this->installPackages(); @@ -663,33 +664,53 @@ protected function createDB(): ResponseInterface { $this->initDB(); - // get content of the sql structure file - $sql = \file_get_contents(TMP_DIR . 'setup/db/install.sql'); + $dbEditor = self::getDB()->getEditor(); + + $tableNames = $dbEditor->getTableNames(); + if (!\in_array('wcf1_package_installation_sql_log', $tableNames)) { + $dbEditor->createTable('wcf1_package_installation_sql_log', [ + ['name' => 'packageID', 'data' => ['type' => 'int', 'notNull' => true]], + ['name' => 'sqlTable', 'data' => ['type' => 'varchar', 'length' => 100, 'notNull' => true, 'default' => "''"]], + ['name' => 'sqlColumn', 'data' => ['type' => 'varchar', 'length' => 100, 'notNull' => true, 'default' => "''"]], + ['name' => 'sqlIndex', 'data' => ['type' => 'varchar', 'length' => 100, 'notNull' => true, 'default' => "''"]], + ['name' => 'isDone', 'data' => ['type' => 'tinyint', 'notNull' => true, 'default' => 1]], + ], [ + [ + 'name' => 'packageID', + 'data' => ['type' => 'UNIQUE', 'columns' => 'packageID,sqlTable,sqlColumn,sqlIndex'], + ] + ]); - // split by offsets - $sqlData = \explode('/* SQL_PARSER_OFFSET */', $sql); - $offset = isset($_POST['offset']) ? \intval($_POST['offset']) : 0; - if (!isset($sqlData[$offset])) { - throw new SystemException("Offset for SQL parser is out of bounds, " . $offset . " was requested, but there are only " . \count($sqlData) . " sections"); + $sql = "INSERT INTO wcf1_package_installation_sql_log + (packageID, sqlTable, isDone) + VALUES (?, ?, ?)"; + $statement = self::getDB()->prepareUnmanaged($sql); + $statement->execute([1, 'wcf1_package_installation_sql_log', 1]); } - $sql = $sqlData[$offset]; - // execute sql queries - $parser = new SQLParser($sql); - $parser->execute(); + $package = new \wcf\data\package\Package(null, ['packageID' => 1, 'package' => 'com.woltlab.wcf']); + $hasPackageTable = false; + $tables = require \TMP_DIR . 'setup/db/install_com.woltlab.wcf.php'; + + $completed = false; + $processor = new DatabaseTableChangeProcessor( + $package, + null, + $dbEditor, + ); + for ($i = 0; $i < 50; $i++) { + $this->createPseudoPackage(); - // log sql queries - \preg_match_all("~CREATE\\s+TABLE\\s+(\\w+)~i", $sql, $matches); + if ($processor->process($tables)) { + continue; + } - $sql = "INSERT INTO wcf1_package_installation_sql_log - (packageID, sqlTable) - VALUES (?, ?)"; - $statement = self::getDB()->prepare($sql); - foreach ($matches[1] as $tableName) { - $statement->execute([1, $tableName]); + $completed = true; + break; } - if ($offset < (\count($sqlData) - 1)) { + if (!$completed) { + $offset = isset($_POST['offset']) ? \intval($_POST['offset']) : 0; WCF::getTPL()->assign([ '__additionalParameters' => [ 'offset' => $offset + 1, @@ -697,24 +718,59 @@ protected function createDB(): ResponseInterface ]); return $this->gotoNextStep('createDB'); - } else { - /* - * Manually install PIPPackageInstallationPlugin since install.sql content is not escaped resulting - * in different behaviour in MySQL and MSSQL. You SHOULD NOT move this into install.sql! - */ - $sql = "INSERT INTO wcf1_package_installation_plugin - (packageID, pluginName, priority, className) - VALUES (?, ?, ?, ?)"; - $statement = self::getDB()->prepare($sql); - $statement->execute([ - 1, - 'packageInstallationPlugin', - 1, - 'wcf\system\package\plugin\PIPPackageInstallationPlugin', - ]); + } + + $sql = \explode( + "\n", + \file_get_contents(TMP_DIR . 'setup/db/install.sql') + ); + foreach ($sql as $line) { + $line = StringUtil::trim($line); + if ($line === '' || \str_starts_with($line, '-- ')) { + continue; + } + + WCF::getDB()->prepareUnmanaged($line)->execute(); + } + + return $this->gotoNextStep('unzipFiles'); + } + + /** + * Dynamically creates the pseudo row in `wcf1_package` after the table has + * been created. This step is necessary to preserve the integrity of the + * foreign key enforced on the SQL log and PIP table. + */ + private function createPseudoPackage(): void + { + static $hasPseudoPackage = false; + if ($hasPseudoPackage) { + return; + } - return $this->gotoNextStep('unzipFiles'); + $sql = "SHOW TABLES FROM " . self::getDB()->getDatabaseName() . " LIKE 'wcf1_package'"; + $statement = self::getDB()->prepareUnmanaged($sql); + $statement->execute([]); + $hasTable = $statement->fetchSingleRow(); + if ($hasTable === false) { + return; } + + $sql = "SELECT * + FROM wcf1_package + WHERE packageID = ?"; + $statement = self::getDB()->prepareUnmanaged($sql); + $statement->execute([1]); + $row = $statement->fetchSingleRow(); + if ($row === false) { + $sql = "INSERT INTO wcf1_package + (packageID, package) + VALUES (?, ?)"; + $statement = self::getDB()->prepareUnmanaged($sql); + $statement->execute([1, 'com.woltlab.wcf']); + } + + $hasPseudoPackage = true; } /** diff --git a/wcfsetup/install/files/lib/system/database/table/DatabaseTableChangeProcessor.class.php b/wcfsetup/install/files/lib/system/database/table/DatabaseTableChangeProcessor.class.php index 2ca4d6fcccf..deeaf7d0470 100644 --- a/wcfsetup/install/files/lib/system/database/table/DatabaseTableChangeProcessor.class.php +++ b/wcfsetup/install/files/lib/system/database/table/DatabaseTableChangeProcessor.class.php @@ -120,9 +120,9 @@ final class DatabaseTableChangeProcessor /** * layouts/layout changes of the relevant database table - * @var DatabaseTable[] + * @var DatabaseTable[]|null */ - private array $tables; + private ?array $tables = null; /** * maps the registered database table names to the ids of the packages they belong to @@ -153,12 +153,25 @@ final class DatabaseTableChangeProcessor /** * Creates a new instance of `DatabaseTableChangeProcessor`. * - * @param DatabaseTable[] $tables + * @param DatabaseTable[]|null $tables */ - public function __construct(Package $package, array $tables, DatabaseEditor $dbEditor) + public function __construct(Package $package, ?array $tables, DatabaseEditor $dbEditor) { $this->package = $package; + $this->dbEditor = $dbEditor; + $this->existingTableNames = $dbEditor->getTableNames(); + + if ($tables !== null) { + $this->setTables($tables); + } + } + + /** + * @param DatabaseTable[] $tables + */ + private function setTables(array $tables): void + { $tableNames = []; foreach ($tables as $table) { if (!($table instanceof DatabaseTable)) { @@ -168,10 +181,9 @@ public function __construct(Package $package, array $tables, DatabaseEditor $dbE $tableNames[] = $table->getName(); } - $this->tables = $tables; - $this->dbEditor = $dbEditor; + $this->resetInternalState(); - $this->existingTableNames = $dbEditor->getTableNames(); + $this->tables = $tables; $conditionBuilder = new PreparedStatementConditionBuilder(); $conditionBuilder->add('sqlTable IN (?)', [$tableNames]); @@ -196,6 +208,28 @@ public function __construct(Package $package, array $tables, DatabaseEditor $dbE } } + private function resetInternalState(): void + { + $this->columnPackageIDs = []; + $this->foreignKeyPackageIDs = []; + $this->indexPackageIDs = []; + $this->tablePackageIDs = []; + + $this->columnsToAdd = []; + $this->columnsToAlter = []; + $this->columnsToDrop = []; + + $this->foreignKeysToAdd = []; + $this->foreignKeysToDrop = []; + + $this->indicesToAdd = []; + $this->indicesToDrop = []; + + $this->tablesToCleanup = []; + $this->tablesToCreate = []; + $this->tablesToDrop = []; + } + /** * Adds the given index to the table. */ @@ -214,15 +248,14 @@ private function addIndex(string $tableName, DatabaseTableIndex $index): void /** * Applies all of the previously determined changes to achieve the desired database layout. - * - * @throws SplitNodeException if any change has been applied */ - private function applyChanges(): void + private function applyChanges(): bool { $appliedAnyChange = false; foreach ($this->tablesToCleanup as $table) { $this->dropTable($table); + $this->invalidateCachedTable($table->getName()); } foreach ($this->tablesToCreate as $table) { @@ -231,6 +264,8 @@ private function applyChanges(): void $this->prepareTableLog($table); $this->createTable($table); $this->finalizeTableLog($table); + + $this->existingTableNames[] = $table->getName(); } foreach ($this->tablesToDrop as $table) { @@ -238,6 +273,8 @@ private function applyChanges(): void $this->dropTable($table); $this->deleteTableLog($table); + + $this->invalidateCachedTable($table->getName()); } $columnTables = \array_unique(\array_merge( @@ -283,6 +320,8 @@ private function applyChanges(): void foreach ($columnsToDrop as $column) { $this->deleteColumnLog($tableName, $column); } + + $this->invalidateCachedTable($tableName); } foreach ($this->foreignKeysToDrop as $tableName => $foreignKeys) { @@ -292,6 +331,8 @@ private function applyChanges(): void $this->dropForeignKey($tableName, $foreignKey); $this->deleteForeignKeyLog($tableName, $foreignKey); } + + $this->invalidateCachedTable($tableName); } foreach ($this->foreignKeysToAdd as $tableName => $foreignKeys) { @@ -302,6 +343,8 @@ private function applyChanges(): void $this->addForeignKey($tableName, $foreignKey); $this->finalizeForeignKeyLog($tableName, $foreignKey); } + + $this->invalidateCachedTable($tableName); } foreach ($this->indicesToDrop as $tableName => $indices) { @@ -311,6 +354,8 @@ private function applyChanges(): void $this->dropIndex($tableName, $index); $this->deleteIndexLog($tableName, $index); } + + $this->invalidateCachedTable($tableName); } foreach ($this->indicesToAdd as $tableName => $indices) { @@ -321,11 +366,11 @@ private function applyChanges(): void $this->addIndex($tableName, $index); $this->finalizeIndexLog($tableName, $index); } - } - if ($appliedAnyChange) { - throw new SplitNodeException($this->splitNodeMessage); + $this->invalidateCachedTable($tableName); } + + return $appliedAnyChange; } /** @@ -1002,6 +1047,16 @@ private function getExistingTable(string $tableName): DatabaseTable return $this->existingTables[$tableName]; } + /** + * Invalidates the cached state of an existing table. This allows multiple + * runs of the same processor within one request without causing issues by + * dealing with stale data. + */ + private function invalidateCachedTable(string $tableName): void + { + unset($this->existingTables[$tableName]); + } + /** * Returns the id of the package to with the given foreign key belongs to. If there is no specific * log entry for the given foreign key, the table log is checked and the relevant package id of @@ -1093,10 +1148,22 @@ private function prepareTableLog(DatabaseTable $table): void /** * Processes all tables and updates the current table layouts to match the specified layouts. * + * @param DatabaseTable[] $tables * @throws \RuntimeException if validation of the required layout changes fails + * @throws SplitNodeException if any change has been applied AND `$tables` was empty */ - public function process(): void + public function process(array $tables = []): bool { + if ($this->tables === null) { + if ($tables === []) { + throw new \InvalidArgumentException('No table definitions have been provided.'); + } else { + $this->setTables($tables); + } + } else if ($tables !== []) { + throw new \InvalidArgumentException('Cannot provide table definitions both in the constructor and in process().'); + } + $this->checkPendingLogEntries(); $errors = $this->validate(); @@ -1111,7 +1178,19 @@ public function process(): void $this->calculateChanges(); - $this->applyChanges(); + $appliedAnyChange = $this->applyChanges(); + + $this->tables = null; + + if ($appliedAnyChange) { + if ($tables === []) { + throw new SplitNodeException($this->splitNodeMessage); + } + + return true; + } + + return false; } /** @@ -1161,7 +1240,8 @@ public function validate(): array // If the prefix is known, the unknown table is deleted // before it is created again (this is registered in self::calculateChanges()). if ( - !\in_array( + \PACKAGE_ID !== 0 + && !\in_array( $abbreviation, ApplicationHandler::getInstance()->getAbbreviations() ) @@ -1172,7 +1252,7 @@ public function validate(): array ]; } } else { - $existingTable = DatabaseTable::createFromExistingTable($this->dbEditor, $table->getName()); + $existingTable = $this->getExistingTable($table->getName()); $existingColumns = $existingTable->getColumns(); $existingIndices = $existingTable->getIndices(); $existingForeignKeys = $existingTable->getForeignKeys(); diff --git a/wcfsetup/install/files/lib/system/database/table/column/AbstractDatabaseTableColumn.class.php b/wcfsetup/install/files/lib/system/database/table/column/AbstractDatabaseTableColumn.class.php index b992f0e73c8..a2933f9b5f7 100644 --- a/wcfsetup/install/files/lib/system/database/table/column/AbstractDatabaseTableColumn.class.php +++ b/wcfsetup/install/files/lib/system/database/table/column/AbstractDatabaseTableColumn.class.php @@ -81,7 +81,10 @@ public function getData(): array $data['values'] = "'" . \implode("','", $values) . "'"; } - if ($this instanceof ILengthDatabaseTableColumn) { + if ($this instanceof AbstractIntDatabaseTableColumn) { + // Actively discard the length of *INT columns. + unset($data['length']); + } else if ($this instanceof ILengthDatabaseTableColumn) { $data['length'] = $this->getLength(); } diff --git a/wcfsetup/install/files/lib/system/database/util/SQLParser.class.php b/wcfsetup/install/files/lib/system/database/util/SQLParser.class.php index 20f2d05aee0..b8a7950c9a0 100644 --- a/wcfsetup/install/files/lib/system/database/util/SQLParser.class.php +++ b/wcfsetup/install/files/lib/system/database/util/SQLParser.class.php @@ -18,6 +18,7 @@ * @phpstan-import-type ColumnDefinition from DatabaseEditor * @phpstan-import-type ForeignKeyDefinition from DatabaseEditor * @phpstan-import-type IndexDefinition from DatabaseEditor + * @deprecated 6.3 Use the PHP-DDL instead. */ class SQLParser { diff --git a/wcfsetup/install/files/lib/system/package/PackageInstallationSQLParser.class.php b/wcfsetup/install/files/lib/system/package/PackageInstallationSQLParser.class.php index 0d715d1949b..756f94a8ac1 100644 --- a/wcfsetup/install/files/lib/system/package/PackageInstallationSQLParser.class.php +++ b/wcfsetup/install/files/lib/system/package/PackageInstallationSQLParser.class.php @@ -13,6 +13,7 @@ * @author Marcel Werk * @copyright 2001-2019 WoltLab GmbH * @license GNU Lesser General Public License + * @deprecated 6.3 Use the PHP-DDL instead. */ class PackageInstallationSQLParser extends SQLParser { diff --git a/wcfsetup/install/files/lib/system/package/plugin/SQLPackageInstallationPlugin.class.php b/wcfsetup/install/files/lib/system/package/plugin/SQLPackageInstallationPlugin.class.php index 0b56d39136c..03fe9114059 100644 --- a/wcfsetup/install/files/lib/system/package/plugin/SQLPackageInstallationPlugin.class.php +++ b/wcfsetup/install/files/lib/system/package/plugin/SQLPackageInstallationPlugin.class.php @@ -14,6 +14,7 @@ * @author Alexander Ebert * @copyright 2001-2019 WoltLab GmbH * @license GNU Lesser General Public License + * @deprecated 6.3 Use the `database` PIP and `script` PIP (for simple queries) instead. */ class SQLPackageInstallationPlugin extends AbstractPackageInstallationPlugin { diff --git a/wcfsetup/setup/db/install.sql b/wcfsetup/setup/db/install.sql index c749a47497b..fc14661befa 100644 --- a/wcfsetup/setup/db/install.sql +++ b/wcfsetup/setup/db/install.sql @@ -1,2388 +1,5 @@ -/* - This table was moved up here, because it must be created during the first iteration +INSERT INTO wcf1_package_installation_plugin (packageID, pluginName, priority, className) VALUES (1, 'packageInstallationPlugin', 1, 'wcf\\system\\package\\plugin\\PIPPackageInstallationPlugin'); - DO *NOT* MOVE IT BACK! -*/ -DROP TABLE IF EXISTS wcf1_package_installation_sql_log; -CREATE TABLE wcf1_package_installation_sql_log ( - packageID INT(10) NOT NULL, - sqlTable VARCHAR(100) NOT NULL DEFAULT '', - sqlColumn VARCHAR(100) NOT NULL DEFAULT '', - sqlIndex VARCHAR(100) NOT NULL DEFAULT '', - isDone TINYINT(1) NOT NULL DEFAULT 1, - UNIQUE KEY packageID (packageID, sqlTable, sqlColumn, sqlIndex) -); - -/* tables */ -DROP TABLE IF EXISTS wcf1_acl_option; -CREATE TABLE wcf1_acl_option ( - optionID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - packageID INT(10) NOT NULL, - objectTypeID INT(10) NOT NULL, - optionName VARCHAR(191) NOT NULL, - categoryName VARCHAR(191) NOT NULL, - UNIQUE KEY (packageID, objectTypeID, optionName) -); - -DROP TABLE IF EXISTS wcf1_acl_option_category; -CREATE TABLE wcf1_acl_option_category ( - categoryID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - packageID INT(10) NOT NULL, - objectTypeID INT(10) NOT NULL, - categoryName VARCHAR(191) NOT NULL, - UNIQUE KEY (packageID, objectTypeID, categoryName) -); - -DROP TABLE IF EXISTS wcf1_acl_option_to_user; -CREATE TABLE wcf1_acl_option_to_user ( - optionID INT(10) NOT NULL, - objectID INT(10) NOT NULL, - userID INT(10) NOT NULL, - optionValue TINYINT(1) NOT NULL DEFAULT 0, - UNIQUE KEY userID (userID, objectID, optionID) -); - -DROP TABLE IF EXISTS wcf1_acl_option_to_group; -CREATE TABLE wcf1_acl_option_to_group ( - optionID INT(10) NOT NULL, - objectID INT(10) NOT NULL, - groupID INT(10) NOT NULL, - optionValue TINYINT(1) NOT NULL DEFAULT 0, - UNIQUE KEY groupID (groupID, objectID, optionID) -); - -DROP TABLE IF EXISTS wcf1_acl_simple_to_user; -CREATE TABLE wcf1_acl_simple_to_user ( - objectTypeID INT(10) NOT NULL, - objectID INT(10) NOT NULL, - userID INT(10) NOT NULL, - UNIQUE KEY userKey (objectTypeID, objectID, userID) -); - -DROP TABLE IF EXISTS wcf1_acl_simple_to_group; -CREATE TABLE wcf1_acl_simple_to_group ( - objectTypeID INT(10) NOT NULL, - objectID INT(10) NOT NULL, - groupID INT(10) NOT NULL, - UNIQUE KEY groupKey (objectTypeID, objectID, groupID) -); - -DROP TABLE IF EXISTS wcf1_acp_dashboard_box_to_user; -CREATE TABLE wcf1_acp_dashboard_box_to_user ( - boxName VARCHAR(191) NOT NULL, - userID INT(10) NOT NULL, - enabled TINYINT(1) NOT NULL DEFAULT 0, - showOrder INT(10) NOT NULL DEFAULT 0, - UNIQUE KEY boxToUser (boxName, userID) -); - -DROP TABLE IF EXISTS wcf1_acp_menu_item; -CREATE TABLE wcf1_acp_menu_item ( - menuItemID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - packageID INT(10) NOT NULL, - menuItem VARCHAR(191) NOT NULL DEFAULT '', - parentMenuItem VARCHAR(191) NOT NULL DEFAULT '', - menuItemController VARCHAR(255) NOT NULL DEFAULT '', - menuItemLink VARCHAR(255) NOT NULL DEFAULT '', - showOrder INT(10) NOT NULL DEFAULT 0, - permissions TEXT, - options TEXT, - icon VARCHAR(255) NOT NULL DEFAULT '', - UNIQUE KEY menuItem (menuItem, packageID) -); - -DROP TABLE IF EXISTS wcf1_acp_search_provider; -CREATE TABLE wcf1_acp_search_provider ( - providerID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - packageID INT(10) NOT NULL, - providerName VARCHAR(191) NOT NULL DEFAULT '', - className VARCHAR(255) NOT NULL DEFAULT '', - showOrder INT(10) NOT NULL DEFAULT 0, - UNIQUE KEY providerName (providerName, packageID) -); - -DROP TABLE IF EXISTS wcf1_acp_session_access_log; -CREATE TABLE wcf1_acp_session_access_log ( - sessionAccessLogID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - sessionLogID INT(10) NOT NULL, - ipAddress VARCHAR(39) NOT NULL DEFAULT '', - time INT(10) NOT NULL DEFAULT 0, - requestURI VARCHAR(255) NOT NULL DEFAULT '', - requestMethod VARCHAR(255) NOT NULL DEFAULT '', - className VARCHAR(255) NOT NULL DEFAULT '', - KEY sessionLogID (sessionLogID) -); - -DROP TABLE IF EXISTS wcf1_acp_session_log; -CREATE TABLE wcf1_acp_session_log ( - sessionLogID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - sessionID CHAR(40) NOT NULL DEFAULT '', - userID INT(10), - ipAddress VARCHAR(39) NOT NULL DEFAULT '', - hostname VARCHAR(255) NOT NULL DEFAULT '', - userAgent VARCHAR(255) NOT NULL DEFAULT '', - time INT(10) NOT NULL DEFAULT 0, - lastActivityTime INT(10) NOT NULL DEFAULT 0, - KEY sessionID (sessionID) -); - -DROP TABLE IF EXISTS wcf1_acp_template; -CREATE TABLE wcf1_acp_template ( - templateID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - packageID INT(10) NOT NULL, - templateName VARCHAR(191) NOT NULL, - application VARCHAR(20) NOT NULL, - UNIQUE KEY applicationTemplate (application, templateName) -); - -DROP TABLE IF EXISTS wcf1_ad; -CREATE TABLE wcf1_ad ( - adID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - objectTypeID INT(10) NOT NULL, - adName VARCHAR(255) NOT NULL, - ad MEDIUMTEXT, - isDisabled TINYINT(1) NOT NULL DEFAULT 0, - showOrder INT(10) NOT NULL DEFAULT 0 -); - -DROP TABLE IF EXISTS wcf1_application; -CREATE TABLE wcf1_application ( - packageID INT(10) NOT NULL PRIMARY KEY, - domainName VARCHAR(255) NOT NULL, - domainPath VARCHAR(255) NOT NULL DEFAULT '/', - cookieDomain VARCHAR(255) NOT NULL, - isTainted TINYINT(1) NOT NULL DEFAULT 0, - landingPageID INT(10) NULL -); - -DROP TABLE IF EXISTS wcf1_article; -CREATE TABLE wcf1_article ( - articleID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - userID INT(10), - username VARCHAR(255) NOT NULL DEFAULT '', - time INT(10) NOT NULL DEFAULT 0, - categoryID INT(10) NOT NULL, - isMultilingual TINYINT(1) NOT NULL DEFAULT 0, - publicationStatus TINYINT(1) NOT NULL DEFAULT 1, - publicationDate INT(10) NOT NULL DEFAULT 0, - enableComments TINYINT(1) NOT NULL DEFAULT 1, - views MEDIUMINT(7) NOT NULL DEFAULT 0, - cumulativeLikes MEDIUMINT(7) NOT NULL DEFAULT 0, - attachments SMALLINT(5) NOT NULL DEFAULT 0, - isDeleted TINYINT(1) NOT NULL DEFAULT 0, - hasLabels TINYINT(1) NOT NULL DEFAULT 0, - - KEY (time) -); - -DROP TABLE IF EXISTS wcf1_article_content; -CREATE TABLE wcf1_article_content ( - articleContentID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - articleID INT(10) NOT NULL, - languageID INT(10), - title VARCHAR(255) NOT NULL, - teaser TEXT, - content MEDIUMTEXT, - imageID INT(10), - teaserImageID INT(10), - hasEmbeddedObjects TINYINT(1) NOT NULL DEFAULT 0, - metaTitle VARCHAR(255) NOT NULL DEFAULT '', - metaDescription VARCHAR(255) NOT NULL DEFAULT '', - comments SMALLINT(5) NOT NULL DEFAULT 0, - - UNIQUE KEY (articleID, languageID) -); - -DROP TABLE IF EXISTS wcf1_attachment; -CREATE TABLE wcf1_attachment ( - attachmentID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - objectTypeID INT(10) NOT NULL, - objectID INT(10), - userID INT(10), - tmpHash VARCHAR(40) NOT NULL DEFAULT '', - filename VARCHAR(255) NOT NULL DEFAULT '', - filesize INT(10) NOT NULL DEFAULT 0, - fileType VARCHAR(255) NOT NULL DEFAULT '', - fileHash VARCHAR(40) NOT NULL DEFAULT '', - - isImage TINYINT(1) NOT NULL DEFAULT 0, - width SMALLINT(5) NOT NULL DEFAULT 0, - height SMALLINT(5) NOT NULL DEFAULT 0, - - tinyThumbnailType VARCHAR(255) NOT NULL DEFAULT '', - tinyThumbnailSize INT(10) NOT NULL DEFAULT 0, - tinyThumbnailWidth SMALLINT(5) NOT NULL DEFAULT 0, - tinyThumbnailHeight SMALLINT(5) NOT NULL DEFAULT 0, - - thumbnailType VARCHAR(255) NOT NULL DEFAULT '', - thumbnailSize INT(10) NOT NULL DEFAULT 0, - thumbnailWidth SMALLINT(5) NOT NULL DEFAULT 0, - thumbnailHeight SMALLINT(5) NOT NULL DEFAULT 0, - - downloads INT(10) NOT NULL DEFAULT 0, - lastDownloadTime INT(10) NOT NULL DEFAULT 0, - uploadTime INT(10) NOT NULL DEFAULT 0, - showOrder SMALLINT(5) NOT NULL DEFAULT 0, - - fileID INT, - thumbnailID INT, - tinyThumbnailID INT, - - KEY (objectTypeID, objectID), - KEY (objectTypeID, tmpHash), - KEY (objectID, uploadTime) -); - -DROP TABLE IF EXISTS wcf1_background_job; -CREATE TABLE wcf1_background_job ( - jobID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - job MEDIUMBLOB NOT NULL, - status ENUM('ready', 'processing') NOT NULL DEFAULT 'ready', - time INT(10) NOT NULL, - identifier VARCHAR(191) NULL, - - UNIQUE KEY identifier (identifier), - KEY (status, time) -); - -DROP TABLE IF EXISTS wcf1_bbcode; -CREATE TABLE wcf1_bbcode ( - bbcodeID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - bbcodeTag VARCHAR(191) NOT NULL, - packageID INT(10) NOT NULL, - htmlOpen VARCHAR(255) NOT NULL DEFAULT '', - htmlClose VARCHAR(255) NOT NULL DEFAULT '', - className VARCHAR(255) NOT NULL DEFAULT '', - wysiwygIcon varchar(255) NOT NULL DEFAULT '', - buttonLabel VARCHAR(255) NOT NULL DEFAULT '', - isBlockElement TINYINT(1) NOT NULL DEFAULT 0, - isSourceCode TINYINT(1) NOT NULL DEFAULT 0, - showButton TINYINT(1) NOT NULL DEFAULT 0, - originIsSystem TINYINT(1) NOT NULL DEFAULT 0, - UNIQUE KEY bbcodeTag (bbcodeTag) -); - -DROP TABLE IF EXISTS wcf1_bbcode_attribute; -CREATE TABLE wcf1_bbcode_attribute ( - attributeID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - bbcodeID INT(10) NOT NULL, - attributeNo TINYINT(3) NOT NULL DEFAULT 0, - attributeHtml VARCHAR(255) NOT NULL DEFAULT '', - validationPattern VARCHAR(255) NOT NULL DEFAULT '', - required TINYINT(1) NOT NULL DEFAULT 0, - useText TINYINT(1) NOT NULL DEFAULT 0, - UNIQUE KEY attributeNo (bbcodeID, attributeNo) -); - -DROP TABLE IF EXISTS wcf1_bbcode_media_provider; -CREATE TABLE wcf1_bbcode_media_provider ( - providerID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - name VARCHAR(80) NOT NULL, - packageID INT(10) NOT NULL, - title VARCHAR(255) NOT NULL, - regex TEXT NOT NULL, - html TEXT NOT NULL, - className varchar(255) NOT NULL DEFAULT '', - isDisabled TINYINT(1) NOT NULL DEFAULT 0, - UNIQUE KEY name (name, packageID) -); - -DROP TABLE IF EXISTS wcf1_blacklist_status; -CREATE TABLE wcf1_blacklist_status ( - date DATE NOT NULL, - delta1 TINYINT(1) NOT NULL DEFAULT 0, - delta2 TINYINT(1) NOT NULL DEFAULT 0, - delta3 TINYINT(1) NOT NULL DEFAULT 0, - delta4 TINYINT(1) NOT NULL DEFAULT 0, - - UNIQUE KEY day (date) -); - -DROP TABLE IF EXISTS wcf1_blacklist_entry; -CREATE TABLE wcf1_blacklist_entry ( - type ENUM('email', 'ipv4','ipv6','username'), - hash BINARY(32), - lastSeen DATETIME NOT NULL, - occurrences SMALLINT(5) NOT NULL, - - UNIQUE KEY entry (type, hash), - KEY numberOfReports (type, occurrences), - KEY lastSeen (lastSeen) -); - -DROP TABLE IF EXISTS wcf1_box; -CREATE TABLE wcf1_box ( - boxID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - objectTypeID INT(10), - identifier VARCHAR(255) NOT NULL, - name VARCHAR(255) NOT NULL, - boxType VARCHAR(255) NOT NULL, - position VARCHAR(255) NOT NULL, - showOrder INT(10) NOT NULL DEFAULT 0, - visibleEverywhere TINYINT(1) NOT NULL DEFAULT 1, - isMultilingual TINYINT(1) NOT NULL DEFAULT 0, - lastUpdateTime INT(10) NOT NULL DEFAULT 0, - cssClassName VARCHAR(255) NOT NULL DEFAULT '', - showHeader TINYINT(1) NOT NULL DEFAULT 1, - originIsSystem TINYINT(1) NOT NULL DEFAULT 0, - packageID INT(10) NOT NULL, - menuID INT(10) NULL, - linkPageID INT(10), - linkPageObjectID INT(10) NOT NULL DEFAULT 0, - externalURL VARCHAR(255) NOT NULL DEFAULT '', - isDisabled TINYINT(1) NOT NULL DEFAULT 0, - invertPermissions TINYINT(1) NOT NULL DEFAULT 0, - additionalData TEXT -); - -DROP TABLE IF EXISTS wcf1_box_content; -CREATE TABLE wcf1_box_content ( - boxContentID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - boxID INT(10) NOT NULL, - languageID INT(10), - title VARCHAR(255) NOT NULL, - content MEDIUMTEXT, - imageID INT(10), - hasEmbeddedObjects TINYINT(1) NOT NULL DEFAULT 0, - - UNIQUE KEY (boxID, languageID) -); - -DROP TABLE IF EXISTS wcf1_box_to_page; -CREATE TABLE wcf1_box_to_page ( - boxID INT(10) NOT NULL, - pageID INT(10) NOT NULL, - visible TINYINT(1) NOT NULL DEFAULT 1, - - UNIQUE KEY (pageID, boxID), - KEY (pageID, visible) -); - -DROP TABLE IF EXISTS wcf1_captcha_question; -CREATE TABLE wcf1_captcha_question ( - questionID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - question VARCHAR(255) NOT NULL, - answers MEDIUMTEXT, - isDisabled TINYINT(1) NOT NULL DEFAULT 0, - views INT(10) NOT NULL DEFAULT 0, - correctSubmissions INT(10) NOT NULL DEFAULT 0, - incorrectSubmissions INT(10) NOT NULL DEFAULT 0 -); - -DROP TABLE IF EXISTS wcf1_category; -CREATE TABLE wcf1_category ( - categoryID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - objectTypeID INT(10) NOT NULL, - parentCategoryID INT(10) NOT NULL DEFAULT 0, - title VARCHAR(255) NOT NULL, - description TEXT, - descriptionUseHtml TINYINT(1) NOT NULL DEFAULT 0, - showOrder INT(10) NOT NULL DEFAULT 0, - time INT(10) NOT NULL DEFAULT 0, - isDisabled TINYINT(1) NOT NULL DEFAULT 0, - additionalData TEXT -); - -DROP TABLE IF EXISTS wcf1_clipboard_action; -CREATE TABLE wcf1_clipboard_action ( - actionID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - packageID INT(10) NOT NULL DEFAULT 0, - actionName VARCHAR(50) NOT NULL DEFAULT '', - actionClassName VARCHAR(191) NOT NULL DEFAULT '', - showOrder INT(10) NOT NULL DEFAULT 0, - UNIQUE KEY actionName (packageID, actionName, actionClassName) -); - -DROP TABLE IF EXISTS wcf1_clipboard_item; -CREATE TABLE wcf1_clipboard_item ( - objectTypeID INT(10) NOT NULL DEFAULT 0, - userID INT(10) NOT NULL DEFAULT 0, - objectID INT(10) NOT NULL DEFAULT 0, - UNIQUE KEY (objectTypeID, userID, objectID), - KEY (userID) -); - -DROP TABLE IF EXISTS wcf1_clipboard_page; -CREATE TABLE wcf1_clipboard_page ( - pageClassName VARCHAR(80) NOT NULL DEFAULT '', - packageID INT(10) NOT NULL DEFAULT 0, - actionID INT(10) NOT NULL DEFAULT 0 -); - -DROP TABLE IF EXISTS wcf1_comment; -CREATE TABLE wcf1_comment ( - commentID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - objectTypeID INT(10) NOT NULL, - objectID INT(10) NOT NULL, - time INT(10) NOT NULL DEFAULT '0', - userID INT(10), - username VARCHAR(255) NOT NULL, - message MEDIUMTEXT NOT NULL, - responses MEDIUMINT(7) NOT NULL DEFAULT '0', - responseIDs VARCHAR(255) NOT NULL DEFAULT '', - unfilteredResponses MEDIUMINT(7) NOT NULL DEFAULT '0', - unfilteredResponseIDs VARCHAR(255) NOT NULL DEFAULT '', - enableHtml TINYINT(1) NOT NULL DEFAULT 0, - isDisabled TINYINT(1) NOT NULL DEFAULT 0, - hasEmbeddedObjects TINYINT(1) NOT NULL DEFAULT 0, - - KEY (objectTypeID, objectID, isDisabled, time), - KEY lastCommentTime (userID, time) -); - -DROP TABLE IF EXISTS wcf1_comment_response; -CREATE TABLE wcf1_comment_response ( - responseID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - commentID INT(10) NOT NULL, - time INT(10) NOT NULL DEFAULT '0', - userID INT(10), - username VARCHAR(255) NOT NULL, - message MEDIUMTEXT NOT NULL, - enableHtml TINYINT(1) NOT NULL DEFAULT 0, - isDisabled TINYINT(1) NOT NULL DEFAULT 0, - hasEmbeddedObjects TINYINT(1) NOT NULL DEFAULT 0, - - KEY (commentID, isDisabled, time), - KEY lastResponseTime (userID, time) -); - -DROP TABLE IF EXISTS wcf1_condition; -CREATE TABLE wcf1_condition ( - conditionID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - objectTypeID INT(10) NOT NULL, - objectID INT(10) NOT NULL, - conditionData MEDIUMTEXT -); - -DROP TABLE IF EXISTS wcf1_contact_attachment; -CREATE TABLE wcf1_contact_attachment ( - attachmentID INT(10) NOT NULL, - accessKey CHAR(40) NOT NULL -); - -DROP TABLE IF EXISTS wcf1_contact_option; -CREATE TABLE wcf1_contact_option ( - optionID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - optionTitle VARCHAR(255) NOT NULL DEFAULT '', - optionDescription TEXT, - optionType VARCHAR(255) NOT NULL DEFAULT '', - configuration MEDIUMTEXT, - showOrder INT(10) NOT NULL DEFAULT 0, - isDisabled TINYINT(1) NOT NULL DEFAULT 0, - originIsSystem TINYINT(1) NOT NULL DEFAULT 0 -); - -DROP TABLE IF EXISTS wcf1_contact_recipient; -CREATE TABLE wcf1_contact_recipient ( - recipientID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - name VARCHAR(255) NOT NULL, - email VARCHAR(255) NOT NULL, - showOrder INT(10) NOT NULL DEFAULT 0, - isAdministrator TINYINT(1) NOT NULL DEFAULT 0, - isDisabled TINYINT(1) NOT NULL DEFAULT 0, - originIsSystem TINYINT(1) NOT NULL DEFAULT 0 -); - -/* SQL_PARSER_OFFSET */ - -DROP TABLE IF EXISTS wcf1_core_object; -CREATE TABLE wcf1_core_object ( - objectID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - packageID INT(10) NOT NULL, - objectName VARCHAR(191) NOT NULL DEFAULT '', - UNIQUE KEY object (packageID, objectName) -); - -DROP TABLE IF EXISTS wcf1_cronjob; -CREATE TABLE wcf1_cronjob ( - cronjobID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - className varchar(255) NOT NULL DEFAULT '', - packageID INT(10) NOT NULL, - cronjobName VARCHAR(191) NOT NULL, - description varchar(255) NOT NULL DEFAULT '', - startMinute varchar(255) NOT NULL DEFAULT '*', - startHour varchar(255) NOT NULL DEFAULT '*', - startDom varchar(255) NOT NULL DEFAULT '*', - startMonth varchar(255) NOT NULL DEFAULT '*', - startDow varchar(255) NOT NULL DEFAULT '*', - lastExec INT(10) NOT NULL DEFAULT 0, - nextExec INT(10) NOT NULL DEFAULT 0, - afterNextExec INT(10) NOT NULL DEFAULT 0, - isDisabled TINYINT(1) NOT NULL DEFAULT 0, - canBeEdited TINYINT(1) NOT NULL DEFAULT 1, - canBeDisabled TINYINT(1) NOT NULL DEFAULT 1, - state TINYINT(1) NOT NULL DEFAULT 0, - failCount TINYINT(1) NOT NULL DEFAULT 0, - options TEXT, - - UNIQUE KEY cronjobName (cronjobName, packageID) -); - -DROP TABLE IF EXISTS wcf1_cronjob_log; -CREATE TABLE wcf1_cronjob_log ( - cronjobLogID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - cronjobID INT(10) NOT NULL, - execTime INT(10) NOT NULL DEFAULT 0, - success TINYINT(1) NOT NULL DEFAULT 0, - error TEXT -); - -DROP TABLE IF EXISTS wcf1_devtools_project; -CREATE TABLE wcf1_devtools_project ( - projectID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - name VARCHAR(191) NOT NULL, - path TEXT, - - UNIQUE KEY name (name) -); - -DROP TABLE IF EXISTS wcf1_devtools_missing_language_item; -CREATE TABLE wcf1_devtools_missing_language_item ( - itemID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - languageID INT(10), - languageItem VARCHAR(191) NOT NULL, - lastTime INT(10) NOT NULL, - stackTrace MEDIUMTEXT NOT NULL, - - UNIQUE KEY (languageID, languageItem) -); - -DROP TABLE IF EXISTS wcf1_edit_history_entry; -CREATE TABLE wcf1_edit_history_entry ( - entryID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - objectTypeID INT(10) NOT NULL, - objectID INT(10) NOT NULL, - userID INT(10), - username VARCHAR(255) NOT NULL DEFAULT '', - time INT(10) NOT NULL DEFAULT 0, - obsoletedAt INT(10) NOT NULL DEFAULT 0, - obsoletedByUserID INT(10), - message MEDIUMTEXT, - editReason TEXT, - - KEY (objectTypeID, objectID), - KEY (obsoletedAt, obsoletedByUserID) -); - -DROP TABLE IF EXISTS wcf1_email_log_entry; -CREATE TABLE wcf1_email_log_entry ( - entryID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - time INT(10) NOT NULL, - messageID VARCHAR(255) NOT NULL, - subject VARCHAR(255) NOT NULL, - recipient VARCHAR(255) NOT NULL, - recipientID INT(10) DEFAULT NULL, - status VARCHAR(255) NOT NULL, - message TEXT, - - KEY time (time) -); - -DROP TABLE IF EXISTS wcf1_event_listener; -CREATE TABLE wcf1_event_listener ( - listenerID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - packageID INT(10) NOT NULL, - environment ENUM('user', 'admin', 'all') NOT NULL DEFAULT 'user', - listenerName VARCHAR(191) NOT NULL, - eventClassName VARCHAR(255) NOT NULL DEFAULT '', - eventName TEXT, - listenerClassName VARCHAR(200) NOT NULL DEFAULT '', - inherit TINYINT(1) NOT NULL DEFAULT 0, - niceValue TINYINT(3) NOT NULL DEFAULT 0, - permissions TEXT, - options TEXT, - - UNIQUE KEY listenerName (listenerName, packageID) -); - -DROP TABLE IF EXISTS wcf1_file; -CREATE TABLE wcf1_file ( - fileID INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - filename VARCHAR(255) NOT NULL, - fileSize BIGINT NOT NULL, - fileHash CHAR(64) NOT NULL, - fileExtension VARCHAR(10) NOT NULL, - objectTypeID INT, - mimeType VARCHAR(255) NOT NULL, - width INT, - height INT, - fileHashWebp CHAR(64), - uploadTime INT, - exifData MEDIUMBLOB -); - -DROP TABLE IF EXISTS wcf1_file_temporary; -CREATE TABLE wcf1_file_temporary ( - identifier CHAR(40) NOT NULL PRIMARY KEY, - time INT NOT NULL, - filename VARCHAR(255) NOT NULL, - fileSize BIGINT NOT NULL, - fileHash CHAR(64) NOT NULL, - objectTypeID INT, - context TEXT, - chunks VARBINARY(255) NOT NULL, - exifData MEDIUMBLOB -); - -DROP TABLE IF EXISTS wcf1_file_thumbnail; -CREATE TABLE wcf1_file_thumbnail ( - thumbnailID INT NOT NULL AUTO_INCREMENT PRIMARY KEY, - fileID INT NOT NULL, - identifier VARCHAR(50) NOT NULL, - fileHash CHAR(64) NOT NULL, - fileExtension VARCHAR(10) NOT NULL, - width INT NOT NULL, - height INT NOT NULL, - formatChecksum CHAR(12) -); - -/* As the flood control table can be a high traffic table and as it is periodically emptied, -there is no foreign key on the `objectTypeID` to speed up insertions. */ -DROP TABLE IF EXISTS wcf1_flood_control; -CREATE TABLE wcf1_flood_control ( - logID BIGINT(20) NOT NULL AUTO_INCREMENT PRIMARY KEY, - objectTypeID INT(10) NOT NULL, - identifier BINARY(16) NOT NULL, - time INT(10) NOT NULL, - KEY (identifier), - KEY (time) -); - -DROP TABLE IF EXISTS wcf1_import_mapping; -CREATE TABLE wcf1_import_mapping ( - importHash CHAR(8) NOT NULL, - objectTypeID INT(10) NOT NULL, - oldID VARCHAR(191) NOT NULL, - newID INT(10) NOT NULL, - UNIQUE KEY (importHash, objectTypeID, oldID) -); - -DROP TABLE IF EXISTS wcf1_label; -CREATE TABLE wcf1_label ( - labelID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - groupID INT(10) NOT NULL, - label VARCHAR(80) NOT NULL, - cssClassName VARCHAR(255) NOT NULL DEFAULT '', - showOrder INT(10) NOT NULL DEFAULT 0 -); - -DROP TABLE IF EXISTS wcf1_label_group; -CREATE TABLE wcf1_label_group ( - groupID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - groupName VARCHAR(80) NOT NULL, - groupDescription VARCHAR(255) NOT NULL DEFAULT '', - forceSelection TINYINT(1) NOT NULL DEFAULT 0, - sortAlphabetically TINYINT(1) NOT NULL DEFAULT 0, - showOrder INT(10) NOT NULL DEFAULT 0 -); - -DROP TABLE IF EXISTS wcf1_label_group_to_object; -CREATE TABLE wcf1_label_group_to_object ( - groupID INT(10) NOT NULL, - objectTypeID INT(10) NOT NULL, - objectID INT(10) NULL -); - -DROP TABLE IF EXISTS wcf1_label_object; -CREATE TABLE wcf1_label_object ( - labelID INT(10) NOT NULL, - objectTypeID INT(10) NOT NULL, - objectID INT(10) NOT NULL, - - KEY (objectTypeID, labelID), - KEY (objectTypeID, objectID) -); - -DROP TABLE IF EXISTS wcf1_language; -CREATE TABLE wcf1_language ( - languageID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - languageCode VARCHAR(20) NOT NULL DEFAULT '', - languageName VARCHAR(255) NOT NULL DEFAULT '', - countryCode VARCHAR(10) NOT NULL DEFAULT '', - isDefault TINYINT(1) NOT NULL DEFAULT 0, - hasContent TINYINT(1) NOT NULL DEFAULT 0, - isDisabled TINYINT(1) NOT NULL DEFAULT 0, - locale VARCHAR(50) NOT NULL DEFAULT '', - UNIQUE KEY languageCode (languageCode) -); - -DROP TABLE IF EXISTS wcf1_language_category; -CREATE TABLE wcf1_language_category ( - languageCategoryID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - languageCategory VARCHAR(191) NOT NULL DEFAULT '', - UNIQUE KEY languageCategory (languageCategory) -); - -DROP TABLE IF EXISTS wcf1_language_item; -CREATE TABLE wcf1_language_item ( - languageItemID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - languageID INT(10) NOT NULL, - languageItem VARCHAR(191) NOT NULL DEFAULT '', - languageItemValue MEDIUMTEXT NOT NULL, - languageCustomItemValue MEDIUMTEXT, - languageUseCustomValue TINYINT(1) NOT NULL DEFAULT 0, - languageItemOriginIsSystem TINYINT(1) NOT NULL DEFAULT 1, - languageCategoryID INT(10) NOT NULL, - packageID INT(10) NOT NULL, - languageItemOldValue MEDIUMTEXT, - languageCustomItemDisableTime INT(10), - isCustomLanguageItem TINYINT(1) NOT NULL DEFAULT 0, - - UNIQUE KEY languageItem (languageItem, languageID), - KEY languageItemOriginIsSystem (languageItemOriginIsSystem) -); - -DROP TABLE IF EXISTS wcf1_like; -CREATE TABLE wcf1_like ( - likeID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - objectID INT(10) NOT NULL DEFAULT 0, - objectTypeID INT(10) NOT NULL, - objectUserID INT(10), - userID INT(10) NOT NULL, - time INT(10) NOT NULL DEFAULT 1, - likeValue TINYINT(1) NOT NULL DEFAULT 1, - reactionTypeID INT(10) NOT NULL, - UNIQUE KEY (objectTypeID, objectID, userID) -); - -DROP TABLE IF EXISTS wcf1_like_object; -CREATE TABLE wcf1_like_object ( - likeObjectID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - objectTypeID INT(10) NOT NULL, - objectID INT(10) NOT NULL DEFAULT 0, - objectUserID INT(10), - likes MEDIUMINT(7) NOT NULL DEFAULT 0, - dislikes MEDIUMINT(7) NOT NULL DEFAULT 0, - cumulativeLikes MEDIUMINT(7) NOT NULL DEFAULT 0, - cachedUsers TEXT, - cachedReactions TEXT, - UNIQUE KEY (objectTypeID, objectID) -); - -DROP TABLE IF EXISTS wcf1_media; -CREATE TABLE wcf1_media ( - mediaID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - categoryID INT(10), - - filename VARCHAR(255) NOT NULL DEFAULT '', - filesize INT(10) NOT NULL DEFAULT 0, - fileType VARCHAR(255) NOT NULL DEFAULT '', - fileHash VARCHAR(255) NOT NULL DEFAULT '', - uploadTime INT(10) NOT NULL DEFAULT 0, - fileUpdateTime INT(10) NOT NULL DEFAULT 0, - userID INT(10), - username VARCHAR(255) NOT NULL, - languageID INT(10), - isMultilingual TINYINT(1) NOT NULL DEFAULT 0, - captionEnableHtml TINYINT(1) NOT NULL DEFAULT 0, - - isImage TINYINT(1) NOT NULL DEFAULT 0, - width SMALLINT(5) NOT NULL DEFAULT 0, - height SMALLINT(5) NOT NULL DEFAULT 0, - - tinyThumbnailType VARCHAR(255) NOT NULL DEFAULT '', - tinyThumbnailSize INT(10) NOT NULL DEFAULT 0, - tinyThumbnailWidth SMALLINT(5) NOT NULL DEFAULT 0, - tinyThumbnailHeight SMALLINT(5) NOT NULL DEFAULT 0, - - smallThumbnailType VARCHAR(255) NOT NULL DEFAULT '', - smallThumbnailSize INT(10) NOT NULL DEFAULT 0, - smallThumbnailWidth SMALLINT(5) NOT NULL DEFAULT 0, - smallThumbnailHeight SMALLINT(5) NOT NULL DEFAULT 0, - - mediumThumbnailType VARCHAR(255) NOT NULL DEFAULT '', - mediumThumbnailSize INT(10) NOT NULL DEFAULT 0, - mediumThumbnailWidth SMALLINT(5) NOT NULL DEFAULT 0, - mediumThumbnailHeight SMALLINT(5) NOT NULL DEFAULT 0, - - largeThumbnailType VARCHAR(255) NOT NULL DEFAULT '', - largeThumbnailSize INT(10) NOT NULL DEFAULT 0, - largeThumbnailWidth SMALLINT(5) NOT NULL DEFAULT 0, - largeThumbnailHeight SMALLINT(5) NOT NULL DEFAULT 0, - - downloads INT(10) NOT NULL DEFAULT 0, - lastDownloadTime INT(10) NOT NULL DEFAULT 0 -); - -DROP TABLE IF EXISTS wcf1_media_content; -CREATE TABLE wcf1_media_content ( - mediaID INT(10) NOT NULL, - languageID INT(10), - title VARCHAR(255) NOT NULL, - caption TEXT, - altText VARCHAR(255) NOT NULL DEFAULT '', - UNIQUE KEY (mediaID, languageID) -); - -DROP TABLE IF EXISTS wcf1_menu; -CREATE TABLE wcf1_menu ( - menuID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - identifier VARCHAR(255) NOT NULL, - title VARCHAR(255) NOT NULL, - originIsSystem TINYINT(1) NOT NULL DEFAULT 0, - packageID INT(10) NOT NULL -); - -DROP TABLE IF EXISTS wcf1_menu_item; -CREATE TABLE wcf1_menu_item ( - itemID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - menuID INT(10) NOT NULL, - parentItemID INT(10), - identifier VARCHAR(255) NOT NULL, - title VARCHAR(255) NOT NULL, - pageID INT(10), - pageObjectID INT(10) NOT NULL DEFAULT 0, - externalURL VARCHAR(255) NOT NULL DEFAULT '', - showOrder INT(10) NOT NULL DEFAULT 0, - isDisabled TINYINT(1) NOT NULL DEFAULT 0, - originIsSystem TINYINT(1) NOT NULL DEFAULT 0, - packageID INT(10) NOT NULL, - urlParameters VARCHAR(255) NOT NULL DEFAULT '' -); - -DROP TABLE IF EXISTS wcf1_message_embedded_object; -CREATE TABLE wcf1_message_embedded_object ( - messageObjectTypeID INT(10) NOT NULL, - messageID INT(10) NOT NULL, - embeddedObjectTypeID INT(10) NOT NULL, - embeddedObjectID INT(10) NOT NULL, - - KEY (messageObjectTypeID, messageID), - UNIQUE KEY messageEmbeddedObject (messageObjectTypeID, messageID, embeddedObjectTypeID, embeddedObjectID) -); - -DROP TABLE IF EXISTS wcf1_moderation_queue; -CREATE TABLE wcf1_moderation_queue ( - queueID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - objectTypeID INT(10) NOT NULL, - objectID INT(10) NOT NULL, - containerID INT(10) NOT NULL DEFAULT 0, - userID INT(10) NULL, - time INT(10) NOT NULL DEFAULT 0, - - -- internal - assignedUserID INT(10) NULL, - status TINYINT(1) NOT NULL DEFAULT 0, - comments SMALLINT(5) NOT NULL DEFAULT 0, - lastChangeTime INT(10) NOT NULL DEFAULT 0, - - -- additional data, e.g. message if reporting content - additionalData TEXT, - - KEY objectTypeAndID (objectTypeID, objectID) -); - -DROP TABLE IF EXISTS wcf1_moderation_queue_to_user; -CREATE TABLE wcf1_moderation_queue_to_user ( - queueID INT(10) NOT NULL, - userID INT(10) NOT NULL, - isAffected TINYINT(1) NOT NULL DEFAULT 0, - - UNIQUE KEY queue (queueID, userID), - KEY affected (queueID, userID, isAffected) -); - -DROP TABLE IF EXISTS wcf1_modification_log; -CREATE TABLE wcf1_modification_log ( - logID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - objectTypeID INT(10) NOT NULL, - objectID INT(10) NOT NULL, - parentObjectID INT(10), - userID INT(10), - username VARCHAR(255) NOT NULL DEFAULT '', - time INT(10) NOT NULL DEFAULT 0, - action VARCHAR(80) NOT NULL, - hidden TINYINT(1) NOT NULL DEFAULT 1, - additionalData MEDIUMTEXT, - - KEY objectTypeAndID (objectTypeID, objectID) -); - -DROP TABLE IF EXISTS wcf1_notice; -CREATE TABLE wcf1_notice ( - noticeID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - noticeName VARCHAR(255) NOT NULL, - notice MEDIUMTEXT, - noticeUseHtml TINYINT(1) NOT NULL DEFAULT 0, - cssClassName VARCHAR(255) NOT NULL DEFAULT 'info', - showOrder INT(10) NOT NULL DEFAULT 0, - isDisabled TINYINT(1) NOT NULL DEFAULT 0, - isDismissible TINYINT(1) NOT NULL DEFAULT 0 -); - -DROP TABLE IF EXISTS wcf1_notice_dismissed; -CREATE TABLE wcf1_notice_dismissed ( - noticeID INT(10) NOT NULL, - userID INT(10) NOT NULL, - PRIMARY KEY (noticeID, userID) -); - -DROP TABLE IF EXISTS wcf1_object_type; -CREATE TABLE wcf1_object_type ( - objectTypeID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - definitionID INT(10) NOT NULL, - packageID INT(10) NOT NULL, - objectType VARCHAR(191) NOT NULL, - className VARCHAR(255) NOT NULL DEFAULT '', - additionalData MEDIUMTEXT, - UNIQUE KEY objectType (objectType, definitionID, packageID) -); - -DROP TABLE IF EXISTS wcf1_object_type_definition; -CREATE TABLE wcf1_object_type_definition ( - definitionID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - definitionName VARCHAR(191) NOT NULL, - packageID INT(10) NOT NULL, - interfaceName VARCHAR(255) NOT NULL DEFAULT '', - categoryName VARCHAR(80) NOT NULL DEFAULT '', - UNIQUE KEY definitionName (definitionName) -); - -DROP TABLE IF EXISTS wcf1_option; -CREATE TABLE wcf1_option ( - optionID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - packageID INT(10) NOT NULL, - optionName VARCHAR(191) NOT NULL DEFAULT '', - categoryName VARCHAR(191) NOT NULL DEFAULT '', - optionType VARCHAR(255) NOT NULL DEFAULT '', - optionValue MEDIUMTEXT, - validationPattern TEXT, - selectOptions MEDIUMTEXT, - enableOptions MEDIUMTEXT, - showOrder INT(10) NOT NULL DEFAULT 0, - hidden TINYINT(1) NOT NULL DEFAULT 0, - permissions TEXT, - options TEXT, - supportI18n TINYINT(1) NOT NULL DEFAULT 0, - requireI18n TINYINT(1) NOT NULL DEFAULT 0, - additionalData MEDIUMTEXT, - - UNIQUE KEY optionName (optionName) -); - -DROP TABLE IF EXISTS wcf1_option_category; -CREATE TABLE wcf1_option_category ( - categoryID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - packageID INT(10) NOT NULL, - categoryName VARCHAR(191) NOT NULL DEFAULT '', - parentCategoryName VARCHAR(191) NOT NULL DEFAULT '', - showOrder INT(10) NOT NULL DEFAULT 0, - permissions TEXT, - options TEXT, - UNIQUE KEY categoryName (categoryName) -); - -DROP TABLE IF EXISTS wcf1_package; -CREATE TABLE wcf1_package ( - packageID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - package VARCHAR(191) NOT NULL DEFAULT '', - packageDir VARCHAR(255) NOT NULL DEFAULT '', - packageName VARCHAR(255) NOT NULL DEFAULT '', - packageDescription VARCHAR(255) NOT NULL DEFAULT '', - packageVersion VARCHAR(255) NOT NULL DEFAULT '', - packageDate INT(10) NOT NULL DEFAULT 0, - installDate INT(10) NOT NULL DEFAULT 0, - updateDate INT(10) NOT NULL DEFAULT 0, - packageURL VARCHAR(255) NOT NULL DEFAULT '', - isApplication TINYINT(1) NOT NULL DEFAULT 0, - author VARCHAR(255) NOT NULL DEFAULT '', - authorURL VARCHAR(255) NOT NULL DEFAULT '', - UNIQUE KEY package (package) -); - -DROP TABLE IF EXISTS wcf1_package_audit_log; -CREATE TABLE wcf1_package_audit_log ( - logID BIGINT(20) NOT NULL AUTO_INCREMENT PRIMARY KEY, - payload MEDIUMTEXT NOT NULL, - time VARCHAR(255) NOT NULL, - wcfVersion VARCHAR(255) NOT NULL, - requestId VARCHAR(255) NOT NULL -); - -DROP TABLE IF EXISTS wcf1_package_exclusion; -CREATE TABLE wcf1_package_exclusion ( - packageID INT(10) NOT NULL, - excludedPackage VARCHAR(191) NOT NULL DEFAULT '', - excludedPackageVersion VARCHAR(255) NOT NULL DEFAULT '', - UNIQUE KEY packageID (packageID, excludedPackage) -); - -DROP TABLE IF EXISTS wcf1_package_installation_file_log; -CREATE TABLE wcf1_package_installation_file_log ( - packageID INT(10) NOT NULL, - filename VARBINARY(765) NOT NULL, -- VARBINARY(765) roughly equals VARCHAR(255) - application VARCHAR(20) NOT NULL, - sha256 VARBINARY(32) DEFAULT NULL, - lastUpdated BIGINT(20) DEFAULT NULL, - UNIQUE KEY applicationFile (application, filename) -); - -DROP TABLE IF EXISTS wcf1_package_installation_form; -CREATE TABLE wcf1_package_installation_form ( - queueID INT(10) NOT NULL, - formName VARCHAR(80) NOT NULL DEFAULT '', - document TEXT NOT NULL, - UNIQUE KEY formDocument (queueID, formName) -); - -DROP TABLE IF EXISTS wcf1_package_installation_node; -CREATE TABLE wcf1_package_installation_node ( - queueID INT(10) NOT NULL, - processNo INT(10) NOT NULL DEFAULT 0, - sequenceNo SMALLINT(4) NOT NULL DEFAULT 0, - node CHAR(8) NOT NULL DEFAULT '', - parentNode CHAR(8) NOT NULL DEFAULT '', - nodeType VARCHAR(255) NOT NULL, - nodeData TEXT NOT NULL, - done TINYINT(1) NOT NULL DEFAULT 0 -); - -DROP TABLE IF EXISTS wcf1_package_installation_plugin; -CREATE TABLE wcf1_package_installation_plugin ( - pluginName VARCHAR(191) NOT NULL PRIMARY KEY, - packageID INT(10) NOT NULL, - priority TINYINT(1) NOT NULL DEFAULT 0, - className VARCHAR(255) NOT NULL -); - -DROP TABLE IF EXISTS wcf1_package_installation_queue; -CREATE TABLE wcf1_package_installation_queue ( - queueID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - parentQueueID INT(10) NOT NULL DEFAULT 0, - processNo INT(10) NOT NULL DEFAULT 0, - userID INT(10) NOT NULL, - package VARCHAR(255) NOT NULL DEFAULT '', - packageName VARCHAR(255) NOT NULL DEFAULT '', - packageID INT(10), - archive VARCHAR(255) NOT NULL DEFAULT '', - action ENUM('install', 'update', 'uninstall') NOT NULL DEFAULT 'install', - done TINYINT(1) NOT NULL DEFAULT 0, - isApplication TINYINT(1) NOT NULL DEFAULT 0 -); - -/* The table `wcf1_package_installation_sql_log` can be found at the very top! */ - -/* SQL_PARSER_OFFSET */ - -DROP TABLE IF EXISTS wcf1_package_requirement; -CREATE TABLE wcf1_package_requirement ( - packageID INT(10) NOT NULL, - requirement INT(10) NOT NULL, - UNIQUE KEY packageID (packageID, requirement) -); - -DROP TABLE IF EXISTS wcf1_package_update; -CREATE TABLE wcf1_package_update ( - packageUpdateID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - packageUpdateServerID INT(10) NOT NULL, - package VARCHAR(191) NOT NULL DEFAULT '', - packageName VARCHAR(255) NOT NULL DEFAULT '', - packageDescription VARCHAR(255) NOT NULL DEFAULT '', - author VARCHAR(255) NOT NULL DEFAULT '', - authorURL VARCHAR(255) NOT NULL DEFAULT '', - isApplication TINYINT(1) NOT NULL DEFAULT 0, - pluginStoreFileID INT(10) NOT NULL DEFAULT 0, - UNIQUE KEY packageUpdateServerID (packageUpdateServerID, package) -); - -DROP TABLE IF EXISTS wcf1_package_update_exclusion; -CREATE TABLE wcf1_package_update_exclusion ( - packageUpdateVersionID INT(10) NOT NULL, - excludedPackage VARCHAR(191) NOT NULL DEFAULT '', - excludedPackageVersion VARCHAR(255) NOT NULL DEFAULT '', - UNIQUE KEY packageUpdateVersionID (packageUpdateVersionID, excludedPackage) -); - -DROP TABLE IF EXISTS wcf1_package_update_fromversion; -CREATE TABLE wcf1_package_update_fromversion ( - packageUpdateVersionID INT(10) NOT NULL DEFAULT 0, - fromversion VARCHAR(50) NOT NULL DEFAULT '', - UNIQUE KEY packageUpdateVersionID (packageUpdateVersionID, fromversion) -); - -DROP TABLE IF EXISTS wcf1_package_update_requirement; -CREATE TABLE wcf1_package_update_requirement ( - packageUpdateVersionID INT(10) NOT NULL, - package VARCHAR(191) NOT NULL DEFAULT '', - minversion VARCHAR(50) NOT NULL DEFAULT '', - UNIQUE KEY packageUpdateVersionID (packageUpdateVersionID, package) -); - -DROP TABLE IF EXISTS wcf1_package_update_server; -CREATE TABLE wcf1_package_update_server ( - packageUpdateServerID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - serverURL VARCHAR(255) NOT NULL DEFAULT '', - loginUsername VARCHAR(255) NOT NULL DEFAULT '', - loginPassword VARCHAR(255) NOT NULL DEFAULT '', - isDisabled TINYINT(1) NOT NULL DEFAULT 0, - lastUpdateTime INT(10) NOT NULL DEFAULT 0, - status ENUM('online', 'offline') NOT NULL DEFAULT 'online', - errorMessage TEXT, - apiVersion ENUM('2.0', '2.1', '3.1') NOT NULL DEFAULT '2.0', - metaData TEXT -); - -DROP TABLE IF EXISTS wcf1_package_update_version; -CREATE TABLE wcf1_package_update_version ( - packageUpdateVersionID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - packageUpdateID INT(10) NOT NULL, - packageVersion VARCHAR(50) NOT NULL DEFAULT '', - packageDate INT(10) NOT NULL DEFAULT 0, - filename VARCHAR(255) NOT NULL DEFAULT '', - license VARCHAR(255) NOT NULL DEFAULT '', - licenseURL VARCHAR(255) NOT NULL DEFAULT '', - isAccessible TINYINT(1) NOT NULL DEFAULT 1, - UNIQUE KEY packageUpdateID (packageUpdateID, packageVersion) -); - -DROP TABLE IF EXISTS wcf1_page; -CREATE TABLE wcf1_page ( - pageID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - parentPageID INT(10), - identifier VARCHAR(255) NOT NULL, - name VARCHAR(255) NOT NULL, - pageType VARCHAR(255) NOT NULL, - isDisabled TINYINT(1) NOT NULL DEFAULT 0, - isMultilingual TINYINT(1) NOT NULL DEFAULT 0, - originIsSystem TINYINT(1) NOT NULL DEFAULT 0, - packageID INT(10) NOT NULL, - applicationPackageID INT(10), - overrideApplicationPackageID INT(10), - controller VARCHAR(255) NOT NULL DEFAULT '', - handler VARCHAR(255) NOT NULL DEFAULT '', - controllerCustomURL VARCHAR(255) NOT NULL DEFAULT '', - requireObjectID TINYINT(1) NOT NULL DEFAULT 0, - hasFixedParent TINYINT(1) NOT NULL DEFAULT 0, - lastUpdateTime INT(10) NOT NULL DEFAULT 0, - cssClassName VARCHAR(255) NOT NULL DEFAULT '', - availableDuringOfflineMode TINYINT(1) NOT NULL DEFAULT 0, - allowSpidersToIndex TINYINT(1) NOT NULL DEFAULT 0, - excludeFromLandingPage TINYINT(1) NOT NULL DEFAULT 0, - enableShareButtons TINYINT(1) NOT NULL DEFAULT 0, - permissions TEXT NULL, - options TEXT NULL, - invertPermissions TINYINT(1) NOT NULL DEFAULT 0 -); - -DROP TABLE IF EXISTS wcf1_page_box_order; -CREATE TABLE wcf1_page_box_order ( - pageID INT(10) NOT NULL, - boxID INT(10) NOT NULL, - showOrder INT(10) NOT NULL DEFAULT 0, - UNIQUE KEY pageToBox (pageID, boxID) -); - -DROP TABLE IF EXISTS wcf1_page_content; -CREATE TABLE wcf1_page_content ( - pageContentID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - pageID INT(10) NOT NULL, - languageID INT(10), - title VARCHAR(255) NOT NULL, - content MEDIUMTEXT, - metaDescription TEXT, - customURL VARCHAR(255) NOT NULL, - hasEmbeddedObjects TINYINT(1) NOT NULL DEFAULT 0, - - UNIQUE KEY (pageID, languageID) -); - -DROP TABLE IF EXISTS wcf1_paid_subscription; -CREATE TABLE wcf1_paid_subscription ( - subscriptionID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - title VARCHAR(255) NOT NULL DEFAULT '', - description TEXT, - isDisabled TINYINT(1) NOT NULL DEFAULT 0, - showOrder INT(10) NOT NULL DEFAULT 0, - cost DECIMAL(10,2) NOT NULL DEFAULT 0, - currency VARCHAR(3) NOT NULL DEFAULT 'EUR', - subscriptionLength SMALLINT(3) NOT NULL DEFAULT 0, - subscriptionLengthUnit ENUM('', 'D', 'M', 'Y') NOT NULL DEFAULT '', - isRecurring TINYINT(1) NOT NULL DEFAULT 0, - groupIDs TEXT, - excludedSubscriptionIDs TEXT -); - -DROP TABLE IF EXISTS wcf1_paid_subscription_user; -CREATE TABLE wcf1_paid_subscription_user ( - subscriptionUserID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - subscriptionID INT(10) NOT NULL, - userID INT(10) NOT NULL, - startDate INT(10) NOT NULL DEFAULT 0, - endDate INT(10) NOT NULL DEFAULT 0, - isActive TINYINT(1) NOT NULL DEFAULT 1, - sentExpirationNotification TINYINT(1) NOT NULL DEFAULT 0, - - UNIQUE KEY (subscriptionID, userID), - KEY (isActive) -); - -DROP TABLE IF EXISTS wcf1_paid_subscription_transaction_log; -CREATE TABLE wcf1_paid_subscription_transaction_log ( - logID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - subscriptionUserID INT(10), - userID INT(10), - subscriptionID INT(10), - paymentMethodObjectTypeID INT(10) NOT NULL, - logTime INT(10) NOT NULL DEFAULT 0, - transactionID VARCHAR(255) NOT NULL DEFAULT '', - transactionDetails MEDIUMTEXT, - logMessage VARCHAR(255) NOT NULL DEFAULT '' -); - -DROP TABLE IF EXISTS wcf1_poll; -CREATE TABLE wcf1_poll ( - pollID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - objectTypeID INT(10) NOT NULL, - objectID INT(10) NOT NULL DEFAULT 0, - question VARCHAR(255) DEFAULT '', - time INT(10) NOT NULL DEFAULT 0, - endTime INT(10) NOT NULL DEFAULT 0, - isChangeable TINYINT(1) NOT NULL DEFAULT 0, - isPublic TINYINT(1) NOT NULL DEFAULT 0, - sortByVotes TINYINT(1) NOT NULL DEFAULT 0, - resultsRequireVote TINYINT(1) NOT NULL DEFAULT 0, - maxVotes INT(10) NOT NULL DEFAULT 1, - votes INT(10) NOT NULL DEFAULT 0 -); - -DROP TABLE IF EXISTS wcf1_poll_option; -CREATE TABLE wcf1_poll_option ( - optionID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - pollID INT(10) NOT NULL, - optionValue VARCHAR(255) NOT NULL DEFAULT '', - votes INT(10) NOT NULL DEFAULT 0, - showOrder INT(10) NOT NULL DEFAULT 0 -); - -DROP TABLE IF EXISTS wcf1_poll_option_vote; -CREATE TABLE wcf1_poll_option_vote ( - pollID INT(10) NOT NULL, - optionID INT(10) NOT NULL, - userID INT(10) NOT NULL, - - KEY (optionID, userID), - UNIQUE KEY vote (pollID, optionID, userID) -); - -DROP TABLE IF EXISTS wcf1_reaction_type; -CREATE TABLE wcf1_reaction_type ( - reactionTypeID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - title VARCHAR(255) NOT NULL, - showOrder INT(10) NOT NULL DEFAULT 0, - iconFile VARCHAR(255) NOT NULL DEFAULT '', - isAssignable TINYINT(1) NOT NULL DEFAULT 1 -); - -DROP TABLE IF EXISTS wcf1_registry; -CREATE TABLE wcf1_registry ( - packageID INT(10) NOT NULL, - field VARCHAR(191) NOT NULL, - fieldValue MEDIUMTEXT, - - UNIQUE KEY uniqueField (packageID, field) -); - -DROP TABLE IF EXISTS wcf1_search; -CREATE TABLE wcf1_search ( - searchID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - userID INT(10), - searchData MEDIUMTEXT NOT NULL, - searchTime INT(10) NOT NULL DEFAULT 0, - searchType VARCHAR(255) NOT NULL DEFAULT '', - searchHash CHAR(40) NOT NULL DEFAULT '', - KEY searchHash (searchHash) -); - -DROP TABLE IF EXISTS wcf1_search_keyword; -CREATE TABLE wcf1_search_keyword ( - keywordID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - keyword VARCHAR(191) NOT NULL, - searches INT(10) NOT NULL DEFAULT 0, - lastSearchTime INT(10) NOT NULL DEFAULT 0, - UNIQUE KEY (keyword), - KEY (searches, lastSearchTime) -); - -DROP TABLE IF EXISTS wcf1_service_worker; -CREATE TABLE wcf1_service_worker ( - workerID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - userID INT(10) NOT NULL, - endpoint TEXT NOT NULL, - publicKey VARCHAR(88) NOT NULL, - authToken VARCHAR(24) NOT NULL, - contentEncoding VARCHAR(40) NOT NULL, - KEY userID (userID) -); - -DROP TABLE IF EXISTS wcf1_service_worker_notification; -CREATE TABLE wcf1_service_worker_notification -( - notificationID INT(10) NOT NULL, - workerID INT(10) NOT NULL, - time INT(10) NOT NULL, - UNIQUE KEY job (notificationID, workerID), - KEY time (time) -); - -DROP TABLE IF EXISTS wcf1_session; -CREATE TABLE wcf1_session ( - sessionID CHAR(40) NOT NULL PRIMARY KEY, - userID INT(10), - ipAddress VARCHAR(39) NOT NULL DEFAULT '', - userAgent VARCHAR(191) NOT NULL DEFAULT '', - lastActivityTime INT(10) NOT NULL DEFAULT 0, - requestURI VARCHAR(255) NOT NULL DEFAULT '', - requestMethod VARCHAR(7) NOT NULL DEFAULT '', - pageID INT(10), - pageObjectID INT(10), - parentPageID INT(10), - parentPageObjectID INT(10), - spiderIdentifier VARCHAR(191) DEFAULT NULL, - KEY packageID (lastActivityTime, spiderIdentifier), - KEY pageID (pageID, pageObjectID), - KEY parentPageID (parentPageID, parentPageObjectID), - UNIQUE KEY uniqueUserID (userID) -); - -DROP TABLE IF EXISTS wcf1_smiley; -CREATE TABLE wcf1_smiley ( - smileyID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - packageID INT(10) NOT NULL, - categoryID INT(10), - smileyPath VARCHAR(255) NOT NULL DEFAULT '', - smileyPath2x VARCHAR(255) NOT NULL DEFAULT '', - smileyTitle VARCHAR(255) NOT NULL DEFAULT '', - smileyCode VARCHAR(191) NOT NULL DEFAULT '', - aliases TEXT NOT NULL, - showOrder INT(10) NOT NULL DEFAULT 0, - UNIQUE KEY smileyCode (smileyCode) -); - -DROP TABLE IF EXISTS wcf1_stat_daily; -CREATE TABLE wcf1_stat_daily ( - statID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - objectTypeID INT(10) NOT NULL, - date DATE NOT NULL, - counter INT(10) NOT NULL DEFAULT 0, - total INT(10) NOT NULL DEFAULT 0, - - UNIQUE KEY (objectTypeID, date) -); - -DROP TABLE IF EXISTS wcf1_style; -CREATE TABLE wcf1_style ( - styleID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - packageID INT(10) NOT NULL, - styleName VARCHAR(255) NOT NULL DEFAULT '', - templateGroupID INT(10) NOT NULL DEFAULT 0, - isDefault TINYINT(1) NOT NULL DEFAULT 0, - isDisabled TINYINT(1) NOT NULL DEFAULT 0, - styleDescription VARCHAR(30) NOT NULL DEFAULT '', - styleVersion VARCHAR(255) NOT NULL DEFAULT '', - styleDate CHAR(10) NOT NULL DEFAULT '0000-00-00', - image VARCHAR(255) NOT NULL DEFAULT '', - image2x VARCHAR(255) NOT NULL DEFAULT '', - copyright VARCHAR(255) NOT NULL DEFAULT '', - license VARCHAR(255) NOT NULL DEFAULT '', - authorName VARCHAR(255) NOT NULL DEFAULT '', - authorURL VARCHAR(255) NOT NULL DEFAULT '', - imagePath VARCHAR(255) NOT NULL DEFAULT '', - packageName VARCHAR(255) NOT NULL DEFAULT '', - isTainted TINYINT(1) NOT NULL DEFAULT 0, - hasFavicon TINYINT(1) NOT NULL DEFAULT 0, - coverPhotoExtension VARCHAR(4) NOT NULL DEFAULT '', - hasDarkMode TINYINT(1) NOT NULL DEFAULT 0 -); - -DROP TABLE IF EXISTS wcf1_style_variable; -CREATE TABLE wcf1_style_variable ( - variableID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - variableName VARCHAR(50) NOT NULL, - defaultValue MEDIUMTEXT, - defaultValueDarkMode MEDIUMTEXT, - UNIQUE KEY variableName (variableName) -); - -DROP TABLE IF EXISTS wcf1_style_variable_value; -CREATE TABLE wcf1_style_variable_value ( - styleID INT(10) NOT NULL, - variableID INT(10) NOT NULL, - variableValue MEDIUMTEXT, - variableValueDarkMode MEDIUMTEXT, - UNIQUE KEY (styleID, variableID) -); - -DROP TABLE IF EXISTS wcf1_tag; -CREATE TABLE wcf1_tag ( - tagID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - languageID INT(10) NOT NULL DEFAULT 0, - name VARCHAR(191) NOT NULL, - synonymFor INT(10), - UNIQUE KEY (languageID, name) -); - -DROP TABLE IF EXISTS wcf1_tag_to_object; -CREATE TABLE wcf1_tag_to_object ( - objectID INT(10) NOT NULL, - tagID INT(10) NOT NULL, - objectTypeID INT(10) NOT NULL, - languageID INT(10) NOT NULL, - PRIMARY KEY (objectTypeID, objectID, tagID), - KEY (objectTypeID, tagID), - KEY (tagID) -); - -DROP TABLE IF EXISTS wcf1_template; -CREATE TABLE wcf1_template ( - templateID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - packageID INT(10) NOT NULL, - templateName VARCHAR(191) NOT NULL, - application VARCHAR(20) NOT NULL, - templateGroupID INT(10), - lastModificationTime INT(10) NOT NULL DEFAULT 0, - UNIQUE KEY applicationTemplate (application, templateGroupID, templateName), - KEY templateGroupID (packageID, templateGroupID, templateName) -); - -DROP TABLE IF EXISTS wcf1_template_group; -CREATE TABLE wcf1_template_group ( - templateGroupID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - parentTemplateGroupID INT(10), - templateGroupName VARCHAR(255) NOT NULL DEFAULT '', - templateGroupFolderName VARCHAR(255) NOT NULL DEFAULT '' -); - -DROP TABLE IF EXISTS wcf1_template_listener; -CREATE TABLE wcf1_template_listener ( - listenerID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - packageID INT(10) NOT NULL, - name VARCHAR(80) NOT NULL DEFAULT '', - environment ENUM('user','admin') NOT NULL DEFAULT 'user', - templateName VARCHAR(80) NOT NULL DEFAULT '', - eventName VARCHAR(50) NOT NULL DEFAULT '', - templateCode TEXT NOT NULL, - niceValue TINYINT(3) NOT NULL DEFAULT 0, - permissions TEXT, - options TEXT, - - KEY templateName (environment, templateName) -); - -/* SQL_PARSER_OFFSET */ - -DROP TABLE IF EXISTS wcf1_tracked_visit; -CREATE TABLE wcf1_tracked_visit ( - objectTypeID INT(10) NOT NULL, - objectID INT(10) NOT NULL, - userID INT(10) NOT NULL, - visitTime INT(10) NOT NULL DEFAULT 0, - UNIQUE KEY userID_objectTypeID_objectID (userID, objectTypeID, objectID), - KEY visitTime (visitTime) -); - -DROP TABLE IF EXISTS wcf1_tracked_visit_type; -CREATE TABLE wcf1_tracked_visit_type ( - objectTypeID INT(10) NOT NULL, - userID INT(10) NOT NULL, - visitTime INT(10) NOT NULL DEFAULT 0, - UNIQUE KEY userID_objectTypeID (userID, objectTypeID), - KEY visitTime (visitTime) -); - -DROP TABLE IF EXISTS wcf1_trophy; -CREATE TABLE wcf1_trophy( - trophyID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - title VARCHAR(255), - description MEDIUMTEXT, - categoryID INT(10) NOT NULL, - type SMALLINT(1) DEFAULT 1, - iconFile MEDIUMTEXT, - iconName VARCHAR(255), - iconColor VARCHAR(255), - badgeColor VARCHAR(255), - isDisabled TINYINT(1) NOT NULL DEFAULT 0, - awardAutomatically TINYINT(1) NOT NULL DEFAULT 0, - revokeAutomatically TINYINT(1) NOT NULL DEFAULT 0, - trophyUseHtml TINYINT(1) NOT NULL DEFAULT 0, - showOrder INT(10) NOT NULL DEFAULT 0, - KEY(categoryID) -); - -DROP TABLE IF EXISTS wcf1_unfurl_url; -CREATE TABLE wcf1_unfurl_url ( - urlID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - url TEXT NOT NULL, - urlHash VARCHAR(40) NOT NULL, - title VARCHAR(255) NOT NULL DEFAULT '', - description TEXT, - imageID INT(10), - status VARCHAR(255) NOT NULL DEFAULT 'PENDING', - lastFetch INT(10) NOT NULL DEFAULT 0, - - UNIQUE KEY urlHash (urlHash) -); - -DROP TABLE IF EXISTS wcf1_unfurl_url_image; -CREATE TABLE wcf1_unfurl_url_image ( - imageID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - imageUrl TEXT NOT NULL, - imageUrlHash VARCHAR(40) DEFAULT NULL, - width INT(10) NOT NULL, - height INT(10) NOT NULL, - imageExtension VARCHAR(4) DEFAULT NULL, - isStored TINYINT(1) NOT NULL DEFAULT 0, - fileID INT(10) DEFAULT NULL, - - UNIQUE KEY imageUrlHash (imageUrlHash) -); - -DROP TABLE IF EXISTS wcf1_user; -CREATE TABLE wcf1_user ( - userID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - username VARCHAR(100) NOT NULL DEFAULT '', - email VARCHAR(191) NOT NULL DEFAULT '', - password VARCHAR(255) NOT NULL DEFAULT 'invalid:', - accessToken CHAR(40) NOT NULL DEFAULT '', - multifactorActive TINYINT(1) NOT NULL DEFAULT 0, - languageID INT(10) NOT NULL DEFAULT 0, - registrationDate INT(10) NOT NULL DEFAULT 0, - styleID INT(10) NOT NULL DEFAULT 0, - banned TINYINT(1) NOT NULL DEFAULT 0, - banReason MEDIUMTEXT NULL, - banExpires INT(10) NOT NULL DEFAULT 0, - activationCode INT(10) NOT NULL DEFAULT 0, - emailConfirmed CHAR(40) DEFAULT NULL, - lastLostPasswordRequestTime INT(10) NOT NULL DEFAULT 0, - lostPasswordKey CHAR(40) DEFAULT NULL, - lastUsernameChange INT(10) NOT NULL DEFAULT 0, - newEmail VARCHAR(255) NOT NULL DEFAULT '', - oldUsername VARCHAR(255) NOT NULL DEFAULT '', - quitStarted INT(10) NOT NULL DEFAULT 0, - reactivationCode INT(10) NOT NULL DEFAULT 0, - registrationIpAddress VARCHAR(39) NOT NULL DEFAULT '', - avatarID INT(10), - avatarFileID INT(10) DEFAULT NULL, - avatarPathname VARCHAR(255) DEFAULT NULL, - disableAvatar TINYINT(1) NOT NULL DEFAULT 0, - disableAvatarReason TEXT, - disableAvatarExpires INT(10) NOT NULL DEFAULT 0, - signature TEXT, - signatureEnableHtml TINYINT(1) NOT NULL DEFAULT 0, - disableSignature TINYINT(1) NOT NULL DEFAULT 0, - disableSignatureReason TEXT, - disableSignatureExpires INT(10) NOT NULL DEFAULT 0, - lastActivityTime INT(10) NOT NULL DEFAULT 0, - rankID INT(10), - userTitle VARCHAR(255) NOT NULL DEFAULT '', - userOnlineGroupID INT(10), - activityPoints INT(10) NOT NULL DEFAULT 0, - notificationMailToken VARCHAR(20) NOT NULL DEFAULT '', - authData VARCHAR(191) NOT NULL DEFAULT '', - likesReceived MEDIUMINT(7) NOT NULL DEFAULT 0, - trophyPoints INT(10) NOT NULL DEFAULT 0, - coverPhotoFileID INT(10) DEFAULT NULL, - coverPhotoHash CHAR(40) DEFAULT NULL, -- deprecated since 6.2 - coverPhotoExtension VARCHAR(4) NOT NULL DEFAULT '', -- deprecated since 6.2 - coverPhotoHasWebP TINYINT(1) NOT NULL DEFAULT 0, -- deprecated since 6.2 - disableCoverPhoto TINYINT(1) NOT NULL DEFAULT 0, - disableCoverPhotoReason TEXT, - disableCoverPhotoExpires INT(10) NOT NULL DEFAULT 0, - articles INT(10) NOT NULL DEFAULT 0, - blacklistMatches VARCHAR(255) NOT NULL DEFAULT '', - - UNIQUE KEY username (username), - KEY email (email), - KEY registrationDate (registrationDate), - KEY styleID (styleID), - KEY activationCode (activationCode), - KEY registrationData (registrationIpAddress, registrationDate), - KEY activityPoints (activityPoints), - KEY likesReceived (likesReceived), - KEY authData (authData), - KEY trophyPoints (trophyPoints) -); - -DROP TABLE IF EXISTS wcf1_user_activity_event; -CREATE TABLE wcf1_user_activity_event ( - eventID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - objectTypeID INT(10) NOT NULL, - objectID INT(10) NOT NULL, - languageID INT(10), - userID INT(10) NOT NULL, - time INT(10) NOT NULL, - additionalData TEXT, - - KEY (time), - KEY (userID, time), - KEY (objectTypeID, objectID) -); - -DROP TABLE IF EXISTS wcf1_user_activity_point; -CREATE TABLE wcf1_user_activity_point ( - userID INT(10) NOT NULL, - objectTypeID INT(10) NOT NULL, - activityPoints INT(10) NOT NULL DEFAULT 0, - items INT(10) NOT NULL DEFAULT 0, - PRIMARY KEY (userID, objectTypeID), - KEY (objectTypeID) -); - -DROP TABLE IF EXISTS wcf1_user_authentication_failure; -CREATE TABLE wcf1_user_authentication_failure ( - failureID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - environment ENUM('user', 'admin') NOT NULL DEFAULT 'user', - userID INT(10), - username VARCHAR(255) NOT NULL DEFAULT '', - time INT(10) NOT NULL DEFAULT 0, - ipAddress VARCHAR(39) NOT NULL DEFAULT '', - userAgent VARCHAR(255) NOT NULL DEFAULT '', - validationError VARCHAR(255) NOT NULL DEFAULT '', - KEY (ipAddress, time), - KEY (time) -); - -DROP TABLE IF EXISTS wcf1_user_avatar; -CREATE TABLE wcf1_user_avatar ( - avatarID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - avatarName VARCHAR(255) NOT NULL DEFAULT '', - avatarExtension VARCHAR(7) NOT NULL DEFAULT '', - width SMALLINT(5) NOT NULL DEFAULT 0, - height SMALLINT(5) NOT NULL DEFAULT 0, - userID INT(10), - fileHash VARCHAR(40) NOT NULL DEFAULT '', - hasWebP TINYINT(1) NOT NULL DEFAULT 0 -); - -DROP TABLE IF EXISTS wcf1_user_collapsible_content; -CREATE TABLE wcf1_user_collapsible_content ( - objectTypeID INT(10) NOT NULL, - objectID VARCHAR(191) NOT NULL, - userID INT(10) NOT NULL, - UNIQUE KEY (objectTypeID, objectID, userID) -); - -DROP TABLE IF EXISTS wcf1_user_follow; -CREATE TABLE wcf1_user_follow ( - followID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - userID INT(10) NOT NULL, - followUserID INT(10) NOT NULL, - time INT(10) NOT NULL DEFAULT 0, - UNIQUE KEY (userID, followUserID) -); - -DROP TABLE IF EXISTS wcf1_user_group; -CREATE TABLE wcf1_user_group ( - groupID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - groupName VARCHAR(255) NOT NULL DEFAULT '', - groupDescription TEXT, - groupType TINYINT(1) NOT NULL DEFAULT 4, - priority MEDIUMINT(8) NOT NULL DEFAULT 0, - userOnlineMarking VARCHAR(255) NOT NULL DEFAULT '%s', - showOnTeamPage TINYINT(1) NOT NULL DEFAULT 0, - allowMention TINYINT(1) NOT NULL DEFAULT 0, - requireMultifactor TINYINT(1) NOT NULL DEFAULT 0 -); - -DROP TABLE IF EXISTS wcf1_user_group_assignment; -CREATE TABLE wcf1_user_group_assignment ( - assignmentID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - groupID INT(10) NOT NULL, - title VARCHAR(255) NOT NULL, - isDisabled TINYINT(1) NOT NULL DEFAULT 0 -); - -DROP TABLE IF EXISTS wcf1_user_group_option; -CREATE TABLE wcf1_user_group_option ( - optionID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - packageID INT(10) NOT NULL, - optionName VARCHAR(191) NOT NULL DEFAULT '', - categoryName VARCHAR(191) NOT NULL DEFAULT '', - optionType VARCHAR(255) NOT NULL DEFAULT '', - defaultValue MEDIUMTEXT, - validationPattern TEXT, - enableOptions MEDIUMTEXT, - showOrder INT(10) NOT NULL DEFAULT 0, - permissions TEXT, - options TEXT, - usersOnly TINYINT(1) NOT NULL DEFAULT 0, - additionalData MEDIUMTEXT, - UNIQUE KEY optionName (optionName, packageID) -); - -DROP TABLE IF EXISTS wcf1_user_group_option_category; -CREATE TABLE wcf1_user_group_option_category ( - categoryID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - packageID INT(10) NOT NULL, - categoryName VARCHAR(191) NOT NULL DEFAULT '', - parentCategoryName VARCHAR(191) NOT NULL DEFAULT '', - showOrder INT(10) NOT NULL DEFAULT 0, - permissions TEXT, - options TEXT, - UNIQUE KEY categoryName (categoryName) -); - -DROP TABLE IF EXISTS wcf1_user_group_option_value; -CREATE TABLE wcf1_user_group_option_value ( - groupID INT(10) NOT NULL, - optionID INT(10) NOT NULL, - optionValue MEDIUMTEXT NOT NULL, - UNIQUE KEY groupID (groupID, optionID) -); - -DROP TABLE IF EXISTS wcf1_user_ignore; -CREATE TABLE wcf1_user_ignore ( - ignoreID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - userID INT(10) NOT NULL, - ignoreUserID INT(10) NOT NULL, - time INT(10) NOT NULL DEFAULT 0, - type TINYINT(1) NOT NULL DEFAULT 1, - UNIQUE KEY (userID, ignoreUserID) -); - -DROP TABLE IF EXISTS wcf1_user_special_trophy; -CREATE TABLE wcf1_user_special_trophy( - trophyID INT(10) NOT NULL, - userID INT(10) NOT NULL, - UNIQUE KEY (trophyID, userID) -); - -DROP TABLE IF EXISTS wcf1_user_trophy; -CREATE TABLE wcf1_user_trophy( - userTrophyID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - trophyID INT(10) NOT NULL, - userID INT(10) NOT NULL, - time INT(10) NOT NULL DEFAULT 0, - description MEDIUMTEXT, - useCustomDescription TINYINT(1) NOT NULL DEFAULT 0, - trophyUseHtml TINYINT(1) NOT NULL DEFAULT 0, - KEY(trophyID, time) -); - -DROP TABLE IF EXISTS wcf1_user_menu_item; -CREATE TABLE wcf1_user_menu_item ( - menuItemID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - packageID INT(10) NOT NULL, - menuItem VARCHAR(191) NOT NULL DEFAULT '', - parentMenuItem VARCHAR(191) NOT NULL DEFAULT '', - menuItemController VARCHAR(255) NOT NULL DEFAULT '', - menuItemLink VARCHAR(255) NOT NULL DEFAULT '', - showOrder INT(10) NOT NULL DEFAULT 0, - permissions TEXT, - options TEXT, - className VARCHAR(255) NOT NULL DEFAULT '', - iconClassName VARCHAR(255) NOT NULL DEFAULT '', - UNIQUE KEY menuItem (menuItem, packageID) -); - -DROP TABLE IF EXISTS wcf1_user_multifactor; -CREATE TABLE wcf1_user_multifactor ( - setupID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - userID INT(10) NOT NULL, - objectTypeID INT(10) NOT NULL, - UNIQUE KEY (userID, objectTypeID) -); - -DROP TABLE IF EXISTS wcf1_user_multifactor_backup; -CREATE TABLE wcf1_user_multifactor_backup ( - setupID INT(10) NOT NULL, - identifier VARCHAR(191) NOT NULL, - code VARCHAR(255) NOT NULL, - createTime INT(10) NOT NULL, - useTime INT(10) DEFAULT NULL, - - UNIQUE KEY (setupID, identifier) -); - -DROP TABLE IF EXISTS wcf1_user_multifactor_email; -CREATE TABLE wcf1_user_multifactor_email ( - setupID INT(10) NOT NULL, - code VARCHAR(191) NOT NULL, - createTime INT(10) NOT NULL, - - UNIQUE KEY (setupID, code) -); - -DROP TABLE IF EXISTS wcf1_user_multifactor_totp; -CREATE TABLE wcf1_user_multifactor_totp ( - setupID INT(10) NOT NULL, - deviceID VARCHAR(191) NOT NULL, - deviceName VARCHAR(255) NOT NULL, - secret VARBINARY(255) NOT NULL, - minCounter INT(10) NOT NULL, - createTime INT(10) NOT NULL, - useTime INT(10) DEFAULT NULL, - - UNIQUE KEY (setupID, deviceID) -); - --- notifications -DROP TABLE IF EXISTS wcf1_user_notification; -CREATE TABLE wcf1_user_notification ( - notificationID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - packageID INT(10) NOT NULL, - eventID INT(10) NOT NULL, - objectID INT(10) NOT NULL DEFAULT 0, - baseObjectID INT(10) NOT NULL DEFAULT 0, - eventHash VARCHAR(40) NOT NULL DEFAULT '', - authorID INT(10) NULL, - timesTriggered INT(10) NOT NULL DEFAULT 0, - guestTimesTriggered INT(10) NOT NULL DEFAULT 0, - userID INT(10) NOT NULL, - time INT(10) NOT NULL DEFAULT 0, - mailNotified TINYINT(1) NOT NULL DEFAULT 0, - confirmTime INT(10) NOT NULL DEFAULT 0, - additionalData TEXT, - KEY (userID, eventID, objectID, confirmTime), - KEY (userID, confirmTime), - KEY (confirmTime) -); - --- notification authors (stacking) -DROP TABLE IF EXISTS wcf1_user_notification_author; -CREATE TABLE wcf1_user_notification_author ( - notificationID INT(10) NOT NULL, - authorID INT(10), - time INT(10) NOT NULL DEFAULT 0, - UNIQUE KEY (notificationID, authorID) -); - --- events that create notifications -DROP TABLE IF EXISTS wcf1_user_notification_event; -CREATE TABLE wcf1_user_notification_event ( - eventID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - packageID INT(10) NOT NULL, - eventName VARCHAR(191) NOT NULL DEFAULT '', - objectTypeID INT(10) NOT NULL, - className VARCHAR(255) NOT NULL DEFAULT '', - permissions TEXT, - options TEXT, - preset TINYINT(1) NOT NULL DEFAULT 0, - presetMailNotificationType ENUM('none', 'instant', 'daily') NOT NULL DEFAULT 'none', - UNIQUE KEY eventName (eventName, objectTypeID) -); - --- user configuration for events -DROP TABLE IF EXISTS wcf1_user_notification_event_to_user; -CREATE TABLE wcf1_user_notification_event_to_user ( - userID INT(10) NOT NULL, - eventID INT(10) NOT NULL, - mailNotificationType ENUM('none', 'instant', 'daily') NOT NULL DEFAULT 'none', - UNIQUE KEY (eventID, userID) -); - -DROP TABLE IF EXISTS wcf1_user_object_watch; -CREATE TABLE wcf1_user_object_watch ( - watchID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - objectTypeID INT(10) NOT NULL, - objectID INT(10) NOT NULL, - userID INT(10) NOT NULL, - notification TINYINT(1) NOT NULL DEFAULT 0, - - UNIQUE KEY (objectTypeID, userID, objectID), - KEY (objectTypeID, objectID) -); - -DROP TABLE IF EXISTS wcf1_user_option; -CREATE TABLE wcf1_user_option ( - optionID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - packageID INT(10) NOT NULL, - optionName VARCHAR(191) NOT NULL DEFAULT '', - categoryName VARCHAR(191) NOT NULL DEFAULT '', - optionType VARCHAR(255) NOT NULL DEFAULT '', - defaultValue MEDIUMTEXT, - validationPattern TEXT, - selectOptions MEDIUMTEXT, - enableOptions MEDIUMTEXT, - labeledUrl MEDIUMTEXT, - required TINYINT(1) NOT NULL DEFAULT 0, - askDuringRegistration TINYINT(1) NOT NULL DEFAULT 0, - editable TINYINT(1) NOT NULL DEFAULT 0, - visible TINYINT(1) NOT NULL DEFAULT 0, - outputClass VARCHAR(255) NOT NULL DEFAULT '', - searchable TINYINT(1) NOT NULL DEFAULT 0, - showOrder INT(10) NOT NULL DEFAULT 0, - isDisabled TINYINT(1) NOT NULL DEFAULT 0, - permissions TEXT, - options TEXT, - additionalData MEDIUMTEXT, - originIsSystem TINYINT(1) NOT NULL DEFAULT 0, - UNIQUE KEY optionName (optionName, packageID), - KEY categoryName (categoryName) -); - -DROP TABLE IF EXISTS wcf1_user_option_category; -CREATE TABLE wcf1_user_option_category ( - categoryID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - packageID INT(10) NOT NULL, - categoryName VARCHAR(191) NOT NULL DEFAULT '', - parentCategoryName VARCHAR(191) NOT NULL DEFAULT '', - showOrder INT(10) NOT NULL DEFAULT 0, - permissions TEXT, - options TEXT, - UNIQUE KEY categoryName (categoryName) -); - -DROP TABLE IF EXISTS wcf1_user_option_value; -CREATE TABLE wcf1_user_option_value ( - userID INT(10) NOT NULL PRIMARY KEY -); - -DROP TABLE IF EXISTS wcf1_user_profile_menu_item; -CREATE TABLE wcf1_user_profile_menu_item ( - menuItemID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - packageID INT(10) NOT NULL, - menuItem VARCHAR(191) NOT NULL, - showOrder INT(10) NOT NULL DEFAULT 0, - permissions TEXT NULL, - options TEXT NULL, - className VARCHAR(255) NOT NULL, - UNIQUE KEY (packageID, menuItem) -); - -DROP TABLE IF EXISTS wcf1_user_profile_visitor; -CREATE TABLE wcf1_user_profile_visitor ( - visitorID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - ownerID INT(10) NOT NULL, - userID INT(10) NOT NULL, - time INT(10) NOT NULL DEFAULT 0, - UNIQUE KEY (ownerID, userID), - KEY (time) -); - -DROP TABLE IF EXISTS wcf1_user_rank; -CREATE TABLE wcf1_user_rank ( - rankID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, - groupID INT(10) NOT NULL, - requiredPoints INT(10) NOT NULL DEFAULT 0, - rankTitle VARCHAR(255) NOT NULL DEFAULT '', - cssClassName VARCHAR(255) NOT NULL DEFAULT '', - rankImage VARCHAR(255) NOT NULL DEFAULT '', - repeatImage TINYINT(3) NOT NULL DEFAULT 1, - requiredGender TINYINT(1) NOT NULL DEFAULT 0, - hideTitle TINYINT(1) NOT NULL DEFAULT 0 -); - -DROP TABLE IF EXISTS wcf1_user_session; -CREATE TABLE wcf1_user_session ( - sessionID CHAR(40) NOT NULL PRIMARY KEY, - userID INT(10), - ipAddress VARCHAR(39) NOT NULL DEFAULT '', - userAgent VARCHAR(255) NOT NULL DEFAULT '', - creationTime INT(10) NOT NULL, - lastActivityTime INT(10) NOT NULL DEFAULT 0, - sessionVariables MEDIUMBLOB, - KEY (userID), - KEY (lastActivityTime) -); - -DROP TABLE IF EXISTS wcf1_user_storage; -CREATE TABLE wcf1_user_storage ( - userID INT(10) NOT NULL, - field VARCHAR(80) NOT NULL DEFAULT '', - fieldValue MEDIUMTEXT, - UNIQUE KEY (userID, field), - KEY (field) -); - -DROP TABLE IF EXISTS wcf1_user_to_group; -CREATE TABLE wcf1_user_to_group ( - userID INT(10) NOT NULL, - groupID INT(10) NOT NULL, - UNIQUE KEY userID (userID, groupID) -); - -DROP TABLE IF EXISTS wcf1_user_to_language; -CREATE TABLE wcf1_user_to_language ( - userID INT(10) NOT NULL, - languageID INT(10) NOT NULL, - UNIQUE KEY userID (userID, languageID) -); - --- Create the package early. This is required for the FOREIGN KEYs. -INSERT INTO wcf1_package (packageID, package) VALUES (1, 'com.woltlab.wcf'); - -/* SQL_PARSER_OFFSET */ - -/* foreign keys */ -ALTER TABLE wcf1_acl_option ADD FOREIGN KEY (packageID) REFERENCES wcf1_package (packageID) ON DELETE CASCADE; -ALTER TABLE wcf1_acl_option ADD FOREIGN KEY (objectTypeID) REFERENCES wcf1_object_type (objectTypeID) ON DELETE CASCADE; - -ALTER TABLE wcf1_acl_option_category ADD FOREIGN KEY (packageID) REFERENCES wcf1_package (packageID) ON DELETE CASCADE; -ALTER TABLE wcf1_acl_option_category ADD FOREIGN KEY (objectTypeID) REFERENCES wcf1_object_type (objectTypeID) ON DELETE CASCADE; - -ALTER TABLE wcf1_acl_option_to_user ADD FOREIGN KEY (optionID) REFERENCES wcf1_acl_option (optionID) ON DELETE CASCADE; -ALTER TABLE wcf1_acl_option_to_user ADD FOREIGN KEY (userID) REFERENCES wcf1_user (userID) ON DELETE CASCADE; - -ALTER TABLE wcf1_acl_option_to_group ADD FOREIGN KEY (optionID) REFERENCES wcf1_acl_option (optionID) ON DELETE CASCADE; -ALTER TABLE wcf1_acl_option_to_group ADD FOREIGN KEY (groupID) REFERENCES wcf1_user_group (groupID) ON DELETE CASCADE; - -ALTER TABLE wcf1_acl_simple_to_user ADD FOREIGN KEY (objectTypeID) REFERENCES wcf1_object_type (objectTypeID) ON DELETE CASCADE; -ALTER TABLE wcf1_acl_simple_to_user ADD FOREIGN KEY (userID) REFERENCES wcf1_user (userID) ON DELETE CASCADE; - -ALTER TABLE wcf1_acl_simple_to_group ADD FOREIGN KEY (objectTypeID) REFERENCES wcf1_object_type (objectTypeID) ON DELETE CASCADE; -ALTER TABLE wcf1_acl_simple_to_group ADD FOREIGN KEY (groupID) REFERENCES wcf1_user_group (groupID) ON DELETE CASCADE; - -ALTER TABLE wcf1_acp_dashboard_box_to_user ADD FOREIGN KEY (userID) REFERENCES wcf1_user (userID) ON DELETE CASCADE; - -ALTER TABLE wcf1_acp_menu_item ADD FOREIGN KEY (packageID) REFERENCES wcf1_package (packageID) ON DELETE CASCADE; - -ALTER TABLE wcf1_acp_search_provider ADD FOREIGN KEY (packageID) REFERENCES wcf1_package (packageID) ON DELETE CASCADE; - -ALTER TABLE wcf1_acp_session_access_log ADD FOREIGN KEY (sessionLogID) REFERENCES wcf1_acp_session_log (sessionLogID) ON DELETE CASCADE; - -ALTER TABLE wcf1_acp_session_log ADD FOREIGN KEY (userID) REFERENCES wcf1_user (userID) ON DELETE SET NULL; - -ALTER TABLE wcf1_acp_template ADD FOREIGN KEY (packageID) REFERENCES wcf1_package (packageID) ON DELETE CASCADE; - -ALTER TABLE wcf1_ad ADD FOREIGN KEY (objectTypeID) REFERENCES wcf1_object_type (objectTypeID) ON DELETE CASCADE; - -ALTER TABLE wcf1_application ADD FOREIGN KEY (packageID) REFERENCES wcf1_package (packageID) ON DELETE CASCADE; -ALTER TABLE wcf1_application ADD FOREIGN KEY (landingPageID) REFERENCES wcf1_page (pageID) ON DELETE SET NULL; - -ALTER TABLE wcf1_article ADD FOREIGN KEY (userID) REFERENCES wcf1_user (userID) ON DELETE SET NULL; -ALTER TABLE wcf1_article ADD FOREIGN KEY (categoryID) REFERENCES wcf1_category (categoryID) ON DELETE CASCADE; - -ALTER TABLE wcf1_article_content ADD FOREIGN KEY (articleID) REFERENCES wcf1_article (articleID) ON DELETE CASCADE; -ALTER TABLE wcf1_article_content ADD FOREIGN KEY (languageID) REFERENCES wcf1_language (languageID) ON DELETE SET NULL; -ALTER TABLE wcf1_article_content ADD FOREIGN KEY (imageID) REFERENCES wcf1_media (mediaID) ON DELETE SET NULL; -ALTER TABLE wcf1_article_content ADD FOREIGN KEY (teaserImageID) REFERENCES wcf1_media (mediaID) ON DELETE SET NULL; - -ALTER TABLE wcf1_attachment ADD FOREIGN KEY (objectTypeID) REFERENCES wcf1_object_type (objectTypeID) ON DELETE CASCADE; -ALTER TABLE wcf1_attachment ADD FOREIGN KEY (userID) REFERENCES wcf1_user (userID) ON DELETE SET NULL; -ALTER TABLE wcf1_attachment ADD FOREIGN KEY (fileID) REFERENCES wcf1_file (fileID) ON DELETE SET NULL; -ALTER TABLE wcf1_attachment ADD FOREIGN KEY (thumbnailID) REFERENCES wcf1_file_thumbnail (thumbnailID) ON DELETE SET NULL; -ALTER TABLE wcf1_attachment ADD FOREIGN KEY (tinyThumbnailID) REFERENCES wcf1_file_thumbnail (thumbnailID) ON DELETE SET NULL; - -ALTER TABLE wcf1_bbcode ADD FOREIGN KEY (packageID) REFERENCES wcf1_package (packageID) ON DELETE CASCADE; - -ALTER TABLE wcf1_bbcode_attribute ADD FOREIGN KEY (bbcodeID) REFERENCES wcf1_bbcode (bbcodeID) ON DELETE CASCADE; - -ALTER TABLE wcf1_bbcode_media_provider ADD FOREIGN KEY (packageID) REFERENCES wcf1_package (packageID) ON DELETE CASCADE; - -ALTER TABLE wcf1_box ADD FOREIGN KEY (objectTypeID) REFERENCES wcf1_object_type (objectTypeID) ON DELETE CASCADE; -ALTER TABLE wcf1_box ADD FOREIGN KEY (packageID) REFERENCES wcf1_package (packageID) ON DELETE CASCADE; -ALTER TABLE wcf1_box ADD FOREIGN KEY (menuID) REFERENCES wcf1_menu (menuID) ON DELETE CASCADE; -ALTER TABLE wcf1_box ADD FOREIGN KEY (linkPageID) REFERENCES wcf1_page (pageID) ON DELETE SET NULL; - -/* SQL_PARSER_OFFSET */ - -ALTER TABLE wcf1_box_content ADD FOREIGN KEY (boxID) REFERENCES wcf1_box (boxID) ON DELETE CASCADE; -ALTER TABLE wcf1_box_content ADD FOREIGN KEY (languageID) REFERENCES wcf1_language (languageID) ON DELETE CASCADE; -ALTER TABLE wcf1_box_content ADD FOREIGN KEY (imageID) REFERENCES wcf1_media (mediaID) ON DELETE SET NULL; - -ALTER TABLE wcf1_box_to_page ADD FOREIGN KEY (boxID) REFERENCES wcf1_box (boxID) ON DELETE CASCADE; -ALTER TABLE wcf1_box_to_page ADD FOREIGN KEY (pageID) REFERENCES wcf1_page (pageID) ON DELETE CASCADE; - -ALTER TABLE wcf1_category ADD FOREIGN KEY (objectTypeID) REFERENCES wcf1_object_type (objectTypeID) ON DELETE CASCADE; - -ALTER TABLE wcf1_clipboard_action ADD FOREIGN KEY (packageID) REFERENCES wcf1_package (packageID) ON DELETE CASCADE; - -ALTER TABLE wcf1_clipboard_item ADD FOREIGN KEY (objectTypeID) REFERENCES wcf1_object_type (objectTypeID) ON DELETE CASCADE; - -ALTER TABLE wcf1_clipboard_page ADD FOREIGN KEY (actionID) REFERENCES wcf1_clipboard_action (actionID) ON DELETE CASCADE; -ALTER TABLE wcf1_clipboard_page ADD FOREIGN KEY (packageID) REFERENCES wcf1_package (packageID) ON DELETE CASCADE; - -ALTER TABLE wcf1_condition ADD FOREIGN KEY (objectTypeID) REFERENCES wcf1_object_type (objectTypeID) ON DELETE CASCADE; - -ALTER TABLE wcf1_contact_attachment ADD FOREIGN KEY (attachmentID) REFERENCES wcf1_attachment (attachmentID) ON DELETE CASCADE; - -ALTER TABLE wcf1_core_object ADD FOREIGN KEY (packageID) REFERENCES wcf1_package (packageID) ON DELETE CASCADE; - -ALTER TABLE wcf1_cronjob ADD FOREIGN KEY (packageID) REFERENCES wcf1_package (packageID) ON DELETE CASCADE; - -ALTER TABLE wcf1_cronjob_log ADD FOREIGN KEY (cronjobID) REFERENCES wcf1_cronjob (cronjobID) ON DELETE CASCADE; - -ALTER TABLE wcf1_devtools_missing_language_item ADD FOREIGN KEY (languageID) REFERENCES wcf1_language (languageID) ON DELETE SET NULL; - -ALTER TABLE wcf1_edit_history_entry ADD FOREIGN KEY (objectTypeID) REFERENCES wcf1_object_type (objectTypeID) ON DELETE CASCADE; -ALTER TABLE wcf1_edit_history_entry ADD FOREIGN KEY (userID) REFERENCES wcf1_user (userID) ON DELETE SET NULL; -ALTER TABLE wcf1_edit_history_entry ADD FOREIGN KEY (obsoletedByUserID) REFERENCES wcf1_user (userID) ON DELETE SET NULL; - -ALTER TABLE wcf1_email_log_entry ADD FOREIGN KEY (recipientID) REFERENCES wcf1_user (userID) ON DELETE SET NULL; - -ALTER TABLE wcf1_event_listener ADD FOREIGN KEY (packageID) REFERENCES wcf1_package (packageID) ON DELETE CASCADE; - -ALTER TABLE wcf1_file ADD FOREIGN KEY (objectTypeID) REFERENCES wcf1_object_type (objectTypeID) ON DELETE SET NULL; - -ALTER TABLE wcf1_file_temporary ADD FOREIGN KEY (objectTypeID) REFERENCES wcf1_object_type (objectTypeID) ON DELETE SET NULL; - -ALTER TABLE wcf1_file_thumbnail ADD FOREIGN KEY (fileID) REFERENCES wcf1_file (fileID) ON DELETE CASCADE; - -ALTER TABLE wcf1_language_item ADD FOREIGN KEY (languageID) REFERENCES wcf1_language (languageID) ON DELETE CASCADE; -ALTER TABLE wcf1_language_item ADD FOREIGN KEY (languageCategoryID) REFERENCES wcf1_language_category (languageCategoryID) ON DELETE CASCADE; -ALTER TABLE wcf1_language_item ADD FOREIGN KEY (packageID) REFERENCES wcf1_package (packageID) ON DELETE CASCADE; - -/* SQL_PARSER_OFFSET */ - -ALTER TABLE wcf1_media ADD FOREIGN KEY (categoryID) REFERENCES wcf1_category (categoryID) ON DELETE SET NULL; -ALTER TABLE wcf1_media ADD FOREIGN KEY (userID) REFERENCES wcf1_user (userID) ON DELETE SET NULL; -ALTER TABLE wcf1_media ADD FOREIGN KEY (languageID) REFERENCES wcf1_language (languageID) ON DELETE SET NULL; - -ALTER TABLE wcf1_media_content ADD FOREIGN KEY (mediaID) REFERENCES wcf1_media (mediaID) ON DELETE CASCADE; -ALTER TABLE wcf1_media_content ADD FOREIGN KEY (languageID) REFERENCES wcf1_language (languageID) ON DELETE CASCADE; - -ALTER TABLE wcf1_menu ADD FOREIGN KEY (packageID) REFERENCES wcf1_package (packageID) ON DELETE CASCADE; - -ALTER TABLE wcf1_menu_item ADD FOREIGN KEY (menuID) REFERENCES wcf1_menu (menuID) ON DELETE CASCADE; -ALTER TABLE wcf1_menu_item ADD FOREIGN KEY (parentItemID) REFERENCES wcf1_menu_item (itemID) ON DELETE SET NULL; -ALTER TABLE wcf1_menu_item ADD FOREIGN KEY (pageID) REFERENCES wcf1_page (pageID) ON DELETE CASCADE; -ALTER TABLE wcf1_menu_item ADD FOREIGN KEY (packageID) REFERENCES wcf1_package (packageID) ON DELETE CASCADE; - -ALTER TABLE wcf1_modification_log ADD FOREIGN KEY (objectTypeID) REFERENCES wcf1_object_type (objectTypeID) ON DELETE CASCADE; -ALTER TABLE wcf1_modification_log ADD FOREIGN KEY (userID) REFERENCES wcf1_user (userID) ON DELETE SET NULL; - -ALTER TABLE wcf1_object_type ADD FOREIGN KEY (definitionID) REFERENCES wcf1_object_type_definition (definitionID) ON DELETE CASCADE; -ALTER TABLE wcf1_object_type ADD FOREIGN KEY (packageID) REFERENCES wcf1_package (packageID) ON DELETE CASCADE; - -ALTER TABLE wcf1_object_type_definition ADD FOREIGN KEY (packageID) REFERENCES wcf1_package (packageID) ON DELETE CASCADE; - -ALTER TABLE wcf1_option ADD FOREIGN KEY (packageID) REFERENCES wcf1_package (packageID) ON DELETE CASCADE; - -ALTER TABLE wcf1_option_category ADD FOREIGN KEY (packageID) REFERENCES wcf1_package (packageID) ON DELETE CASCADE; - -ALTER TABLE wcf1_package_exclusion ADD FOREIGN KEY (packageID) REFERENCES wcf1_package (packageID) ON DELETE CASCADE; - -ALTER TABLE wcf1_package_installation_file_log ADD FOREIGN KEY (packageID) REFERENCES wcf1_package (packageID) ON DELETE CASCADE; - -ALTER TABLE wcf1_package_installation_form ADD FOREIGN KEY (queueID) REFERENCES wcf1_package_installation_queue (queueID) ON DELETE CASCADE; - -ALTER TABLE wcf1_package_installation_node ADD FOREIGN KEY (queueID) REFERENCES wcf1_package_installation_queue (queueID) ON DELETE CASCADE; - -ALTER TABLE wcf1_package_installation_plugin ADD FOREIGN KEY (packageID) REFERENCES wcf1_package (packageID) ON DELETE CASCADE; - -ALTER TABLE wcf1_package_installation_queue ADD FOREIGN KEY (userID) REFERENCES wcf1_user (userID) ON DELETE CASCADE; -ALTER TABLE wcf1_package_installation_queue ADD FOREIGN KEY (packageID) REFERENCES wcf1_package (packageID) ON DELETE SET NULL; - -ALTER TABLE wcf1_package_installation_sql_log ADD FOREIGN KEY (packageID) REFERENCES wcf1_package (packageID) ON DELETE CASCADE; - -/* SQL_PARSER_OFFSET */ - -ALTER TABLE wcf1_package_requirement ADD FOREIGN KEY (packageID) REFERENCES wcf1_package (packageID) ON DELETE CASCADE; -ALTER TABLE wcf1_package_requirement ADD FOREIGN KEY (requirement) REFERENCES wcf1_package (packageID) ON DELETE CASCADE; - -ALTER TABLE wcf1_package_update ADD FOREIGN KEY (packageUpdateServerID) REFERENCES wcf1_package_update_server (packageUpdateServerID) ON DELETE CASCADE; - -ALTER TABLE wcf1_package_update_exclusion ADD FOREIGN KEY (packageUpdateVersionID) REFERENCES wcf1_package_update_version (packageUpdateVersionID) ON DELETE CASCADE; - -ALTER TABLE wcf1_package_update_fromversion ADD FOREIGN KEY (packageUpdateVersionID) REFERENCES wcf1_package_update_version (packageUpdateVersionID) ON DELETE CASCADE; - -ALTER TABLE wcf1_package_update_requirement ADD FOREIGN KEY (packageUpdateVersionID) REFERENCES wcf1_package_update_version (packageUpdateVersionID) ON DELETE CASCADE; - -ALTER TABLE wcf1_package_update_version ADD FOREIGN KEY (packageUpdateID) REFERENCES wcf1_package_update (packageUpdateID) ON DELETE CASCADE; - -ALTER TABLE wcf1_paid_subscription_user ADD FOREIGN KEY (subscriptionID) REFERENCES wcf1_paid_subscription (subscriptionID) ON DELETE CASCADE; -ALTER TABLE wcf1_paid_subscription_user ADD FOREIGN KEY (userID) REFERENCES wcf1_user (userID) ON DELETE CASCADE; - -ALTER TABLE wcf1_paid_subscription_transaction_log ADD FOREIGN KEY (subscriptionUserID) REFERENCES wcf1_paid_subscription_user (subscriptionUserID) ON DELETE SET NULL; -ALTER TABLE wcf1_paid_subscription_transaction_log ADD FOREIGN KEY (userID) REFERENCES wcf1_user (userID) ON DELETE SET NULL; -ALTER TABLE wcf1_paid_subscription_transaction_log ADD FOREIGN KEY (subscriptionID) REFERENCES wcf1_paid_subscription (subscriptionID) ON DELETE SET NULL; -ALTER TABLE wcf1_paid_subscription_transaction_log ADD FOREIGN KEY (paymentMethodObjectTypeID) REFERENCES wcf1_object_type (objectTypeID) ON DELETE CASCADE; - -ALTER TABLE wcf1_page ADD FOREIGN KEY (parentPageID) REFERENCES wcf1_page (pageID) ON DELETE SET NULL; -ALTER TABLE wcf1_page ADD FOREIGN KEY (packageID) REFERENCES wcf1_package (packageID) ON DELETE CASCADE; -ALTER TABLE wcf1_page ADD FOREIGN KEY (applicationPackageID) REFERENCES wcf1_package (packageID) ON DELETE SET NULL; -ALTER TABLE wcf1_page ADD FOREIGN KEY (overrideApplicationPackageID) REFERENCES wcf1_package (packageID) ON DELETE SET NULL; - -ALTER TABLE wcf1_page_box_order ADD FOREIGN KEY (pageID) REFERENCES wcf1_page (pageID) ON DELETE CASCADE; -ALTER TABLE wcf1_page_box_order ADD FOREIGN KEY (boxID) REFERENCES wcf1_box (boxID) ON DELETE CASCADE; - -ALTER TABLE wcf1_page_content ADD FOREIGN KEY (pageID) REFERENCES wcf1_page (pageID) ON DELETE CASCADE; -ALTER TABLE wcf1_page_content ADD FOREIGN KEY (languageID) REFERENCES wcf1_language (languageID) ON DELETE CASCADE; - -ALTER TABLE wcf1_registry ADD FOREIGN KEY (packageID) REFERENCES wcf1_package (packageID) ON DELETE CASCADE; - -ALTER TABLE wcf1_search ADD FOREIGN KEY (userID) REFERENCES wcf1_user (userID) ON DELETE CASCADE; -ALTER TABLE wcf1_service_worker ADD FOREIGN KEY (userID) REFERENCES wcf1_user (userID) ON DELETE CASCADE; -ALTER TABLE wcf1_service_worker_notification ADD FOREIGN KEY (workerID) REFERENCES wcf1_service_worker (workerID) ON DELETE CASCADE; -ALTER TABLE wcf1_service_worker_notification ADD FOREIGN KEY (notificationID) REFERENCES wcf1_user_notification (notificationID) ON DELETE CASCADE; - -/* SQL_PARSER_OFFSET */ - -ALTER TABLE wcf1_session ADD FOREIGN KEY (userID) REFERENCES wcf1_user (userID) ON DELETE CASCADE; -ALTER TABLE wcf1_session ADD FOREIGN KEY (pageID) REFERENCES wcf1_page (pageID) ON DELETE SET NULL; -ALTER TABLE wcf1_session ADD FOREIGN KEY (parentPageID) REFERENCES wcf1_page (pageID) ON DELETE SET NULL; - -ALTER TABLE wcf1_smiley ADD FOREIGN KEY (packageID) REFERENCES wcf1_package (packageID) ON DELETE CASCADE; -ALTER TABLE wcf1_smiley ADD FOREIGN KEY (categoryID) REFERENCES wcf1_category (categoryID) ON DELETE SET NULL; - -ALTER TABLE wcf1_user_storage ADD FOREIGN KEY (userID) REFERENCES wcf1_user (userID) ON DELETE CASCADE; - -ALTER TABLE wcf1_style ADD FOREIGN KEY (packageID) REFERENCES wcf1_package (packageID) ON DELETE CASCADE; - -ALTER TABLE wcf1_style_variable_value ADD FOREIGN KEY (styleID) REFERENCES wcf1_style (styleID) ON DELETE CASCADE; -ALTER TABLE wcf1_style_variable_value ADD FOREIGN KEY (variableID) REFERENCES wcf1_style_variable (variableID) ON DELETE CASCADE; - -ALTER TABLE wcf1_template ADD FOREIGN KEY (packageID) REFERENCES wcf1_package (packageID) ON DELETE CASCADE; -ALTER TABLE wcf1_template ADD FOREIGN KEY (templateGroupID) REFERENCES wcf1_template_group (templateGroupID) ON DELETE CASCADE; - -ALTER TABLE wcf1_template_group ADD FOREIGN KEY (parentTemplateGroupID) REFERENCES wcf1_template_group (templateGroupID) ON DELETE SET NULL; - -ALTER TABLE wcf1_template_listener ADD FOREIGN KEY (packageID) REFERENCES wcf1_package (packageID) ON DELETE CASCADE; - -ALTER TABLE wcf1_trophy ADD FOREIGN KEY (categoryID) REFERENCES wcf1_category (categoryID) ON DELETE CASCADE; - -ALTER TABLE wcf1_user_collapsible_content ADD FOREIGN KEY (objectTypeID) REFERENCES wcf1_object_type (objectTypeID) ON DELETE CASCADE; -ALTER TABLE wcf1_user_collapsible_content ADD FOREIGN KEY (userID) REFERENCES wcf1_user (userID) ON DELETE CASCADE; - -ALTER TABLE wcf1_user_group_assignment ADD FOREIGN KEY (groupID) REFERENCES wcf1_user_group (groupID) ON DELETE CASCADE; - -ALTER TABLE wcf1_user_group_option ADD FOREIGN KEY (packageID) REFERENCES wcf1_package (packageID) ON DELETE CASCADE; - -ALTER TABLE wcf1_user_group_option_category ADD FOREIGN KEY (packageID) REFERENCES wcf1_package (packageID) ON DELETE CASCADE; - -ALTER TABLE wcf1_user_group_option_value ADD FOREIGN KEY (groupID) REFERENCES wcf1_user_group (groupID) ON DELETE CASCADE; -ALTER TABLE wcf1_user_group_option_value ADD FOREIGN KEY (optionID) REFERENCES wcf1_user_group_option (optionID) ON DELETE CASCADE; - -/* SQL_PARSER_OFFSET */ - -ALTER TABLE wcf1_user_option ADD FOREIGN KEY (packageID) REFERENCES wcf1_package (packageID) ON DELETE CASCADE; - -ALTER TABLE wcf1_user_option_category ADD FOREIGN KEY (packageID) REFERENCES wcf1_package (packageID) ON DELETE CASCADE; - -ALTER TABLE wcf1_user_option_value ADD FOREIGN KEY (userID) REFERENCES wcf1_user (userID) ON DELETE CASCADE; - -ALTER TABLE wcf1_user_to_group ADD FOREIGN KEY (userID) REFERENCES wcf1_user (userID) ON DELETE CASCADE; -ALTER TABLE wcf1_user_to_group ADD FOREIGN KEY (groupID) REFERENCES wcf1_user_group (groupID) ON DELETE CASCADE; - -ALTER TABLE wcf1_user_to_language ADD FOREIGN KEY (userID) REFERENCES wcf1_user (userID) ON DELETE CASCADE; -ALTER TABLE wcf1_user_to_language ADD FOREIGN KEY (languageID) REFERENCES wcf1_language (languageID) ON DELETE CASCADE; - -ALTER TABLE wcf1_user_trophy ADD FOREIGN KEY (trophyID) REFERENCES wcf1_trophy (trophyID) ON DELETE CASCADE; -ALTER TABLE wcf1_user_trophy ADD FOREIGN KEY (userID) REFERENCES wcf1_user (userID) ON DELETE CASCADE; - -ALTER TABLE wcf1_import_mapping ADD FOREIGN KEY (objectTypeID) REFERENCES wcf1_object_type (objectTypeID) ON DELETE CASCADE; - -ALTER TABLE wcf1_tracked_visit ADD FOREIGN KEY (objectTypeID) REFERENCES wcf1_object_type (objectTypeID) ON DELETE CASCADE; -ALTER TABLE wcf1_tracked_visit ADD FOREIGN KEY (userID) REFERENCES wcf1_user (userID) ON DELETE CASCADE; - -ALTER TABLE wcf1_tracked_visit_type ADD FOREIGN KEY (objectTypeID) REFERENCES wcf1_object_type (objectTypeID) ON DELETE CASCADE; -ALTER TABLE wcf1_tracked_visit_type ADD FOREIGN KEY (userID) REFERENCES wcf1_user (userID) ON DELETE CASCADE; - -ALTER TABLE wcf1_unfurl_url ADD FOREIGN KEY (imageID) REFERENCES wcf1_unfurl_url_image (imageID) ON DELETE SET NULL; -ALTER TABLE wcf1_unfurl_url_image ADD FOREIGN KEY (fileID) REFERENCES wcf1_file (fileID) ON DELETE SET NULL; - -ALTER TABLE wcf1_user ADD FOREIGN KEY (avatarID) REFERENCES wcf1_user_avatar (avatarID) ON DELETE SET NULL; -ALTER TABLE wcf1_user ADD FOREIGN KEY (avatarFileID) REFERENCES wcf1_file (fileID) ON DELETE SET NULL; -ALTER TABLE wcf1_user ADD FOREIGN KEY (coverPhotoFileID) REFERENCES wcf1_file (fileID) ON DELETE SET NULL; -ALTER TABLE wcf1_user ADD FOREIGN KEY (rankID) REFERENCES wcf1_user_rank (rankID) ON DELETE SET NULL; -ALTER TABLE wcf1_user ADD FOREIGN KEY (userOnlineGroupID) REFERENCES wcf1_user_group (groupID) ON DELETE SET NULL; - -/* SQL_PARSER_OFFSET */ - -ALTER TABLE wcf1_user_avatar ADD FOREIGN KEY (userID) REFERENCES wcf1_user (userID) ON DELETE CASCADE; - -ALTER TABLE wcf1_user_follow ADD FOREIGN KEY (userID) REFERENCES wcf1_user (userID) ON DELETE CASCADE; -ALTER TABLE wcf1_user_follow ADD FOREIGN KEY (followUserID) REFERENCES wcf1_user (userID) ON DELETE CASCADE; - -ALTER TABLE wcf1_user_ignore ADD FOREIGN KEY (userID) REFERENCES wcf1_user (userID) ON DELETE CASCADE; -ALTER TABLE wcf1_user_ignore ADD FOREIGN KEY (ignoreUserID) REFERENCES wcf1_user (userID) ON DELETE CASCADE; - -ALTER TABLE wcf1_user_menu_item ADD FOREIGN KEY (packageID) REFERENCES wcf1_package (packageID) ON DELETE CASCADE; - -ALTER TABLE wcf1_user_notification ADD FOREIGN KEY (eventID) REFERENCES wcf1_user_notification_event (eventID) ON DELETE CASCADE; -ALTER TABLE wcf1_user_notification ADD FOREIGN KEY (authorID) REFERENCES wcf1_user (userID) ON DELETE SET NULL; -ALTER TABLE wcf1_user_notification ADD FOREIGN KEY (userID) REFERENCES wcf1_user (userID) ON DELETE CASCADE; - -ALTER TABLE wcf1_user_notification_author ADD FOREIGN KEY (notificationID) REFERENCES wcf1_user_notification (notificationID) ON DELETE CASCADE; -ALTER TABLE wcf1_user_notification_author ADD FOREIGN KEY (authorID) REFERENCES wcf1_user (userID) ON DELETE CASCADE; - -ALTER TABLE wcf1_user_notification_event ADD FOREIGN KEY (packageID) REFERENCES wcf1_package (packageID) ON DELETE CASCADE; -ALTER TABLE wcf1_user_notification_event ADD FOREIGN KEY (objectTypeID) REFERENCES wcf1_object_type (objectTypeID) ON DELETE CASCADE; - -ALTER TABLE wcf1_user_notification_event_to_user ADD FOREIGN KEY (userID) REFERENCES wcf1_user (userID) ON DELETE CASCADE; -ALTER TABLE wcf1_user_notification_event_to_user ADD FOREIGN KEY (eventID) REFERENCES wcf1_user_notification_event (eventID) ON DELETE CASCADE; - -ALTER TABLE wcf1_user_profile_menu_item ADD FOREIGN KEY (packageID) REFERENCES wcf1_package (packageID) ON DELETE CASCADE; - -/* SQL_PARSER_OFFSET */ - -ALTER TABLE wcf1_user_rank ADD FOREIGN KEY (groupID) REFERENCES wcf1_user_group (groupID) ON DELETE CASCADE; - -ALTER TABLE wcf1_user_activity_event ADD FOREIGN KEY (objectTypeID) REFERENCES wcf1_object_type (objectTypeID) ON DELETE CASCADE; -ALTER TABLE wcf1_user_activity_event ADD FOREIGN KEY (userID) REFERENCES wcf1_user (userID) ON DELETE CASCADE; -ALTER TABLE wcf1_user_activity_event ADD FOREIGN KEY (languageID) REFERENCES wcf1_language (languageID) ON DELETE SET NULL; - -ALTER TABLE wcf1_user_activity_point ADD FOREIGN KEY (userID) REFERENCES wcf1_user (userID) ON DELETE CASCADE; -ALTER TABLE wcf1_user_activity_point ADD FOREIGN KEY (objectTypeID) REFERENCES wcf1_object_type (objectTypeID) ON DELETE CASCADE; - -ALTER TABLE wcf1_user_authentication_failure ADD FOREIGN KEY (userID) REFERENCES wcf1_user (userID) ON DELETE SET NULL; - -ALTER TABLE wcf1_user_multifactor ADD FOREIGN KEY (userID) REFERENCES wcf1_user (userID) ON DELETE CASCADE; -ALTER TABLE wcf1_user_multifactor ADD FOREIGN KEY (objectTypeID) REFERENCES wcf1_object_type (objectTypeID) ON DELETE CASCADE; - -ALTER TABLE wcf1_user_multifactor_backup ADD FOREIGN KEY (setupID) REFERENCES wcf1_user_multifactor (setupID) ON DELETE CASCADE; - -ALTER TABLE wcf1_user_multifactor_email ADD FOREIGN KEY (setupID) REFERENCES wcf1_user_multifactor (setupID) ON DELETE CASCADE; - -ALTER TABLE wcf1_user_multifactor_totp ADD FOREIGN KEY (setupID) REFERENCES wcf1_user_multifactor (setupID) ON DELETE CASCADE; - -ALTER TABLE wcf1_user_object_watch ADD FOREIGN KEY (userID) REFERENCES wcf1_user (userID) ON DELETE CASCADE; -ALTER TABLE wcf1_user_object_watch ADD FOREIGN KEY (objectTypeID) REFERENCES wcf1_object_type (objectTypeID) ON DELETE CASCADE; - -ALTER TABLE wcf1_user_profile_visitor ADD FOREIGN KEY (ownerID) REFERENCES wcf1_user (userID) ON DELETE CASCADE; -ALTER TABLE wcf1_user_profile_visitor ADD FOREIGN KEY (userID) REFERENCES wcf1_user (userID) ON DELETE CASCADE; - -ALTER TABLE wcf1_user_session ADD FOREIGN KEY (userID) REFERENCES wcf1_user (userID) ON DELETE CASCADE; - -ALTER TABLE wcf1_user_special_trophy ADD FOREIGN KEY (userID) REFERENCES wcf1_user (userID) ON DELETE CASCADE; -ALTER TABLE wcf1_user_special_trophy ADD FOREIGN KEY (trophyID) REFERENCES wcf1_trophy (trophyID) ON DELETE CASCADE; - -ALTER TABLE wcf1_message_embedded_object ADD FOREIGN KEY (messageObjectTypeID) REFERENCES wcf1_object_type (objectTypeID) ON DELETE CASCADE; -ALTER TABLE wcf1_message_embedded_object ADD FOREIGN KEY (embeddedObjectTypeID) REFERENCES wcf1_object_type (objectTypeID) ON DELETE CASCADE; - -ALTER TABLE wcf1_moderation_queue ADD FOREIGN KEY (objectTypeID) REFERENCES wcf1_object_type (objectTypeID) ON DELETE CASCADE; -ALTER TABLE wcf1_moderation_queue ADD FOREIGN KEY (userID) REFERENCES wcf1_user (userID) ON DELETE SET NULL; -ALTER TABLE wcf1_moderation_queue ADD FOREIGN KEY (assignedUserID) REFERENCES wcf1_user (userID) ON DELETE SET NULL; - -ALTER TABLE wcf1_moderation_queue_to_user ADD FOREIGN KEY (queueID) REFERENCES wcf1_moderation_queue (queueID) ON DELETE CASCADE; -ALTER TABLE wcf1_moderation_queue_to_user ADD FOREIGN KEY (userID) REFERENCES wcf1_user (userID) ON DELETE CASCADE; - -ALTER TABLE wcf1_like ADD FOREIGN KEY (objectTypeID) REFERENCES wcf1_object_type (objectTypeID) ON DELETE CASCADE; -ALTER TABLE wcf1_like ADD FOREIGN KEY (userID) REFERENCES wcf1_user (userID) ON DELETE CASCADE; -ALTER TABLE wcf1_like ADD FOREIGN KEY (objectUserID) REFERENCES wcf1_user (userID) ON DELETE SET NULL; -ALTER TABLE wcf1_like ADD FOREIGN KEY (reactionTypeID) REFERENCES wcf1_reaction_type (reactionTypeID) ON DELETE CASCADE; - -ALTER TABLE wcf1_like_object ADD FOREIGN KEY (objectTypeID) REFERENCES wcf1_object_type (objectTypeID) ON DELETE CASCADE; -ALTER TABLE wcf1_like_object ADD FOREIGN KEY (objectUserID) REFERENCES wcf1_user (userID) ON DELETE SET NULL; - -/* SQL_PARSER_OFFSET */ - -ALTER TABLE wcf1_comment ADD FOREIGN KEY (objectTypeID) REFERENCES wcf1_object_type (objectTypeID) ON DELETE CASCADE; -ALTER TABLE wcf1_comment ADD FOREIGN KEY (userID) REFERENCES wcf1_user (userID) ON DELETE SET NULL; - -ALTER TABLE wcf1_comment_response ADD FOREIGN KEY (commentID) REFERENCES wcf1_comment (commentID) ON DELETE CASCADE; -ALTER TABLE wcf1_comment_response ADD FOREIGN KEY (userID) REFERENCES wcf1_user (userID) ON DELETE SET NULL; - -ALTER TABLE wcf1_label ADD FOREIGN KEY (groupID) REFERENCES wcf1_label_group (groupID) ON DELETE CASCADE; - -ALTER TABLE wcf1_label_group_to_object ADD FOREIGN KEY (groupID) REFERENCES wcf1_label_group (groupID) ON DELETE CASCADE; -ALTER TABLE wcf1_label_group_to_object ADD FOREIGN KEY (objectTypeID) REFERENCES wcf1_object_type (objectTypeID) ON DELETE CASCADE; - -ALTER TABLE wcf1_label_object ADD FOREIGN KEY (labelID) REFERENCES wcf1_label (labelID) ON DELETE CASCADE; -ALTER TABLE wcf1_label_object ADD FOREIGN KEY (objectTypeID) REFERENCES wcf1_object_type (objectTypeID) ON DELETE CASCADE; - -ALTER TABLE wcf1_tag ADD FOREIGN KEY (synonymFor) REFERENCES wcf1_tag (tagID) ON DELETE CASCADE; - -ALTER TABLE wcf1_tag_to_object ADD FOREIGN KEY (tagID) REFERENCES wcf1_tag (tagID) ON DELETE CASCADE; -ALTER TABLE wcf1_tag_to_object ADD FOREIGN KEY (languageID) REFERENCES wcf1_language (languageID) ON DELETE CASCADE; -ALTER TABLE wcf1_tag_to_object ADD FOREIGN KEY (objectTypeID) REFERENCES wcf1_object_type (objectTypeID) ON DELETE CASCADE; - -ALTER TABLE wcf1_stat_daily ADD FOREIGN KEY (objectTypeID) REFERENCES wcf1_object_type (objectTypeID) ON DELETE CASCADE; - -ALTER TABLE wcf1_poll ADD FOREIGN KEY (objectTypeID) REFERENCES wcf1_object_type (objectTypeID) ON DELETE CASCADE; - -ALTER TABLE wcf1_poll_option ADD FOREIGN KEY (pollID) REFERENCES wcf1_poll (pollID) ON DELETE CASCADE; - -ALTER TABLE wcf1_poll_option_vote ADD FOREIGN KEY (pollID) REFERENCES wcf1_poll (pollID) ON DELETE CASCADE; -ALTER TABLE wcf1_poll_option_vote ADD FOREIGN KEY (optionID) REFERENCES wcf1_poll_option (optionID) ON DELETE CASCADE; -ALTER TABLE wcf1_poll_option_vote ADD FOREIGN KEY (userID) REFERENCES wcf1_user (userID) ON DELETE CASCADE; - -ALTER TABLE wcf1_notice_dismissed ADD FOREIGN KEY (noticeID) REFERENCES wcf1_notice (noticeID) ON DELETE CASCADE; -ALTER TABLE wcf1_notice_dismissed ADD FOREIGN KEY (userID) REFERENCES wcf1_user (userID) ON DELETE CASCADE; - -/* SQL_PARSER_OFFSET */ - -/* default inserts */ -- default user groups INSERT INTO wcf1_user_group (groupID, groupName, groupDescription, groupType) VALUES (1, 'wcf.acp.group.group1', '', 1); -- Everyone INSERT INTO wcf1_user_group (groupID, groupName, groupDescription, groupType) VALUES (2, 'wcf.acp.group.group2', '', 2); -- Guests diff --git a/wcfsetup/setup/db/install_com.woltlab.wcf.php b/wcfsetup/setup/db/install_com.woltlab.wcf.php new file mode 100644 index 00000000000..1fab3ee7f87 --- /dev/null +++ b/wcfsetup/setup/db/install_com.woltlab.wcf.php @@ -0,0 +1,5049 @@ +columns([ + ObjectIdDatabaseTableColumn::create('optionID'), + NotNullInt10DatabaseTableColumn::create('packageID'), + NotNullInt10DatabaseTableColumn::create('objectTypeID'), + NotNullVarchar191DatabaseTableColumn::create('optionName'), + NotNullVarchar191DatabaseTableColumn::create('categoryName'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['optionID']), + DatabaseTableIndex::create('packageID') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['packageID', 'objectTypeID', 'optionName']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['packageID']) + ->referencedTable('wcf1_package') + ->referencedColumns(['packageID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['objectTypeID']) + ->referencedTable('wcf1_object_type') + ->referencedColumns(['objectTypeID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_acl_option_category') + ->columns([ + ObjectIdDatabaseTableColumn::create('categoryID'), + NotNullInt10DatabaseTableColumn::create('packageID'), + NotNullInt10DatabaseTableColumn::create('objectTypeID'), + NotNullVarchar191DatabaseTableColumn::create('categoryName'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['categoryID']), + DatabaseTableIndex::create('packageID') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['packageID', 'objectTypeID', 'categoryName']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['objectTypeID']) + ->referencedTable('wcf1_object_type') + ->referencedColumns(['objectTypeID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['packageID']) + ->referencedTable('wcf1_package') + ->referencedColumns(['packageID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_acl_option_to_group') + ->columns([ + NotNullInt10DatabaseTableColumn::create('optionID'), + NotNullInt10DatabaseTableColumn::create('objectID'), + NotNullInt10DatabaseTableColumn::create('groupID'), + TinyintDatabaseTableColumn::create('optionValue') + ->notNull() + ->defaultValue(0), + ]) + ->indices([ + DatabaseTableIndex::create('groupID') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['groupID', 'objectID', 'optionID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['groupID']) + ->referencedTable('wcf1_user_group') + ->referencedColumns(['groupID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['optionID']) + ->referencedTable('wcf1_acl_option') + ->referencedColumns(['optionID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_acl_option_to_user') + ->columns([ + NotNullInt10DatabaseTableColumn::create('optionID'), + NotNullInt10DatabaseTableColumn::create('objectID'), + NotNullInt10DatabaseTableColumn::create('userID'), + TinyintDatabaseTableColumn::create('optionValue') + ->notNull() + ->defaultValue(0), + ]) + ->indices([ + DatabaseTableIndex::create('userID') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['userID', 'objectID', 'optionID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['optionID']) + ->referencedTable('wcf1_acl_option') + ->referencedColumns(['optionID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['userID']) + ->referencedTable('wcf1_user') + ->referencedColumns(['userID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_acl_simple_to_group') + ->columns([ + NotNullInt10DatabaseTableColumn::create('objectTypeID'), + NotNullInt10DatabaseTableColumn::create('objectID'), + NotNullInt10DatabaseTableColumn::create('groupID'), + ]) + ->indices([ + DatabaseTableIndex::create('groupKey') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['objectTypeID', 'objectID', 'groupID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['objectTypeID']) + ->referencedTable('wcf1_object_type') + ->referencedColumns(['objectTypeID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['groupID']) + ->referencedTable('wcf1_user_group') + ->referencedColumns(['groupID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_acl_simple_to_user') + ->columns([ + NotNullInt10DatabaseTableColumn::create('objectTypeID'), + NotNullInt10DatabaseTableColumn::create('objectID'), + NotNullInt10DatabaseTableColumn::create('userID'), + ]) + ->indices([ + DatabaseTableIndex::create('userKey') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['objectTypeID', 'objectID', 'userID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['userID']) + ->referencedTable('wcf1_user') + ->referencedColumns(['userID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['objectTypeID']) + ->referencedTable('wcf1_object_type') + ->referencedColumns(['objectTypeID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_acp_dashboard_box_to_user') + ->columns([ + NotNullVarchar191DatabaseTableColumn::create('boxName'), + NotNullInt10DatabaseTableColumn::create('userID'), + TinyintDatabaseTableColumn::create('enabled') + ->notNull() + ->defaultValue(0), + NotNullInt10DatabaseTableColumn::create('showOrder') + ->defaultValue(0), + ]) + ->indices([ + DatabaseTableIndex::create('boxToUser') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['boxName', 'userID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['userID']) + ->referencedTable('wcf1_user') + ->referencedColumns(['userID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_acp_menu_item') + ->columns([ + ObjectIdDatabaseTableColumn::create('menuItemID'), + NotNullInt10DatabaseTableColumn::create('packageID'), + NotNullVarchar191DatabaseTableColumn::create('menuItem') + ->defaultValue(''), + NotNullVarchar191DatabaseTableColumn::create('parentMenuItem') + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('menuItemController') + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('menuItemLink') + ->defaultValue(''), + NotNullInt10DatabaseTableColumn::create('showOrder') + ->defaultValue(0), + TextDatabaseTableColumn::create('permissions'), + TextDatabaseTableColumn::create('options'), + NotNullVarchar255DatabaseTableColumn::create('icon') + ->defaultValue(''), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['menuItemID']), + DatabaseTableIndex::create('menuItem') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['menuItem', 'packageID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['packageID']) + ->referencedTable('wcf1_package') + ->referencedColumns(['packageID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_acp_search_provider') + ->columns([ + ObjectIdDatabaseTableColumn::create('providerID'), + NotNullInt10DatabaseTableColumn::create('packageID'), + NotNullVarchar191DatabaseTableColumn::create('providerName') + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('className') + ->defaultValue(''), + NotNullInt10DatabaseTableColumn::create('showOrder') + ->defaultValue(0), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['providerID']), + DatabaseTableIndex::create('providerName') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['providerName', 'packageID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['packageID']) + ->referencedTable('wcf1_package') + ->referencedColumns(['packageID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_acp_session_access_log') + ->columns([ + ObjectIdDatabaseTableColumn::create('sessionAccessLogID'), + NotNullInt10DatabaseTableColumn::create('sessionLogID'), + VarcharDatabaseTableColumn::create('ipAddress') + ->notNull() + ->length(39) + ->defaultValue(''), + NotNullInt10DatabaseTableColumn::create('time') + ->defaultValue(0), + NotNullVarchar255DatabaseTableColumn::create('requestURI') + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('requestMethod') + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('className') + ->defaultValue(''), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['sessionAccessLogID']), + DatabaseTableIndex::create('sessionLogID') + ->columns(['sessionLogID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['sessionLogID']) + ->referencedTable('wcf1_acp_session_log') + ->referencedColumns(['sessionLogID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_acp_session_log') + ->columns([ + ObjectIdDatabaseTableColumn::create('sessionLogID'), + CharDatabaseTableColumn::create('sessionID') + ->notNull() + ->length(40) + ->defaultValue(''), + IntDatabaseTableColumn::create('userID'), + VarcharDatabaseTableColumn::create('ipAddress') + ->notNull() + ->length(39) + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('hostname') + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('userAgent') + ->defaultValue(''), + NotNullInt10DatabaseTableColumn::create('time') + ->defaultValue(0), + NotNullInt10DatabaseTableColumn::create('lastActivityTime') + ->defaultValue(0), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['sessionLogID']), + DatabaseTableIndex::create('sessionID') + ->columns(['sessionID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['userID']) + ->referencedTable('wcf1_user') + ->referencedColumns(['userID']) + ->onDelete('SET NULL') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_acp_template') + ->columns([ + ObjectIdDatabaseTableColumn::create('templateID'), + NotNullInt10DatabaseTableColumn::create('packageID'), + NotNullVarchar191DatabaseTableColumn::create('templateName'), + VarcharDatabaseTableColumn::create('application') + ->notNull() + ->length(20), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['templateID']), + DatabaseTableIndex::create('applicationTemplate') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['application', 'templateName']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['packageID']) + ->referencedTable('wcf1_package') + ->referencedColumns(['packageID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_ad') + ->columns([ + ObjectIdDatabaseTableColumn::create('adID'), + NotNullInt10DatabaseTableColumn::create('objectTypeID'), + NotNullVarchar255DatabaseTableColumn::create('adName'), + MediumtextDatabaseTableColumn::create('ad'), + DefaultFalseBooleanDatabaseTableColumn::create('isDisabled'), + NotNullInt10DatabaseTableColumn::create('showOrder') + ->defaultValue(0), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['adID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['objectTypeID']) + ->referencedTable('wcf1_object_type') + ->referencedColumns(['objectTypeID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_application') + ->columns([ + NotNullInt10DatabaseTableColumn::create('packageID'), + NotNullVarchar255DatabaseTableColumn::create('domainName'), + NotNullVarchar255DatabaseTableColumn::create('domainPath') + ->defaultValue('/'), + NotNullVarchar255DatabaseTableColumn::create('cookieDomain'), + DefaultFalseBooleanDatabaseTableColumn::create('isTainted'), + IntDatabaseTableColumn::create('landingPageID'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['packageID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['packageID']) + ->referencedTable('wcf1_package') + ->referencedColumns(['packageID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['landingPageID']) + ->referencedTable('wcf1_page') + ->referencedColumns(['pageID']) + ->onDelete('SET NULL') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_article') + ->columns([ + ObjectIdDatabaseTableColumn::create('articleID'), + IntDatabaseTableColumn::create('userID'), + NotNullVarchar255DatabaseTableColumn::create('username') + ->defaultValue(''), + NotNullInt10DatabaseTableColumn::create('time') + ->defaultValue(0), + NotNullInt10DatabaseTableColumn::create('categoryID'), + DefaultFalseBooleanDatabaseTableColumn::create('isMultilingual'), + TinyintDatabaseTableColumn::create('publicationStatus') + ->notNull() + ->defaultValue(1), + NotNullInt10DatabaseTableColumn::create('publicationDate') + ->defaultValue(0), + TinyintDatabaseTableColumn::create('enableComments') + ->notNull() + ->defaultValue(1), + MediumintDatabaseTableColumn::create('views') + ->notNull() + ->defaultValue(0), + MediumintDatabaseTableColumn::create('cumulativeLikes') + ->notNull() + ->defaultValue(0), + SmallintDatabaseTableColumn::create('attachments') + ->notNull() + ->defaultValue(0), + DefaultFalseBooleanDatabaseTableColumn::create('isDeleted'), + DefaultFalseBooleanDatabaseTableColumn::create('hasLabels'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['articleID']), + DatabaseTableIndex::create('time') + ->columns(['time']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['categoryID']) + ->referencedTable('wcf1_category') + ->referencedColumns(['categoryID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['userID']) + ->referencedTable('wcf1_user') + ->referencedColumns(['userID']) + ->onDelete('SET NULL') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_article_content') + ->columns([ + ObjectIdDatabaseTableColumn::create('articleContentID'), + NotNullInt10DatabaseTableColumn::create('articleID'), + IntDatabaseTableColumn::create('languageID'), + NotNullVarchar255DatabaseTableColumn::create('title'), + TextDatabaseTableColumn::create('teaser'), + MediumtextDatabaseTableColumn::create('content'), + IntDatabaseTableColumn::create('imageID'), + IntDatabaseTableColumn::create('teaserImageID'), + DefaultFalseBooleanDatabaseTableColumn::create('hasEmbeddedObjects'), + NotNullVarchar255DatabaseTableColumn::create('metaTitle') + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('metaDescription') + ->defaultValue(''), + SmallintDatabaseTableColumn::create('comments') + ->notNull() + ->defaultValue(0), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['articleContentID']), + DatabaseTableIndex::create('articleID') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['articleID', 'languageID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['teaserImageID']) + ->referencedTable('wcf1_media') + ->referencedColumns(['mediaID']) + ->onDelete('SET NULL') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['imageID']) + ->referencedTable('wcf1_media') + ->referencedColumns(['mediaID']) + ->onDelete('SET NULL') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['languageID']) + ->referencedTable('wcf1_language') + ->referencedColumns(['languageID']) + ->onDelete('SET NULL') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['articleID']) + ->referencedTable('wcf1_article') + ->referencedColumns(['articleID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_attachment') + ->columns([ + ObjectIdDatabaseTableColumn::create('attachmentID'), + NotNullInt10DatabaseTableColumn::create('objectTypeID'), + IntDatabaseTableColumn::create('objectID'), + IntDatabaseTableColumn::create('userID'), + VarcharDatabaseTableColumn::create('tmpHash') + ->notNull() + ->length(40) + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('filename') + ->defaultValue(''), + NotNullInt10DatabaseTableColumn::create('filesize') + ->defaultValue(0), + NotNullVarchar255DatabaseTableColumn::create('fileType') + ->defaultValue(''), + VarcharDatabaseTableColumn::create('fileHash') + ->notNull() + ->length(40) + ->defaultValue(''), + DefaultFalseBooleanDatabaseTableColumn::create('isImage'), + SmallintDatabaseTableColumn::create('width') + ->notNull() + ->defaultValue(0), + SmallintDatabaseTableColumn::create('height') + ->notNull() + ->defaultValue(0), + NotNullVarchar255DatabaseTableColumn::create('tinyThumbnailType') + ->defaultValue(''), + NotNullInt10DatabaseTableColumn::create('tinyThumbnailSize') + ->defaultValue(0), + SmallintDatabaseTableColumn::create('tinyThumbnailWidth') + ->notNull() + ->defaultValue(0), + SmallintDatabaseTableColumn::create('tinyThumbnailHeight') + ->notNull() + ->defaultValue(0), + NotNullVarchar255DatabaseTableColumn::create('thumbnailType') + ->defaultValue(''), + NotNullInt10DatabaseTableColumn::create('thumbnailSize') + ->defaultValue(0), + SmallintDatabaseTableColumn::create('thumbnailWidth') + ->notNull() + ->defaultValue(0), + SmallintDatabaseTableColumn::create('thumbnailHeight') + ->notNull() + ->defaultValue(0), + NotNullInt10DatabaseTableColumn::create('downloads') + ->defaultValue(0), + NotNullInt10DatabaseTableColumn::create('lastDownloadTime') + ->defaultValue(0), + NotNullInt10DatabaseTableColumn::create('uploadTime') + ->defaultValue(0), + SmallintDatabaseTableColumn::create('showOrder') + ->notNull() + ->defaultValue(0), + IntDatabaseTableColumn::create('fileID'), + IntDatabaseTableColumn::create('thumbnailID'), + IntDatabaseTableColumn::create('tinyThumbnailID'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['attachmentID']), + DatabaseTableIndex::create('objectTypeID') + ->columns(['objectTypeID', 'objectID']), + DatabaseTableIndex::create('objectTypeID_2') + ->columns(['objectTypeID', 'tmpHash']), + DatabaseTableIndex::create('objectID') + ->columns(['objectID', 'uploadTime']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['userID']) + ->referencedTable('wcf1_user') + ->referencedColumns(['userID']) + ->onDelete('SET NULL') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['tinyThumbnailID']) + ->referencedTable('wcf1_file_thumbnail') + ->referencedColumns(['thumbnailID']) + ->onDelete('SET NULL') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['fileID']) + ->referencedTable('wcf1_file') + ->referencedColumns(['fileID']) + ->onDelete('SET NULL') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['objectTypeID']) + ->referencedTable('wcf1_object_type') + ->referencedColumns(['objectTypeID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['thumbnailID']) + ->referencedTable('wcf1_file_thumbnail') + ->referencedColumns(['thumbnailID']) + ->onDelete('SET NULL') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_background_job') + ->columns([ + ObjectIdDatabaseTableColumn::create('jobID'), + MediumblobDatabaseTableColumn::create('job') + ->notNull(), + EnumDatabaseTableColumn::create('status') + ->notNull() + ->enumValues([ + 'ready', + 'processing', + ]) + ->defaultValue('ready'), + NotNullInt10DatabaseTableColumn::create('time'), + VarcharDatabaseTableColumn::create('identifier') + ->length(191), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['jobID']), + DatabaseTableIndex::create('identifier') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['identifier']), + DatabaseTableIndex::create('status') + ->columns(['status', 'time']), + ]), + DatabaseTable::create('wcf1_bbcode') + ->columns([ + ObjectIdDatabaseTableColumn::create('bbcodeID'), + NotNullVarchar191DatabaseTableColumn::create('bbcodeTag'), + NotNullInt10DatabaseTableColumn::create('packageID'), + NotNullVarchar255DatabaseTableColumn::create('htmlOpen') + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('htmlClose') + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('className') + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('wysiwygIcon') + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('buttonLabel') + ->defaultValue(''), + DefaultFalseBooleanDatabaseTableColumn::create('isBlockElement'), + DefaultFalseBooleanDatabaseTableColumn::create('isSourceCode'), + TinyintDatabaseTableColumn::create('showButton') + ->notNull() + ->defaultValue(0), + DefaultFalseBooleanDatabaseTableColumn::create('originIsSystem'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['bbcodeID']), + DatabaseTableIndex::create('bbcodeTag') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['bbcodeTag']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['packageID']) + ->referencedTable('wcf1_package') + ->referencedColumns(['packageID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_bbcode_attribute') + ->columns([ + ObjectIdDatabaseTableColumn::create('attributeID'), + NotNullInt10DatabaseTableColumn::create('bbcodeID'), + TinyintDatabaseTableColumn::create('attributeNo') + ->notNull() + ->defaultValue(0), + NotNullVarchar255DatabaseTableColumn::create('attributeHtml') + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('validationPattern') + ->defaultValue(''), + TinyintDatabaseTableColumn::create('required') + ->notNull() + ->defaultValue(0), + TinyintDatabaseTableColumn::create('useText') + ->notNull() + ->defaultValue(0), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['attributeID']), + DatabaseTableIndex::create('attributeNo') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['bbcodeID', 'attributeNo']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['bbcodeID']) + ->referencedTable('wcf1_bbcode') + ->referencedColumns(['bbcodeID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_bbcode_media_provider') + ->columns([ + ObjectIdDatabaseTableColumn::create('providerID'), + VarcharDatabaseTableColumn::create('name') + ->notNull() + ->length(80), + NotNullInt10DatabaseTableColumn::create('packageID'), + NotNullVarchar255DatabaseTableColumn::create('title'), + TextDatabaseTableColumn::create('regex') + ->notNull(), + TextDatabaseTableColumn::create('html') + ->notNull(), + NotNullVarchar255DatabaseTableColumn::create('className') + ->defaultValue(''), + DefaultFalseBooleanDatabaseTableColumn::create('isDisabled'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['providerID']), + DatabaseTableIndex::create('name') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['name', 'packageID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['packageID']) + ->referencedTable('wcf1_package') + ->referencedColumns(['packageID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_blacklist_entry') + ->columns([ + EnumDatabaseTableColumn::create('type') + ->enumValues([ + 'email', + 'ipv4', + 'ipv6', + 'username', + ]), + BinaryDatabaseTableColumn::create('hash') + ->length(32), + DatetimeDatabaseTableColumn::create('lastSeen') + ->notNull(), + SmallintDatabaseTableColumn::create('occurrences') + ->notNull(), + ]) + ->indices([ + DatabaseTableIndex::create('entry') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['type', 'hash']), + DatabaseTableIndex::create('numberOfReports') + ->columns(['type', 'occurrences']), + DatabaseTableIndex::create('lastSeen') + ->columns(['lastSeen']), + ]), + DatabaseTable::create('wcf1_blacklist_status') + ->columns([ + DateDatabaseTableColumn::create('date') + ->notNull(), + TinyintDatabaseTableColumn::create('delta1') + ->notNull() + ->defaultValue(0), + TinyintDatabaseTableColumn::create('delta2') + ->notNull() + ->defaultValue(0), + TinyintDatabaseTableColumn::create('delta3') + ->notNull() + ->defaultValue(0), + TinyintDatabaseTableColumn::create('delta4') + ->notNull() + ->defaultValue(0), + ]) + ->indices([ + DatabaseTableIndex::create('day') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['date']), + ]), + DatabaseTable::create('wcf1_box') + ->columns([ + ObjectIdDatabaseTableColumn::create('boxID'), + IntDatabaseTableColumn::create('objectTypeID'), + NotNullVarchar255DatabaseTableColumn::create('identifier'), + NotNullVarchar255DatabaseTableColumn::create('name'), + NotNullVarchar255DatabaseTableColumn::create('boxType'), + NotNullVarchar255DatabaseTableColumn::create('position'), + NotNullInt10DatabaseTableColumn::create('showOrder') + ->defaultValue(0), + TinyintDatabaseTableColumn::create('visibleEverywhere') + ->notNull() + ->defaultValue(1), + DefaultFalseBooleanDatabaseTableColumn::create('isMultilingual'), + NotNullInt10DatabaseTableColumn::create('lastUpdateTime') + ->defaultValue(0), + NotNullVarchar255DatabaseTableColumn::create('cssClassName') + ->defaultValue(''), + TinyintDatabaseTableColumn::create('showHeader') + ->notNull() + ->defaultValue(1), + DefaultFalseBooleanDatabaseTableColumn::create('originIsSystem'), + NotNullInt10DatabaseTableColumn::create('packageID'), + IntDatabaseTableColumn::create('menuID'), + IntDatabaseTableColumn::create('linkPageID'), + NotNullInt10DatabaseTableColumn::create('linkPageObjectID') + ->defaultValue(0), + NotNullVarchar255DatabaseTableColumn::create('externalURL') + ->defaultValue(''), + DefaultFalseBooleanDatabaseTableColumn::create('isDisabled'), + TinyintDatabaseTableColumn::create('invertPermissions') + ->notNull() + ->defaultValue(0), + TextDatabaseTableColumn::create('additionalData'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['boxID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['linkPageID']) + ->referencedTable('wcf1_page') + ->referencedColumns(['pageID']) + ->onDelete('SET NULL') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['objectTypeID']) + ->referencedTable('wcf1_object_type') + ->referencedColumns(['objectTypeID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['packageID']) + ->referencedTable('wcf1_package') + ->referencedColumns(['packageID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['menuID']) + ->referencedTable('wcf1_menu') + ->referencedColumns(['menuID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_box_content') + ->columns([ + ObjectIdDatabaseTableColumn::create('boxContentID'), + NotNullInt10DatabaseTableColumn::create('boxID'), + IntDatabaseTableColumn::create('languageID'), + NotNullVarchar255DatabaseTableColumn::create('title'), + MediumtextDatabaseTableColumn::create('content'), + IntDatabaseTableColumn::create('imageID'), + DefaultFalseBooleanDatabaseTableColumn::create('hasEmbeddedObjects'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['boxContentID']), + DatabaseTableIndex::create('boxID') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['boxID', 'languageID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['languageID']) + ->referencedTable('wcf1_language') + ->referencedColumns(['languageID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['boxID']) + ->referencedTable('wcf1_box') + ->referencedColumns(['boxID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['imageID']) + ->referencedTable('wcf1_media') + ->referencedColumns(['mediaID']) + ->onDelete('SET NULL') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_box_to_page') + ->columns([ + NotNullInt10DatabaseTableColumn::create('boxID'), + NotNullInt10DatabaseTableColumn::create('pageID'), + TinyintDatabaseTableColumn::create('visible') + ->notNull() + ->defaultValue(1), + ]) + ->indices([ + DatabaseTableIndex::create('pageID') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['pageID', 'boxID']), + DatabaseTableIndex::create('pageID_2') + ->columns(['pageID', 'visible']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['boxID']) + ->referencedTable('wcf1_box') + ->referencedColumns(['boxID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['pageID']) + ->referencedTable('wcf1_page') + ->referencedColumns(['pageID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_captcha_question') + ->columns([ + ObjectIdDatabaseTableColumn::create('questionID'), + NotNullVarchar255DatabaseTableColumn::create('question'), + MediumtextDatabaseTableColumn::create('answers'), + DefaultFalseBooleanDatabaseTableColumn::create('isDisabled'), + NotNullInt10DatabaseTableColumn::create('views') + ->defaultValue(0), + NotNullInt10DatabaseTableColumn::create('correctSubmissions') + ->defaultValue(0), + NotNullInt10DatabaseTableColumn::create('incorrectSubmissions') + ->defaultValue(0), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['questionID']), + ]), + DatabaseTable::create('wcf1_category') + ->columns([ + ObjectIdDatabaseTableColumn::create('categoryID'), + NotNullInt10DatabaseTableColumn::create('objectTypeID'), + NotNullInt10DatabaseTableColumn::create('parentCategoryID') + ->defaultValue(0), + NotNullVarchar255DatabaseTableColumn::create('title'), + TextDatabaseTableColumn::create('description'), + TinyintDatabaseTableColumn::create('descriptionUseHtml') + ->notNull() + ->defaultValue(0), + NotNullInt10DatabaseTableColumn::create('showOrder') + ->defaultValue(0), + NotNullInt10DatabaseTableColumn::create('time') + ->defaultValue(0), + DefaultFalseBooleanDatabaseTableColumn::create('isDisabled'), + TextDatabaseTableColumn::create('additionalData'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['categoryID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['objectTypeID']) + ->referencedTable('wcf1_object_type') + ->referencedColumns(['objectTypeID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_clipboard_action') + ->columns([ + ObjectIdDatabaseTableColumn::create('actionID'), + NotNullInt10DatabaseTableColumn::create('packageID') + ->defaultValue(0), + VarcharDatabaseTableColumn::create('actionName') + ->notNull() + ->length(50) + ->defaultValue(''), + NotNullVarchar191DatabaseTableColumn::create('actionClassName') + ->defaultValue(''), + NotNullInt10DatabaseTableColumn::create('showOrder') + ->defaultValue(0), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['actionID']), + DatabaseTableIndex::create('actionName') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['packageID', 'actionName', 'actionClassName']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['packageID']) + ->referencedTable('wcf1_package') + ->referencedColumns(['packageID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_clipboard_item') + ->columns([ + NotNullInt10DatabaseTableColumn::create('objectTypeID') + ->defaultValue(0), + NotNullInt10DatabaseTableColumn::create('userID') + ->defaultValue(0), + NotNullInt10DatabaseTableColumn::create('objectID') + ->defaultValue(0), + ]) + ->indices([ + DatabaseTableIndex::create('objectTypeID') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['objectTypeID', 'userID', 'objectID']), + DatabaseTableIndex::create('userID') + ->columns(['userID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['objectTypeID']) + ->referencedTable('wcf1_object_type') + ->referencedColumns(['objectTypeID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_clipboard_page') + ->columns([ + VarcharDatabaseTableColumn::create('pageClassName') + ->notNull() + ->length(80) + ->defaultValue(''), + NotNullInt10DatabaseTableColumn::create('packageID') + ->defaultValue(0), + NotNullInt10DatabaseTableColumn::create('actionID') + ->defaultValue(0), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['packageID']) + ->referencedTable('wcf1_package') + ->referencedColumns(['packageID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['actionID']) + ->referencedTable('wcf1_clipboard_action') + ->referencedColumns(['actionID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_comment') + ->columns([ + ObjectIdDatabaseTableColumn::create('commentID'), + NotNullInt10DatabaseTableColumn::create('objectTypeID'), + NotNullInt10DatabaseTableColumn::create('objectID'), + NotNullInt10DatabaseTableColumn::create('time') + ->defaultValue(0), + IntDatabaseTableColumn::create('userID'), + NotNullVarchar255DatabaseTableColumn::create('username'), + MediumtextDatabaseTableColumn::create('message') + ->notNull(), + MediumintDatabaseTableColumn::create('responses') + ->notNull() + ->defaultValue(0), + NotNullVarchar255DatabaseTableColumn::create('responseIDs') + ->defaultValue(''), + MediumintDatabaseTableColumn::create('unfilteredResponses') + ->notNull() + ->defaultValue(0), + NotNullVarchar255DatabaseTableColumn::create('unfilteredResponseIDs') + ->defaultValue(''), + TinyintDatabaseTableColumn::create('enableHtml') + ->notNull() + ->defaultValue(0), + DefaultFalseBooleanDatabaseTableColumn::create('isDisabled'), + DefaultFalseBooleanDatabaseTableColumn::create('hasEmbeddedObjects'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['commentID']), + DatabaseTableIndex::create('objectTypeID') + ->columns(['objectTypeID', 'objectID', 'isDisabled', 'time']), + DatabaseTableIndex::create('lastCommentTime') + ->columns(['userID', 'time']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['objectTypeID']) + ->referencedTable('wcf1_object_type') + ->referencedColumns(['objectTypeID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['userID']) + ->referencedTable('wcf1_user') + ->referencedColumns(['userID']) + ->onDelete('SET NULL') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_comment_response') + ->columns([ + ObjectIdDatabaseTableColumn::create('responseID'), + NotNullInt10DatabaseTableColumn::create('commentID'), + NotNullInt10DatabaseTableColumn::create('time') + ->defaultValue(0), + IntDatabaseTableColumn::create('userID'), + NotNullVarchar255DatabaseTableColumn::create('username'), + MediumtextDatabaseTableColumn::create('message') + ->notNull(), + TinyintDatabaseTableColumn::create('enableHtml') + ->notNull() + ->defaultValue(0), + DefaultFalseBooleanDatabaseTableColumn::create('isDisabled'), + DefaultFalseBooleanDatabaseTableColumn::create('hasEmbeddedObjects'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['responseID']), + DatabaseTableIndex::create('commentID') + ->columns(['commentID', 'isDisabled', 'time']), + DatabaseTableIndex::create('lastResponseTime') + ->columns(['userID', 'time']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['userID']) + ->referencedTable('wcf1_user') + ->referencedColumns(['userID']) + ->onDelete('SET NULL') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['commentID']) + ->referencedTable('wcf1_comment') + ->referencedColumns(['commentID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_condition') + ->columns([ + ObjectIdDatabaseTableColumn::create('conditionID'), + NotNullInt10DatabaseTableColumn::create('objectTypeID'), + NotNullInt10DatabaseTableColumn::create('objectID'), + MediumtextDatabaseTableColumn::create('conditionData'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['conditionID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['objectTypeID']) + ->referencedTable('wcf1_object_type') + ->referencedColumns(['objectTypeID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_contact_attachment') + ->columns([ + NotNullInt10DatabaseTableColumn::create('attachmentID'), + CharDatabaseTableColumn::create('accessKey') + ->notNull() + ->length(40), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['attachmentID']) + ->referencedTable('wcf1_attachment') + ->referencedColumns(['attachmentID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_contact_option') + ->columns([ + ObjectIdDatabaseTableColumn::create('optionID'), + NotNullVarchar255DatabaseTableColumn::create('optionTitle') + ->defaultValue(''), + TextDatabaseTableColumn::create('optionDescription'), + NotNullVarchar255DatabaseTableColumn::create('optionType') + ->defaultValue(''), + MediumtextDatabaseTableColumn::create('configuration'), + NotNullInt10DatabaseTableColumn::create('showOrder') + ->defaultValue(0), + DefaultFalseBooleanDatabaseTableColumn::create('isDisabled'), + DefaultFalseBooleanDatabaseTableColumn::create('originIsSystem'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['optionID']), + ]), + DatabaseTable::create('wcf1_contact_recipient') + ->columns([ + ObjectIdDatabaseTableColumn::create('recipientID'), + NotNullVarchar255DatabaseTableColumn::create('name'), + NotNullVarchar255DatabaseTableColumn::create('email'), + NotNullInt10DatabaseTableColumn::create('showOrder') + ->defaultValue(0), + DefaultFalseBooleanDatabaseTableColumn::create('isAdministrator'), + DefaultFalseBooleanDatabaseTableColumn::create('isDisabled'), + DefaultFalseBooleanDatabaseTableColumn::create('originIsSystem'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['recipientID']), + ]), + DatabaseTable::create('wcf1_core_object') + ->columns([ + ObjectIdDatabaseTableColumn::create('objectID'), + NotNullInt10DatabaseTableColumn::create('packageID'), + NotNullVarchar191DatabaseTableColumn::create('objectName') + ->defaultValue(''), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['objectID']), + DatabaseTableIndex::create('object') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['packageID', 'objectName']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['packageID']) + ->referencedTable('wcf1_package') + ->referencedColumns(['packageID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_cronjob') + ->columns([ + ObjectIdDatabaseTableColumn::create('cronjobID'), + NotNullVarchar255DatabaseTableColumn::create('className') + ->defaultValue(''), + NotNullInt10DatabaseTableColumn::create('packageID'), + NotNullVarchar191DatabaseTableColumn::create('cronjobName'), + NotNullVarchar255DatabaseTableColumn::create('description') + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('startMinute') + ->defaultValue('*'), + NotNullVarchar255DatabaseTableColumn::create('startHour') + ->defaultValue('*'), + NotNullVarchar255DatabaseTableColumn::create('startDom') + ->defaultValue('*'), + NotNullVarchar255DatabaseTableColumn::create('startMonth') + ->defaultValue('*'), + NotNullVarchar255DatabaseTableColumn::create('startDow') + ->defaultValue('*'), + NotNullInt10DatabaseTableColumn::create('lastExec') + ->defaultValue(0), + NotNullInt10DatabaseTableColumn::create('nextExec') + ->defaultValue(0), + NotNullInt10DatabaseTableColumn::create('afterNextExec') + ->defaultValue(0), + DefaultFalseBooleanDatabaseTableColumn::create('isDisabled'), + TinyintDatabaseTableColumn::create('canBeEdited') + ->notNull() + ->defaultValue(1), + TinyintDatabaseTableColumn::create('canBeDisabled') + ->notNull() + ->defaultValue(1), + TinyintDatabaseTableColumn::create('state') + ->notNull() + ->defaultValue(0), + TinyintDatabaseTableColumn::create('failCount') + ->notNull() + ->defaultValue(0), + TextDatabaseTableColumn::create('options'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['cronjobID']), + DatabaseTableIndex::create('cronjobName') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['cronjobName', 'packageID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['packageID']) + ->referencedTable('wcf1_package') + ->referencedColumns(['packageID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_cronjob_log') + ->columns([ + ObjectIdDatabaseTableColumn::create('cronjobLogID'), + NotNullInt10DatabaseTableColumn::create('cronjobID'), + NotNullInt10DatabaseTableColumn::create('execTime') + ->defaultValue(0), + TinyintDatabaseTableColumn::create('success') + ->notNull() + ->defaultValue(0), + TextDatabaseTableColumn::create('error'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['cronjobLogID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['cronjobID']) + ->referencedTable('wcf1_cronjob') + ->referencedColumns(['cronjobID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_devtools_missing_language_item') + ->columns([ + ObjectIdDatabaseTableColumn::create('itemID'), + IntDatabaseTableColumn::create('languageID'), + NotNullVarchar191DatabaseTableColumn::create('languageItem'), + NotNullInt10DatabaseTableColumn::create('lastTime'), + MediumtextDatabaseTableColumn::create('stackTrace') + ->notNull(), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['itemID']), + DatabaseTableIndex::create('languageID') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['languageID', 'languageItem']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['languageID']) + ->referencedTable('wcf1_language') + ->referencedColumns(['languageID']) + ->onDelete('SET NULL') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_devtools_project') + ->columns([ + ObjectIdDatabaseTableColumn::create('projectID'), + NotNullVarchar191DatabaseTableColumn::create('name'), + TextDatabaseTableColumn::create('path'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['projectID']), + DatabaseTableIndex::create('name') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['name']), + ]), + DatabaseTable::create('wcf1_edit_history_entry') + ->columns([ + ObjectIdDatabaseTableColumn::create('entryID'), + NotNullInt10DatabaseTableColumn::create('objectTypeID'), + NotNullInt10DatabaseTableColumn::create('objectID'), + IntDatabaseTableColumn::create('userID'), + NotNullVarchar255DatabaseTableColumn::create('username') + ->defaultValue(''), + NotNullInt10DatabaseTableColumn::create('time') + ->defaultValue(0), + NotNullInt10DatabaseTableColumn::create('obsoletedAt') + ->defaultValue(0), + IntDatabaseTableColumn::create('obsoletedByUserID'), + MediumtextDatabaseTableColumn::create('message'), + TextDatabaseTableColumn::create('editReason'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['entryID']), + DatabaseTableIndex::create('objectTypeID') + ->columns(['objectTypeID', 'objectID']), + DatabaseTableIndex::create('obsoletedAt') + ->columns(['obsoletedAt', 'obsoletedByUserID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['objectTypeID']) + ->referencedTable('wcf1_object_type') + ->referencedColumns(['objectTypeID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['userID']) + ->referencedTable('wcf1_user') + ->referencedColumns(['userID']) + ->onDelete('SET NULL') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['obsoletedByUserID']) + ->referencedTable('wcf1_user') + ->referencedColumns(['userID']) + ->onDelete('SET NULL') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_email_log_entry') + ->columns([ + ObjectIdDatabaseTableColumn::create('entryID'), + NotNullInt10DatabaseTableColumn::create('time'), + NotNullVarchar255DatabaseTableColumn::create('messageID'), + NotNullVarchar255DatabaseTableColumn::create('subject'), + NotNullVarchar255DatabaseTableColumn::create('recipient'), + IntDatabaseTableColumn::create('recipientID'), + NotNullVarchar255DatabaseTableColumn::create('status'), + TextDatabaseTableColumn::create('message'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['entryID']), + DatabaseTableIndex::create('time') + ->columns(['time']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['recipientID']) + ->referencedTable('wcf1_user') + ->referencedColumns(['userID']) + ->onDelete('SET NULL') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_event_listener') + ->columns([ + ObjectIdDatabaseTableColumn::create('listenerID'), + NotNullInt10DatabaseTableColumn::create('packageID'), + EnumDatabaseTableColumn::create('environment') + ->notNull() + ->enumValues([ + 'user', + 'admin', + 'all', + ]) + ->defaultValue('user'), + NotNullVarchar191DatabaseTableColumn::create('listenerName'), + NotNullVarchar255DatabaseTableColumn::create('eventClassName') + ->defaultValue(''), + TextDatabaseTableColumn::create('eventName'), + VarcharDatabaseTableColumn::create('listenerClassName') + ->notNull() + ->length(200) + ->defaultValue(''), + TinyintDatabaseTableColumn::create('inherit') + ->notNull() + ->defaultValue(0), + TinyintDatabaseTableColumn::create('niceValue') + ->notNull() + ->defaultValue(0), + TextDatabaseTableColumn::create('permissions'), + TextDatabaseTableColumn::create('options'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['listenerID']), + DatabaseTableIndex::create('listenerName') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['listenerName', 'packageID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['packageID']) + ->referencedTable('wcf1_package') + ->referencedColumns(['packageID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_file') + ->columns([ + ObjectIdDatabaseTableColumn::create('fileID'), + NotNullVarchar255DatabaseTableColumn::create('filename'), + BigintDatabaseTableColumn::create('fileSize') + ->notNull(), + CharDatabaseTableColumn::create('fileHash') + ->notNull() + ->length(64), + VarcharDatabaseTableColumn::create('fileExtension') + ->notNull() + ->length(10), + IntDatabaseTableColumn::create('objectTypeID'), + NotNullVarchar255DatabaseTableColumn::create('mimeType'), + IntDatabaseTableColumn::create('width'), + IntDatabaseTableColumn::create('height'), + CharDatabaseTableColumn::create('fileHashWebp') + ->length(64), + IntDatabaseTableColumn::create('uploadTime'), + MediumblobDatabaseTableColumn::create('exifData'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['fileID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['objectTypeID']) + ->referencedTable('wcf1_object_type') + ->referencedColumns(['objectTypeID']) + ->onDelete('SET NULL') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_file_temporary') + ->columns([ + CharDatabaseTableColumn::create('identifier') + ->notNull() + ->length(40), + NotNullInt10DatabaseTableColumn::create('time'), + NotNullVarchar255DatabaseTableColumn::create('filename'), + BigintDatabaseTableColumn::create('fileSize') + ->notNull(), + CharDatabaseTableColumn::create('fileHash') + ->notNull() + ->length(64), + IntDatabaseTableColumn::create('objectTypeID'), + TextDatabaseTableColumn::create('context'), + VarbinaryDatabaseTableColumn::create('chunks') + ->notNull() + ->length(255), + MediumblobDatabaseTableColumn::create('exifData'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['identifier']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['objectTypeID']) + ->referencedTable('wcf1_object_type') + ->referencedColumns(['objectTypeID']) + ->onDelete('SET NULL') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_file_thumbnail') + ->columns([ + ObjectIdDatabaseTableColumn::create('thumbnailID'), + NotNullInt10DatabaseTableColumn::create('fileID'), + VarcharDatabaseTableColumn::create('identifier') + ->notNull() + ->length(50), + CharDatabaseTableColumn::create('fileHash') + ->notNull() + ->length(64), + VarcharDatabaseTableColumn::create('fileExtension') + ->notNull() + ->length(10), + NotNullInt10DatabaseTableColumn::create('width'), + NotNullInt10DatabaseTableColumn::create('height'), + CharDatabaseTableColumn::create('formatChecksum') + ->length(12), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['thumbnailID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['fileID']) + ->referencedTable('wcf1_file') + ->referencedColumns(['fileID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + /* + As the flood control table can be a high traffic table and as it is + periodically emptied, there is no foreign key on the `objectTypeID` + to speed up insertions. + */ + DatabaseTable::create('wcf1_flood_control') + ->columns([ + BigintDatabaseTableColumn::create('logID') + ->notNull() + ->autoIncrement(), + NotNullInt10DatabaseTableColumn::create('objectTypeID'), + BinaryDatabaseTableColumn::create('identifier') + ->notNull() + ->length(16), + NotNullInt10DatabaseTableColumn::create('time'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['logID']), + DatabaseTableIndex::create('identifier') + ->columns(['identifier']), + DatabaseTableIndex::create('time') + ->columns(['time']), + ]), + DatabaseTable::create('wcf1_import_mapping') + ->columns([ + CharDatabaseTableColumn::create('importHash') + ->notNull() + ->length(8), + NotNullInt10DatabaseTableColumn::create('objectTypeID'), + NotNullVarchar191DatabaseTableColumn::create('oldID'), + NotNullInt10DatabaseTableColumn::create('newID'), + ]) + ->indices([ + DatabaseTableIndex::create('importHash') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['importHash', 'objectTypeID', 'oldID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['objectTypeID']) + ->referencedTable('wcf1_object_type') + ->referencedColumns(['objectTypeID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_label') + ->columns([ + ObjectIdDatabaseTableColumn::create('labelID'), + NotNullInt10DatabaseTableColumn::create('groupID'), + VarcharDatabaseTableColumn::create('label') + ->notNull() + ->length(80), + NotNullVarchar255DatabaseTableColumn::create('cssClassName') + ->defaultValue(''), + NotNullInt10DatabaseTableColumn::create('showOrder') + ->defaultValue(0), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['labelID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['groupID']) + ->referencedTable('wcf1_label_group') + ->referencedColumns(['groupID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_label_group') + ->columns([ + ObjectIdDatabaseTableColumn::create('groupID'), + VarcharDatabaseTableColumn::create('groupName') + ->notNull() + ->length(80), + NotNullVarchar255DatabaseTableColumn::create('groupDescription') + ->defaultValue(''), + TinyintDatabaseTableColumn::create('forceSelection') + ->notNull() + ->defaultValue(0), + TinyintDatabaseTableColumn::create('sortAlphabetically') + ->notNull() + ->defaultValue(0), + NotNullInt10DatabaseTableColumn::create('showOrder') + ->defaultValue(0), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['groupID']), + ]), + DatabaseTable::create('wcf1_label_group_to_object') + ->columns([ + NotNullInt10DatabaseTableColumn::create('groupID'), + NotNullInt10DatabaseTableColumn::create('objectTypeID'), + IntDatabaseTableColumn::create('objectID'), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['objectTypeID']) + ->referencedTable('wcf1_object_type') + ->referencedColumns(['objectTypeID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['groupID']) + ->referencedTable('wcf1_label_group') + ->referencedColumns(['groupID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_label_object') + ->columns([ + NotNullInt10DatabaseTableColumn::create('labelID'), + NotNullInt10DatabaseTableColumn::create('objectTypeID'), + NotNullInt10DatabaseTableColumn::create('objectID'), + ]) + ->indices([ + DatabaseTableIndex::create('objectTypeID') + ->columns(['objectTypeID', 'labelID']), + DatabaseTableIndex::create('objectTypeID_2') + ->columns(['objectTypeID', 'objectID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['objectTypeID']) + ->referencedTable('wcf1_object_type') + ->referencedColumns(['objectTypeID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['labelID']) + ->referencedTable('wcf1_label') + ->referencedColumns(['labelID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_language') + ->columns([ + ObjectIdDatabaseTableColumn::create('languageID'), + VarcharDatabaseTableColumn::create('languageCode') + ->notNull() + ->length(20) + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('languageName') + ->defaultValue(''), + VarcharDatabaseTableColumn::create('countryCode') + ->notNull() + ->length(10) + ->defaultValue(''), + DefaultFalseBooleanDatabaseTableColumn::create('isDefault'), + DefaultFalseBooleanDatabaseTableColumn::create('hasContent'), + DefaultFalseBooleanDatabaseTableColumn::create('isDisabled'), + VarcharDatabaseTableColumn::create('locale') + ->notNull() + ->length(50) + ->defaultValue(''), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['languageID']), + DatabaseTableIndex::create('languageCode') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['languageCode']), + ]), + DatabaseTable::create('wcf1_language_category') + ->columns([ + ObjectIdDatabaseTableColumn::create('languageCategoryID'), + NotNullVarchar191DatabaseTableColumn::create('languageCategory') + ->defaultValue(''), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['languageCategoryID']), + DatabaseTableIndex::create('languageCategory') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['languageCategory']), + ]), + DatabaseTable::create('wcf1_language_item') + ->columns([ + ObjectIdDatabaseTableColumn::create('languageItemID'), + NotNullInt10DatabaseTableColumn::create('languageID'), + NotNullVarchar191DatabaseTableColumn::create('languageItem') + ->defaultValue(''), + MediumtextDatabaseTableColumn::create('languageItemValue') + ->notNull(), + MediumtextDatabaseTableColumn::create('languageCustomItemValue'), + TinyintDatabaseTableColumn::create('languageUseCustomValue') + ->notNull() + ->defaultValue(0), + DefaultTrueBooleanDatabaseTableColumn::create('languageItemOriginIsSystem'), + NotNullInt10DatabaseTableColumn::create('languageCategoryID'), + NotNullInt10DatabaseTableColumn::create('packageID'), + MediumtextDatabaseTableColumn::create('languageItemOldValue'), + IntDatabaseTableColumn::create('languageCustomItemDisableTime'), + DefaultFalseBooleanDatabaseTableColumn::create('isCustomLanguageItem'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['languageItemID']), + DatabaseTableIndex::create('languageItem') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['languageItem', 'languageID']), + DatabaseTableIndex::create('languageItemOriginIsSystem') + ->columns(['languageItemOriginIsSystem']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['packageID']) + ->referencedTable('wcf1_package') + ->referencedColumns(['packageID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['languageID']) + ->referencedTable('wcf1_language') + ->referencedColumns(['languageID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['languageCategoryID']) + ->referencedTable('wcf1_language_category') + ->referencedColumns(['languageCategoryID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_like') + ->columns([ + ObjectIdDatabaseTableColumn::create('likeID'), + NotNullInt10DatabaseTableColumn::create('objectID') + ->defaultValue(0), + NotNullInt10DatabaseTableColumn::create('objectTypeID'), + IntDatabaseTableColumn::create('objectUserID'), + NotNullInt10DatabaseTableColumn::create('userID'), + NotNullInt10DatabaseTableColumn::create('time') + ->defaultValue(1), + TinyintDatabaseTableColumn::create('likeValue') + ->notNull() + ->defaultValue(1), + NotNullInt10DatabaseTableColumn::create('reactionTypeID'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['likeID']), + DatabaseTableIndex::create('objectTypeID') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['objectTypeID', 'objectID', 'userID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['objectUserID']) + ->referencedTable('wcf1_user') + ->referencedColumns(['userID']) + ->onDelete('SET NULL') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['userID']) + ->referencedTable('wcf1_user') + ->referencedColumns(['userID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['objectTypeID']) + ->referencedTable('wcf1_object_type') + ->referencedColumns(['objectTypeID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['reactionTypeID']) + ->referencedTable('wcf1_reaction_type') + ->referencedColumns(['reactionTypeID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_like_object') + ->columns([ + ObjectIdDatabaseTableColumn::create('likeObjectID'), + NotNullInt10DatabaseTableColumn::create('objectTypeID'), + NotNullInt10DatabaseTableColumn::create('objectID') + ->defaultValue(0), + IntDatabaseTableColumn::create('objectUserID'), + MediumintDatabaseTableColumn::create('likes') + ->notNull() + ->defaultValue(0), + MediumintDatabaseTableColumn::create('dislikes') + ->notNull() + ->defaultValue(0), + MediumintDatabaseTableColumn::create('cumulativeLikes') + ->notNull() + ->defaultValue(0), + TextDatabaseTableColumn::create('cachedUsers'), + TextDatabaseTableColumn::create('cachedReactions'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['likeObjectID']), + DatabaseTableIndex::create('objectTypeID') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['objectTypeID', 'objectID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['objectTypeID']) + ->referencedTable('wcf1_object_type') + ->referencedColumns(['objectTypeID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['objectUserID']) + ->referencedTable('wcf1_user') + ->referencedColumns(['userID']) + ->onDelete('SET NULL') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_media') + ->columns([ + ObjectIdDatabaseTableColumn::create('mediaID'), + IntDatabaseTableColumn::create('categoryID'), + NotNullVarchar255DatabaseTableColumn::create('filename') + ->defaultValue(''), + NotNullInt10DatabaseTableColumn::create('filesize') + ->defaultValue(0), + NotNullVarchar255DatabaseTableColumn::create('fileType') + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('fileHash') + ->defaultValue(''), + NotNullInt10DatabaseTableColumn::create('uploadTime') + ->defaultValue(0), + NotNullInt10DatabaseTableColumn::create('fileUpdateTime') + ->defaultValue(0), + IntDatabaseTableColumn::create('userID'), + NotNullVarchar255DatabaseTableColumn::create('username'), + IntDatabaseTableColumn::create('languageID'), + DefaultFalseBooleanDatabaseTableColumn::create('isMultilingual'), + TinyintDatabaseTableColumn::create('captionEnableHtml') + ->notNull() + ->defaultValue(0), + DefaultFalseBooleanDatabaseTableColumn::create('isImage'), + SmallintDatabaseTableColumn::create('width') + ->notNull() + ->defaultValue(0), + SmallintDatabaseTableColumn::create('height') + ->notNull() + ->defaultValue(0), + NotNullVarchar255DatabaseTableColumn::create('tinyThumbnailType') + ->defaultValue(''), + NotNullInt10DatabaseTableColumn::create('tinyThumbnailSize') + ->defaultValue(0), + SmallintDatabaseTableColumn::create('tinyThumbnailWidth') + ->notNull() + ->defaultValue(0), + SmallintDatabaseTableColumn::create('tinyThumbnailHeight') + ->notNull() + ->defaultValue(0), + NotNullVarchar255DatabaseTableColumn::create('smallThumbnailType') + ->defaultValue(''), + NotNullInt10DatabaseTableColumn::create('smallThumbnailSize') + ->defaultValue(0), + SmallintDatabaseTableColumn::create('smallThumbnailWidth') + ->notNull() + ->defaultValue(0), + SmallintDatabaseTableColumn::create('smallThumbnailHeight') + ->notNull() + ->defaultValue(0), + NotNullVarchar255DatabaseTableColumn::create('mediumThumbnailType') + ->defaultValue(''), + NotNullInt10DatabaseTableColumn::create('mediumThumbnailSize') + ->defaultValue(0), + SmallintDatabaseTableColumn::create('mediumThumbnailWidth') + ->notNull() + ->defaultValue(0), + SmallintDatabaseTableColumn::create('mediumThumbnailHeight') + ->notNull() + ->defaultValue(0), + NotNullVarchar255DatabaseTableColumn::create('largeThumbnailType') + ->defaultValue(''), + NotNullInt10DatabaseTableColumn::create('largeThumbnailSize') + ->defaultValue(0), + SmallintDatabaseTableColumn::create('largeThumbnailWidth') + ->notNull() + ->defaultValue(0), + SmallintDatabaseTableColumn::create('largeThumbnailHeight') + ->notNull() + ->defaultValue(0), + NotNullInt10DatabaseTableColumn::create('downloads') + ->defaultValue(0), + NotNullInt10DatabaseTableColumn::create('lastDownloadTime') + ->defaultValue(0), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['mediaID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['categoryID']) + ->referencedTable('wcf1_category') + ->referencedColumns(['categoryID']) + ->onDelete('SET NULL') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['languageID']) + ->referencedTable('wcf1_language') + ->referencedColumns(['languageID']) + ->onDelete('SET NULL') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['userID']) + ->referencedTable('wcf1_user') + ->referencedColumns(['userID']) + ->onDelete('SET NULL') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_media_content') + ->columns([ + NotNullInt10DatabaseTableColumn::create('mediaID'), + IntDatabaseTableColumn::create('languageID'), + NotNullVarchar255DatabaseTableColumn::create('title'), + TextDatabaseTableColumn::create('caption'), + NotNullVarchar255DatabaseTableColumn::create('altText') + ->defaultValue(''), + ]) + ->indices([ + DatabaseTableIndex::create('mediaID') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['mediaID', 'languageID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['mediaID']) + ->referencedTable('wcf1_media') + ->referencedColumns(['mediaID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['languageID']) + ->referencedTable('wcf1_language') + ->referencedColumns(['languageID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_menu') + ->columns([ + ObjectIdDatabaseTableColumn::create('menuID'), + NotNullVarchar255DatabaseTableColumn::create('identifier'), + NotNullVarchar255DatabaseTableColumn::create('title'), + DefaultFalseBooleanDatabaseTableColumn::create('originIsSystem'), + NotNullInt10DatabaseTableColumn::create('packageID'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['menuID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['packageID']) + ->referencedTable('wcf1_package') + ->referencedColumns(['packageID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_menu_item') + ->columns([ + ObjectIdDatabaseTableColumn::create('itemID'), + NotNullInt10DatabaseTableColumn::create('menuID'), + IntDatabaseTableColumn::create('parentItemID'), + NotNullVarchar255DatabaseTableColumn::create('identifier'), + NotNullVarchar255DatabaseTableColumn::create('title'), + IntDatabaseTableColumn::create('pageID'), + NotNullInt10DatabaseTableColumn::create('pageObjectID') + ->defaultValue(0), + NotNullVarchar255DatabaseTableColumn::create('externalURL') + ->defaultValue(''), + NotNullInt10DatabaseTableColumn::create('showOrder') + ->defaultValue(0), + DefaultFalseBooleanDatabaseTableColumn::create('isDisabled'), + DefaultFalseBooleanDatabaseTableColumn::create('originIsSystem'), + NotNullInt10DatabaseTableColumn::create('packageID'), + NotNullVarchar255DatabaseTableColumn::create('urlParameters') + ->defaultValue(''), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['itemID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['packageID']) + ->referencedTable('wcf1_package') + ->referencedColumns(['packageID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['menuID']) + ->referencedTable('wcf1_menu') + ->referencedColumns(['menuID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['parentItemID']) + ->referencedTable('wcf1_menu_item') + ->referencedColumns(['itemID']) + ->onDelete('SET NULL') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['pageID']) + ->referencedTable('wcf1_page') + ->referencedColumns(['pageID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_message_embedded_object') + ->columns([ + NotNullInt10DatabaseTableColumn::create('messageObjectTypeID'), + NotNullInt10DatabaseTableColumn::create('messageID'), + NotNullInt10DatabaseTableColumn::create('embeddedObjectTypeID'), + NotNullInt10DatabaseTableColumn::create('embeddedObjectID'), + ]) + ->indices([ + DatabaseTableIndex::create('messageEmbeddedObject') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['messageObjectTypeID', 'messageID', 'embeddedObjectTypeID', 'embeddedObjectID']), + DatabaseTableIndex::create('messageObjectTypeID') + ->columns(['messageObjectTypeID', 'messageID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['embeddedObjectTypeID']) + ->referencedTable('wcf1_object_type') + ->referencedColumns(['objectTypeID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['messageObjectTypeID']) + ->referencedTable('wcf1_object_type') + ->referencedColumns(['objectTypeID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_moderation_queue') + ->columns([ + ObjectIdDatabaseTableColumn::create('queueID'), + NotNullInt10DatabaseTableColumn::create('objectTypeID'), + NotNullInt10DatabaseTableColumn::create('objectID'), + NotNullInt10DatabaseTableColumn::create('containerID') + ->defaultValue(0), + IntDatabaseTableColumn::create('userID'), + NotNullInt10DatabaseTableColumn::create('time') + ->defaultValue(0), + IntDatabaseTableColumn::create('assignedUserID'), + TinyintDatabaseTableColumn::create('status') + ->notNull() + ->defaultValue(0), + SmallintDatabaseTableColumn::create('comments') + ->notNull() + ->defaultValue(0), + NotNullInt10DatabaseTableColumn::create('lastChangeTime') + ->defaultValue(0), + TextDatabaseTableColumn::create('additionalData'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['queueID']), + DatabaseTableIndex::create('objectTypeAndID') + ->columns(['objectTypeID', 'objectID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['objectTypeID']) + ->referencedTable('wcf1_object_type') + ->referencedColumns(['objectTypeID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['assignedUserID']) + ->referencedTable('wcf1_user') + ->referencedColumns(['userID']) + ->onDelete('SET NULL') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['userID']) + ->referencedTable('wcf1_user') + ->referencedColumns(['userID']) + ->onDelete('SET NULL') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_moderation_queue_to_user') + ->columns([ + NotNullInt10DatabaseTableColumn::create('queueID'), + NotNullInt10DatabaseTableColumn::create('userID'), + DefaultFalseBooleanDatabaseTableColumn::create('isAffected'), + ]) + ->indices([ + DatabaseTableIndex::create('queue') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['queueID', 'userID']), + DatabaseTableIndex::create('affected') + ->columns(['queueID', 'userID', 'isAffected']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['queueID']) + ->referencedTable('wcf1_moderation_queue') + ->referencedColumns(['queueID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['userID']) + ->referencedTable('wcf1_user') + ->referencedColumns(['userID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_modification_log') + ->columns([ + ObjectIdDatabaseTableColumn::create('logID'), + NotNullInt10DatabaseTableColumn::create('objectTypeID'), + NotNullInt10DatabaseTableColumn::create('objectID'), + IntDatabaseTableColumn::create('parentObjectID'), + IntDatabaseTableColumn::create('userID'), + NotNullVarchar255DatabaseTableColumn::create('username') + ->defaultValue(''), + NotNullInt10DatabaseTableColumn::create('time') + ->defaultValue(0), + VarcharDatabaseTableColumn::create('action') + ->notNull() + ->length(80), + TinyintDatabaseTableColumn::create('hidden') + ->notNull() + ->defaultValue(1), + MediumtextDatabaseTableColumn::create('additionalData'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['logID']), + DatabaseTableIndex::create('objectTypeAndID') + ->columns(['objectTypeID', 'objectID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['userID']) + ->referencedTable('wcf1_user') + ->referencedColumns(['userID']) + ->onDelete('SET NULL') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['objectTypeID']) + ->referencedTable('wcf1_object_type') + ->referencedColumns(['objectTypeID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_notice') + ->columns([ + ObjectIdDatabaseTableColumn::create('noticeID'), + NotNullVarchar255DatabaseTableColumn::create('noticeName'), + MediumtextDatabaseTableColumn::create('notice'), + TinyintDatabaseTableColumn::create('noticeUseHtml') + ->notNull() + ->defaultValue(0), + NotNullVarchar255DatabaseTableColumn::create('cssClassName') + ->defaultValue('info'), + NotNullInt10DatabaseTableColumn::create('showOrder') + ->defaultValue(0), + DefaultFalseBooleanDatabaseTableColumn::create('isDisabled'), + DefaultFalseBooleanDatabaseTableColumn::create('isDismissible'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['noticeID']), + ]), + DatabaseTable::create('wcf1_notice_dismissed') + ->columns([ + NotNullInt10DatabaseTableColumn::create('noticeID'), + NotNullInt10DatabaseTableColumn::create('userID'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['noticeID', 'userID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['userID']) + ->referencedTable('wcf1_user') + ->referencedColumns(['userID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['noticeID']) + ->referencedTable('wcf1_notice') + ->referencedColumns(['noticeID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_object_type') + ->columns([ + ObjectIdDatabaseTableColumn::create('objectTypeID'), + NotNullInt10DatabaseTableColumn::create('definitionID'), + NotNullInt10DatabaseTableColumn::create('packageID'), + NotNullVarchar191DatabaseTableColumn::create('objectType'), + NotNullVarchar255DatabaseTableColumn::create('className') + ->defaultValue(''), + MediumtextDatabaseTableColumn::create('additionalData'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['objectTypeID']), + DatabaseTableIndex::create('objectType') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['objectType', 'definitionID', 'packageID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['definitionID']) + ->referencedTable('wcf1_object_type_definition') + ->referencedColumns(['definitionID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['packageID']) + ->referencedTable('wcf1_package') + ->referencedColumns(['packageID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_object_type_definition') + ->columns([ + ObjectIdDatabaseTableColumn::create('definitionID'), + NotNullVarchar191DatabaseTableColumn::create('definitionName'), + NotNullInt10DatabaseTableColumn::create('packageID'), + NotNullVarchar255DatabaseTableColumn::create('interfaceName') + ->defaultValue(''), + VarcharDatabaseTableColumn::create('categoryName') + ->notNull() + ->length(80) + ->defaultValue(''), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['definitionID']), + DatabaseTableIndex::create('definitionName') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['definitionName']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['packageID']) + ->referencedTable('wcf1_package') + ->referencedColumns(['packageID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_option') + ->columns([ + ObjectIdDatabaseTableColumn::create('optionID'), + NotNullInt10DatabaseTableColumn::create('packageID'), + NotNullVarchar191DatabaseTableColumn::create('optionName') + ->defaultValue(''), + NotNullVarchar191DatabaseTableColumn::create('categoryName') + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('optionType') + ->defaultValue(''), + MediumtextDatabaseTableColumn::create('optionValue'), + TextDatabaseTableColumn::create('validationPattern'), + MediumtextDatabaseTableColumn::create('selectOptions'), + MediumtextDatabaseTableColumn::create('enableOptions'), + NotNullInt10DatabaseTableColumn::create('showOrder') + ->defaultValue(0), + TinyintDatabaseTableColumn::create('hidden') + ->notNull() + ->defaultValue(0), + TextDatabaseTableColumn::create('permissions'), + TextDatabaseTableColumn::create('options'), + TinyintDatabaseTableColumn::create('supportI18n') + ->notNull() + ->defaultValue(0), + TinyintDatabaseTableColumn::create('requireI18n') + ->notNull() + ->defaultValue(0), + MediumtextDatabaseTableColumn::create('additionalData'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['optionID']), + DatabaseTableIndex::create('optionName') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['optionName']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['packageID']) + ->referencedTable('wcf1_package') + ->referencedColumns(['packageID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_option_category') + ->columns([ + ObjectIdDatabaseTableColumn::create('categoryID'), + NotNullInt10DatabaseTableColumn::create('packageID'), + NotNullVarchar191DatabaseTableColumn::create('categoryName') + ->defaultValue(''), + NotNullVarchar191DatabaseTableColumn::create('parentCategoryName') + ->defaultValue(''), + NotNullInt10DatabaseTableColumn::create('showOrder') + ->defaultValue(0), + TextDatabaseTableColumn::create('permissions'), + TextDatabaseTableColumn::create('options'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['categoryID']), + DatabaseTableIndex::create('categoryName') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['categoryName']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['packageID']) + ->referencedTable('wcf1_package') + ->referencedColumns(['packageID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_package') + ->columns([ + ObjectIdDatabaseTableColumn::create('packageID'), + NotNullVarchar191DatabaseTableColumn::create('package') + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('packageDir') + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('packageName') + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('packageDescription') + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('packageVersion') + ->defaultValue(''), + NotNullInt10DatabaseTableColumn::create('packageDate') + ->defaultValue(0), + NotNullInt10DatabaseTableColumn::create('installDate') + ->defaultValue(0), + NotNullInt10DatabaseTableColumn::create('updateDate') + ->defaultValue(0), + NotNullVarchar255DatabaseTableColumn::create('packageURL') + ->defaultValue(''), + DefaultFalseBooleanDatabaseTableColumn::create('isApplication'), + NotNullVarchar255DatabaseTableColumn::create('author') + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('authorURL') + ->defaultValue(''), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['packageID']), + DatabaseTableIndex::create('package') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['package']), + ]), + DatabaseTable::create('wcf1_package_audit_log') + ->columns([ + BigintDatabaseTableColumn::create('logID') + ->notNull() + ->autoIncrement(), + MediumtextDatabaseTableColumn::create('payload') + ->notNull(), + NotNullVarchar255DatabaseTableColumn::create('time'), + NotNullVarchar255DatabaseTableColumn::create('wcfVersion'), + NotNullVarchar255DatabaseTableColumn::create('requestId'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['logID']), + ]), + DatabaseTable::create('wcf1_package_exclusion') + ->columns([ + NotNullInt10DatabaseTableColumn::create('packageID'), + NotNullVarchar191DatabaseTableColumn::create('excludedPackage') + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('excludedPackageVersion') + ->defaultValue(''), + ]) + ->indices([ + DatabaseTableIndex::create('packageID') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['packageID', 'excludedPackage']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['packageID']) + ->referencedTable('wcf1_package') + ->referencedColumns(['packageID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_package_installation_file_log') + ->columns([ + NotNullInt10DatabaseTableColumn::create('packageID'), + /* + VARBINARY(765) roughly equals VARCHAR(255) and was picked to + store longer paths due to the restrictions of the total length + of the unique key. + */ + VarbinaryDatabaseTableColumn::create('filename') + ->notNull() + ->length(765), + VarcharDatabaseTableColumn::create('application') + ->notNull() + ->length(20), + VarbinaryDatabaseTableColumn::create('sha256') + ->length(32), + BigintDatabaseTableColumn::create('lastUpdated'), + ]) + ->indices([ + DatabaseTableIndex::create('applicationFile') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['application', 'filename']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['packageID']) + ->referencedTable('wcf1_package') + ->referencedColumns(['packageID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_package_installation_form') + ->columns([ + NotNullInt10DatabaseTableColumn::create('queueID'), + VarcharDatabaseTableColumn::create('formName') + ->notNull() + ->length(80) + ->defaultValue(''), + TextDatabaseTableColumn::create('document') + ->notNull(), + ]) + ->indices([ + DatabaseTableIndex::create('formDocument') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['queueID', 'formName']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['queueID']) + ->referencedTable('wcf1_package_installation_queue') + ->referencedColumns(['queueID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_package_installation_node') + ->columns([ + NotNullInt10DatabaseTableColumn::create('queueID'), + NotNullInt10DatabaseTableColumn::create('processNo') + ->defaultValue(0), + SmallintDatabaseTableColumn::create('sequenceNo') + ->notNull() + ->defaultValue(0), + CharDatabaseTableColumn::create('node') + ->notNull() + ->length(8) + ->defaultValue(''), + CharDatabaseTableColumn::create('parentNode') + ->notNull() + ->length(8) + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('nodeType'), + TextDatabaseTableColumn::create('nodeData') + ->notNull(), + TinyintDatabaseTableColumn::create('done') + ->notNull() + ->defaultValue(0), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['queueID']) + ->referencedTable('wcf1_package_installation_queue') + ->referencedColumns(['queueID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_package_installation_plugin') + ->columns([ + NotNullVarchar191DatabaseTableColumn::create('pluginName'), + NotNullInt10DatabaseTableColumn::create('packageID'), + TinyintDatabaseTableColumn::create('priority') + ->notNull() + ->defaultValue(0), + NotNullVarchar255DatabaseTableColumn::create('className'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['pluginName']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['packageID']) + ->referencedTable('wcf1_package') + ->referencedColumns(['packageID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_package_installation_queue') + ->columns([ + ObjectIdDatabaseTableColumn::create('queueID'), + NotNullInt10DatabaseTableColumn::create('parentQueueID') + ->defaultValue(0), + NotNullInt10DatabaseTableColumn::create('processNo') + ->defaultValue(0), + NotNullInt10DatabaseTableColumn::create('userID'), + NotNullVarchar255DatabaseTableColumn::create('package') + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('packageName') + ->defaultValue(''), + IntDatabaseTableColumn::create('packageID'), + NotNullVarchar255DatabaseTableColumn::create('archive') + ->defaultValue(''), + EnumDatabaseTableColumn::create('action') + ->notNull() + ->enumValues([ + 'install', + 'update', + 'uninstall', + ]) + ->defaultValue('install'), + TinyintDatabaseTableColumn::create('done') + ->notNull() + ->defaultValue(0), + DefaultFalseBooleanDatabaseTableColumn::create('isApplication'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['queueID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['userID']) + ->referencedTable('wcf1_user') + ->referencedColumns(['userID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['packageID']) + ->referencedTable('wcf1_package') + ->referencedColumns(['packageID']) + ->onDelete('SET NULL') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_package_installation_sql_log') + ->columns([ + NotNullInt10DatabaseTableColumn::create('packageID'), + VarcharDatabaseTableColumn::create('sqlTable') + ->notNull() + ->length(100) + ->defaultValue(''), + VarcharDatabaseTableColumn::create('sqlColumn') + ->notNull() + ->length(100) + ->defaultValue(''), + VarcharDatabaseTableColumn::create('sqlIndex') + ->notNull() + ->length(100) + ->defaultValue(''), + DefaultTrueBooleanDatabaseTableColumn::create('isDone'), + ]) + ->indices([ + DatabaseTableIndex::create('packageID') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['packageID', 'sqlTable', 'sqlColumn', 'sqlIndex']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['packageID']) + ->referencedTable('wcf1_package') + ->referencedColumns(['packageID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_package_requirement') + ->columns([ + NotNullInt10DatabaseTableColumn::create('packageID'), + NotNullInt10DatabaseTableColumn::create('requirement'), + ]) + ->indices([ + DatabaseTableIndex::create('packageID') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['packageID', 'requirement']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['packageID']) + ->referencedTable('wcf1_package') + ->referencedColumns(['packageID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['requirement']) + ->referencedTable('wcf1_package') + ->referencedColumns(['packageID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_package_update') + ->columns([ + ObjectIdDatabaseTableColumn::create('packageUpdateID'), + NotNullInt10DatabaseTableColumn::create('packageUpdateServerID'), + NotNullVarchar191DatabaseTableColumn::create('package') + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('packageName') + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('packageDescription') + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('author') + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('authorURL') + ->defaultValue(''), + DefaultFalseBooleanDatabaseTableColumn::create('isApplication'), + NotNullInt10DatabaseTableColumn::create('pluginStoreFileID') + ->defaultValue(0), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['packageUpdateID']), + DatabaseTableIndex::create('packageUpdateServerID') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['packageUpdateServerID', 'package']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['packageUpdateServerID']) + ->referencedTable('wcf1_package_update_server') + ->referencedColumns(['packageUpdateServerID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_package_update_exclusion') + ->columns([ + NotNullInt10DatabaseTableColumn::create('packageUpdateVersionID'), + NotNullVarchar191DatabaseTableColumn::create('excludedPackage') + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('excludedPackageVersion') + ->defaultValue(''), + ]) + ->indices([ + DatabaseTableIndex::create('packageUpdateVersionID') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['packageUpdateVersionID', 'excludedPackage']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['packageUpdateVersionID']) + ->referencedTable('wcf1_package_update_version') + ->referencedColumns(['packageUpdateVersionID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_package_update_fromversion') + ->columns([ + NotNullInt10DatabaseTableColumn::create('packageUpdateVersionID') + ->defaultValue(0), + VarcharDatabaseTableColumn::create('fromversion') + ->notNull() + ->length(50) + ->defaultValue(''), + ]) + ->indices([ + DatabaseTableIndex::create('packageUpdateVersionID') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['packageUpdateVersionID', 'fromversion']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['packageUpdateVersionID']) + ->referencedTable('wcf1_package_update_version') + ->referencedColumns(['packageUpdateVersionID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_package_update_requirement') + ->columns([ + NotNullInt10DatabaseTableColumn::create('packageUpdateVersionID'), + NotNullVarchar191DatabaseTableColumn::create('package') + ->defaultValue(''), + VarcharDatabaseTableColumn::create('minversion') + ->notNull() + ->length(50) + ->defaultValue(''), + ]) + ->indices([ + DatabaseTableIndex::create('packageUpdateVersionID') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['packageUpdateVersionID', 'package']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['packageUpdateVersionID']) + ->referencedTable('wcf1_package_update_version') + ->referencedColumns(['packageUpdateVersionID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_package_update_server') + ->columns([ + ObjectIdDatabaseTableColumn::create('packageUpdateServerID'), + NotNullVarchar255DatabaseTableColumn::create('serverURL') + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('loginUsername') + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('loginPassword') + ->defaultValue(''), + DefaultFalseBooleanDatabaseTableColumn::create('isDisabled'), + NotNullInt10DatabaseTableColumn::create('lastUpdateTime') + ->defaultValue(0), + EnumDatabaseTableColumn::create('status') + ->notNull() + ->enumValues([ + 'online', + 'offline', + ]) + ->defaultValue('online'), + TextDatabaseTableColumn::create('errorMessage'), + EnumDatabaseTableColumn::create('apiVersion') + ->notNull() + ->enumValues([ + '2.0', + '2.1', + '3.1', + ]) + ->defaultValue('2.0'), + TextDatabaseTableColumn::create('metaData'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['packageUpdateServerID']), + ]), + DatabaseTable::create('wcf1_package_update_version') + ->columns([ + ObjectIdDatabaseTableColumn::create('packageUpdateVersionID'), + NotNullInt10DatabaseTableColumn::create('packageUpdateID'), + VarcharDatabaseTableColumn::create('packageVersion') + ->notNull() + ->length(50) + ->defaultValue(''), + NotNullInt10DatabaseTableColumn::create('packageDate') + ->defaultValue(0), + NotNullVarchar255DatabaseTableColumn::create('filename') + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('license') + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('licenseURL') + ->defaultValue(''), + DefaultTrueBooleanDatabaseTableColumn::create('isAccessible'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['packageUpdateVersionID']), + DatabaseTableIndex::create('packageUpdateID') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['packageUpdateID', 'packageVersion']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['packageUpdateID']) + ->referencedTable('wcf1_package_update') + ->referencedColumns(['packageUpdateID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_page') + ->columns([ + ObjectIdDatabaseTableColumn::create('pageID'), + IntDatabaseTableColumn::create('parentPageID'), + NotNullVarchar255DatabaseTableColumn::create('identifier'), + NotNullVarchar255DatabaseTableColumn::create('name'), + NotNullVarchar255DatabaseTableColumn::create('pageType'), + DefaultFalseBooleanDatabaseTableColumn::create('isDisabled'), + DefaultFalseBooleanDatabaseTableColumn::create('isMultilingual'), + DefaultFalseBooleanDatabaseTableColumn::create('originIsSystem'), + NotNullInt10DatabaseTableColumn::create('packageID'), + IntDatabaseTableColumn::create('applicationPackageID'), + IntDatabaseTableColumn::create('overrideApplicationPackageID'), + NotNullVarchar255DatabaseTableColumn::create('controller') + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('handler') + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('controllerCustomURL') + ->defaultValue(''), + TinyintDatabaseTableColumn::create('requireObjectID') + ->notNull() + ->defaultValue(0), + DefaultFalseBooleanDatabaseTableColumn::create('hasFixedParent'), + NotNullInt10DatabaseTableColumn::create('lastUpdateTime') + ->defaultValue(0), + NotNullVarchar255DatabaseTableColumn::create('cssClassName') + ->defaultValue(''), + TinyintDatabaseTableColumn::create('availableDuringOfflineMode') + ->notNull() + ->defaultValue(0), + TinyintDatabaseTableColumn::create('allowSpidersToIndex') + ->notNull() + ->defaultValue(0), + TinyintDatabaseTableColumn::create('excludeFromLandingPage') + ->notNull() + ->defaultValue(0), + TinyintDatabaseTableColumn::create('enableShareButtons') + ->notNull() + ->defaultValue(0), + TextDatabaseTableColumn::create('permissions'), + TextDatabaseTableColumn::create('options'), + TinyintDatabaseTableColumn::create('invertPermissions') + ->notNull() + ->defaultValue(0), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['pageID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['parentPageID']) + ->referencedTable('wcf1_page') + ->referencedColumns(['pageID']) + ->onDelete('SET NULL') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['packageID']) + ->referencedTable('wcf1_package') + ->referencedColumns(['packageID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['applicationPackageID']) + ->referencedTable('wcf1_package') + ->referencedColumns(['packageID']) + ->onDelete('SET NULL') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['overrideApplicationPackageID']) + ->referencedTable('wcf1_package') + ->referencedColumns(['packageID']) + ->onDelete('SET NULL') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_page_box_order') + ->columns([ + NotNullInt10DatabaseTableColumn::create('pageID'), + NotNullInt10DatabaseTableColumn::create('boxID'), + NotNullInt10DatabaseTableColumn::create('showOrder') + ->defaultValue(0), + ]) + ->indices([ + DatabaseTableIndex::create('pageToBox') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['pageID', 'boxID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['boxID']) + ->referencedTable('wcf1_box') + ->referencedColumns(['boxID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['pageID']) + ->referencedTable('wcf1_page') + ->referencedColumns(['pageID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_page_content') + ->columns([ + ObjectIdDatabaseTableColumn::create('pageContentID'), + NotNullInt10DatabaseTableColumn::create('pageID'), + IntDatabaseTableColumn::create('languageID'), + NotNullVarchar255DatabaseTableColumn::create('title'), + MediumtextDatabaseTableColumn::create('content'), + TextDatabaseTableColumn::create('metaDescription'), + NotNullVarchar255DatabaseTableColumn::create('customURL'), + DefaultFalseBooleanDatabaseTableColumn::create('hasEmbeddedObjects'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['pageContentID']), + DatabaseTableIndex::create('pageID') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['pageID', 'languageID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['pageID']) + ->referencedTable('wcf1_page') + ->referencedColumns(['pageID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['languageID']) + ->referencedTable('wcf1_language') + ->referencedColumns(['languageID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_paid_subscription') + ->columns([ + ObjectIdDatabaseTableColumn::create('subscriptionID'), + NotNullVarchar255DatabaseTableColumn::create('title') + ->defaultValue(''), + TextDatabaseTableColumn::create('description'), + DefaultFalseBooleanDatabaseTableColumn::create('isDisabled'), + NotNullInt10DatabaseTableColumn::create('showOrder') + ->defaultValue(0), + DecimalDatabaseTableColumn::create('cost') + ->notNull() + ->length(10) + ->decimals(2) + ->defaultValue('0.00'), + VarcharDatabaseTableColumn::create('currency') + ->notNull() + ->length(3) + ->defaultValue('EUR'), + SmallintDatabaseTableColumn::create('subscriptionLength') + ->notNull() + ->defaultValue(0), + EnumDatabaseTableColumn::create('subscriptionLengthUnit') + ->notNull() + ->enumValues([ + '', + 'D', + 'M', + 'Y', + ]) + ->defaultValue(''), + DefaultFalseBooleanDatabaseTableColumn::create('isRecurring'), + TextDatabaseTableColumn::create('groupIDs'), + TextDatabaseTableColumn::create('excludedSubscriptionIDs'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['subscriptionID']), + ]), + DatabaseTable::create('wcf1_paid_subscription_transaction_log') + ->columns([ + ObjectIdDatabaseTableColumn::create('logID'), + IntDatabaseTableColumn::create('subscriptionUserID'), + IntDatabaseTableColumn::create('userID'), + IntDatabaseTableColumn::create('subscriptionID'), + NotNullInt10DatabaseTableColumn::create('paymentMethodObjectTypeID'), + NotNullInt10DatabaseTableColumn::create('logTime') + ->defaultValue(0), + NotNullVarchar255DatabaseTableColumn::create('transactionID') + ->defaultValue(''), + MediumtextDatabaseTableColumn::create('transactionDetails'), + NotNullVarchar255DatabaseTableColumn::create('logMessage') + ->defaultValue(''), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['logID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['paymentMethodObjectTypeID']) + ->referencedTable('wcf1_object_type') + ->referencedColumns(['objectTypeID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['subscriptionID']) + ->referencedTable('wcf1_paid_subscription') + ->referencedColumns(['subscriptionID']) + ->onDelete('SET NULL') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['subscriptionUserID']) + ->referencedTable('wcf1_paid_subscription_user') + ->referencedColumns(['subscriptionUserID']) + ->onDelete('SET NULL') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['userID']) + ->referencedTable('wcf1_user') + ->referencedColumns(['userID']) + ->onDelete('SET NULL') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_paid_subscription_user') + ->columns([ + ObjectIdDatabaseTableColumn::create('subscriptionUserID'), + NotNullInt10DatabaseTableColumn::create('subscriptionID'), + NotNullInt10DatabaseTableColumn::create('userID'), + NotNullInt10DatabaseTableColumn::create('startDate') + ->defaultValue(0), + NotNullInt10DatabaseTableColumn::create('endDate') + ->defaultValue(0), + DefaultTrueBooleanDatabaseTableColumn::create('isActive'), + TinyintDatabaseTableColumn::create('sentExpirationNotification') + ->notNull() + ->defaultValue(0), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['subscriptionUserID']), + DatabaseTableIndex::create('subscriptionID') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['subscriptionID', 'userID']), + DatabaseTableIndex::create('isActive') + ->columns(['isActive']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['subscriptionID']) + ->referencedTable('wcf1_paid_subscription') + ->referencedColumns(['subscriptionID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['userID']) + ->referencedTable('wcf1_user') + ->referencedColumns(['userID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_poll') + ->columns([ + ObjectIdDatabaseTableColumn::create('pollID'), + NotNullInt10DatabaseTableColumn::create('objectTypeID'), + NotNullInt10DatabaseTableColumn::create('objectID') + ->defaultValue(0), + VarcharDatabaseTableColumn::create('question') + ->length(255) + ->defaultValue(''), + NotNullInt10DatabaseTableColumn::create('time') + ->defaultValue(0), + NotNullInt10DatabaseTableColumn::create('endTime') + ->defaultValue(0), + DefaultFalseBooleanDatabaseTableColumn::create('isChangeable'), + DefaultFalseBooleanDatabaseTableColumn::create('isPublic'), + TinyintDatabaseTableColumn::create('sortByVotes') + ->notNull() + ->defaultValue(0), + TinyintDatabaseTableColumn::create('resultsRequireVote') + ->notNull() + ->defaultValue(0), + NotNullInt10DatabaseTableColumn::create('maxVotes') + ->defaultValue(1), + NotNullInt10DatabaseTableColumn::create('votes') + ->defaultValue(0), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['pollID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['objectTypeID']) + ->referencedTable('wcf1_object_type') + ->referencedColumns(['objectTypeID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_poll_option') + ->columns([ + ObjectIdDatabaseTableColumn::create('optionID'), + NotNullInt10DatabaseTableColumn::create('pollID'), + NotNullVarchar255DatabaseTableColumn::create('optionValue') + ->defaultValue(''), + NotNullInt10DatabaseTableColumn::create('votes') + ->defaultValue(0), + NotNullInt10DatabaseTableColumn::create('showOrder') + ->defaultValue(0), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['optionID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['pollID']) + ->referencedTable('wcf1_poll') + ->referencedColumns(['pollID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_poll_option_vote') + ->columns([ + NotNullInt10DatabaseTableColumn::create('pollID'), + NotNullInt10DatabaseTableColumn::create('optionID'), + NotNullInt10DatabaseTableColumn::create('userID'), + ]) + ->indices([ + DatabaseTableIndex::create('vote') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['pollID', 'optionID', 'userID']), + DatabaseTableIndex::create('optionID') + ->columns(['optionID', 'userID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['optionID']) + ->referencedTable('wcf1_poll_option') + ->referencedColumns(['optionID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['pollID']) + ->referencedTable('wcf1_poll') + ->referencedColumns(['pollID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['userID']) + ->referencedTable('wcf1_user') + ->referencedColumns(['userID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_reaction_type') + ->columns([ + ObjectIdDatabaseTableColumn::create('reactionTypeID'), + NotNullVarchar255DatabaseTableColumn::create('title'), + NotNullInt10DatabaseTableColumn::create('showOrder') + ->defaultValue(0), + NotNullVarchar255DatabaseTableColumn::create('iconFile') + ->defaultValue(''), + DefaultTrueBooleanDatabaseTableColumn::create('isAssignable'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['reactionTypeID']), + ]), + DatabaseTable::create('wcf1_registry') + ->columns([ + NotNullInt10DatabaseTableColumn::create('packageID'), + NotNullVarchar191DatabaseTableColumn::create('field'), + MediumtextDatabaseTableColumn::create('fieldValue'), + ]) + ->indices([ + DatabaseTableIndex::create('uniqueField') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['packageID', 'field']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['packageID']) + ->referencedTable('wcf1_package') + ->referencedColumns(['packageID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_search') + ->columns([ + ObjectIdDatabaseTableColumn::create('searchID'), + IntDatabaseTableColumn::create('userID'), + MediumtextDatabaseTableColumn::create('searchData') + ->notNull(), + NotNullInt10DatabaseTableColumn::create('searchTime') + ->defaultValue(0), + NotNullVarchar255DatabaseTableColumn::create('searchType') + ->defaultValue(''), + CharDatabaseTableColumn::create('searchHash') + ->notNull() + ->length(40) + ->defaultValue(''), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['searchID']), + DatabaseTableIndex::create('searchHash') + ->columns(['searchHash']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['userID']) + ->referencedTable('wcf1_user') + ->referencedColumns(['userID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_search_keyword') + ->columns([ + ObjectIdDatabaseTableColumn::create('keywordID'), + NotNullVarchar191DatabaseTableColumn::create('keyword'), + NotNullInt10DatabaseTableColumn::create('searches') + ->defaultValue(0), + NotNullInt10DatabaseTableColumn::create('lastSearchTime') + ->defaultValue(0), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['keywordID']), + DatabaseTableIndex::create('keyword') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['keyword']), + DatabaseTableIndex::create('searches') + ->columns(['searches', 'lastSearchTime']), + ]), + DatabaseTable::create('wcf1_service_worker') + ->columns([ + ObjectIdDatabaseTableColumn::create('workerID'), + NotNullInt10DatabaseTableColumn::create('userID'), + TextDatabaseTableColumn::create('endpoint') + ->notNull(), + VarcharDatabaseTableColumn::create('publicKey') + ->notNull() + ->length(88), + VarcharDatabaseTableColumn::create('authToken') + ->notNull() + ->length(24), + VarcharDatabaseTableColumn::create('contentEncoding') + ->notNull() + ->length(40), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['workerID']), + DatabaseTableIndex::create('userID') + ->columns(['userID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['userID']) + ->referencedTable('wcf1_user') + ->referencedColumns(['userID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_service_worker_notification') + ->columns([ + NotNullInt10DatabaseTableColumn::create('notificationID'), + NotNullInt10DatabaseTableColumn::create('workerID'), + NotNullInt10DatabaseTableColumn::create('time'), + ]) + ->indices([ + DatabaseTableIndex::create('job') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['notificationID', 'workerID']), + DatabaseTableIndex::create('time') + ->columns(['time']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['notificationID']) + ->referencedTable('wcf1_user_notification') + ->referencedColumns(['notificationID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['workerID']) + ->referencedTable('wcf1_service_worker') + ->referencedColumns(['workerID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_session') + ->columns([ + CharDatabaseTableColumn::create('sessionID') + ->notNull() + ->length(40), + IntDatabaseTableColumn::create('userID'), + VarcharDatabaseTableColumn::create('ipAddress') + ->notNull() + ->length(39) + ->defaultValue(''), + NotNullVarchar191DatabaseTableColumn::create('userAgent') + ->defaultValue(''), + NotNullInt10DatabaseTableColumn::create('lastActivityTime') + ->defaultValue(0), + NotNullVarchar255DatabaseTableColumn::create('requestURI') + ->defaultValue(''), + VarcharDatabaseTableColumn::create('requestMethod') + ->notNull() + ->length(7) + ->defaultValue(''), + IntDatabaseTableColumn::create('pageID'), + IntDatabaseTableColumn::create('pageObjectID'), + IntDatabaseTableColumn::create('parentPageID'), + IntDatabaseTableColumn::create('parentPageObjectID'), + VarcharDatabaseTableColumn::create('spiderIdentifier') + ->length(191), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['sessionID']), + DatabaseTableIndex::create('uniqueUserID') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['userID']), + DatabaseTableIndex::create('packageID') + ->columns(['lastActivityTime', 'spiderIdentifier']), + DatabaseTableIndex::create('pageID') + ->columns(['pageID', 'pageObjectID']), + DatabaseTableIndex::create('parentPageID') + ->columns(['parentPageID', 'parentPageObjectID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['parentPageID']) + ->referencedTable('wcf1_page') + ->referencedColumns(['pageID']) + ->onDelete('SET NULL') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['userID']) + ->referencedTable('wcf1_user') + ->referencedColumns(['userID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['pageID']) + ->referencedTable('wcf1_page') + ->referencedColumns(['pageID']) + ->onDelete('SET NULL') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_smiley') + ->columns([ + ObjectIdDatabaseTableColumn::create('smileyID'), + NotNullInt10DatabaseTableColumn::create('packageID'), + IntDatabaseTableColumn::create('categoryID'), + NotNullVarchar255DatabaseTableColumn::create('smileyPath') + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('smileyPath2x') + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('smileyTitle') + ->defaultValue(''), + NotNullVarchar191DatabaseTableColumn::create('smileyCode') + ->defaultValue(''), + TextDatabaseTableColumn::create('aliases') + ->notNull(), + NotNullInt10DatabaseTableColumn::create('showOrder') + ->defaultValue(0), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['smileyID']), + DatabaseTableIndex::create('smileyCode') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['smileyCode']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['categoryID']) + ->referencedTable('wcf1_category') + ->referencedColumns(['categoryID']) + ->onDelete('SET NULL') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['packageID']) + ->referencedTable('wcf1_package') + ->referencedColumns(['packageID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_stat_daily') + ->columns([ + ObjectIdDatabaseTableColumn::create('statID'), + NotNullInt10DatabaseTableColumn::create('objectTypeID'), + DateDatabaseTableColumn::create('date') + ->notNull(), + NotNullInt10DatabaseTableColumn::create('counter') + ->defaultValue(0), + NotNullInt10DatabaseTableColumn::create('total') + ->defaultValue(0), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['statID']), + DatabaseTableIndex::create('objectTypeID') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['objectTypeID', 'date']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['objectTypeID']) + ->referencedTable('wcf1_object_type') + ->referencedColumns(['objectTypeID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_style') + ->columns([ + ObjectIdDatabaseTableColumn::create('styleID'), + NotNullInt10DatabaseTableColumn::create('packageID'), + NotNullVarchar255DatabaseTableColumn::create('styleName') + ->defaultValue(''), + NotNullInt10DatabaseTableColumn::create('templateGroupID') + ->defaultValue(0), + DefaultFalseBooleanDatabaseTableColumn::create('isDefault'), + DefaultFalseBooleanDatabaseTableColumn::create('isDisabled'), + VarcharDatabaseTableColumn::create('styleDescription') + ->notNull() + ->length(30) + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('styleVersion') + ->defaultValue(''), + CharDatabaseTableColumn::create('styleDate') + ->notNull() + ->length(10) + ->defaultValue('0000-00-00'), + NotNullVarchar255DatabaseTableColumn::create('image') + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('image2x') + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('copyright') + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('license') + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('authorName') + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('authorURL') + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('imagePath') + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('packageName') + ->defaultValue(''), + DefaultFalseBooleanDatabaseTableColumn::create('isTainted'), + DefaultFalseBooleanDatabaseTableColumn::create('hasFavicon'), + VarcharDatabaseTableColumn::create('coverPhotoExtension') + ->notNull() + ->length(4) + ->defaultValue(''), + DefaultFalseBooleanDatabaseTableColumn::create('hasDarkMode'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['styleID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['packageID']) + ->referencedTable('wcf1_package') + ->referencedColumns(['packageID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_style_variable') + ->columns([ + ObjectIdDatabaseTableColumn::create('variableID'), + VarcharDatabaseTableColumn::create('variableName') + ->notNull() + ->length(50), + MediumtextDatabaseTableColumn::create('defaultValue'), + MediumtextDatabaseTableColumn::create('defaultValueDarkMode'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['variableID']), + DatabaseTableIndex::create('variableName') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['variableName']), + ]), + DatabaseTable::create('wcf1_style_variable_value') + ->columns([ + NotNullInt10DatabaseTableColumn::create('styleID'), + NotNullInt10DatabaseTableColumn::create('variableID'), + MediumtextDatabaseTableColumn::create('variableValue'), + MediumtextDatabaseTableColumn::create('variableValueDarkMode'), + ]) + ->indices([ + DatabaseTableIndex::create('styleID') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['styleID', 'variableID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['variableID']) + ->referencedTable('wcf1_style_variable') + ->referencedColumns(['variableID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['styleID']) + ->referencedTable('wcf1_style') + ->referencedColumns(['styleID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_tag') + ->columns([ + ObjectIdDatabaseTableColumn::create('tagID'), + NotNullInt10DatabaseTableColumn::create('languageID') + ->defaultValue(0), + NotNullVarchar191DatabaseTableColumn::create('name'), + IntDatabaseTableColumn::create('synonymFor'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['tagID']), + DatabaseTableIndex::create('languageID') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['languageID', 'name']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['synonymFor']) + ->referencedTable('wcf1_tag') + ->referencedColumns(['tagID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_tag_to_object') + ->columns([ + NotNullInt10DatabaseTableColumn::create('objectID'), + NotNullInt10DatabaseTableColumn::create('tagID'), + NotNullInt10DatabaseTableColumn::create('objectTypeID'), + NotNullInt10DatabaseTableColumn::create('languageID'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['objectTypeID', 'objectID', 'tagID']), + DatabaseTableIndex::create('objectTypeID') + ->columns(['objectTypeID', 'tagID']), + DatabaseTableIndex::create('tagID') + ->columns(['tagID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['languageID']) + ->referencedTable('wcf1_language') + ->referencedColumns(['languageID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['tagID']) + ->referencedTable('wcf1_tag') + ->referencedColumns(['tagID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['objectTypeID']) + ->referencedTable('wcf1_object_type') + ->referencedColumns(['objectTypeID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_template') + ->columns([ + ObjectIdDatabaseTableColumn::create('templateID'), + NotNullInt10DatabaseTableColumn::create('packageID'), + NotNullVarchar191DatabaseTableColumn::create('templateName'), + VarcharDatabaseTableColumn::create('application') + ->notNull() + ->length(20), + IntDatabaseTableColumn::create('templateGroupID'), + NotNullInt10DatabaseTableColumn::create('lastModificationTime') + ->defaultValue(0), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['templateID']), + DatabaseTableIndex::create('applicationTemplate') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['application', 'templateGroupID', 'templateName']), + DatabaseTableIndex::create('templateGroupID') + ->columns(['packageID', 'templateGroupID', 'templateName']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['templateGroupID']) + ->referencedTable('wcf1_template_group') + ->referencedColumns(['templateGroupID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['packageID']) + ->referencedTable('wcf1_package') + ->referencedColumns(['packageID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_template_group') + ->columns([ + ObjectIdDatabaseTableColumn::create('templateGroupID'), + IntDatabaseTableColumn::create('parentTemplateGroupID'), + NotNullVarchar255DatabaseTableColumn::create('templateGroupName') + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('templateGroupFolderName') + ->defaultValue(''), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['templateGroupID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['parentTemplateGroupID']) + ->referencedTable('wcf1_template_group') + ->referencedColumns(['templateGroupID']) + ->onDelete('SET NULL') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_template_listener') + ->columns([ + ObjectIdDatabaseTableColumn::create('listenerID'), + NotNullInt10DatabaseTableColumn::create('packageID'), + VarcharDatabaseTableColumn::create('name') + ->notNull() + ->length(80) + ->defaultValue(''), + EnumDatabaseTableColumn::create('environment') + ->notNull() + ->enumValues([ + 'user', + 'admin', + ]) + ->defaultValue('user'), + VarcharDatabaseTableColumn::create('templateName') + ->notNull() + ->length(80) + ->defaultValue(''), + VarcharDatabaseTableColumn::create('eventName') + ->notNull() + ->length(50) + ->defaultValue(''), + TextDatabaseTableColumn::create('templateCode') + ->notNull(), + TinyintDatabaseTableColumn::create('niceValue') + ->notNull() + ->defaultValue(0), + TextDatabaseTableColumn::create('permissions'), + TextDatabaseTableColumn::create('options'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['listenerID']), + DatabaseTableIndex::create('templateName') + ->columns(['environment', 'templateName']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['packageID']) + ->referencedTable('wcf1_package') + ->referencedColumns(['packageID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_tracked_visit') + ->columns([ + NotNullInt10DatabaseTableColumn::create('objectTypeID'), + NotNullInt10DatabaseTableColumn::create('objectID'), + NotNullInt10DatabaseTableColumn::create('userID'), + NotNullInt10DatabaseTableColumn::create('visitTime') + ->defaultValue(0), + ]) + ->indices([ + DatabaseTableIndex::create('userID_objectTypeID_objectID') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['userID', 'objectTypeID', 'objectID']), + DatabaseTableIndex::create('visitTime') + ->columns(['visitTime']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['objectTypeID']) + ->referencedTable('wcf1_object_type') + ->referencedColumns(['objectTypeID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['userID']) + ->referencedTable('wcf1_user') + ->referencedColumns(['userID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_tracked_visit_type') + ->columns([ + NotNullInt10DatabaseTableColumn::create('objectTypeID'), + NotNullInt10DatabaseTableColumn::create('userID'), + NotNullInt10DatabaseTableColumn::create('visitTime') + ->defaultValue(0), + ]) + ->indices([ + DatabaseTableIndex::create('userID_objectTypeID') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['userID', 'objectTypeID']), + DatabaseTableIndex::create('visitTime') + ->columns(['visitTime']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['objectTypeID']) + ->referencedTable('wcf1_object_type') + ->referencedColumns(['objectTypeID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['userID']) + ->referencedTable('wcf1_user') + ->referencedColumns(['userID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_trophy') + ->columns([ + ObjectIdDatabaseTableColumn::create('trophyID'), + VarcharDatabaseTableColumn::create('title') + ->length(255), + MediumtextDatabaseTableColumn::create('description'), + NotNullInt10DatabaseTableColumn::create('categoryID'), + SmallintDatabaseTableColumn::create('type') + ->defaultValue(1), + MediumtextDatabaseTableColumn::create('iconFile'), + VarcharDatabaseTableColumn::create('iconName') + ->length(255), + VarcharDatabaseTableColumn::create('iconColor') + ->length(255), + VarcharDatabaseTableColumn::create('badgeColor') + ->length(255), + DefaultFalseBooleanDatabaseTableColumn::create('isDisabled'), + TinyintDatabaseTableColumn::create('awardAutomatically') + ->notNull() + ->defaultValue(0), + TinyintDatabaseTableColumn::create('revokeAutomatically') + ->notNull() + ->defaultValue(0), + TinyintDatabaseTableColumn::create('trophyUseHtml') + ->notNull() + ->defaultValue(0), + NotNullInt10DatabaseTableColumn::create('showOrder') + ->defaultValue(0), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['trophyID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['categoryID']) + ->referencedTable('wcf1_category') + ->referencedColumns(['categoryID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_unfurl_url') + ->columns([ + ObjectIdDatabaseTableColumn::create('urlID'), + TextDatabaseTableColumn::create('url') + ->notNull(), + VarcharDatabaseTableColumn::create('urlHash') + ->notNull() + ->length(40), + NotNullVarchar255DatabaseTableColumn::create('title') + ->defaultValue(''), + TextDatabaseTableColumn::create('description'), + IntDatabaseTableColumn::create('imageID'), + NotNullVarchar255DatabaseTableColumn::create('status') + ->defaultValue('PENDING'), + NotNullInt10DatabaseTableColumn::create('lastFetch') + ->defaultValue(0), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['urlID']), + DatabaseTableIndex::create('urlHash') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['urlHash']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['imageID']) + ->referencedTable('wcf1_unfurl_url_image') + ->referencedColumns(['imageID']) + ->onDelete('SET NULL') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_unfurl_url_image') + ->columns([ + ObjectIdDatabaseTableColumn::create('imageID'), + TextDatabaseTableColumn::create('imageUrl') + ->notNull(), + VarcharDatabaseTableColumn::create('imageUrlHash') + ->length(40), + NotNullInt10DatabaseTableColumn::create('width'), + NotNullInt10DatabaseTableColumn::create('height'), + VarcharDatabaseTableColumn::create('imageExtension') + ->length(4), + DefaultFalseBooleanDatabaseTableColumn::create('isStored'), + IntDatabaseTableColumn::create('fileID'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['imageID']), + DatabaseTableIndex::create('imageUrlHash') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['imageUrlHash']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['fileID']) + ->referencedTable('wcf1_file') + ->referencedColumns(['fileID']) + ->onDelete('SET NULL') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_user') + ->columns([ + ObjectIdDatabaseTableColumn::create('userID'), + VarcharDatabaseTableColumn::create('username') + ->notNull() + ->length(100) + ->defaultValue(''), + NotNullVarchar191DatabaseTableColumn::create('email') + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('password') + ->defaultValue('invalid:'), + CharDatabaseTableColumn::create('accessToken') + ->notNull() + ->length(40) + ->defaultValue(''), + DefaultFalseBooleanDatabaseTableColumn::create('multifactorActive'), + NotNullInt10DatabaseTableColumn::create('languageID') + ->defaultValue(0), + NotNullInt10DatabaseTableColumn::create('registrationDate') + ->defaultValue(0), + NotNullInt10DatabaseTableColumn::create('styleID') + ->defaultValue(0), + TinyintDatabaseTableColumn::create('banned') + ->notNull() + ->defaultValue(0), + MediumtextDatabaseTableColumn::create('banReason'), + NotNullInt10DatabaseTableColumn::create('banExpires') + ->defaultValue(0), + NotNullInt10DatabaseTableColumn::create('activationCode') + ->defaultValue(0), + CharDatabaseTableColumn::create('emailConfirmed') + ->length(40), + NotNullInt10DatabaseTableColumn::create('lastLostPasswordRequestTime') + ->defaultValue(0), + CharDatabaseTableColumn::create('lostPasswordKey') + ->length(40), + NotNullInt10DatabaseTableColumn::create('lastUsernameChange') + ->defaultValue(0), + NotNullVarchar255DatabaseTableColumn::create('newEmail') + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('oldUsername') + ->defaultValue(''), + NotNullInt10DatabaseTableColumn::create('quitStarted') + ->defaultValue(0), + NotNullInt10DatabaseTableColumn::create('reactivationCode') + ->defaultValue(0), + VarcharDatabaseTableColumn::create('registrationIpAddress') + ->notNull() + ->length(39) + ->defaultValue(''), + IntDatabaseTableColumn::create('avatarID'), + IntDatabaseTableColumn::create('avatarFileID'), + VarcharDatabaseTableColumn::create('avatarPathname') + ->length(255), + TinyintDatabaseTableColumn::create('disableAvatar') + ->notNull() + ->defaultValue(0), + TextDatabaseTableColumn::create('disableAvatarReason'), + NotNullInt10DatabaseTableColumn::create('disableAvatarExpires') + ->defaultValue(0), + TextDatabaseTableColumn::create('signature'), + TinyintDatabaseTableColumn::create('signatureEnableHtml') + ->notNull() + ->defaultValue(0), + TinyintDatabaseTableColumn::create('disableSignature') + ->notNull() + ->defaultValue(0), + TextDatabaseTableColumn::create('disableSignatureReason'), + NotNullInt10DatabaseTableColumn::create('disableSignatureExpires') + ->defaultValue(0), + NotNullInt10DatabaseTableColumn::create('lastActivityTime') + ->defaultValue(0), + IntDatabaseTableColumn::create('rankID'), + NotNullVarchar255DatabaseTableColumn::create('userTitle') + ->defaultValue(''), + IntDatabaseTableColumn::create('userOnlineGroupID'), + NotNullInt10DatabaseTableColumn::create('activityPoints') + ->defaultValue(0), + VarcharDatabaseTableColumn::create('notificationMailToken') + ->notNull() + ->length(20) + ->defaultValue(''), + NotNullVarchar191DatabaseTableColumn::create('authData') + ->defaultValue(''), + MediumintDatabaseTableColumn::create('likesReceived') + ->notNull() + ->defaultValue(0), + NotNullInt10DatabaseTableColumn::create('trophyPoints') + ->defaultValue(0), + IntDatabaseTableColumn::create('coverPhotoFileID'), + /** @deprecated 6.2 */ + CharDatabaseTableColumn::create('coverPhotoHash') + ->length(40), + /** @deprecated 6.2 */ + VarcharDatabaseTableColumn::create('coverPhotoExtension') + ->notNull() + ->length(4) + ->defaultValue(''), + /** @deprecated 6.2 */ + DefaultFalseBooleanDatabaseTableColumn::create('coverPhotoHasWebP'), + TinyintDatabaseTableColumn::create('disableCoverPhoto') + ->notNull() + ->defaultValue(0), + TextDatabaseTableColumn::create('disableCoverPhotoReason'), + NotNullInt10DatabaseTableColumn::create('disableCoverPhotoExpires') + ->defaultValue(0), + NotNullInt10DatabaseTableColumn::create('articles') + ->defaultValue(0), + NotNullVarchar255DatabaseTableColumn::create('blacklistMatches') + ->defaultValue(''), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['userID']), + DatabaseTableIndex::create('username') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['username']), + DatabaseTableIndex::create('email') + ->columns(['email']), + DatabaseTableIndex::create('registrationDate') + ->columns(['registrationDate']), + DatabaseTableIndex::create('styleID') + ->columns(['styleID']), + DatabaseTableIndex::create('activationCode') + ->columns(['activationCode']), + DatabaseTableIndex::create('registrationData') + ->columns(['registrationIpAddress', 'registrationDate']), + DatabaseTableIndex::create('activityPoints') + ->columns(['activityPoints']), + DatabaseTableIndex::create('likesReceived') + ->columns(['likesReceived']), + DatabaseTableIndex::create('authData') + ->columns(['authData']), + DatabaseTableIndex::create('trophyPoints') + ->columns(['trophyPoints']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['avatarID']) + ->referencedTable('wcf1_user_avatar') + ->referencedColumns(['avatarID']) + ->onDelete('SET NULL') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['userOnlineGroupID']) + ->referencedTable('wcf1_user_group') + ->referencedColumns(['groupID']) + ->onDelete('SET NULL') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['avatarFileID']) + ->referencedTable('wcf1_file') + ->referencedColumns(['fileID']) + ->onDelete('SET NULL') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['rankID']) + ->referencedTable('wcf1_user_rank') + ->referencedColumns(['rankID']) + ->onDelete('SET NULL') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['coverPhotoFileID']) + ->referencedTable('wcf1_file') + ->referencedColumns(['fileID']) + ->onDelete('SET NULL') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_user_activity_event') + ->columns([ + ObjectIdDatabaseTableColumn::create('eventID'), + NotNullInt10DatabaseTableColumn::create('objectTypeID'), + NotNullInt10DatabaseTableColumn::create('objectID'), + IntDatabaseTableColumn::create('languageID'), + NotNullInt10DatabaseTableColumn::create('userID'), + NotNullInt10DatabaseTableColumn::create('time'), + TextDatabaseTableColumn::create('additionalData'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['eventID']), + DatabaseTableIndex::create('time') + ->columns(['time']), + DatabaseTableIndex::create('userID') + ->columns(['userID', 'time']), + DatabaseTableIndex::create('objectTypeID') + ->columns(['objectTypeID', 'objectID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['objectTypeID']) + ->referencedTable('wcf1_object_type') + ->referencedColumns(['objectTypeID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['languageID']) + ->referencedTable('wcf1_language') + ->referencedColumns(['languageID']) + ->onDelete('SET NULL') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['userID']) + ->referencedTable('wcf1_user') + ->referencedColumns(['userID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_user_activity_point') + ->columns([ + NotNullInt10DatabaseTableColumn::create('userID'), + NotNullInt10DatabaseTableColumn::create('objectTypeID'), + NotNullInt10DatabaseTableColumn::create('activityPoints') + ->defaultValue(0), + NotNullInt10DatabaseTableColumn::create('items') + ->defaultValue(0), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['userID', 'objectTypeID']), + DatabaseTableIndex::create('objectTypeID') + ->columns(['objectTypeID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['userID']) + ->referencedTable('wcf1_user') + ->referencedColumns(['userID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['objectTypeID']) + ->referencedTable('wcf1_object_type') + ->referencedColumns(['objectTypeID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_user_authentication_failure') + ->columns([ + ObjectIdDatabaseTableColumn::create('failureID'), + EnumDatabaseTableColumn::create('environment') + ->notNull() + ->enumValues([ + 'user', + 'admin', + ]) + ->defaultValue('user'), + IntDatabaseTableColumn::create('userID'), + NotNullVarchar255DatabaseTableColumn::create('username') + ->defaultValue(''), + NotNullInt10DatabaseTableColumn::create('time') + ->defaultValue(0), + VarcharDatabaseTableColumn::create('ipAddress') + ->notNull() + ->length(39) + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('userAgent') + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('validationError') + ->defaultValue(''), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['failureID']), + DatabaseTableIndex::create('ipAddress') + ->columns(['ipAddress', 'time']), + DatabaseTableIndex::create('time') + ->columns(['time']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['userID']) + ->referencedTable('wcf1_user') + ->referencedColumns(['userID']) + ->onDelete('SET NULL') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_user_avatar') + ->columns([ + ObjectIdDatabaseTableColumn::create('avatarID'), + NotNullVarchar255DatabaseTableColumn::create('avatarName') + ->defaultValue(''), + VarcharDatabaseTableColumn::create('avatarExtension') + ->notNull() + ->length(7) + ->defaultValue(''), + SmallintDatabaseTableColumn::create('width') + ->notNull() + ->defaultValue(0), + SmallintDatabaseTableColumn::create('height') + ->notNull() + ->defaultValue(0), + IntDatabaseTableColumn::create('userID'), + VarcharDatabaseTableColumn::create('fileHash') + ->notNull() + ->length(40) + ->defaultValue(''), + DefaultFalseBooleanDatabaseTableColumn::create('hasWebP'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['avatarID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['userID']) + ->referencedTable('wcf1_user') + ->referencedColumns(['userID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_user_collapsible_content') + ->columns([ + NotNullInt10DatabaseTableColumn::create('objectTypeID'), + NotNullVarchar191DatabaseTableColumn::create('objectID'), + NotNullInt10DatabaseTableColumn::create('userID'), + ]) + ->indices([ + DatabaseTableIndex::create('objectTypeID') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['objectTypeID', 'objectID', 'userID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['userID']) + ->referencedTable('wcf1_user') + ->referencedColumns(['userID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['objectTypeID']) + ->referencedTable('wcf1_object_type') + ->referencedColumns(['objectTypeID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_user_follow') + ->columns([ + ObjectIdDatabaseTableColumn::create('followID'), + NotNullInt10DatabaseTableColumn::create('userID'), + NotNullInt10DatabaseTableColumn::create('followUserID'), + NotNullInt10DatabaseTableColumn::create('time') + ->defaultValue(0), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['followID']), + DatabaseTableIndex::create('userID') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['userID', 'followUserID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['followUserID']) + ->referencedTable('wcf1_user') + ->referencedColumns(['userID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['userID']) + ->referencedTable('wcf1_user') + ->referencedColumns(['userID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_user_group') + ->columns([ + ObjectIdDatabaseTableColumn::create('groupID'), + NotNullVarchar255DatabaseTableColumn::create('groupName') + ->defaultValue(''), + TextDatabaseTableColumn::create('groupDescription'), + TinyintDatabaseTableColumn::create('groupType') + ->notNull() + ->defaultValue(4), + MediumintDatabaseTableColumn::create('priority') + ->notNull() + ->defaultValue(0), + NotNullVarchar255DatabaseTableColumn::create('userOnlineMarking') + ->defaultValue('%s'), + TinyintDatabaseTableColumn::create('showOnTeamPage') + ->notNull() + ->defaultValue(0), + TinyintDatabaseTableColumn::create('allowMention') + ->notNull() + ->defaultValue(0), + TinyintDatabaseTableColumn::create('requireMultifactor') + ->notNull() + ->defaultValue(0), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['groupID']), + ]), + DatabaseTable::create('wcf1_user_group_assignment') + ->columns([ + ObjectIdDatabaseTableColumn::create('assignmentID'), + NotNullInt10DatabaseTableColumn::create('groupID'), + NotNullVarchar255DatabaseTableColumn::create('title'), + DefaultFalseBooleanDatabaseTableColumn::create('isDisabled'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['assignmentID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['groupID']) + ->referencedTable('wcf1_user_group') + ->referencedColumns(['groupID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_user_group_option') + ->columns([ + ObjectIdDatabaseTableColumn::create('optionID'), + NotNullInt10DatabaseTableColumn::create('packageID'), + NotNullVarchar191DatabaseTableColumn::create('optionName') + ->defaultValue(''), + NotNullVarchar191DatabaseTableColumn::create('categoryName') + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('optionType') + ->defaultValue(''), + MediumtextDatabaseTableColumn::create('defaultValue'), + TextDatabaseTableColumn::create('validationPattern'), + MediumtextDatabaseTableColumn::create('enableOptions'), + NotNullInt10DatabaseTableColumn::create('showOrder') + ->defaultValue(0), + TextDatabaseTableColumn::create('permissions'), + TextDatabaseTableColumn::create('options'), + TinyintDatabaseTableColumn::create('usersOnly') + ->notNull() + ->defaultValue(0), + MediumtextDatabaseTableColumn::create('additionalData'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['optionID']), + DatabaseTableIndex::create('optionName') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['optionName', 'packageID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['packageID']) + ->referencedTable('wcf1_package') + ->referencedColumns(['packageID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_user_group_option_category') + ->columns([ + ObjectIdDatabaseTableColumn::create('categoryID'), + NotNullInt10DatabaseTableColumn::create('packageID'), + NotNullVarchar191DatabaseTableColumn::create('categoryName') + ->defaultValue(''), + NotNullVarchar191DatabaseTableColumn::create('parentCategoryName') + ->defaultValue(''), + NotNullInt10DatabaseTableColumn::create('showOrder') + ->defaultValue(0), + TextDatabaseTableColumn::create('permissions'), + TextDatabaseTableColumn::create('options'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['categoryID']), + DatabaseTableIndex::create('categoryName') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['categoryName']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['packageID']) + ->referencedTable('wcf1_package') + ->referencedColumns(['packageID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_user_group_option_value') + ->columns([ + NotNullInt10DatabaseTableColumn::create('groupID'), + NotNullInt10DatabaseTableColumn::create('optionID'), + MediumtextDatabaseTableColumn::create('optionValue') + ->notNull(), + ]) + ->indices([ + DatabaseTableIndex::create('groupID') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['groupID', 'optionID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['groupID']) + ->referencedTable('wcf1_user_group') + ->referencedColumns(['groupID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['optionID']) + ->referencedTable('wcf1_user_group_option') + ->referencedColumns(['optionID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_user_ignore') + ->columns([ + ObjectIdDatabaseTableColumn::create('ignoreID'), + NotNullInt10DatabaseTableColumn::create('userID'), + NotNullInt10DatabaseTableColumn::create('ignoreUserID'), + NotNullInt10DatabaseTableColumn::create('time') + ->defaultValue(0), + TinyintDatabaseTableColumn::create('type') + ->notNull() + ->defaultValue(1), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['ignoreID']), + DatabaseTableIndex::create('userID') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['userID', 'ignoreUserID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['userID']) + ->referencedTable('wcf1_user') + ->referencedColumns(['userID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['ignoreUserID']) + ->referencedTable('wcf1_user') + ->referencedColumns(['userID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_user_menu_item') + ->columns([ + ObjectIdDatabaseTableColumn::create('menuItemID'), + NotNullInt10DatabaseTableColumn::create('packageID'), + NotNullVarchar191DatabaseTableColumn::create('menuItem') + ->defaultValue(''), + NotNullVarchar191DatabaseTableColumn::create('parentMenuItem') + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('menuItemController') + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('menuItemLink') + ->defaultValue(''), + NotNullInt10DatabaseTableColumn::create('showOrder') + ->defaultValue(0), + TextDatabaseTableColumn::create('permissions'), + TextDatabaseTableColumn::create('options'), + NotNullVarchar255DatabaseTableColumn::create('className') + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('iconClassName') + ->defaultValue(''), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['menuItemID']), + DatabaseTableIndex::create('menuItem') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['menuItem', 'packageID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['packageID']) + ->referencedTable('wcf1_package') + ->referencedColumns(['packageID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_user_multifactor') + ->columns([ + ObjectIdDatabaseTableColumn::create('setupID'), + NotNullInt10DatabaseTableColumn::create('userID'), + NotNullInt10DatabaseTableColumn::create('objectTypeID'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['setupID']), + DatabaseTableIndex::create('userID') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['userID', 'objectTypeID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['objectTypeID']) + ->referencedTable('wcf1_object_type') + ->referencedColumns(['objectTypeID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['userID']) + ->referencedTable('wcf1_user') + ->referencedColumns(['userID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_user_multifactor_backup') + ->columns([ + NotNullInt10DatabaseTableColumn::create('setupID'), + NotNullVarchar191DatabaseTableColumn::create('identifier'), + NotNullVarchar255DatabaseTableColumn::create('code'), + NotNullInt10DatabaseTableColumn::create('createTime'), + IntDatabaseTableColumn::create('useTime'), + ]) + ->indices([ + DatabaseTableIndex::create('setupID') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['setupID', 'identifier']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['setupID']) + ->referencedTable('wcf1_user_multifactor') + ->referencedColumns(['setupID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_user_multifactor_email') + ->columns([ + NotNullInt10DatabaseTableColumn::create('setupID'), + NotNullVarchar191DatabaseTableColumn::create('code'), + NotNullInt10DatabaseTableColumn::create('createTime'), + ]) + ->indices([ + DatabaseTableIndex::create('setupID') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['setupID', 'code']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['setupID']) + ->referencedTable('wcf1_user_multifactor') + ->referencedColumns(['setupID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_user_multifactor_totp') + ->columns([ + NotNullInt10DatabaseTableColumn::create('setupID'), + NotNullVarchar191DatabaseTableColumn::create('deviceID'), + NotNullVarchar255DatabaseTableColumn::create('deviceName'), + VarbinaryDatabaseTableColumn::create('secret') + ->notNull() + ->length(255), + NotNullInt10DatabaseTableColumn::create('minCounter'), + NotNullInt10DatabaseTableColumn::create('createTime'), + IntDatabaseTableColumn::create('useTime'), + ]) + ->indices([ + DatabaseTableIndex::create('setupID') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['setupID', 'deviceID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['setupID']) + ->referencedTable('wcf1_user_multifactor') + ->referencedColumns(['setupID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_user_notification') + ->columns([ + ObjectIdDatabaseTableColumn::create('notificationID'), + NotNullInt10DatabaseTableColumn::create('packageID'), + NotNullInt10DatabaseTableColumn::create('eventID'), + NotNullInt10DatabaseTableColumn::create('objectID') + ->defaultValue(0), + NotNullInt10DatabaseTableColumn::create('baseObjectID') + ->defaultValue(0), + VarcharDatabaseTableColumn::create('eventHash') + ->notNull() + ->length(40) + ->defaultValue(''), + IntDatabaseTableColumn::create('authorID'), + NotNullInt10DatabaseTableColumn::create('timesTriggered') + ->defaultValue(0), + NotNullInt10DatabaseTableColumn::create('guestTimesTriggered') + ->defaultValue(0), + NotNullInt10DatabaseTableColumn::create('userID'), + NotNullInt10DatabaseTableColumn::create('time') + ->defaultValue(0), + TinyintDatabaseTableColumn::create('mailNotified') + ->notNull() + ->defaultValue(0), + NotNullInt10DatabaseTableColumn::create('confirmTime') + ->defaultValue(0), + TextDatabaseTableColumn::create('additionalData'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['notificationID']), + DatabaseTableIndex::create('userID') + ->columns(['userID', 'eventID', 'objectID', 'confirmTime']), + DatabaseTableIndex::create('userID_2') + ->columns(['userID', 'confirmTime']), + DatabaseTableIndex::create('confirmTime') + ->columns(['confirmTime']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['userID']) + ->referencedTable('wcf1_user') + ->referencedColumns(['userID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['eventID']) + ->referencedTable('wcf1_user_notification_event') + ->referencedColumns(['eventID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['authorID']) + ->referencedTable('wcf1_user') + ->referencedColumns(['userID']) + ->onDelete('SET NULL') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_user_notification_author') + ->columns([ + NotNullInt10DatabaseTableColumn::create('notificationID'), + IntDatabaseTableColumn::create('authorID'), + NotNullInt10DatabaseTableColumn::create('time') + ->defaultValue(0), + ]) + ->indices([ + DatabaseTableIndex::create('notificationID') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['notificationID', 'authorID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['notificationID']) + ->referencedTable('wcf1_user_notification') + ->referencedColumns(['notificationID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['authorID']) + ->referencedTable('wcf1_user') + ->referencedColumns(['userID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_user_notification_event') + ->columns([ + ObjectIdDatabaseTableColumn::create('eventID'), + NotNullInt10DatabaseTableColumn::create('packageID'), + NotNullVarchar191DatabaseTableColumn::create('eventName') + ->defaultValue(''), + NotNullInt10DatabaseTableColumn::create('objectTypeID'), + NotNullVarchar255DatabaseTableColumn::create('className') + ->defaultValue(''), + TextDatabaseTableColumn::create('permissions'), + TextDatabaseTableColumn::create('options'), + TinyintDatabaseTableColumn::create('preset') + ->notNull() + ->defaultValue(0), + EnumDatabaseTableColumn::create('presetMailNotificationType') + ->notNull() + ->enumValues([ + 'none', + 'instant', + 'daily', + ]) + ->defaultValue('none'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['eventID']), + DatabaseTableIndex::create('eventName') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['eventName', 'objectTypeID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['packageID']) + ->referencedTable('wcf1_package') + ->referencedColumns(['packageID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['objectTypeID']) + ->referencedTable('wcf1_object_type') + ->referencedColumns(['objectTypeID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_user_notification_event_to_user') + ->columns([ + NotNullInt10DatabaseTableColumn::create('userID'), + NotNullInt10DatabaseTableColumn::create('eventID'), + EnumDatabaseTableColumn::create('mailNotificationType') + ->notNull() + ->enumValues([ + 'none', + 'instant', + 'daily', + ]) + ->defaultValue('none'), + ]) + ->indices([ + DatabaseTableIndex::create('eventID') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['eventID', 'userID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['eventID']) + ->referencedTable('wcf1_user_notification_event') + ->referencedColumns(['eventID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['userID']) + ->referencedTable('wcf1_user') + ->referencedColumns(['userID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_user_object_watch') + ->columns([ + ObjectIdDatabaseTableColumn::create('watchID'), + NotNullInt10DatabaseTableColumn::create('objectTypeID'), + NotNullInt10DatabaseTableColumn::create('objectID'), + NotNullInt10DatabaseTableColumn::create('userID'), + TinyintDatabaseTableColumn::create('notification') + ->notNull() + ->defaultValue(0), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['watchID']), + DatabaseTableIndex::create('objectTypeID') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['objectTypeID', 'userID', 'objectID']), + DatabaseTableIndex::create('objectTypeID_2') + ->columns(['objectTypeID', 'objectID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['objectTypeID']) + ->referencedTable('wcf1_object_type') + ->referencedColumns(['objectTypeID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['userID']) + ->referencedTable('wcf1_user') + ->referencedColumns(['userID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_user_option') + ->columns([ + ObjectIdDatabaseTableColumn::create('optionID'), + NotNullInt10DatabaseTableColumn::create('packageID'), + NotNullVarchar191DatabaseTableColumn::create('optionName') + ->defaultValue(''), + NotNullVarchar191DatabaseTableColumn::create('categoryName') + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('optionType') + ->defaultValue(''), + MediumtextDatabaseTableColumn::create('defaultValue'), + TextDatabaseTableColumn::create('validationPattern'), + MediumtextDatabaseTableColumn::create('selectOptions'), + MediumtextDatabaseTableColumn::create('enableOptions'), + MediumtextDatabaseTableColumn::create('labeledUrl'), + TinyintDatabaseTableColumn::create('required') + ->notNull() + ->defaultValue(0), + TinyintDatabaseTableColumn::create('askDuringRegistration') + ->notNull() + ->defaultValue(0), + TinyintDatabaseTableColumn::create('editable') + ->notNull() + ->defaultValue(0), + TinyintDatabaseTableColumn::create('visible') + ->notNull() + ->defaultValue(0), + NotNullVarchar255DatabaseTableColumn::create('outputClass') + ->defaultValue(''), + TinyintDatabaseTableColumn::create('searchable') + ->notNull() + ->defaultValue(0), + NotNullInt10DatabaseTableColumn::create('showOrder') + ->defaultValue(0), + DefaultFalseBooleanDatabaseTableColumn::create('isDisabled'), + TextDatabaseTableColumn::create('permissions'), + TextDatabaseTableColumn::create('options'), + MediumtextDatabaseTableColumn::create('additionalData'), + DefaultFalseBooleanDatabaseTableColumn::create('originIsSystem'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['optionID']), + DatabaseTableIndex::create('optionName') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['optionName', 'packageID']), + DatabaseTableIndex::create('categoryName') + ->columns(['categoryName']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['packageID']) + ->referencedTable('wcf1_package') + ->referencedColumns(['packageID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_user_option_category') + ->columns([ + ObjectIdDatabaseTableColumn::create('categoryID'), + NotNullInt10DatabaseTableColumn::create('packageID'), + NotNullVarchar191DatabaseTableColumn::create('categoryName') + ->defaultValue(''), + NotNullVarchar191DatabaseTableColumn::create('parentCategoryName') + ->defaultValue(''), + NotNullInt10DatabaseTableColumn::create('showOrder') + ->defaultValue(0), + TextDatabaseTableColumn::create('permissions'), + TextDatabaseTableColumn::create('options'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['categoryID']), + DatabaseTableIndex::create('categoryName') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['categoryName']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['packageID']) + ->referencedTable('wcf1_package') + ->referencedColumns(['packageID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_user_option_value') + ->columns([ + NotNullInt10DatabaseTableColumn::create('userID'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['userID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['userID']) + ->referencedTable('wcf1_user') + ->referencedColumns(['userID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_user_profile_menu_item') + ->columns([ + ObjectIdDatabaseTableColumn::create('menuItemID'), + NotNullInt10DatabaseTableColumn::create('packageID'), + NotNullVarchar191DatabaseTableColumn::create('menuItem'), + NotNullInt10DatabaseTableColumn::create('showOrder') + ->defaultValue(0), + TextDatabaseTableColumn::create('permissions'), + TextDatabaseTableColumn::create('options'), + NotNullVarchar255DatabaseTableColumn::create('className'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['menuItemID']), + DatabaseTableIndex::create('packageID') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['packageID', 'menuItem']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['packageID']) + ->referencedTable('wcf1_package') + ->referencedColumns(['packageID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_user_profile_visitor') + ->columns([ + ObjectIdDatabaseTableColumn::create('visitorID'), + NotNullInt10DatabaseTableColumn::create('ownerID'), + NotNullInt10DatabaseTableColumn::create('userID'), + NotNullInt10DatabaseTableColumn::create('time') + ->defaultValue(0), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['visitorID']), + DatabaseTableIndex::create('ownerID') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['ownerID', 'userID']), + DatabaseTableIndex::create('time') + ->columns(['time']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['userID']) + ->referencedTable('wcf1_user') + ->referencedColumns(['userID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['ownerID']) + ->referencedTable('wcf1_user') + ->referencedColumns(['userID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_user_rank') + ->columns([ + ObjectIdDatabaseTableColumn::create('rankID'), + NotNullInt10DatabaseTableColumn::create('groupID'), + NotNullInt10DatabaseTableColumn::create('requiredPoints') + ->defaultValue(0), + NotNullVarchar255DatabaseTableColumn::create('rankTitle') + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('cssClassName') + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('rankImage') + ->defaultValue(''), + TinyintDatabaseTableColumn::create('repeatImage') + ->notNull() + ->defaultValue(1), + TinyintDatabaseTableColumn::create('requiredGender') + ->notNull() + ->defaultValue(0), + TinyintDatabaseTableColumn::create('hideTitle') + ->notNull() + ->defaultValue(0), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['rankID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['groupID']) + ->referencedTable('wcf1_user_group') + ->referencedColumns(['groupID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_user_session') + ->columns([ + CharDatabaseTableColumn::create('sessionID') + ->notNull() + ->length(40), + IntDatabaseTableColumn::create('userID'), + VarcharDatabaseTableColumn::create('ipAddress') + ->notNull() + ->length(39) + ->defaultValue(''), + NotNullVarchar255DatabaseTableColumn::create('userAgent') + ->defaultValue(''), + NotNullInt10DatabaseTableColumn::create('creationTime'), + NotNullInt10DatabaseTableColumn::create('lastActivityTime') + ->defaultValue(0), + MediumblobDatabaseTableColumn::create('sessionVariables'), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['sessionID']), + DatabaseTableIndex::create('userID') + ->columns(['userID']), + DatabaseTableIndex::create('lastActivityTime') + ->columns(['lastActivityTime']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['userID']) + ->referencedTable('wcf1_user') + ->referencedColumns(['userID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_user_special_trophy') + ->columns([ + NotNullInt10DatabaseTableColumn::create('trophyID'), + NotNullInt10DatabaseTableColumn::create('userID'), + ]) + ->indices([ + DatabaseTableIndex::create('trophyID') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['trophyID', 'userID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['trophyID']) + ->referencedTable('wcf1_trophy') + ->referencedColumns(['trophyID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['userID']) + ->referencedTable('wcf1_user') + ->referencedColumns(['userID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_user_storage') + ->columns([ + NotNullInt10DatabaseTableColumn::create('userID'), + VarcharDatabaseTableColumn::create('field') + ->notNull() + ->length(80) + ->defaultValue(''), + MediumtextDatabaseTableColumn::create('fieldValue'), + ]) + ->indices([ + DatabaseTableIndex::create('userID') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['userID', 'field']), + DatabaseTableIndex::create('field') + ->columns(['field']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['userID']) + ->referencedTable('wcf1_user') + ->referencedColumns(['userID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_user_to_group') + ->columns([ + NotNullInt10DatabaseTableColumn::create('userID'), + NotNullInt10DatabaseTableColumn::create('groupID'), + ]) + ->indices([ + DatabaseTableIndex::create('userID') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['userID', 'groupID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['groupID']) + ->referencedTable('wcf1_user_group') + ->referencedColumns(['groupID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['userID']) + ->referencedTable('wcf1_user') + ->referencedColumns(['userID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_user_to_language') + ->columns([ + NotNullInt10DatabaseTableColumn::create('userID'), + NotNullInt10DatabaseTableColumn::create('languageID'), + ]) + ->indices([ + DatabaseTableIndex::create('userID') + ->type(DatabaseTableIndex::UNIQUE_TYPE) + ->columns(['userID', 'languageID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['languageID']) + ->referencedTable('wcf1_language') + ->referencedColumns(['languageID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['userID']) + ->referencedTable('wcf1_user') + ->referencedColumns(['userID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), + DatabaseTable::create('wcf1_user_trophy') + ->columns([ + ObjectIdDatabaseTableColumn::create('userTrophyID'), + NotNullInt10DatabaseTableColumn::create('trophyID'), + NotNullInt10DatabaseTableColumn::create('userID'), + NotNullInt10DatabaseTableColumn::create('time') + ->defaultValue(0), + MediumtextDatabaseTableColumn::create('description'), + TinyintDatabaseTableColumn::create('useCustomDescription') + ->notNull() + ->defaultValue(0), + TinyintDatabaseTableColumn::create('trophyUseHtml') + ->notNull() + ->defaultValue(0), + ]) + ->indices([ + DatabaseTablePrimaryIndex::create() + ->columns(['userTrophyID']), + ]) + ->foreignKeys([ + DatabaseTableForeignKey::create() + ->columns(['trophyID']) + ->referencedTable('wcf1_trophy') + ->referencedColumns(['trophyID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + DatabaseTableForeignKey::create() + ->columns(['userID']) + ->referencedTable('wcf1_user') + ->referencedColumns(['userID']) + ->onDelete('CASCADE') + ->onUpdate('NO ACTION'), + ]), +];