Notifications: Now declare direct thread answers as replies
authorMichael <heluecht@pirati.ca>
Thu, 9 Jan 2020 17:53:17 +0000 (17:53 +0000)
committerMichael <heluecht@pirati.ca>
Thu, 9 Jan 2020 17:53:17 +0000 (17:53 +0000)
include/enotify.php
src/Model/UserItem.php

index 63bdd97..58c0182 100644 (file)
@@ -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;
index 18409ff..43b0430 100644 (file)
@@ -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