|
2 | 2 |
|
3 | 3 | namespace wcf\system\trophy\condition; |
4 | 4 |
|
5 | | -use wcf\data\object\type\ObjectType; |
6 | | -use wcf\data\object\type\ObjectTypeCache; |
7 | 5 | use wcf\data\trophy\Trophy; |
8 | 6 | use wcf\data\trophy\TrophyList; |
9 | 7 | use wcf\data\user\trophy\UserTrophyAction; |
10 | 8 | use wcf\data\user\UserList; |
| 9 | +use wcf\system\condition\ConditionHandler; |
| 10 | +use wcf\system\condition\provider\UserConditionProvider; |
11 | 11 | use wcf\system\SingletonFactory; |
12 | 12 |
|
13 | 13 | /** |
|
20 | 20 | */ |
21 | 21 | class TrophyConditionHandler extends SingletonFactory |
22 | 22 | { |
23 | | - /** |
24 | | - * definition name for trophy conditions |
25 | | - * @var string |
26 | | - */ |
27 | | - const CONDITION_DEFINITION_NAME = 'com.woltlab.wcf.condition.trophy'; |
28 | | - |
29 | | - /** |
30 | | - * list of grouped trophy condition object types |
31 | | - * @var ObjectType[][] |
32 | | - */ |
33 | | - protected $groupedObjectTypes = []; |
34 | | - |
35 | | - /** |
36 | | - * @inheritDoc |
37 | | - */ |
38 | | - protected function init() |
39 | | - { |
40 | | - // TODO |
41 | | - $objectTypes = ObjectTypeCache::getInstance()->getObjectTypes(self::CONDITION_DEFINITION_NAME); |
42 | | - |
43 | | - foreach ($objectTypes as $objectType) { |
44 | | - if (!$objectType->conditiongroup) { |
45 | | - continue; |
46 | | - } |
47 | | - |
48 | | - if (!isset($this->groupedObjectTypes[$objectType->conditiongroup])) { |
49 | | - $this->groupedObjectTypes[$objectType->conditiongroup] = []; |
50 | | - } |
51 | | - |
52 | | - $this->groupedObjectTypes[$objectType->conditiongroup][$objectType->objectTypeID] = $objectType; |
53 | | - } |
54 | | - } |
55 | | - |
56 | | - /** |
57 | | - * Returns the list of grouped trophy condition object types. |
58 | | - * |
59 | | - * @return ObjectType[][] |
60 | | - */ |
61 | | - public function getGroupedObjectTypes() |
62 | | - { |
63 | | - return $this->groupedObjectTypes; |
64 | | - } |
65 | | - |
66 | 23 | /** |
67 | 24 | * Assign trophies based on rules. |
68 | 25 | * |
@@ -140,10 +97,10 @@ private function getUserIDs(Trophy $trophy) |
140 | 97 | LEFT JOIN wcf1_user_option_value user_option_value |
141 | 98 | ON user_option_value.userID = user_table.userID"; |
142 | 99 |
|
143 | | - $conditions = $trophy->getConditions(); |
144 | | - // TODO |
| 100 | + $provider = new UserConditionProvider(); |
| 101 | + $conditions = ConditionHandler::getInstance()->getConditionsWithFilter($provider, $trophy->getConditions()); |
145 | 102 | foreach ($conditions as $condition) { |
146 | | - $condition->getObjectType()->getProcessor()->addUserCondition($condition, $userList); |
| 103 | + $condition->applyFilter($userList); |
147 | 104 | } |
148 | 105 |
|
149 | 106 | // prevent multiple awards from a trophy for a user |
@@ -187,9 +144,10 @@ private function getRevocableUserTrophyIDs(Trophy $trophy, $maxTrophyIDs) |
187 | 144 | } |
188 | 145 |
|
189 | 146 | // Assign the condition to the pseudo DBOList object |
190 | | - // TODO |
| 147 | + $provider = new UserConditionProvider(); |
| 148 | + $conditions = ConditionHandler::getInstance()->getConditionsWithFilter($provider, $trophy->getConditions()); |
191 | 149 | foreach ($conditions as $condition) { |
192 | | - $condition->getObjectType()->getProcessor()->addUserCondition($condition, $pseudoUserList); |
| 150 | + $condition->applyFilter($pseudoUserList); |
193 | 151 | } |
194 | 152 |
|
195 | 153 | // Now we create our own query to find out which users no longer meet the conditions. |
|
0 commit comments