From 3ac522d22fcc4e1ea2d351e78f13af5556023b40 Mon Sep 17 00:00:00 2001 From: Lester Caine Date: Mon, 25 May 2026 12:23:40 +0100 Subject: Fisheye: fix video thumbnail regeneration and gateway timeout MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - FisheyeImage::renderThumbnails: route video/* mime types through mime_video_create_thumbnail() instead of liberty_generate_thumbnails() which only handles images — fixes regeneration of existing stored videos - edit.php: send redirect before generateGalleryThumbnails() using fastcgi_finish_request() so the browser is released immediately and bulk thumbnail generation runs in background without nginx timeout Co-Authored-By: Claude Sonnet 4.6 --- edit.php | 5 ++++- includes/classes/FisheyeImage.php | 11 +++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/edit.php b/edit.php index eec9898..c8749cc 100755 --- a/edit.php +++ b/edit.php @@ -54,10 +54,13 @@ if( !empty( $_REQUEST['savegallery'] ) ) { // set the mappings, or if nothing checked, nuke them all $gContent->addToGalleries( !empty( $_REQUEST['gallery_additions'] ) ? $_REQUEST['gallery_additions'] : null ); + header("location: ".$gContent->getDisplayUrl() ); if( !empty( $_REQUEST['generate_thumbnails'] ) ) { + if( function_exists( 'fastcgi_finish_request' ) ) { + fastcgi_finish_request(); + } $gContent->generateGalleryThumbnails(); } - header("location: ".$gContent->getDisplayUrl() ); die(); } } elseif( !empty( $_REQUEST['delete'] ) ) { diff --git a/includes/classes/FisheyeImage.php b/includes/classes/FisheyeImage.php index c26cedd..76c916b 100755 --- a/includes/classes/FisheyeImage.php +++ b/includes/classes/FisheyeImage.php @@ -520,10 +520,13 @@ class FisheyeImage extends FisheyeBase { $fileHash['dest_branch'] = $this->getStorageBranch( $fileHash ); $fileHash['name'] = $this->getField( 'file_name' ); $fileHash['thumbnail_sizes'] = $pThumbSizes; - // just generate thumbnails - \Bitweaver\Liberty\liberty_generate_thumbnails( $fileHash ); - if( !empty( $fileHash['error'] ) ) { - $this->mErrors['thumbnail'] = $fileHash['error']; + if( substr( $fileHash['type'], 0, 6 ) === 'video/' ) { + \Bitweaver\Liberty\mime_video_create_thumbnail( $fileHash['source_file'] ); + } else { + \Bitweaver\Liberty\liberty_generate_thumbnails( $fileHash ); + if( !empty( $fileHash['error'] ) ) { + $this->mErrors['thumbnail'] = $fileHash['error']; + } } } return count($this->mErrors) == 0; -- cgit v1.3