]> git.mxchange.org Git - friendica.git/commitdiff
Bugfix and improvements for unmarking potentially archived contacts
authorMichael <heluecht@pirati.ca>
Wed, 14 Feb 2018 21:18:16 +0000 (21:18 +0000)
committerMichael <heluecht@pirati.ca>
Wed, 14 Feb 2018 21:18:16 +0000 (21:18 +0000)
src/Model/Item.php
src/Protocol/DFRN.php
src/Protocol/Diaspora.php

index fae3394bc32457944df984e2aa512a7dd5c7e95f..6f471ba4e981c02cf0c4ba5d8b63e3a509283a55 100644 (file)
@@ -1080,17 +1080,15 @@ class Item extends BaseObject
        private static function updateContact($arr)
        {
                // Unarchive the author
-               $contact = dba::selectFirst('contact', [], ['id' => $arr["author-link"]]);
-               if ($contact['term-date'] > NULL_DATE) {
-                        Contact::unmarkForArchival($contact);
+               $contact = dba::selectFirst('contact', [], ['id' => $arr["author-id"]]);
+               if (DBM::is_result($contact)) {
+                       Contact::unmarkForArchival($contact);
                }
 
-               // Unarchive the contact if it is a toplevel posting
-               if ($arr["parent-uri"] === $arr["uri"]) {
-                       $contact = dba::selectFirst('contact', [], ['id' => $arr["contact-id"]]);
-                       if ($contact['term-date'] > NULL_DATE) {
-                                Contact::unmarkForArchival($contact);
-                       }
+               // Unarchive the contact if it's not our own contact
+               $contact = dba::selectFirst('contact', [], ['id' => $arr["contact-id"], 'self' => false]);
+               if (DBM::is_result($contact)) {
+                       Contact::unmarkForArchival($contact);
                }
 
                $update = (!$arr['private'] && (($arr["author-link"] === $arr["owner-link"]) || ($arr["parent-uri"] === $arr["uri"])));
index fd95576dbe34ea4435ff2a6a99e2bc93c2887d9f..6f05ff3f97a4ae620e2d96a9fcaa291a39e8a77b 100644 (file)
@@ -1353,11 +1353,6 @@ class DFRN
                        return 3;
                }
 
-               if ($contact['term-date'] > NULL_DATE) {
-                       logger("dfrn_deliver: $url back from the dead - removing mark for death");
-                       Contact::unmarkForArchival($contact);
-               }
-
                $res = XML::parseString($xml);
 
                if (!isset($res->status)) {
@@ -1368,6 +1363,10 @@ class DFRN
                        logger('Delivery returned status '.$res->status.' - '.$res->message, LOGGER_DEBUG);
                }
 
+               if ($res->status == 200) {
+                       Contact::unmarkForArchival($contact);
+               }
+
                return intval($res->status);
        }
 
index a23ae2adf5531b3d9dce477d118dccc6c2f0f001..307b52f785f5e8e14786042073875b1205859815 100644 (file)
@@ -1376,26 +1376,23 @@ class Diaspora
        /**
         * @brief returns contact details
         *
-        * @param array $contact The default contact if the person isn't found
-        * @param array $person  The record of the person
-        * @param int   $uid     The user id
+        * @param array $def_contact The default contact if the person isn't found
+        * @param array $person      The record of the person
+        * @param int   $uid         The user id
         *
         * @return array
         *      'cid' => contact id
         *      'network' => network type
         */
-       private static function authorContactByUrl($contact, $person, $uid)
+       private static function authorContactByUrl($def_contact, $person, $uid)
        {
-               $r = q(
-                       "SELECT `id`, `network`, `url` FROM `contact` WHERE `nurl` = '%s' AND `uid` = %d LIMIT 1",
-                       dbesc(normalise_link($person["url"])),
-                       intval($uid)
-               );
-               if ($r) {
-                       $cid = $r[0]["id"];
-                       $network = $r[0]["network"];
-               } else {
+               $condition = ['nurl' => normalise_link($person["url"]), 'uid' => $uid];
+               $contact = dba::selectFirst('contact', ['id', 'network'], $condition);
+               if (DBM::is_result($contact)) {
                        $cid = $contact["id"];
+                       $network = $contact["network"];
+               } else {
+                       $cid = $def_contact["id"];
                        $network = NETWORK_DIASPORA;
                }