]> git.mxchange.org Git - friendica.git/blobdiff - src/Protocol/ActivityPub/Processor.php
Merge remote-tracking branch 'upstream/2021.12-rc' into api-direct-messages
[friendica.git] / src / Protocol / ActivityPub / Processor.php
index 1fe527f407be568ed0cd95a49ab9af44aa75539a..04d05def8e93444cb0615cb549c9805f65e45f51 100644 (file)
@@ -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]);
                }