Merge pull request #9254 from annando/show-relay
Show if a post arrived via relay
This commit is contained in:
commit
725296a6f2
|
@ -764,11 +764,13 @@ function conversation_fetch_comments($thread_items, $pinned) {
|
||||||
case Item::PT_GLOBAL:
|
case Item::PT_GLOBAL:
|
||||||
$row['direction'] = ['direction' => 9, 'title' => DI::l10n()->t('Global')];
|
$row['direction'] = ['direction' => 9, 'title' => DI::l10n()->t('Global')];
|
||||||
break;
|
break;
|
||||||
default:
|
case Item::PT_RELAY:
|
||||||
if ($row['uid'] == 0) {
|
$row['direction'] = ['direction' => 10, 'title' => DI::l10n()->t('Relay')];
|
||||||
$row['direction'] = ['direction' => 9, 'title' => DI::l10n()->t('Global')];
|
break;
|
||||||
}
|
case Item::PT_FETCHED:
|
||||||
}
|
$row['direction'] = ['direction' => 2, 'title' => DI::l10n()->t('Fetched')];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (($row['gravity'] == GRAVITY_PARENT) && !$row['origin'] && ($row['author-id'] == $row['owner-id']) &&
|
if (($row['gravity'] == GRAVITY_PARENT) && !$row['origin'] && ($row['author-id'] == $row['owner-id']) &&
|
||||||
!Contact::isSharing($row['author-id'], $row['uid'])) {
|
!Contact::isSharing($row['author-id'], $row['uid'])) {
|
||||||
|
|
|
@ -67,6 +67,8 @@ class Item
|
||||||
const PT_COMMENT = 71;
|
const PT_COMMENT = 71;
|
||||||
const PT_STORED = 72;
|
const PT_STORED = 72;
|
||||||
const PT_GLOBAL = 73;
|
const PT_GLOBAL = 73;
|
||||||
|
const PT_RELAY = 74;
|
||||||
|
const PT_FETCHED = 75;
|
||||||
const PT_PERSONAL_NOTE = 128;
|
const PT_PERSONAL_NOTE = 128;
|
||||||
|
|
||||||
// Field list that is used to display the items
|
// Field list that is used to display the items
|
||||||
|
|
|
@ -521,6 +521,14 @@ class Processor
|
||||||
$item['post-type'] = Item::PT_ARTICLE;
|
$item['post-type'] = Item::PT_ARTICLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (in_array($item['post-type'], [Item::PT_COMMENT, Item::PT_GLOBAL, Item::PT_ARTICLE])) {
|
||||||
|
if (!empty($activity['from-relay'])) {
|
||||||
|
$item['post-type'] = Item::PT_RELAY;
|
||||||
|
} elseif (!empty($activity['thread-completion'])) {
|
||||||
|
$item['post-type'] = Item::PT_FETCHED;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ($item['isForum'] ?? false) {
|
if ($item['isForum'] ?? false) {
|
||||||
$item['contact-id'] = Contact::getIdForURL($activity['actor'], $receiver);
|
$item['contact-id'] = Contact::getIdForURL($activity['actor'], $receiver);
|
||||||
} else {
|
} else {
|
||||||
|
@ -688,12 +696,13 @@ class Processor
|
||||||
/**
|
/**
|
||||||
* Fetches missing posts
|
* Fetches missing posts
|
||||||
*
|
*
|
||||||
* @param string $url message URL
|
* @param string $url message URL
|
||||||
* @param array $child activity array with the child of this message
|
* @param array $child activity array with the child of this message
|
||||||
|
* @param string $actor Relay actor
|
||||||
* @return string fetched message URL
|
* @return string fetched message URL
|
||||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||||
*/
|
*/
|
||||||
public static function fetchMissingActivity(string $url, array $child = [])
|
public static function fetchMissingActivity(string $url, array $child = [], string $actor = '')
|
||||||
{
|
{
|
||||||
if (!empty($child['receiver'])) {
|
if (!empty($child['receiver'])) {
|
||||||
$uid = ActivityPub\Receiver::getFirstUserFromReceivers($child['receiver']);
|
$uid = ActivityPub\Receiver::getFirstUserFromReceivers($child['receiver']);
|
||||||
|
@ -752,6 +761,7 @@ class Processor
|
||||||
$ldactivity = JsonLD::compact($activity);
|
$ldactivity = JsonLD::compact($activity);
|
||||||
|
|
||||||
$ldactivity['thread-completion'] = true;
|
$ldactivity['thread-completion'] = true;
|
||||||
|
$ldactivity['from-relay'] = !empty($actor);
|
||||||
|
|
||||||
ActivityPub\Receiver::processActivity($ldactivity, json_encode($activity), $uid, true, false, $signer);
|
ActivityPub\Receiver::processActivity($ldactivity, json_encode($activity), $uid, true, false, $signer);
|
||||||
|
|
||||||
|
|
|
@ -100,7 +100,7 @@ class Receiver
|
||||||
|
|
||||||
$apcontact = APContact::getByURL($actor);
|
$apcontact = APContact::getByURL($actor);
|
||||||
if (!empty($apcontact) && ($apcontact['type'] == 'Application') && ($apcontact['nick'] == 'relay')) {
|
if (!empty($apcontact) && ($apcontact['type'] == 'Application') && ($apcontact['nick'] == 'relay')) {
|
||||||
self::processRelayPost($ldactivity);
|
self::processRelayPost($ldactivity, $actor);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -150,10 +150,11 @@ class Receiver
|
||||||
/**
|
/**
|
||||||
* Process incoming posts from relays
|
* Process incoming posts from relays
|
||||||
*
|
*
|
||||||
* @param array $activity
|
* @param array $activity
|
||||||
|
* @param string $actor
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
private static function processRelayPost(array $activity)
|
private static function processRelayPost(array $activity, string $actor)
|
||||||
{
|
{
|
||||||
$type = JsonLD::fetchElement($activity, '@type');
|
$type = JsonLD::fetchElement($activity, '@type');
|
||||||
if (!$type) {
|
if (!$type) {
|
||||||
|
@ -180,7 +181,7 @@ class Receiver
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Processor::fetchMissingActivity($object_id);
|
Processor::fetchMissingActivity($object_id, [], $actor);
|
||||||
|
|
||||||
$item_id = Item::searchByLink($object_id);
|
$item_id = Item::searchByLink($object_id);
|
||||||
if ($item_id) {
|
if ($item_id) {
|
||||||
|
@ -468,6 +469,11 @@ class Receiver
|
||||||
$object_data['thread-completion'] = $activity['thread-completion'];
|
$object_data['thread-completion'] = $activity['thread-completion'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Internal flag for posts that arrived via relay
|
||||||
|
if (!empty($activity['from-relay'])) {
|
||||||
|
$object_data['from-relay'] = $activity['from-relay'];
|
||||||
|
}
|
||||||
|
|
||||||
switch ($type) {
|
switch ($type) {
|
||||||
case 'as:Create':
|
case 'as:Create':
|
||||||
if (in_array($object_data['object_type'], self::CONTENT_TYPES)) {
|
if (in_array($object_data['object_type'], self::CONTENT_TYPES)) {
|
||||||
|
|
|
@ -19,6 +19,8 @@
|
||||||
<i class="fa fa-share" aria-hidden="true" title="{{$direction.title}}"></i>
|
<i class="fa fa-share" aria-hidden="true" title="{{$direction.title}}"></i>
|
||||||
{{elseif $direction.direction == 9}}
|
{{elseif $direction.direction == 9}}
|
||||||
<i class="fa fa-globe" aria-hidden="true" title="{{$direction.title}}"></i>
|
<i class="fa fa-globe" aria-hidden="true" title="{{$direction.title}}"></i>
|
||||||
|
{{elseif $direction.direction == 10}}
|
||||||
|
<i class="fa fa-inbox" aria-hidden="true" title="{{$direction.title}}"></i>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</span>
|
</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
|
@ -19,6 +19,8 @@
|
||||||
<i class="icon-share" aria-hidden="true" title="{{$direction.title}}"></i>
|
<i class="icon-share" aria-hidden="true" title="{{$direction.title}}"></i>
|
||||||
{{elseif $direction.direction == 9}}
|
{{elseif $direction.direction == 9}}
|
||||||
<i class="icon-globe" aria-hidden="true" title="{{$direction.title}}"></i>
|
<i class="icon-globe" aria-hidden="true" title="{{$direction.title}}"></i>
|
||||||
|
{{elseif $direction.direction == 10}}
|
||||||
|
<i class="icon-inbox" aria-hidden="true" title="{{$direction.title}}"></i>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</span>
|
</span>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user