From 585892fa503e5fa7316703d2ddf278aa81b336fb Mon Sep 17 00:00:00 2001 From: Matthias Schmidt <gravatronics@live.com> Date: Tue, 28 Feb 2017 19:57:14 +0100 Subject: [PATCH] Fix deleting all activity events for likes/follows instead of specific ones --- .../files/lib/data/like/LikeAction.class.php | 2 +- .../user/follow/UserFollowAction.class.php | 2 +- .../event/UserActivityEventHandler.class.php | 28 +++++++++++++++++++ 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/wcfsetup/install/files/lib/data/like/LikeAction.class.php b/wcfsetup/install/files/lib/data/like/LikeAction.class.php index 3a45946375..9121aa2a3c 100644 --- a/wcfsetup/install/files/lib/data/like/LikeAction.class.php +++ b/wcfsetup/install/files/lib/data/like/LikeAction.class.php @@ -166,7 +166,7 @@ class LikeAction extends AbstractDatabaseObjectAction implements IGroupedUserLis UserActivityEventHandler::getInstance()->fireEvent($this->objectType->objectType.'.recentActivityEvent', $this->parameters['data']['objectID'], $this->likeableObject->getLanguageID()); } else { - UserActivityEventHandler::getInstance()->removeEvents($this->objectType->objectType.'.recentActivityEvent', array($this->parameters['data']['objectID'])); + UserActivityEventHandler::getInstance()->removeEvent($this->objectType->objectType.'.recentActivityEvent', $this->parameters['data']['objectID']); } } diff --git a/wcfsetup/install/files/lib/data/user/follow/UserFollowAction.class.php b/wcfsetup/install/files/lib/data/user/follow/UserFollowAction.class.php index 1b48377a2c..e759194e40 100644 --- a/wcfsetup/install/files/lib/data/user/follow/UserFollowAction.class.php +++ b/wcfsetup/install/files/lib/data/user/follow/UserFollowAction.class.php @@ -98,7 +98,7 @@ class UserFollowAction extends AbstractDatabaseObjectAction implements IGroupedU $followEditor->delete(); // remove activity event - UserActivityEventHandler::getInstance()->removeEvents('com.woltlab.wcf.user.recentActivityEvent.follow', array($this->parameters['data']['userID'])); + UserActivityEventHandler::getInstance()->removeEvent('com.woltlab.wcf.user.recentActivityEvent.follow', $this->parameters['data']['userID']); } // reset storage diff --git a/wcfsetup/install/files/lib/system/user/activity/event/UserActivityEventHandler.class.php b/wcfsetup/install/files/lib/system/user/activity/event/UserActivityEventHandler.class.php index 5d1db1e09b..0fcf9cc03b 100644 --- a/wcfsetup/install/files/lib/system/user/activity/event/UserActivityEventHandler.class.php +++ b/wcfsetup/install/files/lib/system/user/activity/event/UserActivityEventHandler.class.php @@ -99,6 +99,34 @@ class UserActivityEventHandler extends SingletonFactory { return $returnValues['returnValues']; } + /** + * Removes an activity event. + * + * @param integer $objectType + * @param integer $objectID + * @param integer $userID + * @throws SystemException + */ + public function removeEvent($objectType, $objectID, $userID = null) { + $objectTypeID = $this->getObjectTypeID($objectType); + if ($objectTypeID === null) { + throw new SystemException("Unknown recent activity event '".$objectType."'"); + } + + if ($userID === null) $userID = WCF::getUser()->userID; + + $sql = "DELETE FROM wcf".WCF_N."_user_activity_event + WHERE objectTypeID = ? + AND objectID = ? + AND userID = ?"; + $statement = WCF::getDB()->prepareStatement($sql); + $statement->execute(array( + $objectTypeID, + $objectID, + $userID + )); + } + /** * Removes activity events. * -- 2.20.1