]> git.mxchange.org Git - friendica.git/commitdiff
Support for the case when the guid and public key will vanish from webfinger
authorMichael Vogel <icarus@dabo.de>
Fri, 24 Jun 2016 22:38:47 +0000 (00:38 +0200)
committerMichael Vogel <icarus@dabo.de>
Fri, 24 Jun 2016 22:38:47 +0000 (00:38 +0200)
include/Scrape.php

index a26576a69ec5257182c839e846cd59ac1238c266..d39c708f57d70c1dc8c9abbabacb5961e5850d06 100644 (file)
@@ -90,9 +90,18 @@ function scrape_dfrn($url, $dont_probe = false) {
                if(attribute_contains($item->getAttribute('class'), 'vcard')) {
                        $level2 = $item->getElementsByTagName('*');
                        foreach($level2 as $x) {
-                               if(attribute_contains($x->getAttribute('class'),'fn')) {
+                               if(attribute_contains($x->getAttribute('class'),'uid'))
+                                       $ret['guid'] = $x->textContent;
+                               if(attribute_contains($x->getAttribute('class'),'nickname'))
+                                       $ret['nickname'] = $x->textContent;
+                               if(attribute_contains($x->getAttribute('class'),'fn'))
                                        $ret['fn'] = $x->textContent;
-                               }
+                               if(attribute_contains($x->getAttribute('class'),'searchable'))
+                                       $ret['searchable'] = $x->textContent;
+                               if(attribute_contains($x->getAttribute('class'),'key'))
+                                       $ret['key'] = $x->textContent;
+                               if(attribute_contains($x->getAttribute('class'),'url'))
+                                       $ret['url'] = $x->textContent;
                                if((attribute_contains($x->getAttribute('class'),'photo'))
                                        || (attribute_contains($x->getAttribute('class'),'avatar'))) {
                                        $size = intval($x->getAttribute('width'));
@@ -102,9 +111,6 @@ function scrape_dfrn($url, $dont_probe = false) {
                                                $largest_photo = (($size == 175) ? 9999 : $size);
                                        }
                                }
-                               if(attribute_contains($x->getAttribute('class'),'key')) {
-                                       $ret['key'] = $x->textContent;
-                               }
                        }
                }
        }
@@ -585,6 +591,11 @@ function probe_url($url, $mode = PROBE_NORMAL, $level = 1) {
        // Diaspora will remove it from the webfinger somewhere in the future.
        if (($hcard != "") AND ($pubkey == "")) {
                $ret = scrape_dfrn(($hcard) ? $hcard : $dfrn, true);
+               if (isset($ret["guid"]))
+                       $diaspora_guid = $ret["guid"];
+               if (isset($ret["url"]))
+                       $diaspora_base = $ret["url"];
+
                if (isset($ret["key"])) {
                        $hcard_key = $ret["key"];
                        if(strstr($hcard_key,'RSA '))
@@ -593,8 +604,9 @@ function probe_url($url, $mode = PROBE_NORMAL, $level = 1) {
                                $pubkey = $hcard_key;
                }
        }
-       if($diaspora && $diaspora_base && $diaspora_guid) {
+       if(($network != "") && $diaspora_base && $diaspora_guid) {
                $diaspora_notify = $diaspora_base.'receive/users/'.$diaspora_guid;
+               $diaspora = true;
 
                if($mode == PROBE_DIASPORA || !$notify || ($notify == $diaspora_notify)) {
                        $notify = $diaspora_notify;