]> git.mxchange.org Git - friendica.git/commitdiff
Bugfix: Revive dead contacts
authorMichael <heluecht@pirati.ca>
Sun, 15 Oct 2017 19:34:15 +0000 (19:34 +0000)
committerMichael <heluecht@pirati.ca>
Sun, 15 Oct 2017 19:34:15 +0000 (19:34 +0000)
include/Contact.php
include/follow.php
include/ostatus.php
mod/contacts.php
mod/ostatus_subscribe.php

index 8b575bf122bfba5f8c8cc887e01eeeca65600823..88f588e2f6e4271b898e5111d34d30763953baab 100644 (file)
@@ -155,7 +155,7 @@ function mark_for_death($contact) {
 
 function unmark_for_death($contact) {
 
-       $r = q("SELECT `term-date` FROM `contact` WHERE `id` = %d AND `term-date` > '%s'",
+       $r = q("SELECT `term-date` FROM `contact` WHERE `id` = %d AND (`term-date` > '%s' OR `archive`)",
                intval($contact['id']),
                dbesc('1000-00-00 00:00:00')
        );
@@ -166,16 +166,11 @@ function unmark_for_death($contact) {
        }
 
        // It's a miracle. Our dead contact has inexplicably come back to life.
-       q("UPDATE `contact` SET `term-date` = '%s' WHERE `id` = %d",
-               dbesc(NULL_DATE),
-               intval($contact['id'])
-       );
+       $fields = array('term-date' => NULL_DATE, 'archive' => false);
+       dba::update('contact', $fields, array('id' => $contact['id']));
 
        if ($contact['url'] != '') {
-               q("UPDATE `contact` SET `term-date` = '%s' WHERE `nurl` = '%s'",
-                       dbesc(NULL_DATE),
-                       dbesc(normalise_link($contact['url']))
-               );
+               dba::update('contact', $fields, array('nurl' => normalise_link($contact['url'])));
        }
 }
 
index cac713b12f93def8d69703b58305e54cf23ce721..c5214fe4612ae22bb24e16338e8726af035c5aa2 100644 (file)
@@ -2,6 +2,7 @@
 
 use Friendica\App;
 use Friendica\Core\System;
+use Friendica\Network\Probe;
 
 require_once 'include/probe.php';
 require_once 'include/socgraph.php';
@@ -71,7 +72,7 @@ function update_contact($id) {
 
 
 
-function new_contact($uid,$url,$interactive = false) {
+function new_contact($uid, $url, $interactive = false, $network = '') {
 
        $result = array('cid' => -1, 'success' => false,'message' => '');
 
@@ -102,9 +103,13 @@ function new_contact($uid,$url,$interactive = false) {
 
        if (x($arr['contact'],'name')) {
                $ret = $arr['contact'];
+       } else {
+               $ret = Probe::uri($url, $network, $uid, false);
        }
-       else {
-               $ret = probe_url($url);
+
+       if (($network != '') && ($ret['network'] != $network)) {
+               logger('Expected network '.$network.' does not match actual network '.$ret['network']);
+               return result;
        }
 
        if ($ret['network'] === NETWORK_DFRN) {
index 0e2caa2156d8dc6f32db15dcb2a529630e966afa..78916173e040a99167c8064ef3262ba3a886c75c 100644 (file)
@@ -149,6 +149,9 @@ class ostatus {
                // Only update the contacts if it is an OStatus contact
                if ($r && ($r['id'] > 0) && !$onlyfetch && ($contact["network"] == NETWORK_OSTATUS)) {
 
+                       // This contact is vital, so we awake it from the dead
+                       unmark_for_death($contact);
+
                        // Update contact data
 
                        $current = $contact;
index eae4141bc9fe1b2294430e3211efa3060ca9f114..a129a665d131d67f2e55ab020218e01d2d22e1ef 100644 (file)
@@ -244,7 +244,7 @@ function _contact_update($contact_id) {
                return;
 
        if ($r[0]["network"] == NETWORK_OSTATUS) {
-               $result = new_contact($uid, $r[0]["url"], false);
+               $result = new_contact($uid, $r[0]["url"], false, $r[0]["network"]);
 
                if ($result['success'])
                        $r = q("UPDATE `contact` SET `subhub` = 1 WHERE `id` = %d",
index 3250bdc2a2d7cea10df77dc403afd92a0f6ade67..f835f0ed20b38fc17fca23a18c375841c1a868ab 100644 (file)
@@ -66,7 +66,7 @@ function ostatus_subscribe_content(App $a) {
 
        $data = probe_url($url);
        if ($data["network"] == NETWORK_OSTATUS) {
-               $result = new_contact($uid,$url,true);
+               $result = new_contact($uid, $url, true, NETWORK_OSTATUS);
                if ($result["success"]) {
                        $o .= " - ".t("success");
                } else {