X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FModule%2FContact.php;h=0b27f0e4a37d1a20a3d222174778743fbd5f3897;hb=cdefa7f32a224501a14bcacbe0f0a3792631df93;hp=feae601fddf0acc9a97dcff4e9f1abe79400020a;hpb=c1f99c70b1c7d62120723f3b142e843ba25ab338;p=friendica.git diff --git a/src/Module/Contact.php b/src/Module/Contact.php index feae601fdd..0b27f0e4a3 100644 --- a/src/Module/Contact.php +++ b/src/Module/Contact.php @@ -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');