commerce-8.x-2.8/modules/order/src/Plugin/Field/FieldType/AdjustmentItem.php
modules/order/src/Plugin/Field/FieldType/AdjustmentItem.php
<?php
namespace Drupal\commerce_order\Plugin\Field\FieldType;
use Drupal\commerce_order\Adjustment;
use Drupal\Core\Field\FieldItemBase;
use Drupal\Core\Field\FieldStorageDefinitionInterface;
use Drupal\Core\TypedData\DataDefinition;
/**
* Plugin implementation of the 'commerce_adjustment' field type.
*
* @FieldType(
* id = "commerce_adjustment",
* label = @Translation("Adjustment"),
* description = @Translation("Stores adjustments to the parent entity's price."),
* category = @Translation("Commerce"),
* list_class = "\Drupal\commerce_order\Plugin\Field\FieldType\AdjustmentItemList",
* no_ui = TRUE,
* default_widget = "commerce_adjustment_default",
* )
*/
class AdjustmentItem extends FieldItemBase {
/**
* {@inheritdoc}
*/
public static function propertyDefinitions(FieldStorageDefinitionInterface $field_definition) {
$properties['value'] = DataDefinition::create('any')
->setLabel(t('Value'))
->setRequired(TRUE);
return $properties;
}
/**
* {@inheritdoc}
*/
public function isEmpty() {
return $this->value === NULL || !$this->value instanceof Adjustment;
}
/**
* {@inheritdoc}
*/
public function setValue($values, $notify = TRUE) {
if (is_array($values)) {
// The property definition causes the adjustment to be in 'value' key.
$values = reset($values);
}
if (!$values instanceof Adjustment) {
$values = NULL;
}
parent::setValue($values, $notify);
}
/**
* {@inheritdoc}
*/
public static function schema(FieldStorageDefinitionInterface $field_definition) {
return [
'columns' => [
'value' => [
'description' => 'The adjustment value.',
'type' => 'blob',
'not null' => TRUE,
'serialize' => TRUE,
],
],
];
}
}
