ScheduledChangeItem.php in Commerce Recurring Framework 8
File
src/Plugin/Field/FieldType/ScheduledChangeItem.php
View source
<?php
namespace Drupal\commerce_recurring\Plugin\Field\FieldType;
use Drupal\commerce_recurring\ScheduledChange;
use Drupal\Core\Field\FieldItemBase;
use Drupal\Core\Field\FieldStorageDefinitionInterface;
use Drupal\Core\TypedData\DataDefinition;
class ScheduledChangeItem extends FieldItemBase {
public static function propertyDefinitions(FieldStorageDefinitionInterface $field_definition) {
$properties['field_name'] = DataDefinition::create('string')
->setLabel(t('Field name'))
->setRequired(TRUE);
$properties['value'] = DataDefinition::create('string')
->setLabel(t('Value'))
->setRequired(TRUE);
$properties['created'] = DataDefinition::create('timestamp')
->setLabel(t('Created'))
->setRequired(TRUE);
return $properties;
}
public static function schema(FieldStorageDefinitionInterface $field_definition) {
return [
'columns' => [
'field_name' => [
'type' => 'varchar',
'length' => 64,
],
'value' => [
'type' => 'varchar',
'length' => 255,
],
'created' => [
'type' => 'int',
],
],
];
}
public static function mainPropertyName() {
return NULL;
}
public function isEmpty() {
return empty($this->field_name) || empty($this->value);
}
public function setValue($values, $notify = TRUE) {
if ($values instanceof ScheduledChange) {
$values = [
'field_name' => $values
->getFieldName(),
'value' => $values
->getValue(),
'created' => $values
->getCreatedTime(),
];
}
parent::setValue($values, $notify);
}
public function toScheduledChange() {
return new ScheduledChange($this->field_name, $this->value, $this->created);
}
}