Fix revoking trophies w/o conditions yield an SQL error
authorjoshuaruesweg <ruesweg@woltlab.com>
Wed, 1 Jul 2020 18:44:14 +0000 (20:44 +0200)
committerjoshuaruesweg <ruesweg@woltlab.com>
Wed, 1 Jul 2020 18:44:14 +0000 (20:44 +0200)
Fixes #3422

wcfsetup/install/files/lib/system/trophy/condition/TrophyConditionHandler.class.php

index c7da8e79cfc97eb05ef909e3366842d108a72d4c..c366962c740e8b78d143d26d2328d60a9256c9e8 100644 (file)
@@ -155,6 +155,13 @@ class TrophyConditionHandler extends SingletonFactory {
                        $condition->getObjectType()->getProcessor()->addUserCondition($condition, $pseudoUserList);
                }
                
+               // Check if there are conditions for the award of the trophy for the given trophy.
+               // If there are no conditions, we simply return an empty list and do not remove any trophy. 
+               // A trophy without conditions that is awarded automatically cannot be created by default. 
+               if (empty($pseudoUserList->getConditionBuilder()->__toString())) {
+                       return [];
+               }
+               
                // Now we create our own query to find out which users no longer meet the conditions. 
                // For this we use a UserList object again and transfer basic data from the pseudo object. 
                $userList = new UserList();