]> git.mxchange.org Git - friendica-addons.git/commitdiff
Bluesky: fix problems with links and hashtags
authorMichael <heluecht@pirati.ca>
Fri, 1 Mar 2024 05:53:42 +0000 (05:53 +0000)
committerMichael <heluecht@pirati.ca>
Fri, 1 Mar 2024 05:53:42 +0000 (05:53 +0000)
bluesky/bluesky.php

index 5e3de1a00e93f0946bfcf340b0431ac669829532..db60d1a4d96ad0c98696da34cffd91f46ef79a3b 100644 (file)
@@ -764,7 +764,7 @@ function bluesky_get_urls(string $body): array
        if (preg_match_all("/#\[url\=(https?:.*?)\](.*?)\[\/url\]/ism", $body, $matches, PREG_SET_ORDER)) {
                foreach ($matches as $match) {
                        $text = '#' . $match[2];
-                       $urls[] = ['tag' => $match[2], 'text' => $text, 'hash' => $text];
+                       $urls[strpos($body, $match[0])] = ['tag' => $match[2], 'text' => $text, 'hash' => $text];
                        $body = str_replace($match[0], $text, $body);
                }
        }
@@ -774,7 +774,7 @@ function bluesky_get_urls(string $body): array
                foreach ($matches as $match) {
                        $text = Strings::getStyledURL($match[1]);
                        $hash = bluesky_get_hash_for_url($match[0], mb_strlen($text));
-                       $urls[] = ['url' => $match[1], 'text' => $text, 'hash' => $hash];
+                       $urls[strpos($body, $match[0])] = ['url' => $match[1], 'text' => $text, 'hash' => $hash];
                        $body = str_replace($match[0], $hash, $body);
                }
        }
@@ -789,17 +789,19 @@ function bluesky_get_urls(string $body): array
                        }
                        if (mb_strlen($text) < 100) {
                                $hash = bluesky_get_hash_for_url($match[0], mb_strlen($text));
-                               $urls[] = ['url' => $match[1], 'text' => $text, 'hash' => $hash];
+                               $urls[strpos($body, $match[0])] = ['url' => $match[1], 'text' => $text, 'hash' => $hash];
                                $body = str_replace($match[0], $hash, $body);
                        } else {
                                $text = Strings::getStyledURL($match[1]);
                                $hash = bluesky_get_hash_for_url($match[0], mb_strlen($text));
-                               $urls[] = ['url' => $match[1], 'text' => $text, 'hash' => $hash];
+                               $urls[strpos($body, $match[0])] = ['url' => $match[1], 'text' => $text, 'hash' => $hash];
                                $body = str_replace($match[0], $text . ' ' . $hash, $body);
                        }
                }
        }
 
+       asort($urls);
+
        return ['body' => $body, 'urls' => $urls];
 }