From 3f479bff7bf46b01e41a48baca96d0adff8c9eba Mon Sep 17 00:00:00 2001 From: =?utf8?q?Joshua=20R=C3=BCsweg?= Date: Sun, 27 May 2018 21:07:31 +0200 Subject: [PATCH] Add new user values for positive, negative, neutral received reactions See #2508 --- .../system/reaction/ReactionHandler.class.php | 57 +++++++++++++------ wcfsetup/setup/db/install.sql | 6 ++ 2 files changed, 46 insertions(+), 17 deletions(-) diff --git a/wcfsetup/install/files/lib/system/reaction/ReactionHandler.class.php b/wcfsetup/install/files/lib/system/reaction/ReactionHandler.class.php index 3a23a28ee5..ae07e29f05 100644 --- a/wcfsetup/install/files/lib/system/reaction/ReactionHandler.class.php +++ b/wcfsetup/install/files/lib/system/reaction/ReactionHandler.class.php @@ -418,36 +418,59 @@ class ReactionHandler extends SingletonFactory { if ($like->getReactionType()->isPositive()) { $userEditor = new UserEditor(UserRuntimeCache::getInstance()->getObject($likeable->getUserID())); $userEditor->updateCounters([ - 'likesReceived' => -1 + 'likesReceived' => -1, + 'positiveReactionsReceived' => -1 ]); } - } - } - else { - if ($like->likeID) { - if ($like->getReactionType()->isPositive() && !$reactionType->isPositive()) { + else if ($like->getReactionType()->isNegative()) { $userEditor = new UserEditor(UserRuntimeCache::getInstance()->getObject($likeable->getUserID())); $userEditor->updateCounters([ - 'likesReceived' => -1 + 'negativeReactionsReceived' => -1 ]); } - else if (!$like->getReactionType()->isPositive() && $reactionType->isPositive()) { + else if ($like->getReactionType()->isNeutral()) { $userEditor = new UserEditor(UserRuntimeCache::getInstance()->getObject($likeable->getUserID())); $userEditor->updateCounters([ - 'likesReceived' => 1 + 'neutralReactionsReceived' => -1 ]); } } - else if ($reactionType->isPositive()) { - // update new - $userEditor = new UserEditor(UserRuntimeCache::getInstance()->getObject($likeable->getUserID())); - $userEditor->updateCounters([ - 'likesReceived' => 1 - ]); + } + else { + $counters = [ + 'likesReceived' => 0, + 'positiveReactionsReceived' => 0, + 'negativeReactionsReceived' => 0, + 'neutralReactionsReceived' => 0 + ]; + + if ($like->likeID) { + if ($like->getReactionType()->isPositive()) { + $counters['likesReceived']--; + $counters['positiveReactionsReceived']--; + } + else if ($like->getReactionType()->isNegative()) { + $counters['negativeReactionsReceived']--; + } + else if ($like->getReactionType()->isNeutral()) { + $counters['neutralReactionsReceived']--; + } + } + + if ($reactionType->isPositive()) { + $counters['likesReceived']++; + $counters['positiveReactionsReceived']++; } + else if ($reactionType->isNegative()) { + $counters['negativeReactionsReceived']++; + } + else if ($reactionType->isNeutral()) { + $counters['neutralReactionsReceived']++; + } + + $userEditor = new UserEditor(UserRuntimeCache::getInstance()->getObject($likeable->getUserID())); + $userEditor->updateCounters($counters); } - - // @TODO update new user values positiveReactionsReceived, negativeReactionsReceived, neutralReactionsReceived } } diff --git a/wcfsetup/setup/db/install.sql b/wcfsetup/setup/db/install.sql index f09784ca81..b36ff42439 100644 --- a/wcfsetup/setup/db/install.sql +++ b/wcfsetup/setup/db/install.sql @@ -1447,6 +1447,9 @@ CREATE TABLE wcf1_user ( disableCoverPhoto TINYINT(1) NOT NULL DEFAULT 0, disableCoverPhotoReason TEXT, disableCoverPhotoExpires INT(10) NOT NULL DEFAULT 0, + positiveReactionsReceived MEDIUMINT(7) NOT NULL DEFAULT 0, + negativeReactionsReceived MEDIUMINT(7) NOT NULL DEFAULT 0, + neutralReactionsReceived MEDIUMINT(7) NOT NULL DEFAULT 0, KEY username (username), KEY email (email), @@ -1456,6 +1459,9 @@ CREATE TABLE wcf1_user ( KEY registrationData (registrationIpAddress, registrationDate), KEY activityPoints (activityPoints), KEY likesReceived (likesReceived), + KEY positiveReactionsReceived (positiveReactionsReceived), + KEY negativeReactionsReceived (negativeReactionsReceived), + KEY neutralReactionsReceived (neutralReactionsReceived), KEY authData (authData), KEY trophyPoints (trophyPoints) ); -- 2.20.1