]> git.mxchange.org Git - friendica.git/blobdiff - include/follow.php
The repair option is added to the settings
[friendica.git] / include / follow.php
index b2b6c750277fdc4ebfeeade6b3129466febcabe8..217b9d07b7b37c22de81af99793c6cd968b1146f 100644 (file)
@@ -1,7 +1,13 @@
 <?php
+require_once("include/Scrape.php");
 
 function update_contact($id) {
-       $r = q("SELECT `url`, `network` FROM `contact` WHERE `id` = %d", intval($id));
+       /*
+       Warning: Never ever fetch the public key via probe_url and write it into the contacts.
+       This will reliably kill your communication with Friendica contacts.
+       */
+
+       $r = q("SELECT `url`, `nurl`, `addr`, `alias`, `batch`, `notify`, `poll`, `poco`, `network` FROM `contact` WHERE `id` = %d", intval($id));
        if (!$r)
                return;
 
@@ -11,7 +17,21 @@ function update_contact($id) {
        if ($ret["network"] != $r[0]["network"])
                return;
 
-       q("UPDATE `contact` SET `url` = '%s', `nurl` = '%s', `addr` = '%s', `alias` = '%s', `batch` = '%s', `notify` = '%s', `poll` = '%s', `poco` = '%s', `name` = '%s', `nick` = '%s' WHERE `id` = %d",
+       $update = false;
+
+       // make sure to not overwrite existing values with blank entries
+       foreach ($ret AS $key => $val) {
+               if (isset($r[0][$key]) AND ($r[0][$key] != "") AND ($val == ""))
+                       $ret[$key] = $r[0][$key];
+
+               if (isset($r[0][$key]) AND ($ret[$key] != $r[0][$key]))
+                       $update = true;
+       }
+
+       if (!$update)
+               return;
+
+       q("UPDATE `contact` SET `url` = '%s', `nurl` = '%s', `addr` = '%s', `alias` = '%s', `batch` = '%s', `notify` = '%s', `poll` = '%s', `poco` = '%s' WHERE `id` = %d",
                dbesc($ret['url']),
                dbesc(normalise_link($ret['url'])),
                dbesc($ret['addr']),
@@ -20,8 +40,6 @@ function update_contact($id) {
                dbesc($ret['notify']),
                dbesc($ret['poll']),
                dbesc($ret['poco']),
-               dbesc($ret['name']),
-               dbesc($ret['nick']),
                intval($id)
        );
 }
@@ -152,6 +170,11 @@ function new_contact($uid,$url,$interactive = false) {
                dbesc($ret['network'])
        );
 
+       if(!count($r))
+               $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `nurl` = '%s' AND `network` = '%s' LIMIT 1",
+                       intval($uid), dbesc(normalise_link($url)), dbesc($ret['network'])
+       );
+
        if(count($r)) {
                // update contact
                if($r[0]['rel'] == CONTACT_IS_FOLLOWER || ($network === NETWORK_DIASPORA && $r[0]['rel'] == CONTACT_IS_SHARING)) {
@@ -162,7 +185,6 @@ function new_contact($uid,$url,$interactive = false) {
                                intval($uid)
                        );
                }
-
        } else {
 
 
@@ -267,7 +289,7 @@ function new_contact($uid,$url,$interactive = false) {
 
        // pull feed and consume it, which should subscribe to the hub.
 
-       proc_run('php',"include/poller.php","$contact_id");
+       proc_run('php',"include/onepoll.php","$contact_id", "force");
 
        // create a follow slap
 
@@ -278,7 +300,7 @@ function new_contact($uid,$url,$interactive = false) {
                '$photo' => $a->contact['photo'],
                '$thumb' => $a->contact['thumb'],
                '$published' => datetime_convert('UTC','UTC', 'now', ATOM_TIME),
-               '$item_id' => 'urn:X-dfrn:' . $a->get_hostname() . ':follow:' . random_string(),
+               '$item_id' => 'urn:X-dfrn:' . $a->get_hostname() . ':follow:' . get_guid(32),
                '$title' => '',
                '$type' => 'text',
                '$content' => t('following'),