]> git.mxchange.org Git - friendica.git/commitdiff
Separation between picture links
authorMichael <heluecht@pirati.ca>
Thu, 16 Mar 2023 05:01:05 +0000 (05:01 +0000)
committerMichael <heluecht@pirati.ca>
Thu, 16 Mar 2023 05:01:05 +0000 (05:01 +0000)
src/Model/Post/Media.php

index 221a11a7003c27d3d67c1d1401b06bb61f27e620..0a9557bc647f030a9917d2a4066212e45e6d973a 100644 (file)
@@ -461,9 +461,21 @@ class Media
         * @param string $preview Preview picture
         * @return boolean
         */
-       private static function isPictureLink(string $page, string $preview): bool
+       private static function isLinkToPhoto(string $page, string $preview): bool
        {
-               return (preg_match('#/photo/.*-0\.#ism', $page) || preg_match('#/photos/.*/image/#ism', $page)) && preg_match('#/photo/.*-[01]\.#ism', $preview);
+               return preg_match('#/photo/.*-0\.#ism', $page) && preg_match('#/photo/.*-[01]\.#ism', $preview);
+       }
+
+       /**
+        * Tests for path patterns that are usef for picture links in Friendica
+        *
+        * @param string $page    Link to the image page
+        * @param string $preview Preview picture
+        * @return boolean
+        */
+       private static function isLinkToImagePage(string $page, string $preview): bool
+       {
+               return preg_match('#/photos/.*/image/#ism', $page) && preg_match('#/photo/.*-[01]\.#ism', $preview);
        }
 
        /**
@@ -484,13 +496,19 @@ class Media
                $attachments = [];
                if (preg_match_all("#\[url=([^\]]+?)\]\s*\[img=([^\[\]]*)\]([^\[\]]*)\[\/img\]\s*\[/url\]$endmatchpattern#ism", $body, $pictures, PREG_SET_ORDER)) {
                        foreach ($pictures as $picture) {
-                               if (self::isPictureLink($picture[1], $picture[2])) {
+                               if (self::isLinkToImagePage($picture[1], $picture[2])) {
                                        $body = str_replace($picture[0], '', $body);
                                        $image = str_replace('-1.', '-0.', $picture[2]);
                                        $attachments[$image] = [
                                                'uri-id' => $uriid, 'type' => self::IMAGE, 'url' => $image,
                                                'preview' => $picture[2], 'description' => $picture[3]
                                        ];
+                               } elseif (self::isLinkToPhoto($picture[1], $picture[2])) {
+                                       $body = str_replace($picture[0], '', $body);
+                                       $attachments[$picture[1]] = [
+                                               'uri-id' => $uriid, 'type' => self::IMAGE, 'url' => $picture[1],
+                                               'preview' => $picture[2], 'description' => $picture[3]
+                                       ];
                                } elseif ($removepicturelinks) {
                                        $body = str_replace($picture[0], '', $body);
                                        $attachments[$picture[1]] = [
@@ -510,13 +528,19 @@ class Media
 
                if (preg_match_all("#\[url=([^\]]+?)\]\s*\[img\]([^\[]+?)\[/img\]\s*\[/url\]$endmatchpattern#ism", $body, $pictures, PREG_SET_ORDER)) {
                        foreach ($pictures as $picture) {
-                               if (self::isPictureLink($picture[1], $picture[2])) {
+                               if (self::isLinkToImagePage($picture[1], $picture[2])) {
                                        $body = str_replace($picture[0], '', $body);
                                        $image = str_replace('-1.', '-0.', $picture[2]);
                                        $attachments[$image] = [
                                                'uri-id' => $uriid, 'type' => self::IMAGE, 'url' => $image,
                                                'preview' => $picture[2], 'description' => null
                                        ];
+                               } elseif (self::isLinkToPhoto($picture[1], $picture[2])) {
+                                       $body = str_replace($picture[0], '', $body);
+                                       $attachments[$picture[1]] = [
+                                               'uri-id' => $uriid, 'type' => self::IMAGE, 'url' => $picture[1],
+                                               'preview' => $picture[2], 'description' => null
+                                       ];
                                } elseif ($removepicturelinks) {
                                        $body = str_replace($picture[0], '', $body);
                                        $attachments[$picture[1]] = [