class DateTimeComputed

Same name and namespace in other branches
  1. 9 core/modules/datetime/src/DateTimeComputed.php \Drupal\datetime\DateTimeComputed
  2. 8.9.x core/modules/datetime/src/DateTimeComputed.php \Drupal\datetime\DateTimeComputed
  3. 10 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

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\datetime
View 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

Title Sort descending Modifiers Object type Summary Overriden Title Overrides
DateTimeComputed::$date protected property Cached computed date.
DateTimeComputed::getValue public function Gets the data value. Overrides TypedData::getValue
DateTimeComputed::setValue public function Sets the data value. Overrides TypedData::setValue
DateTimeComputed::__construct public function Constructs a TypedData object given its definition and context. Overrides TypedData::__construct
DependencySerializationTrait::$_entityStorages protected property
DependencySerializationTrait::$_serviceIds protected property
DependencySerializationTrait::__sleep public function 1
DependencySerializationTrait::__wakeup public function 2
StringTranslationTrait::$stringTranslation protected property The string translation service. 3
StringTranslationTrait::formatPlural protected function Formats a string containing a count of items.
StringTranslationTrait::getNumberOfPlurals protected function Returns the number of plurals supported by a given language.
StringTranslationTrait::getStringTranslation protected function Gets the string translation service.
StringTranslationTrait::setStringTranslation public function Sets the string translation service to use. 2
StringTranslationTrait::t protected function Translates a string to the current language or to a given language.
TypedData::$definition protected property The data definition. 1
TypedData::$name protected property The property name.
TypedData::$parent protected property The parent typed data object.
TypedData::applyDefaultValue public function Applies the default value. Overrides TypedDataInterface::applyDefaultValue 3
TypedData::createInstance public static function Constructs a TypedData object given its definition and context. Overrides TypedDataInterface::createInstance
TypedData::getConstraints public function Gets a list of validation constraints. Overrides TypedDataInterface::getConstraints 8
TypedData::getDataDefinition public function Gets the data definition. Overrides TypedDataInterface::getDataDefinition
TypedData::getName public function Returns the name of a property or item. Overrides TypedDataInterface::getName
TypedData::getParent public function Returns the parent data structure; i.e. either complex data or a list. Overrides TypedDataInterface::getParent
TypedData::getPluginDefinition public function Gets the definition of the plugin implementation. Overrides PluginInspectionInterface::getPluginDefinition
TypedData::getPluginId public function Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface::getPluginId
TypedData::getPropertyPath public function Returns the property path of the data. Overrides TypedDataInterface::getPropertyPath
TypedData::getRoot public function Returns the root of the typed data tree. Overrides TypedDataInterface::getRoot
TypedData::getString public function Returns a string representation of the data. Overrides TypedDataInterface::getString 6
TypedData::setContext public function Sets the context of a property or item via a context aware parent. Overrides TypedDataInterface::setContext
TypedData::validate public function Validates the currently set data value. Overrides TypedDataInterface::validate
TypedDataTrait::$typedDataManager protected property The typed data manager used for creating the data types.
TypedDataTrait::getTypedDataManager public function Gets the typed data manager. 2
TypedDataTrait::setTypedDataManager public function Sets the typed data manager. 2

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.