]> git.mxchange.org Git - friendica.git/blobdiff - src/Model/Item.php
Use rawContent for Special Options to avoid a protected options() method
[friendica.git] / src / Model / Item.php
index 923d72c11bcd37cf7955897553759bc9c93d2d45..f923fe2691d84109e6ec20f0e918fed26a4d2da6 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @copyright Copyright (C) 2010-2021, the Friendica project
+ * @copyright Copyright (C) 2010-2022, the Friendica project
  *
  * @license GNU AGPL version 3 or any later version
  *
@@ -949,7 +949,9 @@ class Item
                        $item['parent'] = $parent_id;
 
                        // Trigger automatic reactions for addons
-                       $item['api_source'] = true;
+                       if (!isset($item['api_source'])) {
+                               $item['api_source'] = true;
+                       }
 
                        // We have to tell the hooks who we are - this really should be improved
                        if (!local_user()) {
@@ -2258,8 +2260,8 @@ class Item
                        $condition[] = $network;
                }
 
-               $condition[0] .= " AND `received` < UTC_TIMESTAMP() - INTERVAL ? DAY";
-               $condition[] = $days;
+               $condition[0] .= " AND `received` < ?";
+               $condition[] = DateTimeFormat::utc('now - ' . $days . ' day');
 
                $items = Post::select(['resource-id', 'starred', 'id', 'post-type', 'uid', 'uri-id'], $condition);
 
@@ -2990,8 +2992,9 @@ class Item
        private static function addLinkAttachment(int $uriid, array $attachments, string $body, string $content, bool $shared, array $ignore_links)
        {
                DI::profiler()->startRecording('rendering');
-               // @ToDo Check only for audio and video
-               $preview = empty($attachments['visual']);
+               // Don't show a preview when there is a visual attachment (audio or video)
+               $types = array_column($attachments['visual'], 'type');
+               $preview = !in_array(Post\Media::IMAGE, $types) && !in_array(Post\Media::VIDEO, $types);
 
                if (!empty($attachments['link'])) {
                        foreach ($attachments['link'] as $link) {
@@ -3262,6 +3265,18 @@ class Item
                        return $item_id;
                }
 
+               $hookData = [
+                       'uri'     => $uri,
+                       'uid'     => $uid,
+                       'item_id' => null,
+               ];
+
+               Hook::callAll('item_by_link', $hookData);
+
+               if (isset($hookData['item_id'])) {
+                       return is_numeric($hookData['item_id']) ? $hookData['item_id'] : 0;
+               }
+
                if ($fetched_uri = ActivityPub\Processor::fetchMissingActivity($uri)) {
                        $item_id = self::searchByLink($fetched_uri, $uid);
                } else {
@@ -3354,7 +3369,7 @@ class Item
                        $body = $shared_item['body'];
                }
 
-               $item['body'] = preg_replace("/\[share ([^\[\]]*)\].*\[\/share\]/ism", '[share $1]' . $body . '[/share]', $item['body']);
+               $item['body'] = preg_replace("/\[share ([^\[\]]*)\].*\[\/share\]/ism", '[share $1]' . str_replace('$', '\$', $body) . '[/share]', $item['body']);
                unset($shared_item['body']);
 
                return array_merge($item, $shared_item);