class MediaUploader in Gutenberg 8.2
Same name and namespace in other branches
- 8 src/MediaUploader.php \Drupal\gutenberg\MediaUploader
Upload files from Gutenberg editor upload method.
@package Drupal\gutenberg
Hierarchy
- class \Drupal\gutenberg\MediaUploader implements MediaUploaderInterface
Expanded class hierarchy of MediaUploader
1 string reference to 'MediaUploader'
1 service uses MediaUploader
File
- src/
MediaUploader.php, line 16
Namespace
Drupal\gutenbergView source
class MediaUploader implements MediaUploaderInterface {
/**
* The file system service.
*
* @var \Drupal\Core\File\FileSystemInterface
*/
protected $fileSystem;
/**
* MediaUploader constructor.
*
* @param \Drupal\Core\File\FileSystemInterface $file_system
* The file system service.
*/
public function __construct(FileSystemInterface $file_system) {
$this->fileSystem = $file_system;
}
/**
* {@inheritDoc}
*/
public function upload(string $form_field_name, UploadedFile $uploaded_file, Editor $editor, array $file_settings = []) {
$image_settings = $editor
->getImageUploadSettings();
// @todo use the relevant media file settings over the Editor's "Image" plugin one?
// Or ultimately just use Drupal's builtin file_managed in a modal to
// handle all of this logic like CKeditor does.
$destination = $image_settings['scheme'] . '://' . $image_settings['directory'];
if (!$this->fileSystem
->prepareDirectory($destination, FileSystemInterface::CREATE_DIRECTORY)) {
return NULL;
}
$validators = [];
if (explode('/', $uploaded_file
->getClientMimeType())[0] === 'image') {
// Validate file type.
// Image type.
if (!empty($image_settings['max_dimensions']['width']) || !empty($image_settings['max_dimensions']['height'])) {
$max_dimensions = $image_settings['max_dimensions']['width'] . 'x' . $image_settings['max_dimensions']['height'];
}
else {
$max_dimensions = 0;
}
if (version_compare(\Drupal::VERSION, '9.1', '<')) {
// @see https://www.drupal.org/node/3162663
$max_filesize = min(Bytes::toInt($image_settings['max_size']), Environment::getUploadMaxSize());
}
else {
$max_filesize = min(Bytes::toNumber($image_settings['max_size']), Environment::getUploadMaxSize());
}
$validators['file_validate_size'] = [
$max_filesize,
];
$validators['file_validate_image_resolution'] = [
$max_dimensions,
];
}
if (!empty($file_settings['file_extensions'])) {
// Validate the media file extensions.
$validators['file_validate_extensions'] = [
$file_settings['file_extensions'],
];
}
// Upload a temporary file.
$result = file_save_upload($form_field_name, $validators, $destination);
if (is_array($result) && $result[0]) {
/** @var \Drupal\file\Entity\File $file */
$file = $result[0];
return $file;
}
return NULL;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
MediaUploader:: |
protected | property | The file system service. | |
MediaUploader:: |
public | function |
Upload media to the filesystem. Overrides MediaUploaderInterface:: |
|
MediaUploader:: |
public | function | MediaUploader constructor. |