forked from GNUsocial/gnu-social
		
	[Posting] Fix bug with early DB::flush that would discard attachments relations
This commit is contained in:
		@@ -89,9 +89,12 @@ class Posting extends Component
 | 
			
		||||
        ];
 | 
			
		||||
        if (count($available_content_types) > 1) {
 | 
			
		||||
            $form_params[] = ['content_type', ChoiceType::class,
 | 
			
		||||
                ['label'      => _m('Text format:'), 'multiple' => false, 'expanded' => false,
 | 
			
		||||
                [
 | 
			
		||||
                    'label'   => _m('Text format:'), 'multiple' => false, 'expanded' => false,
 | 
			
		||||
                    'data'    => $available_content_types[array_key_first($available_content_types)],
 | 
			
		||||
                    'choices' => $available_content_types, ], ];
 | 
			
		||||
                    'choices' => $available_content_types,
 | 
			
		||||
                ],
 | 
			
		||||
            ];
 | 
			
		||||
        }
 | 
			
		||||
        $form_params[] = ['post_note',   SubmitType::class,   ['label' => _m('Post')]];
 | 
			
		||||
        $form          = Form::create($form_params);
 | 
			
		||||
@@ -150,16 +153,15 @@ class Posting extends Component
 | 
			
		||||
                    'Try to upload a smaller version.', ['quota' => $max_file_size, 'size' => $filesize]));
 | 
			
		||||
            }
 | 
			
		||||
            Event::handle('EnforceUserFileQuota', [$filesize, $actor->getId()]);
 | 
			
		||||
            $processed_attachments[] = [GSFile::sanitizeAndStoreFileAsAttachment($f), $f->getClientOriginalName()];
 | 
			
		||||
            $processed_attachments[] = [GSFile::storeFileAsAttachment($f), $f->getClientOriginalName()];
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        DB::persist($note);
 | 
			
		||||
 | 
			
		||||
        // Need file and note ids for the next step
 | 
			
		||||
        Event::handle('ProcessNoteContent', [$note, $content, $content_type]);
 | 
			
		||||
        DB::flush();
 | 
			
		||||
 | 
			
		||||
        if ($processed_attachments != []) {
 | 
			
		||||
        if ($processed_attachments !== []) {
 | 
			
		||||
            foreach ($processed_attachments as [$a, $fname]) {
 | 
			
		||||
                if (DB::count('actor_to_attachment', $args = ['attachment_id' => $a->getId(), 'actor_id' => $actor->getId()]) === 0) {
 | 
			
		||||
                    DB::persist(ActorToAttachment::create($args));
 | 
			
		||||
@@ -167,6 +169,8 @@ class Posting extends Component
 | 
			
		||||
                DB::persist(AttachmentToNote::create(['attachment_id' => $a->getId(), 'note_id' => $note->getId(), 'title' => $fname]));
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        DB::flush();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function onRenderNoteContent(string $content, string $content_type, ?string &$rendered, Actor $author, ?Note $reply_to = null)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user