]> git.mxchange.org Git - friendica.git/blobdiff - src/Module/Contact.php
Remove setting obsolete App->data['user'] in Module\Profile\Contacts
[friendica.git] / src / Module / Contact.php
index feae601fddf0acc9a97dcff4e9f1abe79400020a..0b27f0e4a37d1a20a3d222174778743fbd5f3897 100644 (file)
@@ -176,54 +176,16 @@ class Contact extends BaseModule
 
        private static function updateContactFromProbe($contact_id)
        {
-               $contact = DBA::selectFirst('contact', ['uid', 'url', 'network'], ['id' => $contact_id, 'uid' => local_user(), 'deleted' => false]);
+               $contact = DBA::selectFirst('contact', ['url'], ['id' => $contact_id, 'uid' => local_user(), 'deleted' => false]);
                if (!DBA::isResult($contact)) {
                        return;
                }
 
-               $uid = $contact['uid'];
-
-               $data = Probe::uri($contact['url'], '', 0, false);
-
-               // 'Feed' or 'Unknown' is mostly a sign of communication problems
-               if ((in_array($data['network'], [Protocol::FEED, Protocol::PHANTOM])) && ($data['network'] != $contact['network'])) {
-                       return;
-               }
-
-               $updatefields = ['name', 'nick', 'url', 'addr', 'batch', 'notify', 'poll', 'request', 'confirm', 'poco', 'network', 'alias'];
-               $fields = [];
-
-               if ($data['network'] == Protocol::OSTATUS) {
-                       $result = Model\Contact::createFromProbe($uid, $data['url'], false);
-
-                       if ($result['success']) {
-                               $fields['subhub'] = true;
-                       }
-               }
-
-               foreach ($updatefields AS $field) {
-                       if (!empty($data[$field])) {
-                               $fields[$field] = $data[$field];
-                       }
-               }
-
-               $fields['nurl'] = Strings::normaliseLink($data['url']);
-
-               if (!empty($data['priority'])) {
-                       $fields['priority'] = intval($data['priority']);
-               }
-
-               if (empty($fields)) {
-                       return;
-               }
-
-               DBA::update('contact', $fields, ['id' => $contact_id, 'uid' => local_user()]);
-
                // Update the entry in the contact table
-               Model\Contact::updateAvatar($data['photo'], local_user(), $contact_id, true);
+               Model\Contact::updateFromProbe($contact_id, '', true);
 
                // Update the entry in the gcontact table
-               Model\GContact::updateFromProbe($data['url']);
+               Model\GContact::updateFromProbe($contact['url']);
        }
 
        private static function blockContact($contact_id)
@@ -521,7 +483,7 @@ class Contact extends BaseModule
                                $relation_text = '';
                        }
 
-                       if (!in_array($contact['network'], [Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::OSTATUS, Protocol::DIASPORA])) {
+                       if (!in_array($contact['network'], Protocol::FEDERATED)) {
                                $relation_text = '';
                        }
 
@@ -668,19 +630,23 @@ class Contact extends BaseModule
 
                switch ($type) {
                        case 'blocked':
-                               $sql_extra = " AND `blocked` = 1";
+                               $sql_extra = " AND `blocked`";
                                break;
                        case 'hidden':
-                               $sql_extra = " AND `hidden` = 1 AND `blocked` = 0";
+                               $sql_extra = " AND `hidden` AND NOT `blocked`";
                                break;
                        case 'ignored':
-                               $sql_extra = " AND `readonly` = 1 AND `blocked` = 0";
+                               $sql_extra = " AND `readonly` AND NOT `blocked`";
                                break;
                        case 'archived':
-                               $sql_extra = " AND `archive` = 1 AND `blocked` = 0";
+                               $sql_extra = " AND `archive` AND NOT `blocked`";
+                               break;
+                       case 'pending':
+                               $sql_extra = sprintf(" AND `pending` AND NOT `archive` AND ((`rel` = %d)
+                                       OR EXISTS (SELECT `id` FROM `intro` WHERE `contact-id` = `contact`.`id` AND NOT `ignore`))", Model\Contact::SHARING);
                                break;
                        default:
-                               $sql_extra = " AND `blocked` = 0";
+                               $sql_extra = " AND NOT `archive` AND NOT `blocked` AND NOT `pending`";
                }
 
                $sql_extra .= sprintf(" AND `network` != '%s' ", Protocol::PHANTOM);
@@ -698,6 +664,14 @@ class Contact extends BaseModule
                                'id'    => 'showall-tab',
                                'accesskey' => 'l',
                        ],
+                       [
+                               'label' => L10n::t('Pending'),
+                               'url'   => 'contact/pending',
+                               'sel'   => $type == 'pending' ? 'active' : '',
+                               'title' => L10n::t('Only show pending contacts'),
+                               'id'    => 'showpending-tab',
+                               'accesskey' => 'p',
+                       ],
                        [
                                'label' => L10n::t('Blocked'),
                                'url'   => 'contact/blocked',
@@ -768,7 +742,7 @@ class Contact extends BaseModule
                $sql_extra2 = ((($sort_type > 0) && ($sort_type <= Model\Contact::FRIEND)) ? sprintf(" AND `rel` = %d ", intval($sort_type)) : '');
 
                $r = q("SELECT COUNT(*) AS `total` FROM `contact`
-                       WHERE `uid` = %d AND `self` = 0 AND `pending` = 0 $sql_extra $sql_extra2 ",
+                       WHERE `uid` = %d AND `self` = 0 $sql_extra $sql_extra2 ",
                        intval($_SESSION['uid'])
                );
                if (DBA::isResult($r)) {
@@ -780,7 +754,7 @@ class Contact extends BaseModule
 
                $contacts = [];
 
-               $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `self` = 0 AND `pending` = 0 $sql_extra $sql_extra2 $sql_extra3 ORDER BY `name` ASC LIMIT %d , %d ",
+               $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `self` = 0 $sql_extra $sql_extra2 $sql_extra3 ORDER BY `name` ASC LIMIT %d , %d ",
                        intval($_SESSION['uid']),
                        $pager->getStart(),
                        $pager->getItemsPerPage()
@@ -801,6 +775,7 @@ class Contact extends BaseModule
                }
 
                switch ($type) {
+                       case 'pending':  $header .= ' - ' . L10n::t('Pending'); break;
                        case 'blocked':  $header .= ' - ' . L10n::t('Blocked'); break;
                        case 'hidden':   $header .= ' - ' . L10n::t('Hidden'); break;
                        case 'ignored':  $header .= ' - ' . L10n::t('Ignored'); break;
@@ -968,7 +943,7 @@ class Contact extends BaseModule
 
                        $profiledata = Model\Contact::getDetailsByURL($contact['url']);
 
-                       if (local_user() && in_array($profiledata['network'], [Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::DIASPORA, Protocol::OSTATUS])) {
+                       if (local_user() && in_array($profiledata['network'], Protocol::FEDERATED)) {
                                $profiledata['remoteconnect'] = System::baseUrl() . '/follow?url=' . urlencode($profiledata['url']);
                        }
 
@@ -984,24 +959,26 @@ class Contact extends BaseModule
                $dir_icon = '';
                $alt_text = '';
 
-               switch ($rr['rel']) {
-                       case Model\Contact::FRIEND:
-                               $dir_icon = 'images/lrarrow.gif';
-                               $alt_text = L10n::t('Mutual Friendship');
-                               break;
+               if (!empty($rr['uid']) && !empty($rr['rel'])) {
+                       switch ($rr['rel']) {
+                               case Model\Contact::FRIEND:
+                                       $dir_icon = 'images/lrarrow.gif';
+                                       $alt_text = L10n::t('Mutual Friendship');
+                                       break;
 
-                       case Model\Contact::FOLLOWER;
-                               $dir_icon = 'images/larrow.gif';
-                               $alt_text = L10n::t('is a fan of yours');
-                               break;
+                               case Model\Contact::FOLLOWER;
+                                       $dir_icon = 'images/larrow.gif';
+                                       $alt_text = L10n::t('is a fan of yours');
+                                       break;
 
-                       case Model\Contact::SHARING;
-                               $dir_icon = 'images/rarrow.gif';
-                               $alt_text = L10n::t('you are a fan of');
-                               break;
+                               case Model\Contact::SHARING;
+                                       $dir_icon = 'images/rarrow.gif';
+                                       $alt_text = L10n::t('you are a fan of');
+                                       break;
 
-                       default:
-                               break;
+                               default:
+                                       break;
+                       }
                }
 
                $url = Model\Contact::magicLink($rr['url']);
@@ -1012,6 +989,14 @@ class Contact extends BaseModule
                        $sparkle = '';
                }
 
+               if ($rr['pending']) {
+                       if (in_array($rr['rel'], [Model\Contact::FRIEND, Model\Contact::SHARING])) {
+                               $alt_text = L10n::t('Pending outgoing contact request');
+                       } else {
+                               $alt_text = L10n::t('Pending incoming contact request');
+                       }
+               }
+
                if ($rr['self']) {
                        $dir_icon = 'images/larrow.gif';
                        $alt_text = L10n::t('This is you');