Skip to content

Commit 51341d8

Browse files
committed
Adjust db column types created by form options
1 parent 85653d0 commit 51341d8

File tree

6 files changed

+59
-3
lines changed

6 files changed

+59
-3
lines changed

wcfsetup/install/files/lib/system/form/option/EmailFormOption.class.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
namespace wcf\system\form\option;
44

55
use wcf\data\DatabaseObjectList;
6+
use wcf\system\database\table\column\AbstractDatabaseTableColumn;
7+
use wcf\system\database\table\column\VarcharDatabaseTableColumn;
68
use wcf\system\form\builder\field\AbstractFormField;
79
use wcf\system\form\builder\field\EmailFormField;
810
use wcf\system\form\builder\field\TextFormField;
@@ -55,4 +57,11 @@ public function applyFilter(DatabaseObjectList $list, string $columnName, mixed
5557
{
5658
$list->getConditionBuilder()->add("{$columnName} LIKE ?", ['%' . WCF::getDB()->escapeLikeValue($value) . '%']);
5759
}
60+
61+
#[\Override]
62+
public function getDatabaseTableColumn(string $name): AbstractDatabaseTableColumn
63+
{
64+
return VarcharDatabaseTableColumn::create($name)
65+
->length(255);
66+
}
5867
}

wcfsetup/install/files/lib/system/form/option/IconFormOption.class.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
namespace wcf\system\form\option;
44

5+
use wcf\system\database\table\column\AbstractDatabaseTableColumn;
6+
use wcf\system\database\table\column\VarcharDatabaseTableColumn;
57
use wcf\system\form\builder\field\AbstractFormField;
68
use wcf\system\form\builder\field\IconFormField;
79
use wcf\system\form\option\formatter\IconFormatter;
@@ -46,4 +48,11 @@ public function isFilterable(): bool
4648
{
4749
return false;
4850
}
51+
52+
#[\Override]
53+
public function getDatabaseTableColumn(string $name): AbstractDatabaseTableColumn
54+
{
55+
return VarcharDatabaseTableColumn::create($name)
56+
->length(255);
57+
}
4958
}

wcfsetup/install/files/lib/system/form/option/RatingFormOption.class.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
namespace wcf\system\form\option;
44

5+
use wcf\system\database\table\column\AbstractDatabaseTableColumn;
6+
use wcf\system\database\table\column\TinyintDatabaseTableColumn;
57
use wcf\system\form\builder\field\AbstractFormField;
68
use wcf\system\form\builder\field\RatingFormField;
79
use wcf\system\form\option\formatter\IFormOptionFormatter;
@@ -42,4 +44,10 @@ public function getFormatter(): IFormOptionFormatter
4244
{
4345
return new RatingFormatter();
4446
}
47+
48+
#[\Override]
49+
public function getDatabaseTableColumn(string $name): AbstractDatabaseTableColumn
50+
{
51+
return TinyintDatabaseTableColumn::create($name);
52+
}
4553
}

wcfsetup/install/files/lib/system/form/option/SelectFormOption.class.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
namespace wcf\system\form\option;
44

5+
use wcf\system\database\table\column\AbstractDatabaseTableColumn;
6+
use wcf\system\database\table\column\VarcharDatabaseTableColumn;
57
use wcf\system\form\builder\field\AbstractFormField;
68
use wcf\system\form\builder\field\SelectFormField;
79
use wcf\system\form\option\formatter\IFormOptionFormatter;
@@ -51,4 +53,11 @@ public function getPlainTextFormatter(): IFormOptionFormatter
5153
{
5254
return new SelectFormatter(false);
5355
}
56+
57+
#[\Override]
58+
public function getDatabaseTableColumn(string $name): AbstractDatabaseTableColumn
59+
{
60+
return VarcharDatabaseTableColumn::create($name)
61+
->length(255);
62+
}
5463
}

wcfsetup/install/files/lib/system/form/option/TextFormOption.class.php

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
namespace wcf\system\form\option;
44

55
use wcf\data\DatabaseObjectList;
6+
use wcf\system\database\table\column\AbstractDatabaseTableColumn;
7+
use wcf\system\database\table\column\VarcharDatabaseTableColumn;
68
use wcf\system\form\builder\field\AbstractFormField;
79
use wcf\system\form\builder\field\TextFormField;
810
use wcf\system\WCF;
@@ -33,9 +35,13 @@ public function getFilterFormField(string $id, array $configuration = []): Abstr
3335
public function getFormField(string $id, array $configuration = []): AbstractFormField
3436
{
3537
$formField = TextFormField::create($id);
36-
if (!empty($configuration['maxLength'])) {
37-
$formField->maximumLength($configuration['maxLength']);
38-
}
38+
$formField->maximumLength(
39+
\min(
40+
255,
41+
$configuration['maxLength'] ?? 255
42+
)
43+
);
44+
3945
if (isset($configuration['defaultTextValue'])) {
4046
$formField->value($configuration['defaultTextValue']);
4147
}
@@ -54,4 +60,11 @@ public function applyFilter(DatabaseObjectList $list, string $columnName, mixed
5460
{
5561
$list->getConditionBuilder()->add("{$columnName} LIKE ?", ['%' . WCF::getDB()->escapeLikeValue($value) . '%']);
5662
}
63+
64+
#[\Override]
65+
public function getDatabaseTableColumn(string $name): AbstractDatabaseTableColumn
66+
{
67+
return VarcharDatabaseTableColumn::create($name)
68+
->length(255);
69+
}
5770
}

wcfsetup/install/files/lib/system/form/option/UrlFormOption.class.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
namespace wcf\system\form\option;
44

55
use wcf\data\DatabaseObjectList;
6+
use wcf\system\database\table\column\AbstractDatabaseTableColumn;
7+
use wcf\system\database\table\column\TextDatabaseTableColumn;
68
use wcf\system\form\builder\field\AbstractFormField;
79
use wcf\system\form\builder\field\TextFormField;
810
use wcf\system\form\builder\field\UrlFormField;
@@ -49,4 +51,10 @@ public function applyFilter(DatabaseObjectList $list, string $columnName, mixed
4951
{
5052
$list->getConditionBuilder()->add("{$columnName} LIKE ?", ['%' . WCF::getDB()->escapeLikeValue($value) . '%']);
5153
}
54+
55+
#[\Override]
56+
public function getDatabaseTableColumn(string $name): AbstractDatabaseTableColumn
57+
{
58+
return TextDatabaseTableColumn::create($name);
59+
}
5260
}

0 commit comments

Comments
 (0)