From 911a854255f0b2a7348c33d8103e46dfd1cb6ca7 Mon Sep 17 00:00:00 2001 From: Michael Date: Wed, 11 Dec 2019 00:05:50 +0000 Subject: [PATCH] APContact: Added follower count, following count and count of posts --- database.sql | 7 +++++-- src/Model/APContact.php | 29 +++++++++++++++++++++++++++++ static/dbstructure.config.php | 5 ++++- 3 files changed, 38 insertions(+), 3 deletions(-) diff --git a/database.sql b/database.sql index 8630bfba8b..13e7e34cff 100644 --- a/database.sql +++ b/database.sql @@ -1,6 +1,6 @@ -- ------------------------------------------ --- Friendica 2019.12-dev (Dalmatian Bellflower) --- DB_UPDATE_VERSION 1324 +-- Friendica 2019.12-rc (Dalmatian Bellflower) +-- DB_UPDATE_VERSION 1325 -- ------------------------------------------ @@ -66,6 +66,9 @@ CREATE TABLE IF NOT EXISTS `apcontact` ( `pubkey` text COMMENT '', `baseurl` varchar(255) COMMENT 'baseurl of the ap contact', `generator` varchar(255) COMMENT 'Name of the contact\'s system', + `following_count` int unsigned DEFAULT 0 COMMENT 'Number of following contacts', + `followers_count` int unsigned DEFAULT 0 COMMENT 'Number of followers', + `statuses_count` int unsigned DEFAULT 0 COMMENT 'Number of posts', `updated` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '', PRIMARY KEY(`url`), INDEX `addr` (`addr`(32)), diff --git a/src/Model/APContact.php b/src/Model/APContact.php index e7191d32e8..bae420c55d 100644 --- a/src/Model/APContact.php +++ b/src/Model/APContact.php @@ -203,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 diff --git a/static/dbstructure.config.php b/static/dbstructure.config.php index 05c065d9fb..5b02ab1df3 100755 --- a/static/dbstructure.config.php +++ b/static/dbstructure.config.php @@ -34,7 +34,7 @@ use Friendica\Database\DBA; if (!defined('DB_UPDATE_VERSION')) { - define('DB_UPDATE_VERSION', 1324); + define('DB_UPDATE_VERSION', 1325); } return [ @@ -102,6 +102,9 @@ return [ "pubkey" => ["type" => "text", "comment" => ""], "baseurl" => ["type" => "varchar(255)", "comment" => "baseurl of the ap contact"], "generator" => ["type" => "varchar(255)", "comment" => "Name of the contact's system"], + "following_count" => ["type" => "int unsigned", "default" => 0, "comment" => "Number of following contacts"], + "followers_count" => ["type" => "int unsigned", "default" => 0, "comment" => "Number of followers"], + "statuses_count" => ["type" => "int unsigned", "default" => 0, "comment" => "Number of posts"], "updated" => ["type" => "datetime", "not null" => "1", "default" => DBA::NULL_DATETIME, "comment" => ""] ], "indexes" => [