]> git.mxchange.org Git - friendica.git/blobdiff - src/Protocol/DFRN.php
Move ProfileFieldRepository::migrateFromLegacyProfile() & delete old repository
[friendica.git] / src / Protocol / DFRN.php
index d73eabc2d277036ab340ba5cc83f2bd35bfdaf59..081b7f2a3748ed29fa8c45a1473abaf533d76495 100644 (file)
@@ -1330,7 +1330,58 @@ class DFRN
                $cid = Contact::getIdForURL($url);
                $note = $xpath->evaluate('string(dfrn:note[1]/text())', $suggestion);
 
-               return FContact::addSuggestion($importer['importer_uid'], $cid, $importer['id'], $note);
+               return self::addSuggestion($importer['importer_uid'], $cid, $importer['id'], $note);
+       }
+
+       /**
+        * Suggest a given contact to a given user from a given contact
+        *
+        * @param integer $uid
+        * @param integer $cid
+        * @param integer $from_cid
+        * @return bool   Was the adding successful?
+        */
+       private static function addSuggestion(int $uid, int $cid, int $from_cid, string $note = '')
+       {
+               $owner = User::getOwnerDataById($uid);
+               $contact = Contact::getById($cid);
+               $from_contact = Contact::getById($from_cid);
+
+               if (DBA::exists('contact', ['nurl' => Strings::normaliseLink($contact['url']), 'uid' => $uid])) {
+                       return false;
+               }
+
+               // Quit if we already have an introduction for this person
+               if (DBA::exists('intro', ['uid' => $uid, 'suggest-cid' => $cid])) {
+                       return false;
+               }
+
+               $suggest = [];
+               $suggest['uid'] = $uid;
+               $suggest['cid'] = $from_cid;
+               $suggest['url'] = $contact['url'];
+               $suggest['name'] = $contact['name'];
+               $suggest['photo'] = $contact['photo'];
+               $suggest['request'] = $contact['request'];
+               $suggest['title'] = '';
+               $suggest['body'] = $note;
+
+               $hash = Strings::getRandomHex();
+               $fields = ['uid' => $suggest['uid'], 'suggest-cid' => $cid, 'contact-id' => $suggest['cid'],
+                       'note' => $suggest['body'], 'hash' => $hash, 'datetime' => DateTimeFormat::utcNow(), 'blocked' => false];
+               DBA::insert('intro', $fields);
+
+               notification([
+                       'type'  => Notification\Type::SUGGEST,
+                       'otype' => Notification\ObjectType::INTRO,
+                       'verb'  => Activity::REQ_FRIEND,
+                       'uid'   => $owner['uid'],
+                       'cid'   => $from_contact['uid'],
+                       'item'  => $suggest,
+                       'link'  => DI::baseUrl().'/notifications/intros',
+               ]);
+
+               return true;
        }
 
        /**