<?php
/**
- * @copyright Copyright (C) 2020, Friendica
+ * @copyright Copyright (C) 2010-2021, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*
$apcontact = APContact::getByURL($actor);
if (empty($apcontact)) {
- Logger::notice('Unable to retrieve AP contact for actor', ['actor' => $actor]);
+ Logger::notice('Unable to retrieve AP contact for actor - message is discarded', ['actor' => $actor]);
+ return;
} elseif ($apcontact['type'] == 'Application' && $apcontact['nick'] == 'relay') {
self::processRelayPost($ldactivity, $actor);
return;
return;
}
- $item['post-type'] = Item::PT_ANNOUNCEMENT;
+ $item['post-reason'] = Item::PR_ANNOUNCEMENT;
ActivityPub\Processor::postItem($object_data, $item);
$announce_object_data = self::processObject($activity);
} else {
Logger::log('Empty content for ' . $object_id . ', check if content is available locally.', Logger::DEBUG);
- $item = Post::selectFirst([], ['uri' => $object_id]);
+ $item = Post::selectFirst(Item::DELIVER_FIELDLIST, ['uri' => $object_id]);
if (!DBA::isResult($item)) {
Logger::log('Object with url ' . $object_id . ' was not found locally.', Logger::DEBUG);
return false;
return false;
}
+ /**
+ * Converts the language element (Used by Peertube)
+ *
+ * @param array $languages
+ * @return array Languages
+ */
+ public static function processLanguages(array $languages)
+ {
+ if (empty($languages)) {
+ return [];
+ }
+
+ $language_list = [];
+
+ foreach ($languages as $language) {
+ if (!empty($language['_:identifier']) && !empty($language['as:name'])) {
+ $language_list[$language['_:identifier']] = $language['as:name'];
+ }
+ }
+ return $language_list;
+ }
+
/**
* Convert tags from JSON-LD format into a simplified format
*
$object_data['name'] = JsonLD::fetchElement($object, 'as:name', '@value');
$object_data['summary'] = JsonLD::fetchElement($object, 'as:summary', '@value');
$object_data['content'] = JsonLD::fetchElement($object, 'as:content', '@value');
+ $object_data['mediatype'] = JsonLD::fetchElement($object, 'as:mediaType', '@value');
$object_data = self::getSource($object, $object_data);
$object_data['start-time'] = JsonLD::fetchElement($object, 'as:startTime', '@value');
$object_data['end-time'] = JsonLD::fetchElement($object, 'as:endTime', '@value');
+ $object_data['adjust'] = JsonLD::fetchElement($object, 'dfrn:adjust', '@value');
$object_data['location'] = $location;
$object_data['latitude'] = JsonLD::fetchElement($object, 'as:location', 'as:latitude', '@type', 'as:Place');
$object_data['latitude'] = JsonLD::fetchElement($object_data, 'latitude', '@value');
$object_data['attachments'] = self::processAttachments(JsonLD::fetchElementArray($object, 'as:attachment') ?? []);
$object_data['tags'] = self::processTags(JsonLD::fetchElementArray($object, 'as:tag') ?? []);
$object_data['emojis'] = self::processEmojis(JsonLD::fetchElementArray($object, 'as:tag', null, '@type', 'toot:Emoji') ?? []);
+ $object_data['languages'] = self::processLanguages(JsonLD::fetchElementArray($object, 'sc:inLanguage') ?? []);
$object_data['generator'] = JsonLD::fetchElement($object, 'as:generator', 'as:name', '@type', 'as:Application');
$object_data['generator'] = JsonLD::fetchElement($object_data, 'generator', '@value');
$object_data['alternate-url'] = JsonLD::fetchElement($object, 'as:url', '@id');