X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FModel%2FPost%2FUserNotification.php;h=f4e700f0bc9d8ed75c240102688408201a321ba4;hb=a662245c744f4d2faa1b533977f7d21b4de6a724;hp=806dfe26e5bdfa000a4bf0833aca1e6b1532198a;hpb=c86cc83524b53171a94e9057a15d5f3a901fa902;p=friendica.git diff --git a/src/Model/Post/UserNotification.php b/src/Model/Post/UserNotification.php index 806dfe26e5..f4e700f0bc 100644 --- a/src/Model/Post/UserNotification.php +++ b/src/Model/Post/UserNotification.php @@ -193,6 +193,8 @@ class UserNotification $notification_type = $notification_type | self::TYPE_SHARED; self::insertNotificationByItem(self::TYPE_SHARED, $uid, $item); $notified = true; + } elseif ($author['contact-type'] == Contact::TYPE_COMMUNITY) { + return; } else { $notified = false; } @@ -218,7 +220,7 @@ class UserNotification return; } - if (self::checkExplicitMention($item, $profiles)) { + if (($item['verb'] != Activity::ANNOUNCE) && self::checkExplicitMention($item, $profiles)) { $notification_type = $notification_type | self::TYPE_EXPLICIT_TAGGED; if (!$notified) { self::insertNotificationByItem(self::TYPE_EXPLICIT_TAGGED, $uid, $item); @@ -226,7 +228,7 @@ class UserNotification } } - if (self::checkImplicitMention($item, $profiles)) { + if (($item['verb'] != Activity::ANNOUNCE) && self::checkImplicitMention($item, $profiles)) { $notification_type = $notification_type | self::TYPE_IMPLICIT_TAGGED; if (!$notified) { self::insertNotificationByItem(self::TYPE_IMPLICIT_TAGGED, $uid, $item); @@ -250,7 +252,7 @@ class UserNotification } } - if (self::checkCommentedThread($item, $contacts)) { + if (($item['verb'] != Activity::ANNOUNCE) && self::checkCommentedThread($item, $contacts)) { $notification_type = $notification_type | self::TYPE_THREAD_COMMENT; if (!$notified) { self::insertNotificationByItem(self::TYPE_THREAD_COMMENT, $uid, $item); @@ -258,7 +260,7 @@ class UserNotification } } - if (self::checkCommentedParticipation($item, $contacts)) { + if (($item['verb'] != Activity::ANNOUNCE) && self::checkCommentedParticipation($item, $contacts)) { $notification_type = $notification_type | self::TYPE_COMMENT_PARTICIPATION; if (!$notified) { self::insertNotificationByItem(self::TYPE_COMMENT_PARTICIPATION, $uid, $item); @@ -266,7 +268,7 @@ class UserNotification } } - if (self::checkActivityParticipation($item, $contacts)) { + if (($item['verb'] != Activity::ANNOUNCE) && self::checkActivityParticipation($item, $contacts)) { $notification_type = $notification_type | self::TYPE_ACTIVITY_PARTICIPATION; if (!$notified) { self::insertNotificationByItem(self::TYPE_ACTIVITY_PARTICIPATION, $uid, $item); @@ -306,7 +308,7 @@ class UserNotification return; } - $notification = (new Notifications\Factory\Notification(DI::logger()))->createForUser( + $notification = (new Notifications\Factory\Notification(DI::baseUrl(), DI::l10n(), DI::localRelationship(), DI::logger()))->createForUser( $uid, $item['vid'], $type, @@ -326,7 +328,7 @@ class UserNotification /** * Add a notification entry * - * @param int $actor Contact ID of the actor + * @param int $actor Public contact ID of the actor * @param string $verb One of the Activity verb constant values * @param int $uid User ID * @return boolean @@ -334,7 +336,7 @@ class UserNotification */ public static function insertNotification(int $actor, string $verb, int $uid): bool { - $notification = (new Notifications\Factory\Notification(DI::logger()))->createForRelationship( + $notification = (new Notifications\Factory\Notification(DI::baseUrl(), DI::l10n(), DI::localRelationship(), DI::logger()))->createForRelationship( $uid, $actor, $verb @@ -417,6 +419,14 @@ class UserNotification return false; } + // Don't notify about reshares by communities of our own posts or each time someone comments + if (($item['verb'] == Activity::ANNOUNCE) && DBA::exists('contact', ['id' => $item['contact-id'], 'contact-type' => Contact::TYPE_COMMUNITY])) { + $post = Post::selectFirst(['origin', 'gravity'], ['uri-id' => $item['thr-parent-id'], 'uid' => $uid]); + if ($post['origin'] || ($post['gravity'] != GRAVITY_PARENT)) { + return false; + } + } + // Check if the contact posted or shared something directly if (DBA::exists('contact', ['id' => $item['contact-id'], 'notify_new_posts' => true])) { return true;