mirror of
https://git.sekbaer.de/Friendica/friendica.git
synced 2025-06-11 09:34:26 +02:00
Store Pixelfed's capabilities
This commit is contained in:
parent
a86cd93fb8
commit
da65f0bea7
4 changed files with 46 additions and 0 deletions
|
@ -918,6 +918,8 @@ class Processor
|
|||
|
||||
self::storeReceivers($item['uri-id'], $activity['receiver_urls'] ?? []);
|
||||
|
||||
self::storeCapabilities($item['uri-id'], $activity['capabilities'] ?? []);
|
||||
|
||||
$item['location'] = $activity['location'];
|
||||
|
||||
if (!empty($activity['latitude']) && !empty($activity['longitude'])) {
|
||||
|
@ -1343,6 +1345,29 @@ class Processor
|
|||
}
|
||||
}
|
||||
|
||||
private static function storeCapabilities(int $uriid, array $capabilities)
|
||||
{
|
||||
foreach (['pixelfed:canAnnounce' => Tag::CAN_ANNOUNCE, 'pixelfed:canLike' => Tag::CAN_LIKE, 'pixelfed:canReply' => Tag::CAN_REPLY] as $element => $type) {
|
||||
if (!empty($capabilities[$element])) {
|
||||
foreach ($capabilities[$element] as $capability) {
|
||||
if ($capability == ActivityPub::PUBLIC_COLLECTION) {
|
||||
$name = Receiver::PUBLIC_COLLECTION;
|
||||
} elseif (empty($capability) || ($capability == '[]')) {
|
||||
continue;
|
||||
} elseif ($path = parse_url($capability, PHP_URL_PATH)) {
|
||||
$name = trim($path, '/');
|
||||
} elseif ($host = parse_url($capability, PHP_URL_HOST)) {
|
||||
$name = $host;
|
||||
} else {
|
||||
Logger::warning('Unable to coerce name from capability', ['element' => $element, 'type' => $type, 'capability' => $capability]);
|
||||
$name = '';
|
||||
}
|
||||
Tag::store($uriid, $type, $name, $capability);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an mail post
|
||||
*
|
||||
|
|
|
@ -1943,6 +1943,10 @@ class Receiver
|
|||
$object_data['receiver'] = $receivers;
|
||||
$object_data['reception_type'] = $reception_types;
|
||||
|
||||
if (!empty($object['pixelfed:capabilities'])) {
|
||||
$object_data['capabilities'] = self::getCapabilities($object);
|
||||
}
|
||||
|
||||
$object_data['unlisted'] = in_array(-1, $object_data['receiver']);
|
||||
unset($object_data['receiver'][-1]);
|
||||
unset($object_data['reception_type'][-1]);
|
||||
|
@ -1950,6 +1954,18 @@ class Receiver
|
|||
return $object_data;
|
||||
}
|
||||
|
||||
private static function getCapabilities($object) {
|
||||
$capabilities = [];
|
||||
foreach (['pixelfed:canAnnounce', 'pixelfed:canLike', 'pixelfed:canReply'] as $element) {
|
||||
$capabilities_list = JsonLD::fetchElementArray($object['pixelfed:capabilities'], $element, '@id');
|
||||
if (empty($capabilities_list)) {
|
||||
continue;
|
||||
}
|
||||
$capabilities[$element] = $capabilities_list;
|
||||
}
|
||||
return $capabilities;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an object data array from a given activity
|
||||
*
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue