]> git.mxchange.org Git - friendica.git/blobdiff - src/Model/Item.php
"MIRROR_FORWARDED" is no more
[friendica.git] / src / Model / Item.php
index 17493e9a00508a187351c2d80518722551a2713d..911e4216f0a70ea7c7d13a81ab6b1e4e6fab2fe9 100644 (file)
@@ -210,7 +210,7 @@ class Item
                                                $fields['raw-body'] = BBCode::removeSharedData($fields['raw-body']);
                                        }
                                }
-               
+
                                Post\Media::insertFromAttachmentData($item['uri-id'], $fields['body']);
 
                                $content_fields = ['raw-body' => trim($fields['raw-body'] ?? $fields['body'])];
@@ -337,7 +337,7 @@ class Item
                 * generate a resource-id and therefore aren't intimately linked to the item.
                 */
                /// @TODO: this should first check if photo is used elsewhere
-               if (strlen($item['resource-id'])) {
+               if ($item['resource-id']) {
                        Photo::delete(['resource-id' => $item['resource-id'], 'uid' => $item['uid']]);
                }
 
@@ -823,19 +823,38 @@ class Item
                $item['protocol'] = Conversation::PARCEL_DIRECT;
                $item['direction'] = Conversation::PUSH;
 
-               if (!empty($item['author-link']) && !empty($item['author-id'])) {
-                       $owner = User::getOwnerDataById($item['uid']);
+               $owner = User::getOwnerDataById($item['uid']);
+
+               if (empty($item['contact-id'])) {
+                       $item['contact-id'] = $owner['id'];
+               }
+
+               if (empty($item['author-link']) && empty($item['author-id'])) {
                        $item['author-link']   = $owner['url'];
                        $item['author-name']   = $owner['name'];
                        $item['author-avatar'] = $owner['thumb'];
                }
 
-               if (!empty($item['owner-link']) && !empty($item['owner-id'])) {
+               if (empty($item['owner-link']) && empty($item['owner-id'])) {
                        $item['owner-link']   = $item['author-link'];
                        $item['owner-name']   = $item['author-name'];
                        $item['owner-avatar'] = $item['author-avatar'];
                }
 
+               // Setting the object type if not defined before
+               if (empty($item['object-type'])) {
+                       $item['object-type'] = Activity\ObjectType::NOTE; // Default value
+                       $objectdata = BBCode::getAttachedData($item['body']);
+
+                       if ($objectdata['type'] == 'link') {
+                               $item['object-type'] = Activity\ObjectType::BOOKMARK;
+                       } elseif ($objectdata['type'] == 'video') {
+                               $item['object-type'] = Activity\ObjectType::VIDEO;
+                       } elseif ($objectdata['type'] == 'photo') {
+                               $item['object-type'] = Activity\ObjectType::IMAGE;
+                       }
+               }
+
                return $item;
        }
 
@@ -2293,7 +2312,7 @@ class Item
 
                $datarray2 = $datarray;
                Logger::info('remote-self start', ['contact' => $contact['url'], 'remote_self'=> $contact['remote_self'], 'item' => $datarray]);
-               if ($contact['remote_self'] == Contact::MIRROR_OWN_POST) {
+               if (in_array($contact['remote_self'], [Contact::MIRROR_OWN_POST, Contact::MIRROR_FORWARDED])) {
                        $self = DBA::selectFirst('contact', ['id', 'name', 'url', 'thumb'],
                                        ['uid' => $contact['uid'], 'self' => true]);
                        if (DBA::isResult($self)) {
@@ -2339,8 +2358,8 @@ class Item
                        $result = self::insert($datarray2);
                        Logger::info('remote-self post original item', ['contact' => $contact['url'], 'result'=> $result, 'item' => $datarray2]);
                } else {
-                       $datarray["app"] = "Feed";
-                       $result = true;
+                       Logger::info('No valid mirroring option', ['uid' => $contact['uid'], 'id' => $contact['id'], 'network' => $contact['network'], 'remote_self' => $contact['remote_self']]);
+                       return false;
                }
 
                return (bool)$result;
@@ -2714,7 +2733,7 @@ class Item
                }
 
                $condition = ['vid' => $vids, 'deleted' => false, 'gravity' => self::GRAVITY_ACTIVITY,
-                       'author-id' => $author_id, 'uid' => $item['uid'], 'thr-parent-id' => $uri_id];
+                       'author-id' => $author_id, 'uid' => $uid, 'thr-parent-id' => $uri_id];
                $like_item = Post::selectFirst(['id', 'guid', 'verb'], $condition);
 
                if (DBA::isResult($like_item)) {