No notifcations for forum / fetch user for fetching content
This commit is contained in:
parent
e394143148
commit
ee3a8ccb3b
2 changed files with 42 additions and 1 deletions
|
@ -33,6 +33,7 @@ use Friendica\Model\Contact;
|
||||||
use Friendica\Model\Post;
|
use Friendica\Model\Post;
|
||||||
use Friendica\Model\Subscription;
|
use Friendica\Model\Subscription;
|
||||||
use Friendica\Model\Tag;
|
use Friendica\Model\Tag;
|
||||||
|
use Friendica\Model\User;
|
||||||
use Friendica\Navigation\Notifications;
|
use Friendica\Navigation\Notifications;
|
||||||
use Friendica\Network\HTTPException;
|
use Friendica\Network\HTTPException;
|
||||||
use Friendica\Protocol\Activity;
|
use Friendica\Protocol\Activity;
|
||||||
|
@ -176,6 +177,11 @@ class UserNotification
|
||||||
return;
|
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;
|
$notification_type = self::TYPE_NONE;
|
||||||
|
|
||||||
if (self::checkShared($item, $uid)) {
|
if (self::checkShared($item, $uid)) {
|
||||||
|
|
|
@ -263,7 +263,19 @@ class Receiver
|
||||||
{
|
{
|
||||||
$id = JsonLD::fetchElement($activity, '@id');
|
$id = JsonLD::fetchElement($activity, '@id');
|
||||||
if (!empty($id) && !$trust_source) {
|
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)) {
|
if (!empty($fetched_activity)) {
|
||||||
$object = JsonLD::compact($fetched_activity);
|
$object = JsonLD::compact($fetched_activity);
|
||||||
$fetched_id = JsonLD::fetchElement($object, '@id');
|
$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
|
* Fetch the receiver list from an activity array
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in a new issue