</type>
<!-- /deprecated -->
</import>
- <delete>
- <type name="com.woltlab.wcf.searchEngineConvertInnoDb">
- <definitionname>com.woltlab.wcf.rebuildData</definitionname>
- </type>
- </delete>
</data>
</option>
</options>
</import>
- <delete>
- <option name="module_master_password"/>
- <option name="blacklist_ip_addresses"/>
- <option name="blacklist_user_agents"/>
- <option name="module_system_recaptcha"/>
- <option name="profile_mail_use_captcha"/>
- <option name="url_legacy_mode"/>
- <option name="enable_censorship"/>
- <option name="search_use_captcha" />
- </delete>
</data>
</option>
</options>
</import>
- <delete>
- <!-- This option was improperly deleted in 5.2 / 6715774b360ae6a768ebcce407eeb4418339eab1 -->
- <option name="googlePlus" />
- </delete>
</data>
+++ /dev/null
-<?php
-
-/**
- * Updates the database layout during the update from 5.4 to 5.5.
- *
- * @author Matthias Schmidt
- * @copyright 2001-2021 WoltLab GmbH
- * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
- * @package WoltLabSuite\Core
- */
-
-use wcf\system\database\table\column\DefaultFalseBooleanDatabaseTableColumn;
-use wcf\system\database\table\column\EnumDatabaseTableColumn;
-use wcf\system\database\table\column\SmallintDatabaseTableColumn;
-use wcf\system\database\table\index\DatabaseTableIndex;
-use wcf\system\database\table\PartialDatabaseTable;
-
-return [
- PartialDatabaseTable::create('wcf1_article')
- ->columns([
- SmallintDatabaseTableColumn::create('comments')
- ->drop(),
- ]),
- PartialDatabaseTable::create('wcf1_article_content')
- ->columns([
- SmallintDatabaseTableColumn::create('comments')
- ->length(5)
- ->notNull()
- ->defaultValue(0),
- ]),
- PartialDatabaseTable::create('wcf1_blacklist_entry')
- ->indices([
- DatabaseTableIndex::create('lastSeen')
- ->columns(['lastSeen']),
- ]),
- PartialDatabaseTable::create('wcf1_comment')
- ->columns([
- DefaultFalseBooleanDatabaseTableColumn::create('hasEmbeddedObjects'),
- ]),
- PartialDatabaseTable::create('wcf1_comment_response')
- ->columns([
- DefaultFalseBooleanDatabaseTableColumn::create('hasEmbeddedObjects'),
- ]),
- PartialDatabaseTable::create('wcf1_style')
- ->columns([
- EnumDatabaseTableColumn::create('apiVersion')
- ->enumValues(['3.0', '3.1', '5.2', '5.5'])
- ->notNull()
- ->defaultValue('3.0'),
- ]),
-];
+++ /dev/null
-<?php
-
-/**
- * Create conditions for all boxes that use the legacy page filter.
- *
- * @author Joshua Ruesweg
- * @copyright 2001-2021 WoltLab GmbH
- * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
- * @package WoltLabSuite\Core
- */
-
-use wcf\data\box\Box;
-use wcf\data\box\BoxList;
-use wcf\data\condition\Condition;
-use wcf\data\object\type\ObjectTypeCache;
-use wcf\system\condition\ConditionHandler;
-use wcf\system\condition\page\MultiPageCondition;
-
-$boxList = new BoxList();
-$boxList->readObjects();
-
-foreach ($boxList as $box) {
- $conditions = ConditionHandler::getInstance()->getConditions(
- Box::VISIBILITY_CONDITIONS_OBJECT_TYPE_NAME,
- $box->boxID
- );
-
- if (!empty($conditions)) {
- // The box already has conditions (maybe from a previous upgrade attempt).
- // Skip this box to ensure, that the condition will not attached twice.
- continue;
- }
-
- $pageCondition = ObjectTypeCache::getInstance()->getObjectTypeByName(
- Box::VISIBILITY_CONDITIONS_OBJECT_TYPE_NAME,
- 'com.woltlab.wcf.page'
- );
-
- \assert($pageCondition->getProcessor() instanceof MultiPageCondition);
-
- $pageCondition->getProcessor()->setData(new Condition(null, [
- 'conditionData' => \serialize([
- 'pageIDs' => $box->getPageIDs(),
- 'pageIDs_reverseLogic' => $box->visibleEverywhere,
- ]),
- ]));
-
- ConditionHandler::getInstance()->createConditions(
- $box->boxID,
- [$pageCondition]
- );
-}
+++ /dev/null
-<?php
-
-/**
- * Since version 5.5 the excluded package version must be explicit set. If not, the installation of the plugin in denied.
- * For this reason, the (unused) format is rewritten from empty to `*`.
- *
- * see https://github.com/WoltLab/WCF/pull/4492
- *
- * @author Joshua Ruesweg
- * @copyright 2001-2022 WoltLab GmbH
- * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
- * @package WoltLabSuite\Core
- */
-
-use wcf\system\WCF;
-
-$sql = "UPDATE wcf1_package_exclusion
- SET excludedPackageVersion = ?
- WHERE excludedPackageVersion = ?";
-$statement = WCF::getDB()->prepare($sql);
-$statement->execute([
- '*',
- '',
-]);
+++ /dev/null
-<?php
-
-/**
- * Clear the wcf1_package_(update_)?compatibility, wcf1_package_update_optional tables.
- *
- * see https://github.com/WoltLab/WCF/pull/4371
- *
- * @author Tim Duesterhus
- * @copyright 2001-2021 WoltLab GmbH
- * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
- * @package WoltLabSuite\Core
- */
-
-use wcf\system\WCF;
-
-$sql = "DELETE FROM wcf1_package_compatibility";
-$statement = WCF::getDB()->prepare($sql);
-$statement->execute();
-
-$sql = "DELETE FROM wcf1_package_update_compatibility";
-$statement = WCF::getDB()->prepare($sql);
-$statement->execute();
-
-$sql = "DELETE FROM wcf1_package_update_optional";
-$statement = WCF::getDB()->prepare($sql);
-$statement->execute();
+++ /dev/null
-<?php
-
-use wcf\data\object\type\ObjectTypeCache;
-use wcf\system\database\util\PreparedStatementConditionBuilder;
-use wcf\system\search\SearchIndexManager;
-use wcf\system\WCF;
-
-$objectTypes = ObjectTypeCache::getInstance()->getObjectTypes('com.woltlab.wcf.searchableObjectType');
-$tableNames = [];
-foreach ($objectTypes as $objectType) {
- $tableNames[] = SearchIndexManager::getTableName($objectType->objectType);
-}
-$conditionBuilder = new PreparedStatementConditionBuilder(true);
-$conditionBuilder->add('TABLE_NAME IN (?)', [$tableNames]);
-$conditionBuilder->add('TABLE_SCHEMA = ?', [WCF::getDB()->getDatabaseName()]);
-$conditionBuilder->add('ENGINE <> ?', ['InnoDB']);
-
-$sql = "SELECT COUNT(*)
- FROM INFORMATION_SCHEMA.TABLES
- " . $conditionBuilder;
-$statement = WCF::getDB()->prepareStatement($sql);
-$statement->execute($conditionBuilder->getParameters());
-$nonInnoDbSearch = $statement->fetchSingleColumn() > 0;
-
-if ($nonInnoDbSearch) {
- if (WCF::getLanguage()->getFixedLanguageCode() === 'de') {
- $message = "Es wurden noch nicht alle Tabellen auf InnoDB migriert.";
- } else {
- $message = "The migration to InnoDB was not yet performed for all database tables.";
- }
-
- throw new \RuntimeException($message);
-}
+++ /dev/null
-<?php
-
-/**
- * Normalizes the filenames in the package installation file log during the update from 5.4 to 5.5.
- *
- * @author Matthias Schmidt
- * @copyright 2001-2021 WoltLab GmbH
- * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
- * @package WoltLabSuite\Core
- */
-
-use wcf\system\WCF;
-use wcf\util\FileUtil;
-
-$sql = "SELECT *
- FROM wcf1_package_installation_file_log
- WHERE filename LIKE ?";
-$statement = WCF::getDB()->prepare($sql);
-$statement->execute(['./%']);
-
-$sql = "DELETE FROM wcf1_package_installation_file_log
- WHERE packageID = ?
- AND filename = ?
- AND application = ?";
-$deleteStatement = WCF::getDB()->prepare($sql);
-
-$sql = "INSERT IGNORE INTO wcf1_package_installation_file_log
- (packageID, filename, application)
- VALUES (?, ?, ?)";
-$insertStatement = WCF::getDB()->prepare($sql);
-
-while ($row = $statement->fetchArray()) {
- $deleteStatement->execute([
- $row['packageID'],
- $row['filename'],
- $row['application'],
- ]);
- $insertStatement->execute([
- $row['packageID'],
- FileUtil::getRealPath($row['filename']),
- $row['application'],
- ]);
-}
+++ /dev/null
-<?php
-
-/**
- * Randomize the times of the package list update and robot list update cronjobs.
- *
- * @author Tim Duesterhus
- * @copyright 2001-2022 WoltLab GmbH
- * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
- * @package WoltLabSuite\Core
- */
-
-use wcf\system\WCF;
-
-$startMinute = \random_int(0, 59);
-$startHour = \random_int(0, 23);
-
-$sql = "UPDATE wcf1_cronjob
- SET startMinute = ?,
- startHour = ?,
- startDom = ?,
- startMonth = ?,
- startDow = ?,
- lastExec = ?,
- nextExec = ?,
- afterNextExec = ?
- WHERE packageiD = ?
- AND cronjobName = ?";
-$statement = WCF::getDB()->prepare($sql);
-$statement->execute([
- $startMinute,
- $startHour,
- '*',
- '*',
- '*',
-
- 0,
- \TIME_NOW,
- 0,
-
- $this->installation->getPackageID(),
- 'com.woltlab.wcf.refreshPackageUpdates',
-]);
-$statement->execute([
- $startMinute,
- (($startHour + 12) % 24),
- \random_int(1, 15),
- '*',
- '*',
-
- 0,
- \TIME_NOW,
- 0,
-
- $this->installation->getPackageID(),
- 'com.woltlab.wcf.refreshSearchRobots',
-]);
+++ /dev/null
-<?php
-
-/**
- * Migrates away from MAIL_SMTP_STARTTLS = 'may'.
- *
- * @author Tim Duesterhus
- * @copyright 2001-2021 WoltLab GmbH
- * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
- * @package WoltLabSuite\Core
- */
-
-use wcf\data\option\OptionAction;
-use wcf\system\email\Email;
-use wcf\system\email\transport\exception\TransientFailure;
-use wcf\system\io\RemoteFile;
-
-if (MAIL_SMTP_STARTTLS != 'may') {
- return;
-}
-
-$value = 'encrypt';
-if (\str_starts_with(MAIL_SMTP_HOST, 'ssl://')) {
- // Anything using proper SSL can't use STARTTLS.
- $value = 'none';
-} elseif (MAIL_SMTP_PORT == 465) {
- // Anything on port 465 must be using proper SSL.
- $value = 'none';
-} elseif (MAIL_SEND_METHOD == 'smtp') {
- // For all the other configurations that use SMTP as the transport we
- // need to verify whether TLS works or not.
-
- $getCode = static function (RemoteFile $connection) {
- $code = null;
- do {
- $data = $connection->gets();
- if (\preg_match('/^(\d{3})([- ])(.*)$/', $data, $matches)) {
- if ($code === null) {
- $code = \intval($matches[1]);
- }
-
- if ($code == $matches[1]) {
- if ($matches[2] === ' ') {
- return $code;
- }
- } else {
- throw new TransientFailure("Unexpected reply '" . $data . "' from SMTP server. Code does not match previous codes from multiline answer.");
- }
- } else {
- if ($connection->eof()) {
- throw new TransientFailure("Unexpected EOF / connection close from SMTP server.");
- }
-
- throw new TransientFailure("Unexpected reply '" . $data . "' from SMTP server.");
- }
- } while (true);
- };
-
- try {
- $connection = new RemoteFile(MAIL_SMTP_HOST, MAIL_SMTP_PORT, 5);
- $success = false;
- if ($getCode($connection) == 220) {
- $connection->write('EHLO ' . Email::getHost() . "\r\n");
- if ($getCode($connection) == 250) {
- $connection->write("STARTTLS\r\n");
- if ($getCode($connection) == 220) {
- if ($connection->setTLS(true)) {
- $connection->write('EHLO ' . Email::getHost() . "\r\n");
- if ($getCode($connection) == 250) {
- $success = true;
- try {
- $connection->write("QUIT\r\n");
- } catch (\Exception $e) {
- // Ignore errors during disconnect.
- }
- }
- }
- }
- }
- }
-
- if (!$success) {
- $value = 'none';
- }
- } catch (\Exception $e) {
- $value = 'none';
- } finally {
- try {
- $connection->close();
- } catch (\Exception $e) {
- // Ignore errors during disconnect.
- }
- }
-}
-
-$optionAction = new OptionAction([], 'import', [
- 'data' => [
- 'mail_smtp_starttls' => $value,
- ],
-]);
-$optionAction->executeAction();
+++ /dev/null
-<?php
-
-/**
- * Inserts new style variables introduced with WoltLab Suite 5.5.
- *
- * @author Alexander Ebert
- * @copyright 2001-2021 WoltLab GmbH
- * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
- * @package WoltLabSuite\Core
- */
-
-use wcf\system\WCF;
-
-$values = [
- 'wcfUserMenuBackground' => 'rgba(255, 255, 255, 1)',
- 'wcfUserMenuBackgroundActive' => 'rgba(239, 239, 239, 1)',
- 'wcfUserMenuText' => 'rgba(58, 58, 61, 1)',
- 'wcfUserMenuTextDimmed' => 'rgba(108, 108, 108, 1)',
- 'wcfUserMenuIndicator' => 'rgba(49, 138, 220, 1)',
- 'wcfUserMenuBorder' => 'rgba(221, 221, 221, 1)',
-];
-
-$sql = "INSERT IGNORE INTO wcf1_style_variable (variableName, defaultValue) VALUES (?, ?)";
-$statement = WCF::getDB()->prepare($sql);
-foreach ($values as $variableName => $defaultValue) {
- $statement->execute([
- $variableName,
- $defaultValue,
- ]);
-}
<item name="wcf.upload.error.uploadFailed"><![CDATA[Beim Hochladen der Datei ist ein unbekannter Fehler aufgetreten.]]></item>
</category>
</import>
-<delete>
- <item name="wcf.acp.masterPassword"/>
- <item name="wcf.acp.masterPassword.confirm"/>
- <item name="wcf.acp.masterPassword.enter"/>
- <item name="wcf.acp.masterPassword.enter.description"/>
- <item name="wcf.acp.masterPassword.error.notEqual"/>
- <item name="wcf.acp.masterPassword.error.notSecure"/>
- <item name="wcf.acp.masterPassword.error.invalid"/>
- <item name="wcf.acp.masterPassword.example"/>
- <item name="wcf.acp.masterPassword.example.set"/>
- <item name="wcf.acp.masterPassword.init"/>
- <item name="wcf.acp.masterPassword.init.description"/>
- <item name="wcf.acp.masterPassword.enter.deprecated"/>
- <item name="wcf.acp.option.module_master_password"/>
- <item name="wcf.acp.option.module_master_password.description"/>
- <item name="wcf.acp.option.blacklist_ip_addresses"/>
- <item name="wcf.acp.option.blacklist_ip_addresses.description"/>
- <item name="wcf.acp.option.blacklist_user_agents"/>
- <item name="wcf.acp.option.blacklist_user_agents.description"/>
- <item name="wcf.global.form.error.lessThan.javaScript"/>
- <item name="wcf.global.form.error.greaterThan.javaScript"/>
- <item name="wcf.acp.devtools.project.compatibility"/>
- <item name="wcf.acp.devtools.project.apiVersions"/>
- <item name="wcf.acp.devtools.project.apiVersions.description"/>
- <item name="wcf.acp.style.globals.pageLogo.description"/>
- <item name="wcf.acp.style.globals.pageLogoMobile.description"/>
- <item name="wcf.acp.option.profile_mail_use_captcha"/>
- <item name="wcf.acp.option.mail_smtp_starttls.may"/>
- <item name="wcf.acp.index.nonInnoDbSearch"/>
- <item name="wcf.acp.systemCheck.mysql.searchEngine"/>
- <item name="wcf.acp.systemCheck.mysql.searchEngine.description"/>
- <item name="wcf.acp.systemCheck.mysql.searchEngine.incorrect"/>
- <item name="wcf.acp.group.option.user.attachment.maxCount.description"/>
- <item name="wcf.acp.option.enable_censorship"/>
- <item name="wcf.acp.option.enable_censorship.description"/>
- <item name="wcf.search.type.keywords" />
- <item name="wcf.acp.option.search_use_captcha" />
- <item name="wcf.search.query.description" />
- <item name="wcf.search.results.change" />
- <item name="wcf.search.results.description" />
- <item name="wcf.search.general" />
- <item name="wcf.search.query" />
- <item name="wcf.search.error.noMatches" />
- <item name="wcf.search.error.user.noMatches" />
- <item name="wcf.user.logout.sure"/>
- <item name="wcf.acp.dataImport.existingMapping.confirmMessage"/>
- <item name="wcf.article.markAllAsRead" />
- <item name="wcf.moderation.markAllAsRead" />
- <item name="wcf.user.notification.markAllAsConfirmed" />
- <item name="wcf.user.notification.markAsConfirmed" />
- <item name="wcf.user.panel.markAllAsRead" />
- <item name="wcf.user.panel.markAsRead" />
- <item name="wcf.user.profile.user" />
- <item name="wcf.user.profile.customization" />
-</delete>
</language>
<item name="wcf.upload.error.uploadFailed"><![CDATA[An unknown error occurred during the upload.]]></item>
</category>
</import>
-<delete>
- <item name="wcf.acp.masterPassword"/>
- <item name="wcf.acp.masterPassword.confirm"/>
- <item name="wcf.acp.masterPassword.enter"/>
- <item name="wcf.acp.masterPassword.enter.description"/>
- <item name="wcf.acp.masterPassword.error.notEqual"/>
- <item name="wcf.acp.masterPassword.error.notSecure"/>
- <item name="wcf.acp.masterPassword.error.invalid"/>
- <item name="wcf.acp.masterPassword.example"/>
- <item name="wcf.acp.masterPassword.example.set"/>
- <item name="wcf.acp.masterPassword.init"/>
- <item name="wcf.acp.masterPassword.init.description"/>
- <item name="wcf.acp.masterPassword.enter.deprecated"/>
- <item name="wcf.acp.option.module_master_password"/>
- <item name="wcf.acp.option.module_master_password.description"/>
- <item name="wcf.acp.option.blacklist_ip_addresses"/>
- <item name="wcf.acp.option.blacklist_ip_addresses.description"/>
- <item name="wcf.acp.option.blacklist_user_agents"/>
- <item name="wcf.acp.option.blacklist_user_agents.description"/>
- <item name="wcf.global.form.error.lessThan.javaScript"/>
- <item name="wcf.global.form.error.greaterThan.javaScript"/>
- <item name="wcf.acp.devtools.project.compatibility"/>
- <item name="wcf.acp.devtools.project.apiVersions"/>
- <item name="wcf.acp.devtools.project.apiVersions.description"/>
- <item name="wcf.acp.style.globals.pageLogo.description"/>
- <item name="wcf.acp.style.globals.pageLogoMobile.description"/>
- <item name="wcf.acp.option.profile_mail_use_captcha"/>
- <item name="wcf.acp.option.mail_smtp_starttls.may"/>
- <item name="wcf.acp.index.nonInnoDbSearch"/>
- <item name="wcf.acp.systemCheck.mysql.searchEngine"/>
- <item name="wcf.acp.systemCheck.mysql.searchEngine.description"/>
- <item name="wcf.acp.systemCheck.mysql.searchEngine.incorrect"/>
- <item name="wcf.acp.group.option.user.attachment.maxCount.description"/>
- <item name="wcf.acp.option.enable_censorship"/>
- <item name="wcf.acp.option.enable_censorship.description"/>
- <item name="wcf.search.type.keywords" />
- <item name="wcf.acp.option.search_use_captcha" />
- <item name="wcf.search.query.description" />
- <item name="wcf.search.results.change" />
- <item name="wcf.search.results.description" />
- <item name="wcf.search.general" />
- <item name="wcf.search.query" />
- <item name="wcf.search.error.noMatches" />
- <item name="wcf.search.error.user.noMatches" />
- <item name="wcf.user.logout.sure"/>
- <item name="wcf.acp.dataImport.existingMapping.confirmMessage"/>
- <item name="wcf.article.markAllAsRead" />
- <item name="wcf.moderation.markAllAsRead" />
- <item name="wcf.user.notification.markAllAsConfirmed" />
- <item name="wcf.user.notification.markAsConfirmed" />
- <item name="wcf.user.panel.markAllAsRead" />
- <item name="wcf.user.panel.markAsRead" />
- <item name="wcf.user.profile.user" />
- <item name="wcf.user.profile.customization" />
-</delete>
</language>