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;
/**
* Checks an item for notifications and sets the "notification-type" field
+ * @ToDo:
+ * - Check for mentions in posts with "uid=0" where the user hadn't interacted before
*
* @param int $iid Item ID
*/
$notification_type = $notification_type | self::NOTIF_THREAD_COMMENT;
}
- if (self::checkDirectComment($item, $uid, $contacts)) {
+ if (self::checkDirectComment($item, $contacts)) {
$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;
}
/**
* Check for a direct comment to a post of the given user
* @param array $item
- * @param int $uid User ID
* @param array $contacts Array of contact IDs
* @return bool The item is a direct comment to a user comment
*/
- private static function checkDirectComment(array $item, int $uid, array $contacts)
+ private static function checkDirectComment(array $item, array $contacts)
+ {
+ $condition = ['uri' => $item['thr-parent'], 'uid' => $item['uid'], 'author-id' => $contacts, 'deleted' => false, 'gravity' => GRAVITY_COMMENT];
+ 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' => [0, $uid], 'author-id' => $contacts, 'deleted' => false, 'gravity' => GRAVITY_COMMENT];
+ $condition = ['uri' => $item['thr-parent'], 'uid' => $item['uid'], 'author-id' => $contacts, 'deleted' => false, 'gravity' => GRAVITY_PARENT];
return Item::exists($condition);
}