]> git.mxchange.org Git - friendica.git/commitdiff
OStatus now has "location" and "about", probing for urls added
authorMichael Vogel <icarus@dabo.de>
Fri, 8 Jul 2016 20:31:11 +0000 (22:31 +0200)
committerMichael Vogel <icarus@dabo.de>
Fri, 8 Jul 2016 20:31:11 +0000 (22:31 +0200)
include/Probe.php
include/feed.php

index 0ce388dd7b45c86e9e9ad7ddae547cc0e3a25b82..8a606ecaef5f43309b752acc1a4e965de7ffe728 100644 (file)
@@ -232,7 +232,6 @@ class Probe {
                        $nick = array_pop($path_parts);
                        $addr = $nick."@".$host;
                }
-
                $webfinger = false;
 
                /// @todo Do we need the prefix "acct:" or "acct://"?
@@ -244,9 +243,22 @@ class Probe {
                        if (!in_array($key, array("lrdd", "lrdd-xml", "lrdd-json")))
                                continue;
 
+                       // Try webfinger with the address (user@domain.tld)
                        $path = str_replace('{uri}', urlencode($addr), $link);
-
                        $webfinger = self::webfinger($path);
+
+                       // If webfinger wasn't successful then try it with the URL - possibly in the format https://...
+                       if (!$webfinger AND ($uri != $addr)) {
+                               $path = str_replace('{uri}', urlencode($uri), $link);
+                               $webfinger = self::webfinger($path);
+
+                               // Since the detection with the address wasn't successful, we delete it.
+                               if ($webfinger) {
+                                       $nick = "";
+                                       $addr = "";
+                               }
+                       }
+
                }
                if (!$webfinger)
                        return self::feed($uri);
@@ -268,10 +280,10 @@ class Probe {
                else {
                        // We overwrite the detected nick with our try if the previois routines hadn't detected it.
                        // Additionally it is overwritten when the nickname doesn't make sense (contains spaces).
-                       if (!isset($result["nick"]) OR ($result["nick"] == "") OR (strstr($result["nick"], " ")))
+                       if ((!isset($result["nick"]) OR ($result["nick"] == "") OR (strstr($result["nick"], " "))) AND ($nick != ""))
                                $result["nick"] = $nick;
 
-                       if (!isset($result["addr"]) OR ($result["addr"] == ""))
+                       if ((!isset($result["addr"]) OR ($result["addr"] == "")) AND ($addr != ""))
                                $result["addr"] = $addr;
                }
 
@@ -680,8 +692,13 @@ class Probe {
         */
        private function ostatus($webfinger) {
 
-               $pubkey = "";
                $data = array();
+               if (is_array($webfinger["aliases"]))
+                       foreach($webfinger["aliases"] AS $alias)
+                               if (strstr($alias, "@"))
+                                       $data["addr"] = str_replace('acct:', '', $alias);
+
+               $pubkey = "";
                foreach ($webfinger["links"] AS $link) {
                        if (($link["rel"] == "http://webfinger.net/rel/profile-page") AND
                                ($link["type"] == "text/html") AND ($link["href"] != ""))
@@ -736,6 +753,12 @@ class Probe {
                if ($feed_data["header"]["author-id"] != "")
                        $data["alias"] = $feed_data["header"]["author-id"];
 
+               if ($feed_data["header"]["author-location"] != "")
+                       $data["location"] = $feed_data["header"]["author-location"];
+
+               if ($feed_data["header"]["author-about"] != "")
+                       $data["about"] = $feed_data["header"]["author-about"];
+
                // OStatus has serious issues when the the url doesn't fit (ssl vs. non ssl)
                // So we take the value that we just fetched, although the other one worked as well
                if ($feed_data["header"]["author-link"] != "")
@@ -788,25 +811,24 @@ class Probe {
         * @return array pump.io data
         */
        private function pumpio($webfinger) {
+
                $data = array();
                foreach ($webfinger["links"] AS $link) {
                        if (($link["rel"] == "http://webfinger.net/rel/profile-page") AND
                                ($link["type"] == "text/html") AND ($link["href"] != ""))
                                $data["url"] = $link["href"];
                        elseif (($link["rel"] == "activity-inbox") AND ($link["href"] != ""))
-                               $data["activity-inbox"] = $link["href"];
+                               $data["notify"] = $link["href"];
                        elseif (($link["rel"] == "activity-outbox") AND ($link["href"] != ""))
-                               $data["activity-outbox"] = $link["href"];
+                               $data["poll"] = $link["href"];
                        elseif (($link["rel"] == "dialback") AND ($link["href"] != ""))
                                $data["dialback"] = $link["href"];
                }
-               if (isset($data["activity-inbox"]) AND isset($data["activity-outbox"]) AND
+               if (isset($data["poll"]) AND isset($data["notify"]) AND
                        isset($data["dialback"]) AND isset($data["url"])) {
 
                        // by now we use these fields only for the network type detection
                        // So we unset all data that isn't used at the moment
-                       unset($data["activity-inbox"]);
-                       unset($data["activity-outbox"]);
                        unset($data["dialback"]);
 
                        $data["network"] = NETWORK_PUMPIO;
index 992d10e22747380ae44b75852e0d7813a61ae7da..5adb2294db0248e92b4b9ac3e81a9288c3866f11 100644 (file)
@@ -59,8 +59,6 @@ function feed_import($xml,$importer,&$contact, &$hub, $simulate = false) {
                                if ($attributes->name == "href")
                                        $author["author-link"] = $attributes->textContent;
 
-               $author["author-id"] = $xpath->evaluate('/atom:feed/atom:author/atom:uri/text()')->item(0)->nodeValue;
-
                if ($author["author-link"] == "")
                        $author["author-link"] = $author["author-id"];
 
@@ -89,9 +87,22 @@ function feed_import($xml,$importer,&$contact, &$hub, $simulate = false) {
                if ($value != "")
                        $author["author-name"] = $value;
 
-               $value = $xpath->evaluate('atom:author/poco:preferredUsername/text()')->item(0)->nodeValue;
-               if ($value != "")
-                       $author["author-nick"] = $value;
+               if ($simulate) {
+                       $author["author-id"] = $xpath->evaluate('/atom:feed/atom:author/atom:uri/text()')->item(0)->nodeValue;
+
+                       $value = $xpath->evaluate('atom:author/poco:preferredUsername/text()')->item(0)->nodeValue;
+                       if ($value != "")
+                               $author["author-nick"] = $value;
+
+                       $value = $xpath->evaluate('atom:author/poco:address/poco:formatted/text()', $context)->item(0)->nodeValue;
+                       if ($value != "")
+                               $author["author-location"] = $value;
+
+                       $value = $xpath->evaluate('atom:author/poco:note/text()')->item(0)->nodeValue;
+                       if ($value != "")
+                               $author["author-about"] = $value;
+
+               }
 
                $author["edited"] = $author["created"] = $xpath->query('/atom:feed/atom:updated/text()')->item(0)->nodeValue;
 
@@ -131,10 +142,6 @@ function feed_import($xml,$importer,&$contact, &$hub, $simulate = false) {
                $author["owner-link"] = $contact["url"];
                $author["owner-name"] = $contact["name"];
                $author["owner-avatar"] = $contact["thumb"];
-
-               // This is no field in the item table. So we have to unset it.
-               unset($author["author-nick"]);
-               unset($author["author-id"]);
        }
 
        $header = array();