Skip to content

Commit 4acb7a3

Browse files
committed
Register the conditions sequentually
There is very little gain in offering `addConditions()` plus it requires us to validate an arbitrary array in contrast to relying on `addCondition()` with its type hin.
1 parent f99335a commit 4acb7a3

File tree

2 files changed

+95
-24
lines changed

2 files changed

+95
-24
lines changed

wcfsetup/install/files/lib/system/condition/provider/AbstractConditionProvider.class.php

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -30,18 +30,6 @@ public function addCondition(IConditionType $conditionType): void
3030
$this->conditionTypes[$conditionType->getIdentifier()] = $conditionType;
3131
}
3232

33-
/**
34-
* Adds multiple condition types to this provider.
35-
*
36-
* @param TCondition[] $conditionTypes
37-
*/
38-
public function addConditions(array $conditionTypes): void
39-
{
40-
foreach ($conditionTypes as $conditionType) {
41-
$this->addCondition($conditionType);
42-
}
43-
}
44-
4533
final public function getFieldId(string $containerId, string $identifier, int $index): string
4634
{
4735
return "{$containerId}_{$identifier}_{$index}";

wcfsetup/install/files/lib/system/condition/provider/UserConditionProvider.class.php

Lines changed: 95 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -34,27 +34,110 @@ final class UserConditionProvider extends AbstractConditionProvider
3434
{
3535
public function __construct()
3636
{
37-
$this->addConditions([
38-
new StringUserConditionType(identifier: "username", columnName: "username", migrateKeyName: "username", migrateConditionObjectType: 'com.woltlab.wcf.user.username'),
39-
new StringUserConditionType(identifier: "email", columnName: "email", migrateKeyName: "email", migrateConditionObjectType: 'com.woltlab.wcf.user.email'),
37+
$this->addCondition(
38+
new StringUserConditionType(
39+
identifier: "username",
40+
columnName: "username",
41+
migrateKeyName: "username",
42+
migrateConditionObjectType: 'com.woltlab.wcf.user.username'
43+
),
44+
);
45+
$this->addCondition(
46+
new StringUserConditionType(
47+
identifier: "email",
48+
columnName: "email",
49+
migrateKeyName: "email",
50+
migrateConditionObjectType: 'com.woltlab.wcf.user.email'
51+
),
52+
);
53+
$this->addCondition(
4054
new RegistrationDateUserConditionType(),
55+
);
56+
$this->addCondition(
4157
new RegistrationDaysUserConditionType(),
58+
);
59+
$this->addCondition(
4260
new InGroupUserConditionType(),
61+
);
62+
$this->addCondition(
4363
new NotInGroupUserConditionType(),
64+
);
65+
$this->addCondition(
4466
new LanguageUserConditionType(),
45-
new IsNullUserConditionType(identifier: "avatar", columnName: 'avatarFileID', migrateKeyName: 'userAvatar', migrateConditionObjectType: 'com.woltlab.wcf.user.avatar'),
67+
);
68+
$this->addCondition(
69+
new IsNullUserConditionType(
70+
identifier: "avatar",
71+
columnName: 'avatarFileID',
72+
migrateKeyName: 'userAvatar',
73+
migrateConditionObjectType: 'com.woltlab.wcf.user.avatar'
74+
),
75+
);
76+
$this->addCondition(
4677
new SignatureUserConditionType(),
47-
new IsNullUserConditionType(identifier: "coverPhoto", columnName: 'coverPhotoFileID', migrateKeyName: 'userCoverPhoto', migrateConditionObjectType: 'com.woltlab.wcf.coverPhoto'),
48-
new BooleanUserConditionType(identifier: "isBanned", columnName: 'banned', migrateKeyName: 'userIsBanned', migrateConditionObjectType: 'com.woltlab.wcf.user.state'),
78+
);
79+
$this->addCondition(
80+
new IsNullUserConditionType(
81+
identifier: "coverPhoto",
82+
columnName: 'coverPhotoFileID',
83+
migrateKeyName: 'userCoverPhoto',
84+
migrateConditionObjectType: 'com.woltlab.wcf.coverPhoto'
85+
),
86+
);
87+
$this->addCondition(
88+
new BooleanUserConditionType(
89+
identifier: "isBanned",
90+
columnName: 'banned',
91+
migrateKeyName: 'userIsBanned',
92+
migrateConditionObjectType: 'com.woltlab.wcf.user.state'
93+
),
94+
);
95+
$this->addCondition(
4996
new UserIsEnabledConditionType(),
50-
new IsNullUserConditionType(identifier: "isEmailConfirmed", columnName: 'emailConfirmed', migrateKeyName: 'userIsEmailConfirmed', migrateConditionObjectType: 'com.woltlab.wcf.user.state'),
51-
new BooleanUserConditionType(identifier: "isMultifactorActive", columnName: 'multifactorActive', migrateKeyName: 'multifactorActive', migrateConditionObjectType: 'com.woltlab.wcf.user.multifactor'),
97+
);
98+
$this->addCondition(
99+
new IsNullUserConditionType(
100+
identifier: "isEmailConfirmed",
101+
columnName: 'emailConfirmed',
102+
migrateKeyName: 'userIsEmailConfirmed',
103+
migrateConditionObjectType: 'com.woltlab.wcf.user.state'
104+
),
105+
);
106+
$this->addCondition(
107+
new BooleanUserConditionType(
108+
identifier: "isMultifactorActive",
109+
columnName: 'multifactorActive',
110+
migrateKeyName: 'multifactorActive',
111+
migrateConditionObjectType: 'com.woltlab.wcf.user.multifactor'
112+
),
113+
);
114+
$this->addCondition(
52115
new HasTrophyUserConditionType(),
116+
);
117+
$this->addCondition(
53118
new HasNotTrophyUserConditionType(),
54-
new IntegerUserConditionType(identifier: "activityPoints", columnName: "activityPoints", migrateConditionObjectType: 'com.woltlab.wcf.user.activityPoints'),
55-
new IntegerUserConditionType(identifier: "likesReceived", columnName: "likesReceived", migrateConditionObjectType: 'com.woltlab.wcf.user.likesReceived'),
56-
new IntegerUserConditionType(identifier: "trophyPoints", columnName: "trophyPoints", migrateConditionObjectType: 'com.woltlab.wcf.user.trophyPoints'),
57-
]);
119+
);
120+
$this->addCondition(
121+
new IntegerUserConditionType(
122+
identifier: "activityPoints",
123+
columnName: "activityPoints",
124+
migrateConditionObjectType: 'com.woltlab.wcf.user.activityPoints'
125+
),
126+
);
127+
$this->addCondition(
128+
new IntegerUserConditionType(
129+
identifier: "likesReceived",
130+
columnName: "likesReceived",
131+
migrateConditionObjectType: 'com.woltlab.wcf.user.likesReceived'
132+
),
133+
);
134+
$this->addCondition(
135+
new IntegerUserConditionType(
136+
identifier: "trophyPoints",
137+
columnName: "trophyPoints",
138+
migrateConditionObjectType: 'com.woltlab.wcf.user.trophyPoints'
139+
),
140+
);
58141

59142
// TODO add conditions for user options that implement `ISearchableConditionUserOption`
60143

0 commit comments

Comments
 (0)