X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=include%2FProbe.php;h=85f64d29bc2e8a4f6d64842a5dc39e819e5daa42;hb=86cae070f2a048e553c545caec54be72c1c14da5;hp=89145298675aa2d833d6f8c16620fc0325ff16ec;hpb=87b513dd0323a3345a6f2e86a49bbca316c9b3bb;p=friendica.git diff --git a/include/Probe.php b/include/Probe.php index 8914529867..85f64d29bc 100644 --- a/include/Probe.php +++ b/include/Probe.php @@ -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; + } + }