datafield-1.x-dev/src/Plugin/DataField/FieldType/BlobItem.php
src/Plugin/DataField/FieldType/BlobItem.php
<?php
namespace Drupal\datafield\Plugin\DataField\FieldType;
use Drupal\Component\Utility\Random;
use Drupal\Core\StringTranslation\StringTranslationTrait;
use Drupal\Core\StringTranslation\TranslatableMarkup;
use Drupal\Core\TypedData\DataDefinition;
use Drupal\datafield\Attribute\DataFieldType;
use Drupal\datafield\Plugin\DataFieldTypeInterface;
/**
* Defines the 'blob' field type.
*/
#[DataFieldType(
id: 'blob',
label: new TranslatableMarkup('Blob'),
description: new TranslatableMarkup('An blob field.'),
default_widget: 'textarea',
default_formatter: 'basic_string',
)]
class BlobItem implements DataFieldTypeInterface {
use StringTranslationTrait;
/**
* {@inheritdoc}
*/
public static function defaultStorageSettings() {
return [
'type' => 'blob',
'size' => 'big',
];
}
/**
* {@inheritdoc}
*/
public static function schema(array $settings) {
$default = self::defaultStorageSettings();
if (!empty($settings['size'])) {
$default['size'] = $settings['size'];
}
return [
'columns' => [
'value' => $default,
],
];
}
/**
* {@inheritdoc}
*/
public function getPluginId() {
return '';
}
/**
* {@inheritdoc}
*/
public function getPluginDefinition() {
return [];
}
/**
* {@inheritdoc}
*/
public static function propertyDefinitions(array $settings) {
$name = $settings['name'];
$data_type = 'binary';
return DataDefinition::create($data_type)
->setLabel(new TranslatableMarkup('%name value', ['%name' => $name]))
->setRequired(FALSE);
}
/**
* {@inheritdoc}
*/
public function getLabel() {
return $this->t('Blob');
}
/**
* Get constraints.
*
* {@inheritDoc}
*/
public function getConstraints(array $settings) {
$constraints = [];
return $constraints;
}
/**
* {@inheritdoc}
*/
public static function generateSampleValue() {
$random = new Random();
return $random->paragraphs();
}
/**
* {@inheritdoc}
*/
public function fieldSettingsForm(array $field_settings, array $settings) {
$field_form = [
'label' => [
'#type' => 'textfield',
'#title' => $this->t('Label'),
'#default_value' => $field_settings['label'] ?? ucfirst($settings["name"]),
],
];
return $field_form;
}
}
