No notifcations for forum / fetch user for fetching content
This commit is contained in:
parent
e394143148
commit
ee3a8ccb3b
|
@ -33,6 +33,7 @@ use Friendica\Model\Contact;
|
|||
use Friendica\Model\Post;
|
||||
use Friendica\Model\Subscription;
|
||||
use Friendica\Model\Tag;
|
||||
use Friendica\Model\User;
|
||||
use Friendica\Navigation\Notifications;
|
||||
use Friendica\Network\HTTPException;
|
||||
use Friendica\Protocol\Activity;
|
||||
|
@ -176,6 +177,11 @@ class UserNotification
|
|||
return;
|
||||
}
|
||||
|
||||
$user = User::getById($uid, ['account-type']);
|
||||
if (in_array($user['account-type'], [User::ACCOUNT_TYPE_COMMUNITY, User::ACCOUNT_TYPE_RELAY])) {
|
||||
return;
|
||||
}
|
||||
|
||||
$notification_type = self::TYPE_NONE;
|
||||
|
||||
if (self::checkShared($item, $uid)) {
|
||||
|
|
|
@ -263,7 +263,19 @@ class Receiver
|
|||
{
|
||||
$id = JsonLD::fetchElement($activity, '@id');
|
||||
if (!empty($id) && !$trust_source) {
|
||||
$fetched_activity = ActivityPub::fetchContent($id, $uid ?? 0);
|
||||
if (empty($uid)) {
|
||||
$actor = JsonLD::fetchElement($activity, 'as:actor', '@id');
|
||||
if (empty($actor)) {
|
||||
$actor = '';
|
||||
}
|
||||
|
||||
// Fetch a user out of the receivers of the message.
|
||||
$fetch_uid = Receiver::getBestUserForActivity($activity, $actor);
|
||||
} else {
|
||||
$fetch_uid = $uid;
|
||||
}
|
||||
|
||||
$fetched_activity = ActivityPub::fetchContent($id, $fetch_uid);
|
||||
if (!empty($fetched_activity)) {
|
||||
$object = JsonLD::compact($fetched_activity);
|
||||
$fetched_id = JsonLD::fetchElement($object, '@id');
|
||||
|
@ -643,6 +655,29 @@ class Receiver
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetch a user id from an activity array
|
||||
*
|
||||
* @param array $activity
|
||||
* @param string $actor
|
||||
*
|
||||
* @return int user id
|
||||
*/
|
||||
private static function getBestUserForActivity(array $activity, string $actor)
|
||||
{
|
||||
$uid = 0;
|
||||
$receivers = self::getReceivers($activity, $actor);
|
||||
foreach ($receivers as $receiver) {
|
||||
if ($receiver['type'] == self::TARGET_GLOBAL) {
|
||||
return 0;
|
||||
}
|
||||
if (empty($uid) || ($receiver['type'] == self::TARGET_TO)) {
|
||||
$uid = $receiver['uid'];
|
||||
}
|
||||
}
|
||||
return $uid;
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetch the receiver list from an activity array
|
||||
*
|
||||
|
|
Loading…
Reference in a new issue