]> git.mxchange.org Git - friendica.git/commitdiff
Fixes issue 7914: Reshares got crumbled
authorMichael <heluecht@pirati.ca>
Sat, 7 Dec 2019 21:05:14 +0000 (21:05 +0000)
committerMichael <heluecht@pirati.ca>
Sat, 7 Dec 2019 21:05:14 +0000 (21:05 +0000)
mod/item.php
src/Content/Text/BBCode.php
src/Model/Item.php

index 999e7a25c67e58e00bdcf8c2be3bdaf741d62cd2..93da70e40eb5d2cda0df112d52fb7c1bdaf0ca22 100644 (file)
@@ -652,6 +652,9 @@ function item_post(App $a) {
        if ($orig_post) {
                $datarray['edit'] = true;
        } else {
+               // If this was a share, add missing data here
+               $datarray = Item::addShareDataFromOriginal($datarray);
+
                $datarray['edit'] = false;
        }
 
@@ -730,9 +733,6 @@ function item_post(App $a) {
                }
        }
 
-       // If this was a share, add missing data here
-       $datarray = Item::addShareDataFromOriginal($datarray);
-
        $post_id = Item::insert($datarray);
 
        if (!$post_id) {
index 0291c729e855f6ed52d314c3d35ad6550aca2572..29b4f47eb73f246469071a00c3f498efa8594562 100644 (file)
@@ -953,12 +953,11 @@ class BBCode extends BaseObject
        public static function convertShare($text, callable $callback)
        {
                $return = preg_replace_callback(
-                       "/(.*?)\[share(.*?)\](.*?)\[\/share\]/ism",
+                       "/(.*?)\[share(.*?)\](.*)\[\/share\]/ism",
                        function ($match) use ($callback) {
                                $attribute_string = $match[2];
-
                                $attributes = [];
-                               foreach(['author', 'profile', 'avatar', 'link', 'posted'] as $field) {
+                               foreach (['author', 'profile', 'avatar', 'link', 'posted'] as $field) {
                                        preg_match("/$field=(['\"])(.+?)\\1/ism", $attribute_string, $matches);
                                        $attributes[$field] = html_entity_decode($matches[2] ?? '', ENT_QUOTES, 'UTF-8');
                                }
index 0f008518b0410b3d70865d1d3ce404d5e56ba82e..1e3b16002a0e63740f7486a36357bed317208ab6 100644 (file)
@@ -3833,7 +3833,7 @@ class Item extends BaseObject
                        $body = $shared_item['body'];
                }
 
-               $item['body'] = preg_replace("/(.*?\[share.*?\]\s?).*?(\s?\[\/share\]\s?)/ism", '$1' . $body . '$2', $item['body']);
+               $item['body'] = preg_replace("/\[share ([^\[\]]*)\].*\[\/share\]/ism", '[share $1]' . $body . '[/share]', $item['body']);
                unset($shared_item['body']);
 
                return array_merge($item, $shared_item);