]> git.mxchange.org Git - friendica.git/blobdiff - include/ostatus.php
Merge pull request #2554 from annando/1606-mention-class
[friendica.git] / include / ostatus.php
index 4775e2ccb9f083e02554e2cb9dff05cae7a384c4..7ac26846d246ab575259e89e5c6fa9a8fde632e7 100644 (file)
@@ -90,13 +90,20 @@ class ostatus {
 
                // Only update the contacts if it is an OStatus contact
                if ($r AND !$onlyfetch AND ($contact["network"] == NETWORK_OSTATUS)) {
+
                        // Update contact data
 
-                       $value = $xpath->query("atom:link[@rel='salmon']", $context)->item(0)->nodeValue;
-                       if ($value != "")
-                               $contact["notify"] = $value;
+                       // This query doesn't seem to work
+                       // $value = $xpath->query("atom:link[@rel='salmon']", $context)->item(0)->nodeValue;
+                       // if ($value != "")
+                       //      $contact["notify"] = $value;
+
+                       // This query doesn't seem to work as well - I hate these queries
+                       // $value = $xpath->query("atom:link[@rel='self' and @type='application/atom+xml']", $context)->item(0)->nodeValue;
+                       // if ($value != "")
+                       //      $contact["poll"] = $value;
 
-                       $value = $xpath->evaluate('atom:author/uri/text()', $context)->item(0)->nodeValue;
+                       $value = $xpath->evaluate('atom:author/atom:uri/text()', $context)->item(0)->nodeValue;
                        if ($value != "")
                                $contact["alias"] = $value;
 
@@ -136,7 +143,25 @@ class ostatus {
                                update_contact_avatar($author["author-avatar"], $importer["uid"], $contact["id"]);
                        }
 
+                       // Ensure that we are having this contact (with uid=0)
+                       $cid = get_contact($author["author-link"], 0);
+
+                       if ($cid) {
+                               // Update it with the current values
+                               q("UPDATE `contact` SET `url` = '%s', `name` = '%s', `nick` = '%s', `alias` = '%s',
+                                               `about` = '%s', `location` = '%s',
+                                               `success_update` = '%s', `last-update` = '%s'
+                                       WHERE `id` = %d",
+                                       dbesc($author["author-link"]), dbesc($contact["name"]), dbesc($contact["nick"]),
+                                       dbesc($contact["alias"]), dbesc($contact["about"]), dbesc($contact["location"]),
+                                       dbesc(datetime_convert()), dbesc(datetime_convert()), intval($cid));
+
+                               // Update the avatar
+                               update_contact_avatar($author["author-avatar"], 0, $cid);
+                       }
+
                        $contact["generation"] = 2;
+                       $contact["hide"] = false; // OStatus contacts are never hidden
                        $contact["photo"] = $author["author-avatar"];
                        update_gcontact($contact);
                }
@@ -468,6 +493,7 @@ class ostatus {
                                                $orig_body = $xpath->query('atom:content/text()', $activityobjects)->item(0)->nodeValue;
 
                                        $orig_created = $xpath->query('atom:published/text()', $activityobjects)->item(0)->nodeValue;
+                                       $orig_edited = $xpath->query('atom:updated/text()', $activityobjects)->item(0)->nodeValue;
 
                                        $orig_contact = $contact;
                                        $orig_author = self::fetchauthor($xpath, $activityobjects, $importer, $orig_contact, false);
@@ -477,6 +503,7 @@ class ostatus {
                                        $item["author-avatar"] = $orig_author["author-avatar"];
                                        $item["body"] = add_page_info_to_body(html2bbcode($orig_body));
                                        $item["created"] = $orig_created;
+                                       $item["edited"] = $orig_edited;
 
                                        $item["uri"] = $orig_uri;
                                        $item["plink"] = $orig_link;
@@ -667,6 +694,7 @@ class ostatus {
                                }
                        }
 
+               $contact["hide"] = false; // OStatus contacts are never hidden
                update_gcontact($contact);
        }
 
@@ -1586,8 +1614,10 @@ class ostatus {
 
                if (!isset($contact["poll"])) {
                        $data = probe_url($url);
-                       $contact["alias"] = $data["alias"];
                        $contact["poll"] = $data["poll"];
+
+                       if (!$contact["alias"])
+                               $contact["alias"] = $data["alias"];
                }
 
                if (!isset($contact["alias"]))
@@ -1686,7 +1716,8 @@ class ostatus {
 
                $as_object = $doc->createElement("activity:object");
 
-               $parent = q("SELECT * FROM `item` WHERE `id` = %d", intval($item["parent"]));
+               $parent = q("SELECT * FROM `item` WHERE `uri` = '%s' AND `uid` = %d",
+                       dbesc($item["thr-parent"]), intval($item["uid"]));
                $parent_item = (($item['thr-parent']) ? $item['thr-parent'] : $item['parent-uri']);
 
                xml::add_element($doc, $as_object, "activity:object-type", self::construct_objecttype($parent[0]));