Removed query for "updated" in gcontact

This commit is contained in:
Michael 2020-04-24 15:18:34 +00:00
parent 6011598bc2
commit cf0d36737f
3 changed files with 20 additions and 26 deletions

View file

@ -2563,7 +2563,8 @@ class Item
Contact::unmarkForArchival($contact);
}
$update = (($arr['private'] != self::PRIVATE) && ((($arr['author-link'] ?? '') === ($arr['owner-link'] ?? '')) || ($arr["parent-uri"] === $arr["uri"])));
/// @todo On private posts we could obfuscate the date
$update = ($arr['private'] != self::PRIVATE);
// Is it a forum? Then we don't care about the rules from above
if (!$update && in_array($arr["network"], [Protocol::ACTIVITYPUB, Protocol::DFRN]) && ($arr["parent-uri"] === $arr["uri"])) {
@ -2573,8 +2574,15 @@ class Item
}
if ($update) {
DBA::update('contact', ['success_update' => $arr['received'], 'last-item' => $arr['received']],
['id' => $arr['contact-id']]);
// The "self" contact id is used (for example in the connectors) when the contact is unknown
// So we have to ensure to only update the last item when it had been our own post,
// or it had been done by a "regular" contact.
if (!empty($arr['wall'])) {
$condition = ['id' => $arr['contact-id']];
} else {
$condition = ['id' => $arr['contact-id'], 'self' => false];
}
DBA::update('contact', ['success_update' => $arr['received'], 'last-item' => $arr['received']], $condition);
}
// Now do the same for the system wide contacts with uid=0
if ($arr['private'] != self::PRIVATE) {

View file

@ -398,18 +398,15 @@ class Profile
$contact_block = '';
$updated = '';
$contact_count = 0;
if (!empty($profile['last-item'])) {
$updated = date('c', strtotime($profile['last-item']));
}
if (!$block) {
$contact_block = ContactBlock::getHTML($a->profile);
if (is_array($a->profile) && !$a->profile['hide-friends']) {
$r = q(
"SELECT `gcontact`.`updated` FROM `contact` INNER JOIN `gcontact` WHERE `gcontact`.`nurl` = `contact`.`nurl` AND `self` AND `uid` = %d LIMIT 1",
intval($a->profile['uid'])
);
if (DBA::isResult($r)) {
$updated = date('c', strtotime($r[0]['updated']));
}
$contact_count = DBA::count('contact', [
'uid' => $profile['uid'],
'self' => false,

View file

@ -85,22 +85,11 @@ class NoScrape extends BaseModule
$json_info['tags'] = $keywords;
$json_info['language'] = $a->profile['language'];
if (!($a->profile['hide-friends'] ?? false)) {
$stmt = DBA::p(
"SELECT `gcontact`.`updated`
FROM `contact`
INNER JOIN `gcontact`
WHERE `gcontact`.`nurl` = `contact`.`nurl`
AND `self`
AND `uid` = ?
LIMIT 1",
intval($a->profile['uid'])
);
if ($gcontact = DBA::fetch($stmt)) {
$json_info["updated"] = date("c", strtotime($gcontact['updated']));
}
DBA::close($stmt);
if (!empty($a->profile['last-item'])) {
$json_info['updated'] = date("c", strtotime($a->profile['last-item']));
}
if (!($a->profile['hide-friends'] ?? false)) {
$json_info['contacts'] = DBA::count('contact',
[
'uid' => $a->profile['uid'],