mirror of
https://github.com/friendica/friendica
synced 2025-04-27 08:30:10 +00:00
Merge remote-tracking branch 'upstream/develop' into push-pull
This commit is contained in:
commit
6f0d40c6c0
82 changed files with 1178 additions and 798 deletions
|
@ -28,7 +28,6 @@ use Friendica\Core\Logger;
|
|||
use Friendica\Core\Protocol;
|
||||
use Friendica\Model\Contact;
|
||||
use Friendica\Model\APContact;
|
||||
use Friendica\Model\Conversation;
|
||||
use Friendica\Model\Item;
|
||||
use Friendica\Model\User;
|
||||
use Friendica\Protocol\Activity;
|
||||
|
@ -306,33 +305,6 @@ class Receiver
|
|||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Store the unprocessed data into the conversation table
|
||||
* This has to be done outside the regular function,
|
||||
* since we store everything - not only item posts.
|
||||
*
|
||||
* @param array $activity Array with activity data
|
||||
* @param string $body The raw message
|
||||
* @throws \Exception
|
||||
*/
|
||||
private static function storeConversation($activity, $body)
|
||||
{
|
||||
if (empty($body) || empty($activity['id'])) {
|
||||
return;
|
||||
}
|
||||
|
||||
$conversation = [
|
||||
'protocol' => Conversation::PARCEL_ACTIVITYPUB,
|
||||
'item-uri' => $activity['id'],
|
||||
'reply-to-uri' => $activity['reply-to-id'] ?? '',
|
||||
'conversation-href' => $activity['context'] ?? '',
|
||||
'conversation-uri' => $activity['conversation'] ?? '',
|
||||
'source' => $body,
|
||||
'received' => DateTimeFormat::utcNow()];
|
||||
|
||||
DBA::insert('conversation', $conversation, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Processes the activity object
|
||||
*
|
||||
|
@ -383,9 +355,8 @@ class Receiver
|
|||
return;
|
||||
}
|
||||
|
||||
// Only store content related stuff - and no announces, since they possibly overwrite the original content
|
||||
if (in_array($object_data['object_type'], self::CONTENT_TYPES) && ($type != 'as:Announce')) {
|
||||
self::storeConversation($object_data, $body);
|
||||
if (!empty($body)) {
|
||||
$object_data['raw'] = $body;
|
||||
}
|
||||
|
||||
// Internal flag for thread completion. See Processor.php
|
||||
|
@ -509,14 +480,15 @@ class Receiver
|
|||
/**
|
||||
* Fetch the receiver list from an activity array
|
||||
*
|
||||
* @param array $activity
|
||||
* @param string $actor
|
||||
* @param array $tags
|
||||
* @param array $activity
|
||||
* @param string $actor
|
||||
* @param array $tags
|
||||
* @param boolean $fetch_unlisted
|
||||
*
|
||||
* @return array with receivers (user id)
|
||||
* @throws \Exception
|
||||
*/
|
||||
private static function getReceivers($activity, $actor, $tags = [])
|
||||
private static function getReceivers($activity, $actor, $tags = [], $fetch_unlisted = false)
|
||||
{
|
||||
$receivers = [];
|
||||
|
||||
|
@ -554,6 +526,11 @@ class Receiver
|
|||
$receivers['uid:0'] = 0;
|
||||
}
|
||||
|
||||
// Add receiver "-1" for unlisted posts
|
||||
if ($fetch_unlisted && ($receiver == self::PUBLIC_COLLECTION) && ($element == 'as:cc')) {
|
||||
$receivers['uid:-1'] = -1;
|
||||
}
|
||||
|
||||
if (($receiver == self::PUBLIC_COLLECTION) && !empty($actor)) {
|
||||
// This will most likely catch all OStatus connections to Mastodon
|
||||
$condition = ['alias' => [$actor, Strings::normaliseLink($actor)], 'rel' => [Contact::SHARING, Contact::FRIEND]
|
||||
|
@ -1025,7 +1002,9 @@ class Receiver
|
|||
}
|
||||
}
|
||||
|
||||
$object_data['receiver'] = self::getReceivers($object, $object_data['actor'], $object_data['tags']);
|
||||
$object_data['receiver'] = self::getReceivers($object, $object_data['actor'], $object_data['tags'], true);
|
||||
$object_data['unlisted'] = in_array(-1, $object_data['receiver']);
|
||||
unset($object_data['receiver']['uid:-1']);
|
||||
|
||||
// Common object data:
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue