Add recent activity for reactions
authorJoshua Rüsweg <josh@bastelstu.be>
Sun, 27 May 2018 20:29:15 +0000 (22:29 +0200)
committerJoshua Rüsweg <josh@bastelstu.be>
Sun, 27 May 2018 20:29:15 +0000 (22:29 +0200)
See #2508

wcfsetup/install/files/lib/system/reaction/ReactionHandler.class.php

index 85b18e005bdf2020af321627eb097af008b76ecd..cb080f06655622850f1cbba6b035027440c192b6 100644 (file)
@@ -18,6 +18,7 @@ use wcf\system\database\exception\DatabaseQueryException;
 use wcf\system\database\util\PreparedStatementConditionBuilder;
 use wcf\system\event\EventHandler;
 use wcf\system\exception\ImplementationException;
+use wcf\system\user\activity\event\UserActivityEventHandler;
 use wcf\system\user\activity\point\UserActivityPointHandler;
 use wcf\system\SingletonFactory;
 use wcf\system\WCF;
@@ -291,11 +292,21 @@ class ReactionHandler extends SingletonFactory {
                                }
                        }
                        
-                       // @TODO set akt
-                       
                        // update object's like counter
                        $likeable->updateLikeCounter($likeObjectData['cumulativeLikes']);
                        
+                       
+                       // update recent activity
+                       if (UserActivityEventHandler::getInstance()->getObjectTypeID($likeable->getObjectType()->objectType.'.recentActivityEvent')) {
+                               if ($like->likeID) {
+                                       UserActivityEventHandler::getInstance()->removeEvent($likeable->getObjectType()->objectType.'.recentActivityEvent', $likeable->getObjectID(), $user->userID);
+                               }
+                               
+                               UserActivityEventHandler::getInstance()->fireEvent($likeable->getObjectType()->objectType.'.recentActivityEvent', $likeable->getObjectID(), $likeable->getLanguageID(), $user->userID, TIME_NOW, [
+                                       'reactionType' => $reaction
+                               ]);
+                       }
+                       
                        WCF::getDB()->commitTransaction();
                        
                        return [
@@ -476,13 +487,18 @@ class ReactionHandler extends SingletonFactory {
                        $likeEditor = new LikeEditor($like);
                        $likeEditor->delete();
                        
-                       if ($likeable->getUserID()) {
+                       if ($likeable->getUserID() && $like->getReactionType()->isPositive()) {
                                UserActivityPointHandler::getInstance()->removeEvents('com.woltlab.wcf.like.activityPointEvent.receivedLikes', [$likeable->getUserID() => 1]);
                        }
                        
                        // update object's like counter
                        $likeable->updateLikeCounter($likeObjectData['cumulativeLikes']);
                        
+                       // delete recent activity
+                       if (UserActivityEventHandler::getInstance()->getObjectTypeID($likeable->getObjectType()->objectType.'.recentActivityEvent')) {
+                               UserActivityEventHandler::getInstance()->removeEvent($likeable->getObjectType()->objectType.'.recentActivityEvent', $likeable->getObjectID(), $user->userID);
+                       }
+                       
                        WCF::getDB()->commitTransaction();
                        
                        return [