dedupe create_image_from_data

This commit is contained in:
Shish 2020-02-23 16:05:09 +00:00
parent 394e57103c
commit 674d3fc6fa
9 changed files with 23 additions and 131 deletions

View file

@ -455,9 +455,28 @@ abstract class DataHandlerExtension extends Extension
}
}
protected function create_image_from_data(string $filename, array $metadata): Image
{
global $config;
$image = new Image();
$image->filesize = $metadata['size'];
$image->hash = $metadata['hash'];
$image->filename = (($pos = strpos($metadata['filename'], '?')) !== false) ? substr($metadata['filename'], 0, $pos) : $metadata['filename'];
if ($config->get_bool("upload_use_mime")) {
$image->ext = get_extension(getMimeType($filename));
} else {
$image->ext = (($pos = strpos($metadata['extension'], '?')) !== false) ? substr($metadata['extension'], 0, $pos) : $metadata['extension'];
}
$image->tag_array = is_array($metadata['tags']) ? $metadata['tags'] : Tag::explode($metadata['tags']);
$image->source = $metadata['source'];
return $image;
}
abstract protected function supported_ext(string $ext): bool;
abstract protected function check_contents(string $tmpname): bool;
abstract protected function create_image_from_data(string $filename, array $metadata);
abstract protected function create_thumb(string $hash, string $type): bool;
public static function get_all_supported_exts(): array

View file

@ -55,26 +55,6 @@ function add_image(string $tmpname, string $filename, string $tags): void
send_event(new DataUploadEvent($tmpname, $metadata));
}
/**
* Gets an the extension defined in MIME_TYPE_MAP for a file.
*
* @param String $file_path
* @return String The extension that was found.
* @throws UploadException if the mimetype could not be determined, or if an extension for hte mimetype could not be found.
*/
function get_extension_from_mime(String $file_path): String
{
$mime = mime_content_type($file_path);
if (!empty($mime)) {
$ext = get_extension($mime);
if (!empty($ext)) {
return $ext;
}
throw new UploadException("Could not determine extension for mimetype ".$mime);
}
throw new UploadException("Could not determine file mime type: ".$file_path);
}
/**
* Given a full size pair of dimensions, return a pair scaled down to fit
* into the configured thumbnail square, with ratio intact.

View file

@ -36,22 +36,6 @@ class FlashFileHandler extends DataHandlerExtension
return in_array(strtolower($ext), $exts);
}
protected function create_image_from_data(string $filename, array $metadata)
{
$image = new Image();
$image->filesize = $metadata['size'];
$image->hash = $metadata['hash'];
$image->filename = $metadata['filename'];
$image->ext = $metadata['extension'];
$image->tag_array = is_array($metadata['tags']) ? $metadata['tags'] : Tag::explode($metadata['tags']);
$image->source = $metadata['source'];
return $image;
}
protected function check_contents(string $tmpname): bool
{
$fp = fopen($tmpname, "r");

View file

@ -32,20 +32,6 @@ class IcoFileHandler extends DataHandlerExtension
return in_array(strtolower($ext), self::SUPPORTED_EXTENSIONS);
}
protected function create_image_from_data(string $filename, array $metadata)
{
$image = new Image();
$image->filesize = $metadata['size'];
$image->hash = $metadata['hash'];
$image->filename = $metadata['filename'];
$image->ext = $metadata['extension'];
$image->tag_array = is_array($metadata['tags']) ? $metadata['tags'] : Tag::explode($metadata['tags']);
$image->source = $metadata['source'];
return $image;
}
protected function check_contents(string $file): bool
{
$fp = fopen($file, "r");

View file

@ -10,6 +10,8 @@ class MP3FileHandler extends DataHandlerExtension
$event->image->video = false;
$event->image->lossless = false;
$event->image->image = false;
$event->image->width = 0;
$event->image->height = 0;
break;
}
// TODO: Buff out audio format support, length scanning
@ -27,28 +29,6 @@ class MP3FileHandler extends DataHandlerExtension
return in_array(strtolower($ext), $exts);
}
protected function create_image_from_data(string $filename, array $metadata)
{
$image = new Image();
//NOTE: No need to set width/height as we don't use it.
$image->width = 1;
$image->height = 1;
$image->filesize = $metadata['size'];
$image->hash = $metadata['hash'];
//Filename is renamed to "artist - title.mp3" when the user requests download by using the download attribute & jsmediatags.js
$image->filename = $metadata['filename'];
$image->ext = $metadata['extension'];
$image->tag_array = is_array($metadata['tags']) ? $metadata['tags'] : Tag::explode($metadata['tags']);
$image->source = $metadata['source'];
return $image;
}
protected function check_contents(string $tmpname): bool
{
return getMimeType($tmpname) == 'audio/mpeg';

View file

@ -46,20 +46,6 @@ class PixelFileHandler extends DataHandlerExtension
return in_array(strtolower($ext), self::SUPPORTED_EXTENSIONS);
}
protected function create_image_from_data(string $filename, array $metadata)
{
$image = new Image();
$image->filesize = $metadata['size'];
$image->hash = $metadata['hash'];
$image->filename = (($pos = strpos($metadata['filename'], '?')) !== false) ? substr($metadata['filename'], 0, $pos) : $metadata['filename'];
$image->ext = (($pos = strpos($metadata['extension'], '?')) !== false) ? substr($metadata['extension'], 0, $pos) : $metadata['extension'];
$image->tag_array = is_array($metadata['tags']) ? $metadata['tags'] : Tag::explode($metadata['tags']);
$image->source = $metadata['source'];
return $image;
}
protected function check_contents(string $tmpname): bool
{
$valid = [IMAGETYPE_PNG, IMAGETYPE_GIF, IMAGETYPE_JPEG, IMAGETYPE_WEBP];

View file

@ -82,20 +82,6 @@ class SVGFileHandler extends DataHandlerExtension
return in_array(strtolower($ext), $exts);
}
protected function create_image_from_data(string $filename, array $metadata): Image
{
$image = new Image();
$image->filesize = $metadata['size'];
$image->hash = $metadata['hash'];
$image->filename = $metadata['filename'];
$image->ext = $metadata['extension'];
$image->tag_array = is_array($metadata['tags']) ? $metadata['tags'] : Tag::explode($metadata['tags']);
$image->source = $metadata['source'];
return $image;
}
protected function check_contents(string $file): bool
{
$msp = new MiniSVGParser($file);

View file

@ -95,35 +95,6 @@ class VideoFileHandler extends DataHandlerExtension
return in_array(strtolower($ext), self::SUPPORTED_EXT);
}
protected function create_image_from_data(string $filename, array $metadata): Image
{
$image = new Image();
switch (getMimeType($filename)) {
case "video/webm":
$image->ext = "webm";
break;
case "video/mp4":
$image->ext = "mp4";
break;
case "video/ogg":
$image->ext = "ogv";
break;
case "video/flv":
case "video/x-flv":
$image->ext = "flv";
break;
}
$image->filesize = $metadata['size'];
$image->hash = $metadata['hash'];
$image->filename = $metadata['filename'];
$image->tag_array = is_array($metadata['tags']) ? $metadata['tags'] : Tag::explode($metadata['tags']);
$image->source = $metadata['source'];
return $image;
}
protected function check_contents(string $tmpname): bool
{
return in_array(getMimeType($tmpname), self::SUPPORTED_MIME);

View file

@ -43,7 +43,7 @@ class DataUploadEvent extends Event
$this->set_tmpname($tmpname);
if ($config->get_bool("upload_use_mime")) {
$this->set_type(get_extension_from_mime($tmpname));
$this->set_type(get_extension(getMimeType($tmpname)));
} else {
if (array_key_exists('extension', $metadata) && !empty($metadata['extension'])) {
$this->type = strtolower($metadata['extension']);