]> git.mxchange.org Git - friendica.git/commitdiff
Added support for image descriptions and multiple image posts to external services
authorMichael <heluecht@pirati.ca>
Mon, 5 Aug 2019 16:27:45 +0000 (16:27 +0000)
committerMichael <heluecht@pirati.ca>
Mon, 5 Aug 2019 16:27:45 +0000 (16:27 +0000)
src/Content/Text/BBCode.php
src/Model/Photo.php

index b012e79fb2fb7fa5b025a542387e793eddf6f336..668d6e6236da5e11926939b1cfb6c66cd617dbb2 100644 (file)
@@ -21,6 +21,7 @@ use Friendica\Core\Renderer;
 use Friendica\Core\System;
 use Friendica\Model\Contact;
 use Friendica\Model\Event;
+use Friendica\Model\Photo;
 use Friendica\Network\Probe;
 use Friendica\Object\Image;
 use Friendica\Util\Map;
@@ -238,11 +239,30 @@ class BBCode extends BaseObject
                $plink = defaults($item, 'plink', '');
                $post = self::getAttachmentData($body);
 
+               // Get all linked images with alternative image description
+               if (preg_match_all("/\[img=([^\[\]]*)\]([^\[\]]*)\[\/img\]/Usi", $body, $pictures, PREG_SET_ORDER)) {
+                       foreach ($pictures as $picture) {
+                               if (Photo::isLocal($picture[1])) {
+                                       $post['images'][] = ['url' => str_replace('-1.', '-0.', $picture[1]), 'description' => $picture[2]];
+                               }
+                       }
+                       if (!empty($post['images'][0]['description'])) {
+                               $post['image_description'] = $post['images'][0]['description'];
+                       }
+               }
+
+               if (preg_match_all("/\[img\]([^\[\]]*)\[\/img\]/Usi", $body, $pictures, PREG_SET_ORDER)) {
+                       foreach ($pictures as $picture) {
+                               if (Photo::isLocal($picture[1])) {
+                                       $post['images'][] = ['url' => str_replace('-1.', '-0.', $picture[1]), 'description' => ''];
+                               }
+                       }
+               }
+
                // if nothing is found, it maybe having an image.
                if (!isset($post["type"])) {
                        // Simplify image codes
                        $body = preg_replace("/\[img\=([0-9]*)x([0-9]*)\](.*?)\[\/img\]/ism", '[img]$3[/img]', $body);
-
                        $body = preg_replace("/\[img\=(.*?)\](.*?)\[\/img\]/ism", '[img]$1[/img]', $body);
 
                        if (preg_match_all("(\[url=(.*?)\]\s*\[img\](.*?)\[\/img\]\s*\[\/url\])ism", $body, $pictures, PREG_SET_ORDER)) {
index c983fdc0585e507559b8537e16abe6b7d4688d51..e722444b18378c6b173aafef03a120470f513834 100644 (file)
@@ -709,4 +709,22 @@ class Photo extends BaseObject
                $guid = substr($guid, 0, -2);
                return $guid;
        }
+
+       /**
+        * Tests if the picture link points to a locally stored picture
+        *
+        * @param string $name Picture link
+        * @return boolean
+        * @throws \Exception
+        */
+       public static function isLocal($name)
+       {
+               $guid = self::getGUID($name);
+
+               if (empty($guid)) {
+                       return false;
+               }
+
+               return DBA::exists('photo', ['resource-id' => $guid]);
+       }
 }