diff --git a/include/enotify.php b/include/enotify.php index 63bdd97c2..58c01827c 100644 --- a/include/enotify.php +++ b/include/enotify.php @@ -704,6 +704,11 @@ function check_item_notification($itemid, $uid, $notification_type) { $params['activity']['thread_comment'] = ($notification_type & UserItem::NOTIF_COMMENT_PARTICIPATION); $params['activity']['thread_activity'] = ($notification_type & UserItem::NOTIF_ACTIVITY_PARTICIPATION); + // Tagging a user in a direct post (first comment level) means a direct comment + if ($params['activity']['explicit_tagged'] && ($notification_type & UserItem::NOTIF_DIRECT_THREAD_COMMENT)) { + $params['activity']['origin_comment'] = true; + } + if ($notification_type & UserItem::NOTIF_SHARED) { $params['type'] = NOTIFY_SHARE; $params['verb'] = Activity::POST; diff --git a/src/Model/UserItem.php b/src/Model/UserItem.php index 18409ff7c..43b0430ac 100644 --- a/src/Model/UserItem.php +++ b/src/Model/UserItem.php @@ -22,6 +22,7 @@ class UserItem const NOTIF_DIRECT_COMMENT = 8; const NOTIF_COMMENT_PARTICIPATION = 16; const NOTIF_ACTIVITY_PARTICIPATION = 32; + const NOTIF_DIRECT_THREAD_COMMENT = 64; const NOTIF_SHARED = 128; /** @@ -99,6 +100,10 @@ class UserItem $notification_type = $notification_type | self::NOTIF_DIRECT_COMMENT; } + if (self::checkDirectCommentedThread($item, $contacts)) { + $notification_type = $notification_type | self::NOTIF_DIRECT_THREAD_COMMENT; + } + if (self::checkCommentedParticipation($item, $contacts)) { $notification_type = $notification_type | self::NOTIF_COMMENT_PARTICIPATION; } @@ -259,6 +264,18 @@ class UserItem return Item::exists($condition); } + /** + * Check for a direct comment to the starting post of the given user + * @param array $item + * @param array $contacts Array of contact IDs + * @return bool The user had created this thread + */ + private static function checkDirectCommentedThread(array $item, array $contacts) + { + $condition = ['uri' => $item['thr-parent'], 'uid' => $item['uid'], 'author-id' => $contacts, 'deleted' => false, 'gravity' => GRAVITY_PARENT]; + return Item::exists($condition); + } + /** * Check if the user had commented in this thread * @param array $item