X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FProtocol%2FDFRN.php;h=081b7f2a3748ed29fa8c45a1473abaf533d76495;hb=838cdac5d17cf71e7103215c65bd0b2a878254f9;hp=d73eabc2d277036ab340ba5cc83f2bd35bfdaf59;hpb=1d86d79778bb7e2d00bd9031877e566a6037144e;p=friendica.git diff --git a/src/Protocol/DFRN.php b/src/Protocol/DFRN.php index d73eabc2d2..081b7f2a37 100644 --- a/src/Protocol/DFRN.php +++ b/src/Protocol/DFRN.php @@ -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; } /**