]> git.mxchange.org Git - friendica.git/blobdiff - src/Model/APContact.php
APContact: Added follower count, following count and count of posts
[friendica.git] / src / Model / APContact.php
index 82afc0769622959c068d320d293cd0f48808d3e2..bae420c55dc549761fd0a101edb315bfe96c92a6 100644 (file)
@@ -153,7 +153,7 @@ class APContact extends BaseObject
                        self::unarchiveInbox($apcontact['sharedinbox'], true);
                }
 
-               $apcontact['nick'] = JsonLD::fetchElement($compacted, 'as:preferredUsername', '@value');
+               $apcontact['nick'] = JsonLD::fetchElement($compacted, 'as:preferredUsername', '@value') ?? '';
                $apcontact['name'] = JsonLD::fetchElement($compacted, 'as:name', '@value');
 
                if (empty($apcontact['name'])) {
@@ -185,7 +185,12 @@ class APContact extends BaseObject
                $parts = parse_url($apcontact['url']);
                unset($parts['scheme']);
                unset($parts['path']);
-               $apcontact['addr'] = $apcontact['nick'] . '@' . str_replace('//', '', Network::unparseURL($parts));
+
+               if (!empty($apcontact['nick'])) {
+                       $apcontact['addr'] = $apcontact['nick'] . '@' . str_replace('//', '', Network::unparseURL($parts));
+               } else {
+                       $apcontact['addr'] = '';
+               }
 
                if (!empty($compacted['w3id:publicKey'])) {
                        $apcontact['pubkey'] = trim(JsonLD::fetchElement($compacted['w3id:publicKey'], 'w3id:publicKeyPem', '@value'));
@@ -198,6 +203,35 @@ class APContact extends BaseObject
                        $apcontact['generator'] = JsonLD::fetchElement($compacted['as:generator'], 'as:name', '@value');
                }
 
+               if (!empty($apcontact['following'])) {
+                       $data = ActivityPub::fetchContent($apcontact['following']);
+                       if (!empty($data)) {
+                               if (!empty($data['totalItems'])) {
+                                       $apcontact['following_count'] = $data['totalItems'];
+                               }
+                       }
+               }
+
+               if (!empty($apcontact['followers'])) {
+                       $data = ActivityPub::fetchContent($apcontact['followers']);
+                       if (!empty($data)) {
+                               if (!empty($data['totalItems'])) {
+                                       $apcontact['followers_count'] = $data['totalItems'];
+                               }
+                       }
+               }
+
+               if (!empty($apcontact['outbox'])) {
+                       $data = ActivityPub::fetchContent($apcontact['outbox']);
+                       if (!empty($data)) {
+                               if (!empty($data['totalItems'])) {
+                                       $apcontact['statuses_count'] = $data['totalItems'];
+                               }
+                       }
+               }
+/*
+               $apcontact['inbox'] = JsonLD::fetchElement($compacted, 'ldp:inbox', '@id');
+*/
                // To-Do
 
                // Unhandled