Skip to content

Commit b6c0128

Browse files
committed
Disable filtering for some form options
Filtering is too user-unfriendly (icon field) or too inefficient (WYSIWYG field) for these fields.
1 parent 572513a commit b6c0128

File tree

4 files changed

+35
-12
lines changed

4 files changed

+35
-12
lines changed

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,4 +72,10 @@ public function getDatabaseTableColumn(string $name): AbstractDatabaseTableColum
7272
{
7373
return MediumtextDatabaseTableColumn::create($name);
7474
}
75+
76+
#[\Override]
77+
public function isFilterable(): bool
78+
{
79+
return true;
80+
}
7581
}

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,4 +83,9 @@ public function renderFilterValue(string $value, array $configuration = []): str
8383
* Returns the PHP DDL column definition to store the values.
8484
*/
8585
public function getDatabaseTableColumn(string $name): AbstractDatabaseTableColumn;
86+
87+
/**
88+
* Returns true, if this form option is filterable.
89+
*/
90+
public function isFilterable(): bool;
8691
}

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,4 +34,16 @@ public function getFormatter(): IFormOptionFormatter
3434
{
3535
return new IconFormatter();
3636
}
37+
38+
#[\Override]
39+
public function getFilterFormField(string $id, array $configuration = []): AbstractFormField
40+
{
41+
throw new \BadMethodCallException("IconFormOption does not support filtering.");
42+
}
43+
44+
#[\Override]
45+
public function isFilterable(): bool
46+
{
47+
return false;
48+
}
3749
}

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

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,6 @@ public function getId(): string
2727
return 'wysiwyg';
2828
}
2929

30-
#[\Override]
31-
public function getFilterFormField(string $id, array $configuration = []): AbstractFormField
32-
{
33-
return TextFormField::create($id);
34-
}
35-
3630
#[\Override]
3731
public function getFormField(string $id, array $configuration = []): AbstractFormField
3832
{
@@ -46,12 +40,6 @@ public function getConfigurationFormFields(): array
4640
return ['required'];
4741
}
4842

49-
#[\Override]
50-
public function applyFilter(DatabaseObjectList $list, string $columnName, mixed $value): void
51-
{
52-
$list->getConditionBuilder()->add("{$columnName} LIKE ?", ['%' . WCF::getDB()->escapeLikeValue($value) . '%']);
53-
}
54-
5543
#[\Override]
5644
public function getFormatter(): IFormOptionFormatter
5745
{
@@ -63,4 +51,16 @@ public function getPlainTextFormatter(): IFormOptionFormatter
6351
{
6452
return new WysiwygPlainTextFormatter();
6553
}
54+
55+
#[\Override]
56+
public function getFilterFormField(string $id, array $configuration = []): AbstractFormField
57+
{
58+
throw new \BadMethodCallException("IconFormOption does not support filtering.");
59+
}
60+
61+
#[\Override]
62+
public function isFilterable(): bool
63+
{
64+
return false;
65+
}
6666
}

0 commit comments

Comments
 (0)