diff --git a/core/modules/datetime/config/schema/datetime.schema.yml b/core/modules/datetime/config/schema/datetime.schema.yml
index aade88f..e627ce0 100644
--- a/core/modules/datetime/config/schema/datetime.schema.yml
+++ b/core/modules/datetime/config/schema/datetime.schema.yml
@@ -92,7 +92,7 @@ field.storage_settings.daterange:
type: mapping
label: 'Daterange settings'
mapping:
- datetime_type:
+ daterange_type:
type: string
label: 'Date type'
diff --git a/core/modules/datetime/src/DateTimeComputed.php b/core/modules/datetime/src/DateTimeComputed.php
index 6939994..49f0512 100644
--- a/core/modules/datetime/src/DateTimeComputed.php
+++ b/core/modules/datetime/src/DateTimeComputed.php
@@ -40,10 +40,12 @@ public function getValue($langcode = NULL) {
return $this->date;
}
+ /** @var \Drupal\Core\Field\FieldItemBase $item */
$item = $this->getParent();
$value = $item->{($this->definition->getSetting('date source'))};
+ $type = $item->getFieldDefinition()->getType();
- $storage_format = $item->getFieldDefinition()->getSetting('datetime_type') == 'date' ? DATETIME_DATE_STORAGE_FORMAT : DATETIME_DATETIME_STORAGE_FORMAT;
+ $storage_format = $item->getFieldDefinition()->getSetting($type . '_type') == 'date' ? DATETIME_DATE_STORAGE_FORMAT : DATETIME_DATETIME_STORAGE_FORMAT;
try {
$date = DrupalDateTime::createFromFormat($storage_format, $value, DATETIME_STORAGE_TIMEZONE);
if ($date instanceof DrupalDateTime && !$date->hasErrors()) {
diff --git a/core/modules/datetime/src/Plugin/Field/FieldFormatter/DateRangeCustomFormatter.php b/core/modules/datetime/src/Plugin/Field/FieldFormatter/DateRangeCustomFormatter.php
index 3586fb7..a0c107f 100644
--- a/core/modules/datetime/src/Plugin/Field/FieldFormatter/DateRangeCustomFormatter.php
+++ b/core/modules/datetime/src/Plugin/Field/FieldFormatter/DateRangeCustomFormatter.php
@@ -23,9 +23,9 @@ class DateRangeCustomFormatter extends DateRangeFormatterBase {
* {@inheritdoc}
*/
public static function defaultSettings() {
- return array(
+ return [
'date_format' => DATETIME_DATETIME_STORAGE_FORMAT,
- ) + parent::defaultSettings();
+ ] + parent::defaultSettings();
}
/**
@@ -80,12 +80,12 @@ protected function formatDate($date) {
public function settingsForm(array $form, FormStateInterface $form_state) {
$form = parent::settingsForm($form, $form_state);
- $form['date_format'] = array(
+ $form['date_format'] = [
'#type' => 'textfield',
'#title' => $this->t('Date/time format'),
'#description' => $this->t('See the documentation for PHP date formats.'),
'#default_value' => $this->getSetting('date_format'),
- );
+ ];
return $form;
}
@@ -98,7 +98,7 @@ public function settingsSummary() {
$date = DrupalDateTime::createFromTimestamp(REQUEST_TIME);
$this->setTimeZone($date);
- $summary[] = $this->t('Format: @display', array('@display' => $this->formatDate($date)));
+ $summary[] = $this->t('Format: @display', ['@display' => $this->formatDate($date)]);
return $summary;
}
diff --git a/core/modules/datetime/src/Plugin/Field/FieldFormatter/DateRangeDefaultFormatter.php b/core/modules/datetime/src/Plugin/Field/FieldFormatter/DateRangeDefaultFormatter.php
index e239936..dd0a19d 100644
--- a/core/modules/datetime/src/Plugin/Field/FieldFormatter/DateRangeDefaultFormatter.php
+++ b/core/modules/datetime/src/Plugin/Field/FieldFormatter/DateRangeDefaultFormatter.php
@@ -23,9 +23,9 @@ class DateRangeDefaultFormatter extends DateRangeFormatterBase {
* {@inheritdoc}
*/
public static function defaultSettings() {
- return array(
+ return [
'format_type' => 'medium',
- ) + parent::defaultSettings();
+ ] + parent::defaultSettings();
}
/**
@@ -114,13 +114,13 @@ public function settingsForm(array $form, FormStateInterface $form_state) {
$options[$type] = $type_info->label() . ' (' . $format . ')';
}
- $form['format_type'] = array(
+ $form['format_type'] = [
'#type' => 'select',
'#title' => t('Date format'),
'#description' => $this->t('Choose a format for displaying the dates. Be sure to set a format appropriate for the field, i.e. omitting time for a field that only has a date.'),
'#options' => $options,
'#default_value' => $this->getSetting('format_type'),
- );
+ ];
return $form;
}
@@ -133,7 +133,7 @@ public function settingsSummary() {
$date = DrupalDateTime::createFromTimestamp(REQUEST_TIME);
$this->setTimeZone($date);
- $summary[] = $this->t('Format: @display', array('@display' => $this->formatDate($date)));
+ $summary[] = $this->t('Format: @display', ['@display' => $this->formatDate($date)]);
return $summary;
}
diff --git a/core/modules/datetime/src/Plugin/Field/FieldFormatter/DateRangeFormatterBase.php b/core/modules/datetime/src/Plugin/Field/FieldFormatter/DateRangeFormatterBase.php
index f0b6b04..9db9053 100644
--- a/core/modules/datetime/src/Plugin/Field/FieldFormatter/DateRangeFormatterBase.php
+++ b/core/modules/datetime/src/Plugin/Field/FieldFormatter/DateRangeFormatterBase.php
@@ -81,10 +81,10 @@ public static function create(ContainerInterface $container, array $configuratio
* {@inheritdoc}
*/
public static function defaultSettings() {
- return array(
+ return [
'separator' => '-',
'timezone_override' => '',
- ) + parent::defaultSettings();
+ ] + parent::defaultSettings();
}
/**
@@ -93,20 +93,20 @@ public static function defaultSettings() {
public function settingsForm(array $form, FormStateInterface $form_state) {
$form = parent::settingsForm($form, $form_state);
- $form['separator'] = array(
+ $form['separator'] = [
'#type' => 'textfield',
'#title' => $this->t('Date separator'),
'#description' => $this->t('The string to separate the start and end dates'),
'#default_value' => $this->getSetting('separator'),
- );
+ ];
- $form['timezone_override'] = array(
+ $form['timezone_override'] = [
'#type' => 'select',
'#title' => $this->t('Time zone override'),
'#description' => $this->t('The time zone selected here will always be used'),
'#options' => system_time_zones(TRUE),
'#default_value' => $this->getSetting('timezone_override'),
- );
+ ];
return $form;
}
@@ -118,11 +118,11 @@ public function settingsSummary() {
$summary = parent::settingsSummary();
if ($separator = $this->getSetting('separator')) {
- $summary[] = $this->t('Separator: %separator', array('%separator' => $separator));
+ $summary[] = $this->t('Separator: %separator', ['%separator' => $separator]);
}
if ($override = $this->getSetting('timezone_override')) {
- $summary[] = $this->t('Time zone: @timezone', array('@timezone' => $override));
+ $summary[] = $this->t('Time zone: @timezone', ['@timezone' => $override]);
}
return $summary;
diff --git a/core/modules/datetime/src/Plugin/Field/FieldType/DateRangeFieldItemList.php b/core/modules/datetime/src/Plugin/Field/FieldType/DateRangeFieldItemList.php
index 1f9c6bb..2fedb5a 100644
--- a/core/modules/datetime/src/Plugin/Field/FieldType/DateRangeFieldItemList.php
+++ b/core/modules/datetime/src/Plugin/Field/FieldType/DateRangeFieldItemList.php
@@ -30,31 +30,31 @@ public function defaultValuesForm(array &$form, FormStateInterface $form_state)
if (empty($this->getFieldDefinition()->getDefaultValueCallback())) {
$default_value = $this->getFieldDefinition()->getDefaultValueLiteral();
- $element = array(
- '#parents' => array('default_value_input'),
- 'default_date_type' => array(
+ $element = [
+ '#parents' => ['default_value_input'],
+ 'default_date_type' => [
'#type' => 'select',
'#title' => t('Default dates'),
'#description' => t('Set a default value for these dates.'),
'#default_value' => isset($default_value[0]['default_date_type']) ? $default_value[0]['default_date_type'] : '',
- '#options' => array(
+ '#options' => [
static::DEFAULT_VALUE_NOW => t('Current date'),
static::DEFAULT_VALUE_CUSTOM => t('Relative date'),
- ),
+ ],
'#empty_value' => '',
- ),
- 'default_date' => array(
+ ],
+ 'default_date' => [
'#type' => 'textfield',
'#title' => t('Relative default value'),
'#description' => t("Describe a time by reference to the current day, like '+90 days' (90 days from the day the field is created) or '+1 Saturday' (the next Saturday). See strtotime for more details."),
'#default_value' => (isset($default_value[0]['default_date_type']) && $default_value[0]['default_date_type'] == static::DEFAULT_VALUE_CUSTOM) ? $default_value[0]['default_date'] : '',
- '#states' => array(
- 'visible' => array(
- ':input[id="edit-default-value-input-default-date-type"]' => array('value' => static::DEFAULT_VALUE_CUSTOM),
- )
- )
- )
- );
+ '#states' => [
+ 'visible' => [
+ ':input[id="edit-default-value-input-default-date-type"]' => ['value' => static::DEFAULT_VALUE_CUSTOM],
+ ],
+ ],
+ ],
+ ];
return $element;
}
@@ -65,7 +65,7 @@ public function defaultValuesForm(array &$form, FormStateInterface $form_state)
*/
public function defaultValuesFormValidate(array $element, array &$form, FormStateInterface $form_state) {
if ($form_state->getValue(['default_value_input', 'default_date_type']) == static::DEFAULT_VALUE_CUSTOM) {
- $is_strtotime = @strtotime($form_state->getValue(array('default_value_input', 'default_date')));
+ $is_strtotime = @strtotime($form_state->getValue(['default_value_input', 'default_date']));
if (!$is_strtotime) {
$form_state->setErrorByName('default_value_input][default_date', t('The relative date value entered is invalid.'));
}
@@ -76,13 +76,13 @@ public function defaultValuesFormValidate(array $element, array &$form, FormStat
* {@inheritdoc}
*/
public function defaultValuesFormSubmit(array $element, array &$form, FormStateInterface $form_state) {
- if ($form_state->getValue(array('default_value_input', 'default_date_type'))) {
- if ($form_state->getValue(array('default_value_input', 'default_date_type')) == static::DEFAULT_VALUE_NOW) {
+ if ($form_state->getValue(['default_value_input', 'default_date_type'])) {
+ if ($form_state->getValue(['default_value_input', 'default_date_type']) == static::DEFAULT_VALUE_NOW) {
$form_state->setValueForElement($element['default_date'], static::DEFAULT_VALUE_NOW);
}
- return array($form_state->getValue('default_value_input'));
+ return [$form_state->getValue('default_value_input')];
}
- return array();
+ return [];
}
/**
@@ -100,14 +100,14 @@ public static function processDefaultValue($default_value, FieldableEntityInterf
// We only provide a default value for the first item, as do all fields.
// Otherwise, there is no way to clear out unwanted values on multiple
// value fields.
- $default_value = array(
- array(
+ $default_value = [
+ [
'start_value' => $value,
'start_date' => $date,
'end_value' => $value,
'end_date' => $date,
- )
- );
+ ],
+ ];
}
return $default_value;
}
diff --git a/core/modules/datetime/src/Plugin/Field/FieldType/DateRangeItem.php b/core/modules/datetime/src/Plugin/Field/FieldType/DateRangeItem.php
index 6aca3b2..3e8aafa 100644
--- a/core/modules/datetime/src/Plugin/Field/FieldType/DateRangeItem.php
+++ b/core/modules/datetime/src/Plugin/Field/FieldType/DateRangeItem.php
@@ -26,9 +26,9 @@ class DateRangeItem extends FieldItemBase {
* {@inheritdoc}
*/
public static function defaultStorageSettings() {
- return array(
- 'daterange_type' => 'daterange',
- ) + parent::defaultStorageSettings();
+ return [
+ 'daterange_type' => 'datetime',
+ ] + parent::defaultStorageSettings();
}
/**
@@ -74,43 +74,43 @@ public static function propertyDefinitions(FieldStorageDefinitionInterface $fiel
* {@inheritdoc}
*/
public static function schema(FieldStorageDefinitionInterface $field_definition) {
- return array(
- 'columns' => array(
- 'start_value' => array(
+ return [
+ 'columns' => [
+ 'start_value' => [
'description' => 'The start date value.',
'type' => 'varchar',
'length' => 20,
- ),
- 'end_value' => array(
+ ],
+ 'end_value' => [
'description' => 'The end date value.',
'type' => 'varchar',
'length' => 20,
- ),
- ),
- 'indexes' => array(
- 'start_value' => array('start_value'),
- 'end_value' => array('end_value'),
- ),
- );
+ ],
+ ],
+ 'indexes' => [
+ 'start_value' => ['start_value'],
+ 'end_value' => ['end_value'],
+ ],
+ ];
}
/**
* {@inheritdoc}
*/
public function storageSettingsForm(array &$form, FormStateInterface $form_state, $has_data) {
- $element = array();
+ $element = [];
- $element['datetime_type'] = array(
+ $element['daterange_type'] = [
'#type' => 'select',
'#title' => $this->t('Date type'),
'#description' => $this->t('Choose the type of date to create.'),
- '#default_value' => $this->getSetting('datetime_type'),
- '#options' => array(
+ '#default_value' => $this->getSetting('daterange_type'),
+ '#options' => [
static::DATERANGE_TYPE_DATETIME => t('Date and time'),
static::DATERANGE_TYPE_DATE => t('Date only'),
- ),
+ ],
'#disabled' => $has_data,
- );
+ ];
return $element;
}
diff --git a/core/modules/datetime/src/Plugin/Field/FieldWidget/DateRangeDatelistWidget.php b/core/modules/datetime/src/Plugin/Field/FieldWidget/DateRangeDatelistWidget.php
index ffc54f5..4dea3e7 100644
--- a/core/modules/datetime/src/Plugin/Field/FieldWidget/DateRangeDatelistWidget.php
+++ b/core/modules/datetime/src/Plugin/Field/FieldWidget/DateRangeDatelistWidget.php
@@ -48,6 +48,7 @@ public function formElement(FieldItemListInterface $items, $delta, array $elemen
// Set up the date part order array.
switch ($date_order) {
+ default:
case 'YMD':
$date_part_order = array('year', 'month', 'day');
break;
@@ -61,29 +62,30 @@ public function formElement(FieldItemListInterface $items, $delta, array $elemen
break;
}
switch ($time_type) {
- case '24':
- $date_part_order = array_merge($date_part_order, array('hour', 'minute'));
- break;
+ default:
+ case '24':
+ $date_part_order = array_merge($date_part_order, array('hour', 'minute'));
+ break;
- case '12':
- $date_part_order = array_merge($date_part_order, array('hour', 'minute', 'ampm'));
- break;
+ case '12':
+ $date_part_order = array_merge($date_part_order, array('hour', 'minute', 'ampm'));
+ break;
- case 'none':
- break;
+ case 'none':
+ break;
}
- $element['start_value'] = array(
+ $element['start_value'] = [
'#type' => 'datelist',
'#date_increment' => $increment,
'#date_part_order' => $date_part_order,
- ) + $element['start_value'];
+ ] + $element['start_value'];
- $element['end_value'] = array(
- '#type' => 'datelist',
- '#date_increment' => $increment,
- '#date_part_order' => $date_part_order,
- ) + $element['end_value'];
+ $element['end_value'] = [
+ '#type' => 'datelist',
+ '#date_increment' => $increment,
+ '#date_part_order' => $date_part_order,
+ ] + $element['end_value'];
return $element;
}
diff --git a/core/modules/datetime/src/Plugin/Field/FieldWidget/DateRangeDefaultWidget.php b/core/modules/datetime/src/Plugin/Field/FieldWidget/DateRangeDefaultWidget.php
index e304b1f..20228a6 100644
--- a/core/modules/datetime/src/Plugin/Field/FieldWidget/DateRangeDefaultWidget.php
+++ b/core/modules/datetime/src/Plugin/Field/FieldWidget/DateRangeDefaultWidget.php
@@ -59,8 +59,6 @@ public static function create(ContainerInterface $container, array $configuratio
public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state) {
$element = parent::formElement($items, $delta, $element, $form, $form_state);
- debug([$this->getSettings()]);
-
// Identify the type of date and time elements to use.
switch ($this->getFieldSetting('daterange_type')) {
case DateRangeItem::DATERANGE_TYPE_DATE:
diff --git a/core/modules/datetime/src/Plugin/Field/FieldWidget/DateRangeWidgetBase.php b/core/modules/datetime/src/Plugin/Field/FieldWidget/DateRangeWidgetBase.php
index 28c7e12..d694c28 100644
--- a/core/modules/datetime/src/Plugin/Field/FieldWidget/DateRangeWidgetBase.php
+++ b/core/modules/datetime/src/Plugin/Field/FieldWidget/DateRangeWidgetBase.php
@@ -56,20 +56,20 @@ public function formElement(FieldItemListInterface $items, $delta, array $elemen
}
$start_date->setTimezone(new \DateTimeZone($element['start_value']['#date_timezone']));
$element['start_value']['#default_value'] = $start_date;
+ }
- if ($items[$delta]->end_date) {
- /** @var \Drupal\Core\Datetime\DrupalDateTime $start_date */
- $end_date = $items[$delta]->end_date;
- // The date was created and verified during field_load(), so it is safe to
- // use without further inspection.
- if ($this->getFieldSetting('daterange_type') == DateRangeItem::DATERANGE_TYPE_DATE) {
- // A date without time will pick up the current time, use the default
- // time.
- datetime_date_default_time($end_date);
- }
- $end_date->setTimezone(new \DateTimeZone($element['end_value']['#date_timezone']));
- $element['end_value']['#default_value'] = $end_date;
+ if ($items[$delta]->end_date) {
+ /** @var \Drupal\Core\Datetime\DrupalDateTime $start_date */
+ $end_date = $items[$delta]->end_date;
+ // The date was created and verified during field_load(), so it is safe to
+ // use without further inspection.
+ if ($this->getFieldSetting('daterange_type') == DateRangeItem::DATERANGE_TYPE_DATE) {
+ // A date without time will pick up the current time, use the default
+ // time.
+ datetime_date_default_time($end_date);
}
+ $end_date->setTimezone(new \DateTimeZone($element['end_value']['#date_timezone']));
+ $element['end_value']['#default_value'] = $end_date;
}
return $element;
@@ -101,16 +101,29 @@ public function massageFormValues(array $values, array $form, FormStateInterface
// Adjust the date for storage.
$start_date->setTimezone(new \DateTimezone(DATETIME_STORAGE_TIMEZONE));
$item['start_value'] = $start_date->format($format);
+ }
+
+ if (!empty($item['end_value']) && $item['end_value'] instanceof DrupalDateTime) {
+ /** @var \Drupal\Core\Datetime\DrupalDateTime $end_date */
+ $end_date = $item['end_value'];
+ switch ($this->getFieldSetting('daterange_type')) {
+ case DateRangeItem::DATERANGE_TYPE_DATE:
+ // If this is a date-only field, set it to the default time so the
+ // timezone conversion can be reversed.
+ datetime_date_default_time($end_date);
+ $format = DATETIME_DATE_STORAGE_FORMAT;
+ break;
- if (!empty($item['end_value']) && $item['end_value'] instanceof DrupalDateTime) {
- /** @var \Drupal\Core\Datetime\DrupalDateTime $end_date */
- $end_date = $item['end_value'];
- // Adjust the date for storage.
- $end_date->setTimezone(new \DateTimezone(DATETIME_STORAGE_TIMEZONE));
- $item['end_value'] = $end_date->format($format);
+ default:
+ $format = DATETIME_DATETIME_STORAGE_FORMAT;
+ break;
}
+ // Adjust the date for storage.
+ $end_date->setTimezone(new \DateTimezone(DATETIME_STORAGE_TIMEZONE));
+ $item['end_value'] = $end_date->format($format);
}
}
+
return $values;
}