]> git.mxchange.org Git - friendica.git/commitdiff
Issue 8866: Fix fetching feed links with missing base
authorMichael <heluecht@pirati.ca>
Sun, 12 Jul 2020 12:45:34 +0000 (12:45 +0000)
committerMichael <heluecht@pirati.ca>
Sun, 12 Jul 2020 12:45:34 +0000 (12:45 +0000)
src/Protocol/Feed.php
src/Util/Network.php

index 3518298321619b7e59c163dd68348c5065c94075..c3f6a4e0b784db8a28d394cfd077aa5a58235f53 100644 (file)
@@ -337,6 +337,10 @@ class Feed
                                $item["uri"] = $item["plink"];
                        }
 
+                       // Add the base path if missing
+                       $item["uri"] = Network::addBasePath($item["uri"], $basepath);
+                       $item["plink"] = Network::addBasePath($item["plink"], $basepath);
+
                        $orig_plink = $item["plink"];
 
                        $item["plink"] = Network::finalUrl($item["plink"]);
index 6b73369d32a72dba3187741dcc0c97869aa0da8f..ddec3599073c9d33d54f9d21521e6d5c7401005a 100644 (file)
@@ -625,6 +625,26 @@ class Network
                return $url;
        }
 
+       /**
+        * Add a missing base path (scheme and host) to a given url
+        *
+        * @param string $url
+        * @param string $basepath
+        * @return string url
+        */
+       public static function addBasePath(string $url, string $basepath)
+       {
+               if (!empty(parse_url($url, PHP_URL_SCHEME)) || empty(parse_url($basepath, PHP_URL_SCHEME)) || empty($url) || empty(parse_url($url))) {
+                       return $url;
+               }
+
+               $base = ['scheme' => parse_url($basepath, PHP_URL_SCHEME),
+                       'host' => parse_url($basepath, PHP_URL_HOST)];
+
+               $parts = array_merge($base, parse_url('/' . ltrim($url, '/')));
+               return self::unparseURL($parts);
+       }
+
        /**
         * Returns the original URL of the provided URL
         *