public static function DateRecurFieldItemList::processDefaultValue in Recurring Dates Field 3.0.x
Same name and namespace in other branches
- 8.2 src/Plugin/Field/FieldType/DateRecurFieldItemList.php \Drupal\date_recur\Plugin\Field\FieldType\DateRecurFieldItemList::processDefaultValue()
- 3.x src/Plugin/Field/FieldType/DateRecurFieldItemList.php \Drupal\date_recur\Plugin\Field\FieldType\DateRecurFieldItemList::processDefaultValue()
- 3.1.x src/Plugin/Field/FieldType/DateRecurFieldItemList.php \Drupal\date_recur\Plugin\Field\FieldType\DateRecurFieldItemList::processDefaultValue()
Processes the default value before being applied.
Defined or configured default values of a field might need some processing in order to be a valid runtime value for the field type; e.g., a date field could process the defined value of 'NOW' to a valid date.
Parameters
array $default_value: The unprocessed default value defined for the field, as a numerically indexed array of items, each item being an array of property/value pairs.
\Drupal\Core\Entity\FieldableEntityInterface $entity: The entity for which the default value is generated.
\Drupal\Core\Field\FieldDefinitionInterface $definition: The definition of the field.
Return value
array The return default value for the field.
Overrides DateRangeFieldItemList::processDefaultValue
File
- src/
Plugin/ Field/ FieldType/ DateRecurFieldItemList.php, line 162
Class
- DateRecurFieldItemList
- Recurring date field item list.
Namespace
Drupal\date_recur\Plugin\Field\FieldTypeCode
public static function processDefaultValue($default_value, FieldableEntityInterface $entity, FieldDefinitionInterface $definition) : array {
assert(is_array($default_value));
$defaultDateTimeZone = $default_value[0]['default_date_time_zone'] ?? NULL;
$defaultValue = FieldItemList::processDefaultValue($default_value, $entity, $definition);
$defaultValues = [
[],
];
$hasDefaultStartDateType = !empty($defaultValue[0]['default_date_type']);
$hasDefaultEndDateType = !empty($defaultValue[0]['default_end_date_type']);
if (!empty($defaultDateTimeZone) && ($hasDefaultStartDateType || $hasDefaultEndDateType)) {
$storageFormat = $definition
->getSetting('datetime_type') == DateRecurItem::DATETIME_TYPE_DATE ? DateRecurItem::DATE_STORAGE_FORMAT : DateRecurItem::DATETIME_STORAGE_FORMAT;
// Instruct 'value' and 'end_value' to convert from the localised time
// zone to UTC.
$formatSettings = [
'timezone' => DateTimeItemInterface::STORAGE_TIMEZONE,
];
if ($hasDefaultStartDateType) {
$start_date = new DrupalDateTime($defaultValue[0]['default_date'], $defaultDateTimeZone);
$start_value = $start_date
->format($storageFormat, $formatSettings);
$defaultValues[0]['value'] = $start_value;
$defaultValues[0]['start_date'] = $start_date;
}
if ($hasDefaultEndDateType) {
$end_date = new DrupalDateTime($defaultValue[0]['default_end_date'], $defaultDateTimeZone);
$end_value = $end_date
->format($storageFormat, $formatSettings);
$defaultValues[0]['end_value'] = $end_value;
$defaultValues[0]['end_date'] = $end_date;
}
$defaultValue = $defaultValues;
}
$rrule = $default_value[0]['default_rrule'] ?? NULL;
if (!empty($rrule)) {
$defaultValue[0]['rrule'] = $rrule;
}
$defaultTimeZone = $default_value[0]['default_time_zone'] ?? NULL;
if (!empty($defaultTimeZone)) {
$defaultValue[0]['timezone'] = $defaultTimeZone;
}
else {
$timeZone = \date_default_timezone_get();
if (empty($timeZone)) {
throw new \Exception('Something went wrong. User has no time zone.');
}
$defaultValue[0]['timezone'] = $timeZone;
}
unset($defaultValue[0]['default_time_zone']);
unset($defaultValue[0]['default_rrule']);
return $defaultValue;
}