/** * Give point(s) to the current user if the right conditions are met. * * @param CommentModel $sender Sending controller instance. * @param array $args Event arguments. */ public function commentModel_afterSaveComment_handler($sender, $args) { if (!c('QnA.Points.Enabled', false) || !$args['Insert']) { return; } $discussionModel = new DiscussionModel(); $discussion = $discussionModel->getID($args['CommentData']['DiscussionID'], DATASET_TYPE_ARRAY); $isCommentAnAnswer = $discussion['Type'] === 'Question'; $isQuestionResolved = $discussion['QnA'] === 'Accepted'; $isCurrentUserOriginalPoster = $discussion['InsertUserID'] == GDN::session()->UserID; if (!$isCommentAnAnswer || $isQuestionResolved || $isCurrentUserOriginalPoster) { return; } $userAnswersToQuestion = $sender->getWhere(array('DiscussionID' => $args['CommentData']['DiscussionID'], 'InsertUserId' => GDN::session()->UserID)); // Award point(s) only for the first answer to the question if ($userAnswersToQuestion->count() > 1) { return; } UserModel::givePoints(GDN::session()->UserID, c('QnA.Points.Answer', 1), 'QnA'); }