diff --git a/src/Model/Item.php b/src/Model/Item.php index 30fc4ecef9..cc5449a99d 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -1084,17 +1084,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"]))); diff --git a/src/Protocol/DFRN.php b/src/Protocol/DFRN.php index fd95576dbe..6f05ff3f97 100644 --- a/src/Protocol/DFRN.php +++ b/src/Protocol/DFRN.php @@ -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); } diff --git a/src/Protocol/Diaspora.php b/src/Protocol/Diaspora.php index a23ae2adf5..307b52f785 100644 --- a/src/Protocol/Diaspora.php +++ b/src/Protocol/Diaspora.php @@ -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; }