X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FModel%2FContact.php;h=4c173c1be3db6780b4c85883181a81efb444533d;hb=9f96f3ef347e44851a265b1d99e5bb6cf2f4514b;hp=38c87cf452439c7d5b2d600304a85bf7a8f438aa;hpb=63b1c18e448db1b55f1b069f9d02a62b586649b4;p=friendica.git diff --git a/src/Model/Contact.php b/src/Model/Contact.php index 38c87cf452..4c173c1be3 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -1296,7 +1296,7 @@ class Contact } if (empty($contact["network"]) || in_array($contact["network"], Protocol::FEDERATED)) { - $sql = "`item`.`uid` IN (0, ?)"; + $sql = "(`item`.`uid` = 0 OR (`item`.`uid` = ? AND NOT `item`.`global`))"; } else { $sql = "`item`.`uid` = ?"; } @@ -1330,8 +1330,7 @@ class Contact $pager = new Pager(DI::l10n(), DI::args()->getQueryString(), $itemsPerPage); - $params = ['order' => ['received' => true], 'group_by' => ['uri-id'], - 'limit' => [$pager->getStart(), $pager->getItemsPerPage()]]; + $params = ['order' => ['received' => true], 'limit' => [$pager->getStart(), $pager->getItemsPerPage()]]; if (DI::pConfig()->get(local_user(), 'system', 'infinite_scroll')) { $tpl = Renderer::getMarkupTemplate('infinite_scroll_head.tpl'); @@ -1723,31 +1722,38 @@ class Contact } // Search for duplicated contacts and get rid of them - if (self::removeDuplicates(Strings::normaliseLink($url), $uid) || ($uid != 0)) { + if (self::removeDuplicates(Strings::normaliseLink($url), $uid)) { return; } - // Archive or unarchive the contact. We only need to do this for the public contact. - // The archive/unarchive function will update the personal contacts by themselves. + // Archive or unarchive the contact. $contact = DBA::selectFirst('contact', [], ['id' => $id]); if (!DBA::isResult($contact)) { Logger::info('Couldn\'t select contact for archival.', ['id' => $id]); return; } - if (!empty($fields['success_update'])) { - self::unmarkForArchival($contact); - } elseif (!empty($fields['failure_update'])) { - self::markForArchival($contact); + if (isset($fields['failed'])) { + if ($fields['failed']) { + self::markForArchival($contact); + } else { + self::unmarkForArchival($contact); + } + } + + if ($contact['uid'] != 0) { + return; } - $condition = ['self' => false, 'nurl' => Strings::normaliseLink($url), 'network' => Protocol::FEDERATED]; + // Update contact data for all users + $condition = ['self' => false, 'nurl' => Strings::normaliseLink($url)]; - // These contacts are sharing with us, we don't poll them. - // This means that we don't set the update fields in "OnePoll.php". - $condition['rel'] = self::SHARING; + $condition['network'] = [Protocol::DFRN, Protocol::DIASPORA, Protocol::ACTIVITYPUB]; DBA::update('contact', $fields, $condition); + // We mustn't set the update fields for OStatus contacts since they are updated in OnePoll + $condition['network'] = Protocol::OSTATUS; + // If the contact failed, propagate the update fields to all contacts if (empty($fields['failed'])) { unset($fields['last-update']); @@ -1759,8 +1765,6 @@ class Contact return; } - // We are polling these contacts, so we mustn't set the update fields here. - $condition['rel'] = [self::FOLLOWER, self::FRIEND]; DBA::update('contact', $fields, $condition); } @@ -1958,7 +1962,7 @@ class Contact $ret['name-date'] = $updated; } - if ($uid == 0) { + if (($uid == 0) || in_array($ret['network'], [Protocol::DFRN, Protocol::DIASPORA, Protocol::ACTIVITYPUB])) { $ret['last-update'] = $updated; $ret['success_update'] = $updated; } @@ -2225,8 +2229,11 @@ class Contact self::updateAvatar($contact_id, $ret['photo']); // pull feed and consume it, which should subscribe to the hub. - - Worker::add(PRIORITY_HIGH, "OnePoll", $contact_id, "force"); + if ($contact['network'] == Protocol::OSTATUS) { + Worker::add(PRIORITY_HIGH, 'OnePoll', $contact_id, 'force'); + } else { + Worker::add(PRIORITY_HIGH, 'UpdateContact', $contact_id); + } $owner = User::getOwnerDataById($user['uid']);