]> git.mxchange.org Git - friendica.git/commitdiff
Removed query for "updated" in gcontact
authorMichael <heluecht@pirati.ca>
Fri, 24 Apr 2020 15:18:34 +0000 (15:18 +0000)
committerMichael <heluecht@pirati.ca>
Fri, 24 Apr 2020 15:18:34 +0000 (15:18 +0000)
src/Model/Item.php
src/Model/Profile.php
src/Module/NoScrape.php

index f6d08047b2f331e3ef20f5f0fccba0893ab27720..bd8d03359ef3b19677d9ae23999c3a7b40dd4a59 100644 (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) {
index ec862947ba10116228fb8dc96998e615680d45f7..4c877a9064d78ba7fe813d634a62893ddf808cd0 100644 (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,
index a03770d0d4514e6f2a41d693e4307d62705b6e30..13a683d974868b53b9f18812de5d884df1d7840e 100644 (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'],