handle_svg doesn't need to override ALL of onDataUpload
This commit is contained in:
parent
2f975eb6d4
commit
fd7c774f5b
3 changed files with 19 additions and 40 deletions
|
@ -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
|
||||||
|
|
Reference in a new issue