]> git.mxchange.org Git - friendica.git/blobdiff - src/Model/Contact.php
Don't show deleted contacts, changed "pending" behaviour
[friendica.git] / src / Model / Contact.php
index 4a63a6b49a5084d695ff91bf23a05c8350e13bcd..90b86789cc5e8b9201016f2b8cc7c4defc0cb562 100644 (file)
@@ -358,6 +358,7 @@ class Contact extends BaseObject
                                WHERE `gid` = ?
                                AND `contact`.`uid` = ?
                                AND NOT `contact`.`self`
+                               AND NOT `contact`.`deleted`
                                AND NOT `contact`.`blocked`
                                AND NOT `contact`.`pending`
                                ORDER BY `contact`.`name` ASC',
@@ -598,7 +599,7 @@ class Contact extends BaseObject
                } elseif ($contact['network'] == Protocol::DIASPORA) {
                        Diaspora::sendUnshare($user, $contact);
                } elseif ($contact['network'] == Protocol::ACTIVITYPUB) {
-                       ActivityPub\Transmitter::sendContactUndo($contact['url'], $user['uid']);
+                       ActivityPub\Transmitter::sendContactUndo($contact['url'], $contact['id'], $user['uid']);
 
                        if ($dissolve) {
                                ActivityPub\Transmitter::sendContactReject($contact['url'], $contact['hub-verify'], $user['uid']);
@@ -909,7 +910,7 @@ class Contact extends BaseObject
        public static function photoMenu(array $contact, $uid = 0)
        {
                // @todo Unused, to be removed
-               $a = get_app();
+               $a = \get_app();
 
                $contact_url = '';
                $pm_url = '';
@@ -1030,6 +1031,7 @@ class Contact extends BaseObject
                           FROM `contact`
                           WHERE `uid` = %d
                           AND NOT `self`
+                          AND NOT `deleted`
                           AND NOT `blocked`
                           AND NOT `pending`
                           AND `id` NOT IN (
@@ -1631,7 +1633,7 @@ class Contact extends BaseObject
        {
                $result = ['cid' => -1, 'success' => false, 'message' => ''];
 
-               $a = get_app();
+               $a = \get_app();
 
                // remove ajax junk, e.g. Twitter
                $url = str_replace('/#!/', '/', $url);
@@ -1739,6 +1741,8 @@ class Contact extends BaseObject
 
                $hidden = (($ret['network'] === Protocol::MAIL) ? 1 : 0);
 
+               $pending = in_array($ret['network'], [Protocol::ACTIVITYPUB]);
+
                if (in_array($ret['network'], [Protocol::MAIL, Protocol::DIASPORA, Protocol::ACTIVITYPUB])) {
                        $writeable = 1;
                }
@@ -1774,7 +1778,7 @@ class Contact extends BaseObject
                                'hidden'  => $hidden,
                                'blocked' => 0,
                                'readonly'=> 0,
-                               'pending' => 0,
+                               'pending' => $pending,
                                'subhub'  => $subhub
                        ]);
                }
@@ -1820,7 +1824,13 @@ class Contact extends BaseObject
                                $ret = Diaspora::sendShare($a->user, $contact);
                                Logger::log('share returns: ' . $ret);
                        } elseif ($contact['network'] == Protocol::ACTIVITYPUB) {
-                               $ret = ActivityPub\Transmitter::sendActivity('Follow', $contact['url'], $uid);
+                               $activity_id = ActivityPub\Transmitter::activityIDFromContact($contact_id);
+                               if (empty($activity_id)) {
+                                       // This really should never happen
+                                       return false;
+                               }
+
+                               $ret = ActivityPub\Transmitter::sendActivity('Follow', $contact['url'], $uid, $activity_id);
                                Logger::log('Follow returns: ' . $ret);
                        }
                }
@@ -2072,7 +2082,7 @@ class Contact extends BaseObject
         */
        public static function magicLink($contact_url, $url = '')
        {
-               if (!local_user()) {
+               if (!local_user() && remote_user()) {
                        return $url ?: $contact_url; // Equivalent to: ($url != '') ? $url : $contact_url;
                }
 
@@ -2097,7 +2107,7 @@ class Contact extends BaseObject
                $contact = DBA::selectFirst('contact', ['id', 'network', 'url', 'uid'], ['id' => $cid]);
 
                return self::magicLinkbyContact($contact, $url);
-        }
+       }
 
        /**
         * @brief Returns a magic link to authenticate remote visitors
@@ -2109,7 +2119,7 @@ class Contact extends BaseObject
         */
        public static function magicLinkbyContact($contact, $url = '')
        {
-               if (!local_user() || ($contact['network'] != Protocol::DFRN)) {
+               if ((!local_user() && !remote_user()) || ($contact['network'] != Protocol::DFRN)) {
                        return $url ?: $contact['url']; // Equivalent to ($url != '') ? $url : $contact['url'];
                }