]> git.mxchange.org Git - friendica.git/blobdiff - src/Model/Contact.php
Rework Profile::sidebar profile link conditions
[friendica.git] / src / Model / Contact.php
index 01c30fad71f20a96554860e71bd8cdf934a7c574..73118be0d04e92807f99e06bb2e1fc09551afbd8 100644 (file)
@@ -124,6 +124,20 @@ class Contact extends BaseObject
                return DBA::toArray($statement);
        }
 
+       /**
+        * @param array $fields    Array of selected fields, empty for all
+        * @param array $condition Array of fields for condition
+        * @param array $params    Array of several parameters
+        * @return array
+        * @throws \Exception
+        */
+       public static function selectFirst(array $fields = [], array $condition = [], array $params = [])
+       {
+               $contact = DBA::selectFirst('contact', $fields, $condition, $params);
+
+               return $contact;
+       }
+
        /**
         * @param integer $id     Contact ID
         * @param array   $fields Array of selected fields, empty for all
@@ -894,7 +908,7 @@ class Contact extends BaseObject
                        // If there is more than one entry we filter out the connector networks
                        if (count($r) > 1) {
                                foreach ($r as $id => $result) {
-                                       if ($result["network"] == Protocol::STATUSNET) {
+                                       if (!in_array($result["network"], Protocol::NATIVE_SUPPORT)) {
                                                unset($r[$id]);
                                        }
                                }
@@ -1078,7 +1092,7 @@ class Contact extends BaseObject
                        $profile_link = $profile_link . '?tab=profile';
                }
 
-               if (in_array($contact['network'], [Protocol::DFRN, Protocol::DIASPORA]) && !$contact['self']) {
+               if (self::canReceivePrivateMessages($contact)) {
                        $pm_url = System::baseUrl() . '/message/new/' . $contact['id'];
                }
 
@@ -2447,4 +2461,18 @@ class Contact extends BaseObject
                // Is it a forum?
                return ($contact['forum'] || $contact['prv']);
        }
+
+       /**
+        * Can the remote contact receive private messages?
+        *
+        * @param array $contact
+        * @return bool
+        */
+       public static function canReceivePrivateMessages(array $contact)
+       {
+               $protocol = $contact['network'] ?? $contact['protocol'] ?? Protocol::PHANTOM;
+               $self = $contact['self'] ?? false;
+
+               return in_array($protocol, [Protocol::DFRN, Protocol::DIASPORA, Protocol::ACTIVITYPUB]) && !$self;
+       }
 }