diff --git a/wcfsetup/install/files/lib/system/form/option/EmailFormOption.class.php b/wcfsetup/install/files/lib/system/form/option/EmailFormOption.class.php index e23e3ef0d9..1e479b38a3 100644 --- a/wcfsetup/install/files/lib/system/form/option/EmailFormOption.class.php +++ b/wcfsetup/install/files/lib/system/form/option/EmailFormOption.class.php @@ -3,6 +3,8 @@ namespace wcf\system\form\option; use wcf\data\DatabaseObjectList; +use wcf\system\database\table\column\AbstractDatabaseTableColumn; +use wcf\system\database\table\column\VarcharDatabaseTableColumn; use wcf\system\form\builder\field\AbstractFormField; use wcf\system\form\builder\field\EmailFormField; use wcf\system\form\builder\field\TextFormField; @@ -55,4 +57,11 @@ public function applyFilter(DatabaseObjectList $list, string $columnName, mixed { $list->getConditionBuilder()->add("{$columnName} LIKE ?", ['%' . WCF::getDB()->escapeLikeValue($value) . '%']); } + + #[\Override] + public function getDatabaseTableColumn(string $name): AbstractDatabaseTableColumn + { + return VarcharDatabaseTableColumn::create($name) + ->length(255); + } } diff --git a/wcfsetup/install/files/lib/system/form/option/IconFormOption.class.php b/wcfsetup/install/files/lib/system/form/option/IconFormOption.class.php index b2ca9a685d..7a008bfb6a 100644 --- a/wcfsetup/install/files/lib/system/form/option/IconFormOption.class.php +++ b/wcfsetup/install/files/lib/system/form/option/IconFormOption.class.php @@ -2,6 +2,8 @@ namespace wcf\system\form\option; +use wcf\system\database\table\column\AbstractDatabaseTableColumn; +use wcf\system\database\table\column\VarcharDatabaseTableColumn; use wcf\system\form\builder\field\AbstractFormField; use wcf\system\form\builder\field\IconFormField; use wcf\system\form\option\formatter\IconFormatter; @@ -46,4 +48,11 @@ public function isFilterable(): bool { return false; } + + #[\Override] + public function getDatabaseTableColumn(string $name): AbstractDatabaseTableColumn + { + return VarcharDatabaseTableColumn::create($name) + ->length(255); + } } diff --git a/wcfsetup/install/files/lib/system/form/option/RatingFormOption.class.php b/wcfsetup/install/files/lib/system/form/option/RatingFormOption.class.php index 57042a53d8..ca87c5be83 100644 --- a/wcfsetup/install/files/lib/system/form/option/RatingFormOption.class.php +++ b/wcfsetup/install/files/lib/system/form/option/RatingFormOption.class.php @@ -2,6 +2,8 @@ namespace wcf\system\form\option; +use wcf\system\database\table\column\AbstractDatabaseTableColumn; +use wcf\system\database\table\column\TinyintDatabaseTableColumn; use wcf\system\form\builder\field\AbstractFormField; use wcf\system\form\builder\field\RatingFormField; use wcf\system\form\option\formatter\IFormOptionFormatter; @@ -42,4 +44,10 @@ public function getFormatter(): IFormOptionFormatter { return new RatingFormatter(); } + + #[\Override] + public function getDatabaseTableColumn(string $name): AbstractDatabaseTableColumn + { + return TinyintDatabaseTableColumn::create($name); + } } diff --git a/wcfsetup/install/files/lib/system/form/option/SelectFormOption.class.php b/wcfsetup/install/files/lib/system/form/option/SelectFormOption.class.php index 9a520906d6..c23bec8dd6 100644 --- a/wcfsetup/install/files/lib/system/form/option/SelectFormOption.class.php +++ b/wcfsetup/install/files/lib/system/form/option/SelectFormOption.class.php @@ -2,6 +2,8 @@ namespace wcf\system\form\option; +use wcf\system\database\table\column\AbstractDatabaseTableColumn; +use wcf\system\database\table\column\VarcharDatabaseTableColumn; use wcf\system\form\builder\field\AbstractFormField; use wcf\system\form\builder\field\SelectFormField; use wcf\system\form\option\formatter\IFormOptionFormatter; @@ -51,4 +53,11 @@ public function getPlainTextFormatter(): IFormOptionFormatter { return new SelectFormatter(false); } + + #[\Override] + public function getDatabaseTableColumn(string $name): AbstractDatabaseTableColumn + { + return VarcharDatabaseTableColumn::create($name) + ->length(255); + } } diff --git a/wcfsetup/install/files/lib/system/form/option/TextFormOption.class.php b/wcfsetup/install/files/lib/system/form/option/TextFormOption.class.php index 158891d1c4..a4cf51eaf7 100644 --- a/wcfsetup/install/files/lib/system/form/option/TextFormOption.class.php +++ b/wcfsetup/install/files/lib/system/form/option/TextFormOption.class.php @@ -3,6 +3,8 @@ namespace wcf\system\form\option; use wcf\data\DatabaseObjectList; +use wcf\system\database\table\column\AbstractDatabaseTableColumn; +use wcf\system\database\table\column\VarcharDatabaseTableColumn; use wcf\system\form\builder\field\AbstractFormField; use wcf\system\form\builder\field\TextFormField; use wcf\system\WCF; @@ -33,9 +35,13 @@ public function getFilterFormField(string $id, array $configuration = []): Abstr public function getFormField(string $id, array $configuration = []): AbstractFormField { $formField = TextFormField::create($id); - if (!empty($configuration['maxLength'])) { - $formField->maximumLength($configuration['maxLength']); - } + $formField->maximumLength( + \min( + 255, + $configuration['maxLength'] ?? 255 + ) + ); + if (isset($configuration['defaultTextValue'])) { $formField->value($configuration['defaultTextValue']); } @@ -54,4 +60,11 @@ public function applyFilter(DatabaseObjectList $list, string $columnName, mixed { $list->getConditionBuilder()->add("{$columnName} LIKE ?", ['%' . WCF::getDB()->escapeLikeValue($value) . '%']); } + + #[\Override] + public function getDatabaseTableColumn(string $name): AbstractDatabaseTableColumn + { + return VarcharDatabaseTableColumn::create($name) + ->length(255); + } } diff --git a/wcfsetup/install/files/lib/system/form/option/UrlFormOption.class.php b/wcfsetup/install/files/lib/system/form/option/UrlFormOption.class.php index 69666ea5c7..c598a4caed 100644 --- a/wcfsetup/install/files/lib/system/form/option/UrlFormOption.class.php +++ b/wcfsetup/install/files/lib/system/form/option/UrlFormOption.class.php @@ -3,6 +3,8 @@ namespace wcf\system\form\option; use wcf\data\DatabaseObjectList; +use wcf\system\database\table\column\AbstractDatabaseTableColumn; +use wcf\system\database\table\column\TextDatabaseTableColumn; use wcf\system\form\builder\field\AbstractFormField; use wcf\system\form\builder\field\TextFormField; use wcf\system\form\builder\field\UrlFormField; @@ -49,4 +51,10 @@ public function applyFilter(DatabaseObjectList $list, string $columnName, mixed { $list->getConditionBuilder()->add("{$columnName} LIKE ?", ['%' . WCF::getDB()->escapeLikeValue($value) . '%']); } + + #[\Override] + public function getDatabaseTableColumn(string $name): AbstractDatabaseTableColumn + { + return TextDatabaseTableColumn::create($name); + } }