]> git.mxchange.org Git - friendica.git/commitdiff
Fix being able to remove all images from post through Mastodon edit endpoint
authorHank Grabowski <hankgrabowski@gmail.com>
Thu, 16 Mar 2023 18:01:36 +0000 (14:01 -0400)
committerHank Grabowski <hankgrabowski@gmail.com>
Thu, 16 Mar 2023 18:01:36 +0000 (14:01 -0400)
src/Module/Api/Mastodon/Statuses.php

index 87840eef9704b0e615758ea24beb95afc7266462..3080c28043860944a2011687933668a94fc482fb 100644 (file)
@@ -110,43 +110,42 @@ class Statuses extends BaseApi
 
                $item = DI::contentItem()->expandTags($item, $request['visibility'] == 'direct');
 
-               if (!empty($request['media_ids'])) {
-                       /*
-                       The provided ids in the request value consists of these two sources:
-                       - The id in the "photo" table for newly uploaded media
-                       - The id in the "post-media" table for already attached media
-
-                       Because of this we have to add all media that isn't already attached.
-                       Also we have to delete all media that isn't provided anymore.
-                       
-                       There is a possible situation where the newly uploaded media
-                       could have the same id as an existing, but deleted media.
-
-                       We can't do anything about this, but the probability for this is extremely low.
-                       */
-                       $media_ids      = [];
-                       $existing_media = array_column(Post\Media::getByURIId($post['uri-id'], [Post\Media::AUDIO, Post\Media::VIDEO, Post\Media::IMAGE]), 'id');
-
-                       foreach ($request['media_ids'] as $media) {
-                               if (!in_array($media, $existing_media)) {
-                                       $media_ids[] = $media;
-                               }
+               /*
+               The provided ids in the request value consists of these two sources:
+               - The id in the "photo" table for newly uploaded media
+               - The id in the "post-media" table for already attached media
+
+               Because of this we have to add all media that isn't already attached.
+               Also we have to delete all media that isn't provided anymore.
+
+               There is a possible situation where the newly uploaded media
+               could have the same id as an existing, but deleted media.
+
+               We can't do anything about this, but the probability for this is extremely low.
+               */
+               $media_ids      = [];
+               $existing_media = array_column(Post\Media::getByURIId($post['uri-id'], [Post\Media::AUDIO, Post\Media::VIDEO, Post\Media::IMAGE]), 'id');
+
+               foreach ($request['media_ids'] as $media) {
+                       if (!in_array($media, $existing_media)) {
+                               $media_ids[] = $media;
                        }
+               }
 
-                       foreach ($existing_media as $media) {
-                               if (!in_array($media, $request['media_ids'])) {
-                                       Post\Media::deleteById($media);
-                               }
+               foreach ($existing_media as $media) {
+                       if (!in_array($media, $request['media_ids'])) {
+                               Post\Media::deleteById($media);
                        }
+               }
 
-                       $item = $this->storeMediaIds($media_ids, array_merge($post, $item));
+               $item = $this->storeMediaIds($media_ids, array_merge($post, $item));
 
-                       foreach ($item['attachments'] as $attachment) {
-                               $attachment['uri-id'] = $post['uri-id'];
-                               Post\Media::insert($attachment);
-                       }
-                       unset($item['attachments']);
+               foreach ($item['attachments'] as $attachment) {
+                       $attachment['uri-id'] = $post['uri-id'];
+                       Post\Media::insert($attachment);
                }
+               unset($item['attachments']);
+
                if (!Item::isValid($item)) {
                        throw new \Exception('Missing parameters in definition');
                }