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"])));
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)) {
logger('Delivery returned status '.$res->status.' - '.$res->message, LOGGER_DEBUG);
}
+ if ($res->status == 200) {
+ Contact::unmarkForArchival($contact);
+ }
+
return intval($res->status);
}
/**
* @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;
}