]> git.mxchange.org Git - friendica.git/blobdiff - include/Probe.php
Merge branch 'develop' into improvement/move-app-to-src-2
[friendica.git] / include / Probe.php
index 89145298675aa2d833d6f8c16620fc0325ff16ec..85f64d29bc2e8a4f6d64842a5dc39e819e5daa42 100644 (file)
@@ -175,6 +175,9 @@ class Probe {
                                return array();
 
                        $host = $parts["host"];
+                       if (isset($parts["port"])) {
+                               $host .= ':'.$parts["port"];
+                       }
 
                        $path_parts = explode("/", trim($parts["path"], "/"));
 
@@ -335,8 +338,10 @@ class Probe {
 
                if (isset($parts["scheme"]) AND isset($parts["host"]) AND isset($parts["path"])) {
 
-                       /// @todo: Ports?
                        $host = $parts["host"];
+                       if (isset($parts["port"])) {
+                               $host .= ':'.$parts["port"];
+                       }
 
                        if ($host == 'twitter.com') {
                                return array("network" => NETWORK_TWITTER);
@@ -789,7 +794,7 @@ class Probe {
 
                if (sizeof($avatar)) {
                        ksort($avatar);
-                       $data["photo"] = array_pop($avatar);
+                       $data["photo"] = self::fix_avatar(array_pop($avatar), $data["baseurl"]);
                }
 
                if ($dfrn) {
@@ -960,7 +965,7 @@ class Probe {
                        $data["nick"] = $feed_data["header"]["author-nick"];
                }
                if ($feed_data["header"]["author-avatar"] != "") {
-                       $data["photo"] = ostatus::fix_avatar($feed_data["header"]["author-avatar"], $data["url"]);
+                       $data["photo"] = self::fix_avatar($feed_data["header"]["author-avatar"], $data["url"]);
                }
                if ($feed_data["header"]["author-id"] != "") {
                        $data["alias"] = $feed_data["header"]["author-id"];
@@ -1219,4 +1224,41 @@ class Probe {
 
                return $data;
        }
+
+       /**
+        * @brief Mix two paths together to possibly fix missing parts
+        *
+        * @param string $avatar Path to the avatar
+        * @param string $base Another path that is hopefully complete
+        *
+        * @return string fixed avatar path
+        */
+       public static function fix_avatar($avatar, $base) {
+               $base_parts = parse_url($base);
+
+               // Remove all parts that could create a problem
+               unset($base_parts['path']);
+               unset($base_parts['query']);
+               unset($base_parts['fragment']);
+
+               $avatar_parts = parse_url($avatar);
+
+               // Now we mix them
+               $parts = array_merge($base_parts, $avatar_parts);
+
+               // And put them together again
+               $scheme   = isset($parts['scheme']) ? $parts['scheme'] . '://' : '';
+               $host     = isset($parts['host']) ? $parts['host'] : '';
+               $port     = isset($parts['port']) ? ':' . $parts['port'] : '';
+               $path     = isset($parts['path']) ? $parts['path'] : '';
+               $query    = isset($parts['query']) ? '?' . $parts['query'] : '';
+               $fragment = isset($parts['fragment']) ? '#' . $parts['fragment'] : '';
+
+               $fixed = $scheme.$host.$port.$path.$query.$fragment;
+
+               logger('Base: '.$base.' - Avatar: '.$avatar.' - Fixed: '.$fixed, LOGGER_DATA);
+
+               return $fixed;
+       }
+
 }