]> git.mxchange.org Git - friendica.git/blobdiff - include/diaspora.php
Merge branch 'rewrites/dbm_is_result' of github.com:Quix0r/friendica into rewrites...
[friendica.git] / include / diaspora.php
index a1adb9b82878de4a519876c10b446dafea3efc11..453cc5cef8ba79517e5babdf264491bc0eba6be9 100644 (file)
@@ -623,7 +623,7 @@ class diaspora {
                                        dbesc($arr["photo"]),
                                        dbesc($arr["request"]),
                                        dbesc($arr["nick"]),
-                                       dbesc($arr["addr"]),
+                                       dbesc(strtolower($arr["addr"])),
                                        dbesc($arr["guid"]),
                                        dbesc($arr["batch"]),
                                        dbesc($arr["notify"]),
@@ -677,7 +677,7 @@ class diaspora {
                        $r = q("SELECT `addr` FROM `gcontact` WHERE `id` = %d AND `addr` != ''",
                                intval($gcontact_id));
                        if ($r)
-                               return $r[0]["addr"];
+                               return strtolower($r[0]["addr"]);
                }
 
                $r = q("SELECT `network`, `addr`, `self`, `url`, `nick` FROM `contact` WHERE `id` = %d",
@@ -697,7 +697,7 @@ class diaspora {
                        }
                }
 
-               return $handle;
+               return strtolower($handle);
        }
 
        /**
@@ -999,17 +999,21 @@ class diaspora {
         */
        private function author_contact_by_url($contact, $person, $uid) {
 
-               $r = q("SELECT `id`, `network` FROM `contact` WHERE `nurl` = '%s' AND `uid` = %d LIMIT 1",
+               $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"];
+
+                       // We are receiving content from a user that is about to be terminated
+                       // This means the user is vital, so we remove a possible termination date.
+                       unmark_for_death($contact);
                } else {
                        $cid = $contact["id"];
                        $network = NETWORK_DIASPORA;
                }
 
-               return (array("cid" => $cid, "network" => $network));
+               return array("cid" => $cid, "network" => $network);
        }
 
        /**
@@ -1274,7 +1278,7 @@ class diaspora {
                $r = q("SELECT `id` FROM `mail` WHERE `uri` = '%s' LIMIT 1",
                        dbesc($message_uri)
                );
-               if($r) {
+               if(dbm::is_result($r)) {
                        logger("duplicate message already delivered.", LOGGER_DEBUG);
                        return false;
                }
@@ -1652,7 +1656,7 @@ class diaspora {
         * @return bool Success
         */
        private function receive_profile($importer, $data) {
-               $author = notags(unxmlify($data->author));
+               $author = strtolower(notags(unxmlify($data->author)));
 
                $contact = self::contact_by_handle($importer["uid"], $author);
                if (!$contact)
@@ -2633,7 +2637,13 @@ class diaspora {
                        } else {
                                // queue message for redelivery
                                add_to_queue($contact["id"], NETWORK_DIASPORA, $slap, $public_batch);
+
+                               // The message could not be delivered. We mark the contact as "dead"
+                               mark_for_death($contact);
                        }
+               } elseif (($return_code >= 200) AND ($return_code <= 299)) {
+                       // We successfully delivered a message, the contact is alive
+                       unmark_for_death($contact);
                }
 
                return(($return_code) ? $return_code : (-1));
@@ -2876,8 +2886,10 @@ class diaspora {
                                        "created_at" => $created,
                                        "provider_display_name" => $item["app"]);
 
-                       if (count($location) == 0)
+                       // Diaspora rejects messages when they contain a location without "lat" or "lng"
+                       if (!isset($location["lat"]) OR !isset($location["lng"])) {
                                unset($message["location"]);
+                       }
 
                        $type = "status_message";
                }
@@ -2913,7 +2925,7 @@ class diaspora {
 
                $p = q("SELECT `guid`, `uri`, `parent-uri` FROM `item` WHERE `uri` = '%s' LIMIT 1",
                        dbesc($item["thr-parent"]));
-               if(!$p)
+               if(!dbm::is_result($p))
                        return false;
 
                $parent = $p[0];
@@ -2944,7 +2956,7 @@ class diaspora {
                        intval($item["parent"])
                );
 
-               if (!$p)
+               if (!dbm::is_result($p))
                        return false;
 
                $parent = $p[0];
@@ -3158,7 +3170,7 @@ class diaspora {
                        intval($item["uid"])
                );
 
-               if (!$r) {
+               if (!dbm::is_result($r)) {
                        logger("conversation not found.");
                        return;
                }