]> git.mxchange.org Git - friendica.git/blobdiff - src/Model/APContact.php
Use a constant for the avatar base path
[friendica.git] / src / Model / APContact.php
index 1af2c83123666105362ea1f4b5bea391ee013c72..0255af7a33cf2c9d653f45d0e443cc0e5c502f82 100644 (file)
@@ -39,7 +39,6 @@ use Friendica\Util\DateTimeFormat;
 use Friendica\Util\HTTPSignature;
 use Friendica\Util\JsonLD;
 use Friendica\Util\Network;
-use Friendica\Util\Strings;
 
 class APContact
 {
@@ -232,6 +231,9 @@ class APContact
                        self::unarchiveInbox($apcontact['sharedinbox'], true);
                }
 
+               $apcontact['featured']      = JsonLD::fetchElement($compacted, 'toot:featured', '@id');
+               $apcontact['featured-tags'] = JsonLD::fetchElement($compacted, 'toot:featuredTags', '@id');
+
                $apcontact['nick'] = JsonLD::fetchElement($compacted, 'as:preferredUsername', '@value') ?? '';
                $apcontact['name'] = JsonLD::fetchElement($compacted, 'as:name', '@value');
 
@@ -363,7 +365,7 @@ class APContact
                // To-Do
 
                // Unhandled
-               // tag, attachment, image, nomadicLocations, signature, featured, movedTo, liked
+               // tag, attachment, image, nomadicLocations, signature, movedTo, liked
 
                // Unhandled from Misskey
                // sharedInbox, isCat
@@ -429,6 +431,30 @@ class APContact
                        $apcontact['uri-id'] = ItemURI::insert(['uri' => $apcontact['url'], 'guid' => $apcontact['uuid']]);
                }
 
+               foreach (APContact\Endpoint::ENDPOINT_NAMES as $type => $name) {
+                       $value = JsonLD::fetchElement($compacted, $name, '@id');
+                       if (empty($value)) {
+                               continue;
+                       }
+                       APContact\Endpoint::update($apcontact['uri-id'], $type, $value);
+               }
+
+               if (!empty($compacted['as:endpoints'])) {
+                       foreach ($compacted['as:endpoints'] as $name => $endpoint) {
+                               if (empty($endpoint['@id']) || !is_string($endpoint['@id'])) {
+                                       continue;
+                               }
+
+                               if (in_array($name, APContact\Endpoint::ENDPOINT_NAMES)) {
+                                       $key = array_search($name, APContact\Endpoint::ENDPOINT_NAMES);
+                                       APContact\Endpoint::update($apcontact['uri-id'], $key, $endpoint['@id']);
+                                       Logger::debug('Store endpoint', ['key' => $key, 'name' => $name, 'endpoint' => $endpoint['@id']]);
+                               } elseif (!in_array($name, ['as:sharedInbox', 'as:uploadMedia', 'as:oauthTokenEndpoint', 'as:oauthAuthorizationEndpoint', 'litepub:oauthRegistrationEndpoint'])) {
+                                       Logger::debug('Unknown endpoint', ['name' => $name, 'endpoint' => $endpoint['@id']]);
+                               }
+                       }
+               }
+
                $apcontact['updated'] = DateTimeFormat::utcNow();
 
                // We delete the old entry when the URL is changed