]> git.mxchange.org Git - friendica.git/commitdiff
DFRN: Contact-id is now stored depending on the author/Some more bugfixes
authorMichael Vogel <icarus@dabo.de>
Thu, 4 Feb 2016 11:51:34 +0000 (12:51 +0100)
committerMichael Vogel <icarus@dabo.de>
Thu, 4 Feb 2016 11:51:34 +0000 (12:51 +0100)
include/import-dfrn.php
include/items.php

index 0abf92feb408e50e6cf76f9c8fe2a6008cae14a9..87b2273ef4e3337ef9725311c3b3cac17f989476 100644 (file)
@@ -1,16 +1,4 @@
 <?php
-/*
-require_once("include/Contact.php");
-require_once("include/html2bbcode.php");
-require_once("include/bbcode.php");
-require_once("mod/share.php");
-require_once("include/Photo.php");
-require_once("include/Scrape.php");
-require_once("include/follow.php");
-require_once("include/api.php");
-require_once("mod/proxy.php");
-*/
-
 require_once("include/enotify.php");
 require_once("include/threads.php");
 require_once("include/socgraph.php");
@@ -196,25 +184,37 @@ class dfrn2 {
 
                        unset($fields["id"]);
                        unset($fields["uid"]);
+                       unset($fields["avatar-date"]);
+                       unset($fields["name-date"]);
+                       unset($fields["uri-date"]);
+
+                        // Update check for this field has to be done differently
+                       $datefields = array("name-date", "uri-date");
+                       foreach ($datefields AS $field)
+                               if (strtotime($contact[$field]) > strtotime($r[0][$field]))
+                                       $update = true;
 
                        foreach ($fields AS $field => $data)
-                               if ($contact[$field] != $r[0][$field])
+                               if ($contact[$field] != $r[0][$field]) {
+                                       logger("Difference for contact ".$contact["id"]." in field '".$field."'. Old value: '".$contact[$field]."', new value '".$r[0][$field]."'", LOGGER_DEBUG);
                                        $update = true;
+                               }
 
                        if ($update) {
                                logger("Update contact data for contact ".$contact["id"], LOGGER_DEBUG);
 
                                q("UPDATE `contact` SET `name` = '%s', `nick` = '%s', `about` = '%s', `location` = '%s',
-                                       `addr` = '%s', `keywords` = '%s', `bdyear` = '%s', `bd` = '%s'
-                                       `avatar-date`  = '%s', `name-date`  = '%s', `uri-date` = '%s'
+                                       `addr` = '%s', `keywords` = '%s', `bdyear` = '%s', `bd` = '%s',
+                                       `name-date`  = '%s', `uri-date` = '%s'
                                        WHERE `id` = %d AND `network` = '%s'",
                                        dbesc($contact["name"]), dbesc($contact["nick"]), dbesc($contact["about"]), dbesc($contact["location"]),
                                        dbesc($contact["addr"]), dbesc($contact["keywords"]), dbesc($contact["bdyear"]),
-                                       dbesc($contact["bd"]), dbesc($contact["avatar-date"]), dbesc($contact["name-date"]), dbesc($contact["uri-date"]),
+                                       dbesc($contact["bd"]), dbesc($contact["name-date"]), dbesc($contact["uri-date"]),
                                        intval($contact["id"]), dbesc($contact["network"]));
                        }
 
-                       update_contact_avatar($author["avatar"], $importer["uid"], $contact["id"], ($contact["avatar-date"] != $r[0]["avatar-date"]));
+                       update_contact_avatar($author["avatar"], $importer["uid"], $contact["id"],
+                                               (strtotime($contact["avatar-date"]) > strtotime($r[0]["avatar-date"])));
 
                        $contact["generation"] = 2;
                        $contact["photo"] = $author["avatar"];
@@ -301,6 +301,8 @@ class dfrn2 {
                );
 
                notification($notif_params);
+
+               logger("Mail is processed, notification was sent.");
        }
 
        private function process_suggestion($xpath, $suggestion, $importer) {
@@ -638,13 +640,6 @@ class dfrn2 {
                $item["owner-link"] = $owner["link"];
                $item["owner-avatar"] = $owner["avatar"];
 
-               // At the moment we trust the importer array
-               //if ($header["contact-id"] != $owner["contact-id"])
-               //      $item["contact-id"] = $owner["contact-id"];
-
-               if (($header["network"] != $owner["network"]) AND ($owner["network"] != ""))
-                       $item["network"] = $owner["network"];
-
                // fetch the author
                $author = self::fetchauthor($xpath, $entry, $importer, "atom:author", true);
 
@@ -652,13 +647,6 @@ class dfrn2 {
                $item["author-link"] = $author["link"];
                $item["author-avatar"] = $author["avatar"];
 
-               // At the moment we trust the importer array
-               //if ($header["contact-id"] != $author["contact-id"])
-               //      $item["contact-id"] = $author["contact-id"];
-
-               if (($header["network"] != $author["network"]) AND ($author["network"] != ""))
-                       $item["network"] = $author["network"];
-
                $item["title"] = $xpath->query("atom:title/text()", $entry)->item(0)->nodeValue;
 
                $item["created"] = $xpath->query("atom:published/text()", $entry)->item(0)->nodeValue;
@@ -779,16 +767,31 @@ class dfrn2 {
                $entrytype = self::get_entry_type($importer, $item);
 
                // Now assign the rest of the values that depend on the type of the message
-               if ($entrytype == DFRN_REPLY_RC) {
+               if (in_array($entrytype, array(DFRN_REPLY, DFRN_REPLY_RC))) {
                        if (!isset($item["object-type"]))
                                $item["object-type"] = ACTIVITY_OBJ_COMMENT;
 
+                       if ($item["contact-id"] != $owner["contact-id"])
+                               $item["contact-id"] = $owner["contact-id"];
+
+                       if (($item["network"] != $owner["network"]) AND ($owner["network"] != ""))
+                               $item["network"] = $owner["network"];
+
+                       if ($item["contact-id"] != $author["contact-id"])
+                               $item["contact-id"] = $author["contact-id"];
+
+                       if (($item["network"] != $author["network"]) AND ($author["network"] != ""))
+                               $item["network"] = $author["network"];
+               }
+
+               if ($entrytype == DFRN_REPLY_RC) {
                        $item["type"] = "remote-comment";
                        $item["wall"] = 1;
-               } elseif ($entrytype == DFRN_REPLY) {
-                       if (!isset($item["object-type"]))
-                               $item["object-type"] = ACTIVITY_OBJ_COMMENT;
                } else {
+                       // The Diaspora signature is only stored in replies
+                       // Since this isn't a field in the item table this would create a bug when inserting this in the item table
+                       unset($item["dsprsig"]);
+
                        if (!isset($item["object-type"]))
                                $item["object-type"] = ACTIVITY_OBJ_NOTE;
 
@@ -892,7 +895,7 @@ class dfrn2 {
 
                        if($posted_id) {
 
-                               logger("Reply was stored with id ".$posted_id, LOGGER_DEBUG);
+                               logger("Reply from contact ".$item["contact-id"]." was stored with id ".$posted_id, LOGGER_DEBUG);
 
                                $item["id"] = $posted_id;
 
index f1291d6490616bc858577e58d6a90d3c93ad237d..0ec645cc7a5be76af794e87a37f6939c332739dd 100644 (file)
@@ -17,7 +17,7 @@ require_once('include/feed.php');
 require_once('include/Contact.php');
 require_once('mod/share.php');
 require_once('include/enotify.php');
-//require_once('include/import-dfrn.php');
+require_once('include/import-dfrn.php');
 
 require_once('library/defuse/php-encryption-1.2.1/Crypto.php');
 
@@ -2424,7 +2424,7 @@ function item_is_remote_self($contact, &$datarray) {
 
 function local_delivery($importer,$data) {
        // dfrn-Test
-       //return dfrn2::import($data, $importer);
+       return dfrn2::import($data, $importer);
 
        require_once('library/simplepie/simplepie.inc');