]> git.mxchange.org Git - friendica.git/commitdiff
Bugfix for repeated items in conversations
authorMichael Vogel <icarus@dabo.de>
Sat, 20 Jun 2015 15:26:47 +0000 (17:26 +0200)
committerMichael Vogel <icarus@dabo.de>
Sat, 20 Jun 2015 15:26:47 +0000 (17:26 +0200)
include/ostatus.php

index f6056170f27eb8db22fd0b6a93520f5c1b4b5700..80a67f201c1617d2fa8dd1a53a2c6e344f311445 100644 (file)
@@ -322,29 +322,33 @@ function ostatus_import($xml,$importer,&$contact, &$hub) {
 
                        if (is_object($activityobjects)) {
 
-                               $orig_uris = $xpath->query("activity:object/atom:link[@rel='alternate']", $activityobjects);
-                               if ($orig_uris)
-                                       foreach($orig_uris->item(0)->attributes AS $attributes)
+                               $orig_uri = $xpath->query("activity:object/atom:id", $activityobjects)->item(0)->nodeValue;
+                               if (!isset($orig_uri))
+                                       $orig_uri = $xpath->query('atom:id/text()', $activityobjects)->item(0)->nodeValue;
+
+                               $orig_links = $xpath->query("activity:object/atom:link[@rel='alternate']", $activityobjects);
+                               if ($orig_links AND ($orig_links->length > 0))
+                                       foreach($orig_links->item(0)->attributes AS $attributes)
                                                if ($attributes->name == "href")
-                                                       $orig_uri = $attributes->textContent;
+                                                       $orig_link = $attributes->textContent;
 
-                               if (!isset($orig_uri))
-                                       $orig_uri = $xpath->query("atom:link[@rel='alternate']", $activityobjects)->item(0)->nodeValue;
+                               if (!isset($orig_link))
+                                       $orig_link = $xpath->query("atom:link[@rel='alternate']", $activityobjects)->item(0)->nodeValue;
 
-                               if (!isset($orig_uri))
-                                       $orig_uri = $xpath->query("activity:object/atom:id", $activityobjects)->item(0)->nodeValue;
+                               if (!isset($orig_link))
+                                       $orig_link =  ostatus_convert_href($orig_uri);
 
-                               if (!isset($orig_uri))
-                                       $orig_uri = $xpath->query('atom:id/text()', $activityobjects)->item(0)->nodeValue;
+                               $orig_body = $xpath->query('activity:object/atom:content/text()', $activityobjects)->item(0)->nodeValue;
+                               if (!isset($orig_body))
+                                       $orig_body = $xpath->query('atom:content/text()', $activityobjects)->item(0)->nodeValue;
 
-                               $orig_body = $xpath->query('atom:content/text()', $activityobjects)->item(0)->nodeValue;
                                $orig_created = $xpath->query('atom:published/text()', $activityobjects)->item(0)->nodeValue;
 
                                $orig_contact = $contact;
                                $orig_author = ostatus_fetchauthor($xpath, $activityobjects, $importer, $orig_contact);
 
                                //if (!intval(get_config('system','wall-to-wall_share'))) {
-                               //      $prefix = share_header($orig_author['author-name'], $orig_author['author-link'], $orig_author['author-avatar'], "", $orig_created, $orig_uri);
+                               //      $prefix = share_header($orig_author['author-name'], $orig_author['author-link'], $orig_author['author-avatar'], "", $orig_created, $orig_link);
                                //      $item["body"] = $prefix.add_page_info_to_body(html2bbcode($orig_body))."[/share]";
                                //} else {
                                        $item["author-name"] = $orig_author["author-name"];
@@ -354,10 +358,14 @@ function ostatus_import($xml,$importer,&$contact, &$hub) {
                                        $item["created"] = $orig_created;
 
                                        $item["uri"] = $orig_uri;
+                                       $item["plink"] = $orig_link;
                                //}
 
                                $item["verb"] = $xpath->query('activity:verb/text()', $activityobjects)->item(0)->nodeValue;
-                               $item["object-type"] = $xpath->query('activity:object-type/text()', $activityobjects)->item(0)->nodeValue;
+
+                               $item["object-type"] = $xpath->query('activity:object/activity:object-type/text()', $activityobjects)->item(0)->nodeValue;
+                               if (!isset($item["object-type"]))
+                                       $item["object-type"] = $xpath->query('activity:object-type/text()', $activityobjects)->item(0)->nodeValue;
                        }
                }
 
@@ -397,7 +405,7 @@ function ostatus_import($xml,$importer,&$contact, &$hub) {
                        $item["app"] .= $item_id;
                        $item_id = item_store($item, true);
                        if ($item_id) {
-                               logger("Shouldn't happen. Code ".$reason." - uri ".$item["uri"], LOGGER_DEBUG);
+                               logger("Uri ".$item["uri"]." wasn't found in conversation ".$conversation, LOGGER_DEBUG);
                                ostatus_store_conversation($item_id, $conversation_url);
                        }
                }
@@ -764,18 +772,31 @@ function ostatus_completion($conversation_url, $uid, $item = array()) {
                $arr["coord"] = trim($single_conv->location->lat." ".$single_conv->location->lon);
 
                // Is it a reshared item?
-               if (isset($item->verb) AND ($item->verb == "share") AND isset($item->object)) {
-                       if (is_array($item->object))
-                               $item->object = $item->object[0];
+               if (isset($single_conv->verb) AND ($single_conv->verb == "share") AND isset($single_conv->object)) {
+                       if (is_array($single_conv->object))
+                               $single_conv->object = $single_conv->object[0];
 
                        logger("Found reshared item ".$single_conv->object->id);
 
                        // $single_conv->object->context->conversation;
 
-                       $plink = ostatus_convert_href($single_conv->object->url);
+                       if (isset($single_conv->object->object->id))
+                               $arr["uri"] = $single_conv->object->object->id;
+                       else
+                               $arr["uri"] = $single_conv->object->id;
+
+                       if (isset($single_conv->object->object->url))
+                               $plink = ostatus_convert_href($single_conv->object->object->url);
+                       else
+                               $plink = ostatus_convert_href($single_conv->object->url);
+
+                       if (isset($single_conv->object->object->content))
+                               $arr["body"] = add_page_info_to_body(html2bbcode($single_conv->object->object->content));
+                       else
+                               $arr["body"] = add_page_info_to_body(html2bbcode($single_conv->object->content));
 
-                       $arr["uri"] = $single_conv->object->id;
                        $arr["plink"] = $plink;
+
                        $arr["created"] = $single_conv->object->published;
                        $arr["edited"] = $single_conv->object->published;
 
@@ -786,7 +807,6 @@ function ostatus_completion($conversation_url, $uid, $item = array()) {
                        $arr["author-link"] = $single_conv->object->actor->url;
                        $arr["author-avatar"] = $single_conv->object->actor->image->url;
 
-                       $arr["body"] = add_page_info_to_body(html2bbcode($single_conv->object->content));
                        $arr["app"] = $single_conv->object->provider->displayName."#";
                        //$arr["verb"] = $single_conv->object->verb;