X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FProtocol%2FActivityPub%2FProcessor.php;h=04d05def8e93444cb0615cb549c9805f65e45f51;hb=ddb2d6f5b3f5d9eb0b716ddbd4309c0b527fdb8c;hp=1fe527f407be568ed0cd95a49ab9af44aa75539a;hpb=9c5a3eba533b84a731d0dacff0e0aae104daca1c;p=friendica.git diff --git a/src/Protocol/ActivityPub/Processor.php b/src/Protocol/ActivityPub/Processor.php index 1fe527f407..04d05def8e 100644 --- a/src/Protocol/ActivityPub/Processor.php +++ b/src/Protocol/ActivityPub/Processor.php @@ -26,6 +26,7 @@ use Friendica\Content\Text\HTML; use Friendica\Content\Text\Markdown; use Friendica\Core\Logger; use Friendica\Core\Protocol; +use Friendica\Core\System; use Friendica\Database\DBA; use Friendica\DI; use Friendica\Model\APContact; @@ -90,17 +91,21 @@ class Processor * * @return string with replaced emojis */ - private static function replaceEmojis($body, array $emojis) + private static function replaceEmojis(int $uri_id, $body, array $emojis) { $body = strtr($body, array_combine( array_column($emojis, 'name'), array_map(function ($emoji) { - return '[class=emoji mastodon][img=' . $emoji['href'] . ']' . $emoji['name'] . '[/img][/class]'; + return '[emoji=' . $emoji['href'] . ']' . $emoji['name'] . '[/emoji]'; }, $emojis) ) ); + // We store the emoji here to be able to avoid storing it in the media + foreach ($emojis as $emoji) { + Post\Link::getByLink($uri_id, $emoji['href']); + } return $body; } @@ -283,8 +288,12 @@ class Processor $item['uri'] = $activity['id']; - $item['created'] = DateTimeFormat::utc($activity['published']); - $item['edited'] = DateTimeFormat::utc($activity['updated']); + if (empty($activity['published']) || empty($activity['updated'])) { + DI::logger()->notice('published or updated keys are empty for activity', ['activity' => $activity, 'callstack' => System::callstack(10)]); + } + + $item['created'] = DateTimeFormat::utc($activity['published'] ?? 'now'); + $item['edited'] = DateTimeFormat::utc($activity['updated'] ?? 'now'); $guid = $activity['sc:identifier'] ?: self::getGUIDByURL($item['uri']); $item['guid'] = $activity['diaspora:guid'] ?: $guid; @@ -392,7 +401,7 @@ class Processor * * @param array $activity Activity array * @param array $item - * + * * @return int event id * @throws \Exception */ @@ -404,7 +413,6 @@ class Processor $event['finish'] = $activity['end-time']; $event['nofinish'] = empty($event['finish']); $event['location'] = $activity['location']; - $event['adjust'] = $activity['adjust'] ?? true; $event['cid'] = $item['contact-id']; $event['uid'] = $item['uid']; $event['uri'] = $item['uri']; @@ -456,7 +464,7 @@ class Processor } if (!empty($activity['emojis'])) { - $content = self::replaceEmojis($content, $activity['emojis']); + $content = self::replaceEmojis($item['uri-id'], $content, $activity['emojis']); } $content = self::addMentionLinks($content, $activity['tags']); @@ -912,7 +920,7 @@ class Processor $cid = Contact::getIdForURL($activity['actor'], $uid); if (!empty($cid)) { self::switchContact($cid); - DBA::update('contact', ['hub-verify' => $activity['id'], 'protocol' => Protocol::ACTIVITYPUB], ['id' => $cid]); + Contact::update(['hub-verify' => $activity['id'], 'protocol' => Protocol::ACTIVITYPUB], ['id' => $cid]); } $item = ['author-id' => Contact::getIdForURL($activity['actor']), @@ -932,7 +940,7 @@ class Processor } if (empty($contact)) { - DBA::update('contact', ['hub-verify' => $activity['id'], 'protocol' => Protocol::ACTIVITYPUB], ['id' => $cid]); + Contact::update(['hub-verify' => $activity['id'], 'protocol' => Protocol::ACTIVITYPUB], ['id' => $cid]); } Logger::notice('Follow user ' . $uid . ' from contact ' . $cid . ' with id ' . $activity['id']); @@ -1011,7 +1019,7 @@ class Processor } $condition = ['id' => $cid]; - DBA::update('contact', $fields, $condition); + Contact::update($fields, $condition); Logger::info('Accept contact request', ['contact' => $cid, 'user' => $uid]); } @@ -1037,9 +1045,12 @@ class Processor self::switchContact($cid); - if (DBA::exists('contact', ['id' => $cid, 'rel' => Contact::SHARING])) { + $contact = Contact::getById($cid, ['rel']); + if ($contact['rel'] == Contact::SHARING) { Contact::remove($cid); Logger::info('Rejected contact request - contact removed', ['contact' => $cid, 'user' => $uid]); + } elseif ($contact['rel'] == Contact::FRIEND) { + Contact::update(['rel' => Contact::FOLLOWER], ['id' => $cid]); } else { Logger::info('Rejected contact request', ['contact' => $cid, 'user' => $uid]); }