]> git.mxchange.org Git - friendica.git/blobdiff - include/diaspora.php
Merge pull request #2758 from annando/1609-sql-charset
[friendica.git] / include / diaspora.php
index 5836589110aa3f2f6718c45a65e61faf4ebcefbf..db6844f44d609476b984b673d3c591514d338571 100644 (file)
@@ -2,6 +2,10 @@
 /**
  * @file include/diaspora.php
  * @brief The implementation of the diaspora protocol
+ *
+ * The new protocol is described here: http://diaspora.github.io/diaspora_federation/index.html
+ * Currently this implementation here interprets the old and the new protocol and sends the old one.
+ * This will change in the future.
  */
 
 require_once("include/items.php");
@@ -619,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"]),
@@ -634,7 +638,7 @@ class diaspora {
                } else {
                        $r = q("INSERT INTO `fcontact` (`url`,`name`,`photo`,`request`,`nick`,`addr`, `guid`,
                                        `batch`, `notify`,`poll`,`confirm`,`network`,`alias`,`pubkey`,`updated`)
-                               VALUES ('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')",
+                               VALUES ('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')",
                                        dbesc($arr["url"]),
                                        dbesc($arr["name"]),
                                        dbesc($arr["photo"]),
@@ -673,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",
@@ -693,7 +697,7 @@ class diaspora {
                        }
                }
 
-               return $handle;
+               return strtolower($handle);
        }
 
        /**
@@ -1107,6 +1111,11 @@ class diaspora {
                $text = unxmlify($data->text);
                $author = notags(unxmlify($data->author));
 
+               if (isset($data->created_at))
+                       $created_at = datetime_convert("UTC", "UTC", notags(unxmlify($data->created_at)));
+               else
+                       $created_at = datetime_convert();
+
                $contact = self::allowed_contact_by_handle($importer, $sender, true);
                if (!$contact)
                        return false;
@@ -1153,6 +1162,8 @@ class diaspora {
                $datarray["object-type"] = ACTIVITY_OBJ_COMMENT;
                $datarray["object"] = $xml;
 
+               $datarray["changed"] = $datarray["created"] = $datarray["edited"] = $created_at;
+
                $datarray["body"] = diaspora2bb($text);
 
                self::fetch_guid($datarray);
@@ -1173,7 +1184,7 @@ class diaspora {
                        );
 
                        // notify others
-                       proc_run("php", "include/notifier.php", "comment-import", $message_id);
+                       proc_run(PRIORITY_HIGH, "include/notifier.php", "comment-import", $message_id);
                }
 
                return $message_id;
@@ -1349,7 +1360,7 @@ class diaspora {
                                intval($importer["uid"]),
                                dbesc($guid),
                                dbesc($author),
-                               dbesc(datetime_convert("UTC", "UTC", $created_at)),
+                               dbesc($created_at),
                                dbesc(datetime_convert()),
                                dbesc($subject),
                                dbesc($participants)
@@ -1508,7 +1519,7 @@ class diaspora {
                        );
 
                        // notify others
-                       proc_run("php", "include/notifier.php", "comment-import", $message_id);
+                       proc_run(PRIORITY_HIGH, "include/notifier.php", "comment-import", $message_id);
                }
 
                return $message_id;
@@ -1641,7 +1652,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)
@@ -1788,7 +1799,7 @@ class diaspora {
 
                                $i = item_store($arr);
                                if($i)
-                                       proc_run("php", "include/notifier.php", "activity", $i);
+                                       proc_run(PRIORITY_HIGH, "include/notifier.php", "activity", $i);
                        }
                }
        }
@@ -2071,7 +2082,7 @@ class diaspora {
                $guid = notags(unxmlify($data->guid));
                $author = notags(unxmlify($data->author));
                $public = notags(unxmlify($data->public));
-               $created_at = notags(unxmlify($data->created_at));
+               $created_at = datetime_convert("UTC", "UTC", notags(unxmlify($data->created_at)));
 
                $contact = self::allowed_contact_by_handle($importer, $author, false);
                if (!$contact)
@@ -2118,7 +2129,7 @@ class diaspora {
 
                $datarray["plink"] = self::plink($author, $guid);
                $datarray["private"] = (($public == "false") ? 1 : 0);
-               $datarray["changed"] = $datarray["created"] = $datarray["edited"] = datetime_convert("UTC", "UTC", $created_at);
+               $datarray["changed"] = $datarray["created"] = $datarray["edited"] = $created_at;
 
                $datarray["object-type"] = $original_item["object-type"];
 
@@ -2181,7 +2192,7 @@ class diaspora {
                // Now check if the retraction needs to be relayed by us
                if($p[0]["origin"]) {
                        // notify others
-                       proc_run("php", "include/notifier.php", "drop", $r[0]["id"]);
+                       proc_run(PRIORITY_HIGH, "include/notifier.php", "drop", $r[0]["id"]);
                }
 
                return true;
@@ -2239,12 +2250,11 @@ class diaspora {
         * @return int The message id of the newly created item
         */
        private function receive_status_message($importer, $data, $xml) {
-
                $raw_message = unxmlify($data->raw_message);
                $guid = notags(unxmlify($data->guid));
                $author = notags(unxmlify($data->author));
                $public = notags(unxmlify($data->public));
-               $created_at = notags(unxmlify($data->created_at));
+               $created_at = datetime_convert("UTC", "UTC", notags(unxmlify($data->created_at)));
                $provider_display_name = notags(unxmlify($data->provider_display_name));
 
                /// @todo enable support for polls
@@ -2312,7 +2322,7 @@ class diaspora {
 
                $datarray["plink"] = self::plink($author, $guid);
                $datarray["private"] = (($public == "false") ? 1 : 0);
-               $datarray["changed"] = $datarray["created"] = $datarray["edited"] = datetime_convert("UTC", "UTC", $created_at);
+               $datarray["changed"] = $datarray["created"] = $datarray["edited"] = $created_at;
 
                if (isset($address["address"]))
                        $datarray["location"] = $address["address"];