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)
$relation_text = '';
}
- if (!in_array($contact['network'], [Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::OSTATUS, Protocol::DIASPORA])) {
+ if (!in_array($contact['network'], Protocol::FEDERATED)) {
$relation_text = '';
}
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);
'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',
$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)) {
$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()
}
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;
$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']);
}
$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']);
$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');