]> git.mxchange.org Git - friendica.git/commitdiff
Improved performance on relation discovery
authorMichael <heluecht@pirati.ca>
Sun, 12 Jan 2025 19:43:34 +0000 (19:43 +0000)
committerMichael <heluecht@pirati.ca>
Fri, 24 Jan 2025 06:52:20 +0000 (06:52 +0000)
src/Model/Contact/Relation.php

index 5172d87c7002324cb5e9a6906275b08a6ee7656c..736c4361dd3309b5ccee1ff9df86917e861df3c1 100644 (file)
@@ -10,6 +10,7 @@ namespace Friendica\Model\Contact;
 use Exception;
 use Friendica\Content\Widget;
 use Friendica\Core\Protocol;
+use Friendica\Core\Worker;
 use Friendica\Database\Database;
 use Friendica\Database\DBA;
 use Friendica\DI;
@@ -21,6 +22,7 @@ use Friendica\Model\Verb;
 use Friendica\Protocol\Activity;
 use Friendica\Protocol\ActivityPub;
 use Friendica\Util\DateTimeFormat;
+use Friendica\Util\Network;
 use Friendica\Util\Strings;
 
 /**
@@ -162,20 +164,22 @@ class Relation
                $following_counter = 0;
 
                DI::logger()->info('Discover contacts', ['id' => $target, 'url' => $url, 'contacts' => count($contacts)]);
-               foreach ($contacts as $contact) {
-                       $actor = Contact::getIdForURL($contact);
-                       if (!empty($actor)) {
-                               if (in_array($contact, $followers)) {
-                                       $fields = ['cid' => $target, 'relation-cid' => $actor, 'follows' => true, 'follow-updated' => DateTimeFormat::utcNow()];
+               foreach ($contacts as $contact_url) {
+                       $contact = Contact::getByURL($contact_url, false, ['id']);
+                       if (!empty($contact['id'])) {
+                               if (in_array($contact_url, $followers)) {
+                                       $fields = ['cid' => $target, 'relation-cid' => $contact['id'], 'follows' => true, 'follow-updated' => DateTimeFormat::utcNow()];
                                        DBA::insert('contact-relation', $fields, Database::INSERT_UPDATE);
                                        $follower_counter++;
                                }
 
-                               if (in_array($contact, $followings)) {
-                                       $fields = ['cid' => $actor, 'relation-cid' => $target, 'follows' => true, 'follow-updated' => DateTimeFormat::utcNow()];
+                               if (in_array($contact_url, $followings)) {
+                                       $fields = ['cid' => $contact['id'], 'relation-cid' => $target, 'follows' => true, 'follow-updated' => DateTimeFormat::utcNow()];
                                        DBA::insert('contact-relation', $fields, Database::INSERT_UPDATE);
                                        $following_counter++;
                                }
+                       } elseif (!Network::isUrlBlocked($contact_url)) {
+                               Worker::add(Worker::PRIORITY_LOW, 'AddContact', 0, $contact_url);
                        }
                }