]> git.mxchange.org Git - friendica.git/blobdiff - mod/item.php
Merge branch 'friendica:2023.09-rc' into Leftovers-from-PR-#13339
[friendica.git] / mod / item.php
index 13ffe756833b6c391e52784a8f7af6b075535cf5..70c5c9a8b61f338d1d1d43fd75bfe2ac44b09a1e 100644 (file)
@@ -19,7 +19,7 @@
  *
  * This is the POST destination for most all locally posted
  * text stuff. This function handles status, wall-to-wall status,
- * local comments, and remote coments that are posted on this site
+ * local comments, and remote comments that are posted on this site
  * (as opposed to being delivered in a feed).
  * Also processed here are posts and comments coming through the
  * statusnet/twitter API.
@@ -41,10 +41,8 @@ use Friendica\DI;
 use Friendica\Model\Contact;
 use Friendica\Model\Item;
 use Friendica\Model\ItemURI;
-use Friendica\Model\Photo;
 use Friendica\Model\Post;
 use Friendica\Network\HTTPException;
-use Friendica\Protocol\Activity;
 use Friendica\Util\DateTimeFormat;
 
 function item_post(App $a) {
@@ -106,8 +104,9 @@ function item_edit(int $uid, array $request, bool $preview, string $return_path)
        }
 
        $post['edit'] = $post;
-       $post['file'] = Post\Category::getTextByURIId($post['uri-id'], $post['uid']);   
+       $post['file'] = Post\Category::getTextByURIId($post['uri-id'], $post['uid']);
 
+       Post\Media::deleteByURIId($post['uri-id'], [Post\Media::AUDIO, Post\Media::VIDEO, Post\Media::IMAGE, Post\Media::HTML]);
        $post = item_process($post, $request, $preview, $return_path);
 
        $fields = [
@@ -222,6 +221,10 @@ function item_insert(int $uid, array $request, bool $preview, string $return_pat
 
        DI::contentItem()->postProcessPost($post, $recipients);
 
+       if (($post['private'] == Item::PRIVATE) && ($post['thr-parent-id'] != $post['uri-id'])) {
+               DI::contentItem()->copyPermissions($post['thr-parent-id'], $post['uri-id']);
+       }
+
        Logger::debug('post_complete');
 
        item_post_return(DI::baseUrl(), $return_path);
@@ -267,6 +270,7 @@ function item_process(array $post, array $request, bool $preview, string $return
                $post['uri-id']         = -1;
                $post['author-network'] = Protocol::DFRN;
                $post['author-updated'] = '';
+               $post['author-alias']   = '';
                $post['author-gsid']    = 0;
                $post['author-uri-id']  = ItemURI::getIdByURI($post['author-link']);
                $post['owner-updated']  = '';
@@ -275,7 +279,7 @@ function item_process(array $post, array $request, bool $preview, string $return
                $post['body']           = BBCode::removeSharedData(Item::setHashtags($post['body']));
                $post['writable']       = true;
 
-               $o = DI::conversation()->create([$post], Conversation::MODE_SEARCH, false, true);
+               $o = DI::conversation()->render([$post], Conversation::MODE_SEARCH, false, true);
 
                System::jsonExit(['preview' => $o]);
        }
@@ -341,7 +345,7 @@ function item_content(App $a)
 
        $args = DI::args();
 
-       if (!$args->has(3)) {
+       if (!$args->has(2)) {
                throw new HTTPException\BadRequestException();
        }
 
@@ -385,6 +389,22 @@ function item_content(App $a)
 
                        Contact\User::setIgnored($item['author-id'], DI::userSession()->getLocalUserId(), true);
 
+                       if (DI::mode()->isAjax()) {
+                               // ajax return: [<item id>, 0 (no perm) | <owner id>]
+                               System::jsonExit([intval($args->get(2)), DI::userSession()->getLocalUserId()]);
+                       } else {
+                               item_redirect_after_action($item, $args->get(3));
+                       }
+                       break;
+
+               case 'collapse':
+                       $item = Post::selectFirstForUser(DI::userSession()->getLocalUserId(), ['guid', 'author-id', 'parent', 'gravity'], ['id' => $args->get(2)]);
+                       if (empty($item['author-id'])) {
+                               throw new HTTPException\NotFoundException('Item not found');
+                       }
+
+                       Contact\User::setCollapsed($item['author-id'], DI::userSession()->getLocalUserId(), true);
+
                        if (DI::mode()->isAjax()) {
                                // ajax return: [<item id>, 0 (no perm) | <owner id>]
                                System::jsonExit([intval($args->get(2)), DI::userSession()->getLocalUserId()]);