handle_svg doesn't need to override ALL of onDataUpload
This commit is contained in:
		
							parent
							
								
									2f975eb6d4
								
							
						
					
					
						commit
						fd7c774f5b
					
				| @ -347,12 +347,24 @@ abstract class FormatterExtension extends Extension | |||||||
|  */ |  */ | ||||||
| abstract class DataHandlerExtension extends Extension | abstract class DataHandlerExtension extends Extension | ||||||
| { | { | ||||||
|  |     protected function move_upload_to_archive(DataUploadEvent $event) | ||||||
|  |     { | ||||||
|  |         $target = warehouse_path(Image::IMAGE_DIR, $event->hash); | ||||||
|  |         if (!@copy($event->tmpname, $target)) { | ||||||
|  |             $errors = error_get_last(); | ||||||
|  |             throw new UploadException( | ||||||
|  |                 "Failed to copy file from uploads ({$event->tmpname}) to archive ($target): ". | ||||||
|  |                 "{$errors['type']} / {$errors['message']}" | ||||||
|  |             ); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     public function onDataUpload(DataUploadEvent $event) |     public function onDataUpload(DataUploadEvent $event) | ||||||
|     { |     { | ||||||
|         $supported_ext = $this->supported_ext($event->type); |         $supported_ext = $this->supported_ext($event->type); | ||||||
|         $check_contents = $this->check_contents($event->tmpname); |         $check_contents = $this->check_contents($event->tmpname); | ||||||
|         if ($supported_ext && $check_contents) { |         if ($supported_ext && $check_contents) { | ||||||
|             move_upload_to_archive($event); |             $this->move_upload_to_archive($event); | ||||||
|             send_event(new ThumbnailGenerationEvent($event->hash, $event->type)); |             send_event(new ThumbnailGenerationEvent($event->hash, $event->type)); | ||||||
| 
 | 
 | ||||||
|             /* Check if we are replacing an image */ |             /* Check if we are replacing an image */ | ||||||
|  | |||||||
| @ -3,25 +3,6 @@ | |||||||
| * Misc functions                                                            * | * Misc functions                                                            * | ||||||
| \* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ | \* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ | ||||||
| 
 | 
 | ||||||
| /** |  | ||||||
|  * Move a file from PHP's temporary area into shimmie's image storage |  | ||||||
|  * hierarchy, or throw an exception trying. |  | ||||||
|  * |  | ||||||
|  * @param DataUploadEvent $event |  | ||||||
|  * @throws UploadException |  | ||||||
|  */ |  | ||||||
| function move_upload_to_archive(DataUploadEvent $event): void |  | ||||||
| { |  | ||||||
|     $target = warehouse_path(Image::IMAGE_DIR, $event->hash); |  | ||||||
|     if (!@copy($event->tmpname, $target)) { |  | ||||||
|         $errors = error_get_last(); |  | ||||||
|         throw new UploadException( |  | ||||||
|             "Failed to copy file from uploads ({$event->tmpname}) to archive ($target): ". |  | ||||||
|             "{$errors['type']} / {$errors['message']}" |  | ||||||
|         ); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| /** | /** | ||||||
|  * Add a directory full of images |  * Add a directory full of images | ||||||
|  * |  * | ||||||
|  | |||||||
| @ -23,27 +23,13 @@ class SVGFileHandler extends DataHandlerExtension | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public function onDataUpload(DataUploadEvent $event) |     protected function move_upload_to_archive(DataUploadEvent $event) | ||||||
|     { |     { | ||||||
|         if ($this->supported_ext($event->type) && $this->check_contents($event->tmpname)) { |  | ||||||
|             $hash = $event->hash; |  | ||||||
| 
 |  | ||||||
|         $sanitizer = new Sanitizer(); |         $sanitizer = new Sanitizer(); | ||||||
|         $sanitizer->removeRemoteReferences(true); |         $sanitizer->removeRemoteReferences(true); | ||||||
|         $dirtySVG = file_get_contents($event->tmpname); |         $dirtySVG = file_get_contents($event->tmpname); | ||||||
|         $cleanSVG = $sanitizer->sanitize($dirtySVG); |         $cleanSVG = $sanitizer->sanitize($dirtySVG); | ||||||
|             file_put_contents(warehouse_path(Image::IMAGE_DIR, $hash), $cleanSVG); |         file_put_contents(warehouse_path(Image::IMAGE_DIR, $event->hash), $cleanSVG); | ||||||
| 
 |  | ||||||
|             send_event(new ThumbnailGenerationEvent($event->hash, $event->type)); |  | ||||||
|             $image = $this->create_image_from_data(warehouse_path(Image::IMAGE_DIR, $hash), $event->metadata); |  | ||||||
|             if (is_null($image)) { |  | ||||||
|                 throw new UploadException("SVG handler failed to create image object from data"); |  | ||||||
|             } |  | ||||||
|             $iae = new ImageAdditionEvent($image); |  | ||||||
|             send_event($iae); |  | ||||||
|             $event->image_id = $iae->image->id; |  | ||||||
|             $event->merged = $iae->merged; |  | ||||||
|         } |  | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     protected function create_thumb(string $hash, string $type): bool |     protected function create_thumb(string $hash, string $type): bool | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user