cloudinary-8.x-1.x-dev/modules/cloudinary_media_library_widget/src/Plugin/Field/FieldType/CloudinaryFileTrait.php
modules/cloudinary_media_library_widget/src/Plugin/Field/FieldType/CloudinaryFileTrait.php
<?php
namespace Drupal\cloudinary_media_library_widget\Plugin\Field\FieldType;
use Drupal\Core\Form\FormStateInterface;
/**
* Build a trait to use for custom cloudinary field type implementations.
*/
trait CloudinaryFileTrait {
use CloudinaryFieldItemTrait;
/**
* {@inheritdoc}
*/
public static function defaultStorageSettings() {
return [
'uri_scheme' => 'cloudinary',
] + parent::defaultStorageSettings();
}
/**
* {@inheritdoc}
*/
public function postSave($update) {
parent::postSave($update);
if (!$update) {
/** @var \Drupal\file\FileInterface $file */
$file = $this->entity;
$file->setPermanent();
$file->save();
}
}
/**
* {@inheritdoc}
*/
public function storageSettingsForm(array &$form, FormStateInterface $form_state, $has_data) {
$element = parent::storageSettingsForm($form, $form_state, $has_data);
// Force only cloudinary option.
$element['uri_scheme']['#access'] = FALSE;
return $element;
}
/**
* {@inheritdoc}
*/
public function fieldSettingsForm(array $form, FormStateInterface $form_state) {
$element = parent::fieldSettingsForm($form, $form_state);
// Hide options that have no sense as we do not upload a file to
// cloudinary server.
$element['file_directory']['#access'] = FALSE;
$element['max_filesize']['#access'] = FALSE;
return $element;
}
}
