Skip to content

Commit 279d791

Browse files
committed
Change Filter Type to string when SelectFormField is used
1 parent bd4edd1 commit 279d791

File tree

5 files changed

+35
-25
lines changed

5 files changed

+35
-25
lines changed

wcfsetup/install/files/lib/system/condition/type/user/UserHasNotTrophyConditionType.class.php

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,17 @@
2020
* @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
2121
* @since 6.3
2222
*
23-
* @implements IDatabaseObjectListConditionType<UserList<User>, int>
24-
* @implements IObjectConditionType<User, int>
25-
* @extends AbstractConditionType<int>
23+
* @implements IDatabaseObjectListConditionType<UserList<User>, string>
24+
* @implements IObjectConditionType<User, string>
25+
* @extends AbstractConditionType<string>
2626
*/
2727
final class UserHasNotTrophyConditionType extends AbstractConditionType implements IDatabaseObjectListConditionType, IObjectConditionType
2828
{
2929
#[\Override]
3030
public function getFormField(string $id): SelectFormField
3131
{
32+
// SelectFormField stores its value as a string,
33+
// so we need to convert it to an integer in the `applyFilter`&`matches` method.
3234
return SelectFormField::create($id)
3335
->options($this->getTrophies())
3436
->required();
@@ -55,7 +57,7 @@ public function applyFilter(DatabaseObjectList $objectList): void
5557
FROM wcf1_user_trophy
5658
WHERE trophyID = ?
5759
)",
58-
[$this->filter]
60+
[(int)$this->filter]
5961
);
6062
}
6163

@@ -65,7 +67,7 @@ public function matches(object $object): bool
6567
$userTrophies = UserTrophyList::getUserTrophies([$object->userID], false)[$object->userID];
6668
$trophyIDs = \array_column($userTrophies, 'trophyID');
6769

68-
return !\in_array($this->filter, $trophyIDs, true);
70+
return !\in_array((int)$this->filter, $trophyIDs, true);
6971
}
7072

7173
/**

wcfsetup/install/files/lib/system/condition/type/user/UserHasTrophyConditionType.class.php

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,17 @@
2020
* @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
2121
* @since 6.3
2222
*
23-
* @implements IDatabaseObjectListConditionType<UserList<User>, int>
24-
* @implements IObjectConditionType<User, int>
25-
* @extends AbstractConditionType<int>
23+
* @implements IDatabaseObjectListConditionType<UserList<User>, string>
24+
* @implements IObjectConditionType<User, string>
25+
* @extends AbstractConditionType<string>
2626
*/
2727
final class UserHasTrophyConditionType extends AbstractConditionType implements IDatabaseObjectListConditionType, IObjectConditionType
2828
{
2929
#[\Override]
3030
public function getFormField(string $id): SelectFormField
3131
{
32+
// SelectFormField stores its value as a string,
33+
// so we need to convert it to an integer in the `applyFilter`&`matches` method.
3234
return SelectFormField::create($id)
3335
->options($this->getTrophies())
3436
->required();
@@ -55,7 +57,7 @@ public function applyFilter(DatabaseObjectList $objectList): void
5557
FROM wcf1_user_trophy
5658
WHERE trophyID = ?
5759
)",
58-
[$this->filter]
60+
[(int)$this->filter]
5961
);
6062
}
6163

@@ -65,7 +67,7 @@ public function matches(object $object): bool
6567
$userTrophies = UserTrophyList::getUserTrophies([$object->userID], false)[$object->userID];
6668
$trophyIDs = \array_column($userTrophies, 'trophyID');
6769

68-
return \in_array($this->filter, $trophyIDs, true);
70+
return \in_array((int)$this->filter, $trophyIDs, true);
6971
}
7072

7173
/**

wcfsetup/install/files/lib/system/condition/type/user/UserInGroupConditionType.class.php

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,17 @@
1717
* @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
1818
* @since 6.3
1919
*
20-
* @implements IDatabaseObjectListConditionType<UserList<User>, int>
21-
* @implements IObjectConditionType<User, int>
22-
* @extends AbstractConditionType<int>
20+
* @implements IDatabaseObjectListConditionType<UserList<User>, string>
21+
* @implements IObjectConditionType<User, string>
22+
* @extends AbstractConditionType<string>
2323
*/
2424
final class UserInGroupConditionType extends AbstractConditionType implements IDatabaseObjectListConditionType, IObjectConditionType
2525
{
2626
#[\Override]
2727
public function getFormField(string $id): SelectFormField
2828
{
29+
// SelectFormField stores its value as a string,
30+
// so we need to convert it to an integer in the `applyFilter`&`matches` method.
2931
return SelectFormField::create($id)
3032
->options(
3133
UserGroup::getGroupsByType(invalidGroupTypes: [
@@ -58,13 +60,13 @@ public function applyFilter(DatabaseObjectList $objectList): void
5860
FROM wcf1_user_to_group
5961
WHERE groupID = ?
6062
)",
61-
[$this->filter]
63+
[(int)$this->filter]
6264
);
6365
}
6466

6567
#[\Override]
6668
public function matches(object $object): bool
6769
{
68-
return \in_array($this->filter, $object->getGroupIDs(), true);
70+
return \in_array((int)$this->filter, $object->getGroupIDs(), true);
6971
}
7072
}

wcfsetup/install/files/lib/system/condition/type/user/UserLanguageConditionType.class.php

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,17 @@
1717
* @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
1818
* @since 6.3
1919
*
20-
* @implements IDatabaseObjectListConditionType<UserList<User>, int>
21-
* @implements IObjectConditionType<User, int>
22-
* @extends AbstractConditionType<int>
20+
* @implements IDatabaseObjectListConditionType<UserList<User>, string>
21+
* @implements IObjectConditionType<User, string>
22+
* @extends AbstractConditionType<string>
2323
*/
2424
final class UserLanguageConditionType extends AbstractConditionType implements IDatabaseObjectListConditionType, IObjectConditionType
2525
{
2626
#[\Override]
2727
public function getFormField(string $id): SelectFormField
2828
{
29+
// SelectFormField stores its value as a string,
30+
// so we need to convert it to an integer in the `applyFilter`&`matches` method.
2931
return SelectFormField::create($id)
3032
->options(LanguageFactory::getInstance()->getLanguages())
3133
->required();
@@ -48,13 +50,13 @@ public function applyFilter(DatabaseObjectList $objectList): void
4850
{
4951
$objectList->getConditionBuilder()->add(
5052
"{$objectList->getDatabaseTableAlias()}.languageID = ?",
51-
[$this->filter]
53+
[(int)$this->filter]
5254
);
5355
}
5456

5557
#[\Override]
5658
public function matches(object $object): bool
5759
{
58-
return $this->filter === $object->languageID;
60+
return (int)$this->filter === $object->languageID;
5961
}
6062
}

wcfsetup/install/files/lib/system/condition/type/user/UserNotInGroupConditionType.class.php

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,17 @@
1717
* @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
1818
* @since 6.3
1919
*
20-
* @implements IDatabaseObjectListConditionType<UserList<User>, int>
21-
* @implements IObjectConditionType<User, int>
22-
* @extends AbstractConditionType<int>
20+
* @implements IDatabaseObjectListConditionType<UserList<User>, string>
21+
* @implements IObjectConditionType<User, string>
22+
* @extends AbstractConditionType<string>
2323
*/
2424
final class UserNotInGroupConditionType extends AbstractConditionType implements IDatabaseObjectListConditionType, IObjectConditionType
2525
{
2626
#[\Override]
2727
public function getFormField(string $id): SelectFormField
2828
{
29+
// SelectFormField stores its value as a string,
30+
// so we need to convert it to an integer in the `applyFilter`&`matches` method.
2931
return SelectFormField::create($id)
3032
->options(
3133
UserGroup::getGroupsByType(invalidGroupTypes: [
@@ -58,13 +60,13 @@ public function applyFilter(DatabaseObjectList $objectList): void
5860
FROM wcf1_user_to_group
5961
WHERE groupID = ?
6062
)",
61-
[$this->filter]
63+
[(int)$this->filter]
6264
);
6365
}
6466

6567
#[\Override]
6668
public function matches(object $object): bool
6769
{
68-
return !\in_array($this->filter, $object->getGroupIDs(), true);
70+
return !\in_array((int)$this->filter, $object->getGroupIDs(), true);
6971
}
7072
}

0 commit comments

Comments
 (0)