class DateTimeComputed in Drupal 10
Same name and namespace in other branches
- 8 core/modules/datetime/src/DateTimeComputed.php \Drupal\datetime\DateTimeComputed
- 9 core/modules/datetime/src/DateTimeComputed.php \Drupal\datetime\DateTimeComputed
A computed property for dates of date time field items.
Required settings (below the definition's 'settings' key) are:
- date source: The date property containing the to be computed date.
Hierarchy
- class \Drupal\Core\TypedData\TypedData implements PluginInspectionInterface, TypedDataInterface uses DependencySerializationTrait, StringTranslationTrait, TypedDataTrait- class \Drupal\datetime\DateTimeComputed
 
Expanded class hierarchy of DateTimeComputed
1 file declares its use of DateTimeComputed
- DateRangeItem.php in core/modules/ datetime_range/ src/ Plugin/ Field/ FieldType/ DateRangeItem.php 
File
- core/modules/ datetime/ src/ DateTimeComputed.php, line 18 
Namespace
Drupal\datetimeView source
class DateTimeComputed extends TypedData {
  /**
   * Cached computed date.
   *
   * @var \DateTime|null
   */
  protected $date = NULL;
  /**
   * {@inheritdoc}
   */
  public function __construct(DataDefinitionInterface $definition, $name = NULL, TypedDataInterface $parent = NULL) {
    parent::__construct($definition, $name, $parent);
    if (!$definition
      ->getSetting('date source')) {
      throw new \InvalidArgumentException("The definition's 'date source' key has to specify the name of the date property to be computed.");
    }
  }
  /**
   * {@inheritdoc}
   */
  public function getValue() {
    if ($this->date !== NULL) {
      return $this->date;
    }
    /** @var \Drupal\Core\Field\FieldItemInterface $item */
    $item = $this
      ->getParent();
    $value = $item->{$this->definition
      ->getSetting('date source')};
    // A date cannot be created from a NULL value.
    if ($value === NULL) {
      return NULL;
    }
    $datetime_type = $item
      ->getFieldDefinition()
      ->getSetting('datetime_type');
    $storage_format = $datetime_type === DateTimeItem::DATETIME_TYPE_DATE ? DateTimeItemInterface::DATE_STORAGE_FORMAT : DateTimeItemInterface::DATETIME_STORAGE_FORMAT;
    try {
      $date = DrupalDateTime::createFromFormat($storage_format, $value, DateTimeItemInterface::STORAGE_TIMEZONE);
      if ($date instanceof DrupalDateTime && !$date
        ->hasErrors()) {
        $this->date = $date;
        // If the format did not include an explicit time portion, then the
        // time will be set from the current time instead. For consistency, we
        // set the time to 12:00:00 UTC for date-only fields. This is used so
        // that the local date portion is the same, across nearly all time
        // zones.
        // @see \Drupal\Component\Datetime\DateTimePlus::setDefaultDateTime()
        // @see http://php.net/manual/datetime.createfromformat.php
        if ($datetime_type === DateTimeItem::DATETIME_TYPE_DATE) {
          $this->date
            ->setDefaultDateTime();
        }
      }
    } catch (\Exception $e) {
      // @todo Handle this.
    }
    return $this->date;
  }
  /**
   * {@inheritdoc}
   */
  public function setValue($value, $notify = TRUE) {
    $this->date = $value;
    // Notify the parent of any changes.
    if ($notify && isset($this->parent)) {
      $this->parent
        ->onChange($this->name);
    }
  }
}Members
| Name   | Modifiers | Type | Description | Overrides | 
|---|---|---|---|---|
| DateTimeComputed:: | protected | property | Cached computed date. | |
| DateTimeComputed:: | public | function | Gets the data value. Overrides TypedData:: | |
| DateTimeComputed:: | public | function | Sets the data value. Overrides TypedData:: | |
| DateTimeComputed:: | public | function | Constructs a TypedData object given its definition and context. Overrides TypedData:: | |
| DependencySerializationTrait:: | protected | property | ||
| DependencySerializationTrait:: | protected | property | ||
| DependencySerializationTrait:: | public | function | 1 | |
| DependencySerializationTrait:: | public | function | 2 | |
| StringTranslationTrait:: | protected | property | The string translation service. | 3 | 
| StringTranslationTrait:: | protected | function | Formats a string containing a count of items. | |
| StringTranslationTrait:: | protected | function | Returns the number of plurals supported by a given language. | |
| StringTranslationTrait:: | protected | function | Gets the string translation service. | |
| StringTranslationTrait:: | public | function | Sets the string translation service to use. | |
| StringTranslationTrait:: | protected | function | Translates a string to the current language or to a given language. | |
| TypedData:: | protected | property | The data definition. | 1 | 
| TypedData:: | protected | property | The property name. | |
| TypedData:: | protected | property | The parent typed data object. | |
| TypedData:: | public | function | Applies the default value. Overrides TypedDataInterface:: | 2 | 
| TypedData:: | public static | function | Constructs a TypedData object given its definition and context. Overrides TypedDataInterface:: | |
| TypedData:: | public | function | Gets a list of validation constraints. Overrides TypedDataInterface:: | 2 | 
| TypedData:: | public | function | Gets the data definition. Overrides TypedDataInterface:: | |
| TypedData:: | public | function | Returns the name of a property or item. Overrides TypedDataInterface:: | |
| TypedData:: | public | function | Returns the parent data structure; i.e. either complex data or a list. Overrides TypedDataInterface:: | |
| TypedData:: | public | function | Gets the definition of the plugin implementation. Overrides PluginInspectionInterface:: | |
| TypedData:: | public | function | Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface:: | |
| TypedData:: | public | function | Returns the property path of the data. Overrides TypedDataInterface:: | |
| TypedData:: | public | function | Returns the root of the typed data tree. Overrides TypedDataInterface:: | |
| TypedData:: | public | function | Returns a string representation of the data. Overrides TypedDataInterface:: | 3 | 
| TypedData:: | public | function | Sets the context of a property or item via a context aware parent. Overrides TypedDataInterface:: | |
| TypedData:: | public | function | Validates the currently set data value. Overrides TypedDataInterface:: | |
| TypedDataTrait:: | protected | property | The typed data manager used for creating the data types. | |
| TypedDataTrait:: | public | function | Gets the typed data manager. | 1 | 
| TypedDataTrait:: | public | function | Sets the typed data manager. | 1 | 
