Add option to apply a text filter to a different column
authorMarcel Werk <burntime@woltlab.com>
Tue, 10 Dec 2024 15:32:42 +0000 (16:32 +0100)
committerMarcel Werk <burntime@woltlab.com>
Tue, 10 Dec 2024 15:32:42 +0000 (16:32 +0100)
wcfsetup/install/files/lib/system/gridView/filter/TextFilter.class.php

index dce79d63fdb6ae26e91658db1d7ef785ec6ebced..16505597192dec57afb5c3ecdb448cf3cea64f29 100644 (file)
@@ -17,6 +17,8 @@ use wcf\system\WCF;
  */
 class TextFilter implements IGridViewFilter
 {
+    public function __construct(private readonly string $columnName = '') {}
+
     #[\Override]
     public function getFormField(string $id, string $label): AbstractFormField
     {
@@ -27,7 +29,10 @@ class TextFilter implements IGridViewFilter
     #[\Override]
     public function applyFilter(DatabaseObjectList $list, string $id, string $value): void
     {
-        $list->getConditionBuilder()->add("$id LIKE ?", ['%' . WCF::getDB()->escapeLikeValue($value) . '%']);
+        $list->getConditionBuilder()->add(
+            ($this->columnName ?: $id) . " LIKE ?",
+            ['%' . WCF::getDB()->escapeLikeValue($value) . '%']
+        );
     }
 
     #[\Override]