function _webform_datetime_time in Webform 6.x
Same name and namespace in other branches
- 8.5 includes/webform.date.inc \_webform_datetime_time()
Callback for custom datetime time element.
Parameters
array $element: The element.
\Drupal\Core\Form\FormStateInterface $form_state: The form state.
\Drupal\Core\Datetime\DrupalDateTime|null $date: The date value.
See also
\Drupal\webform\Plugin\WebformElement\DateTime::prepare
1 string reference to '_webform_datetime_time'
- DateTime::prepare in src/
Plugin/ WebformElement/ DateTime.php - Prepare an element to be rendered within a webform.
File
- includes/
webform.date.inc, line 76 - Callback functions for date, datetime, and time elements.
Code
function _webform_datetime_time(array &$element, FormStateInterface $form_state, DrupalDateTime $date = NULL) {
// Make sure the time element is being displayed.
if (!isset($element['time'])) {
return;
}
// Apply time specific min/max to the element.
foreach ([
'min',
'max',
] as $property) {
if (!empty($element["#date_time_{$property}"])) {
$value = $element["#date_time_{$property}"];
}
elseif (!empty($element["#date_{$property}"])) {
$value = date('H:i:s', strtotime($element["#date_{$property}"]));
}
else {
$value = NULL;
}
if ($value) {
$element['time']["#{$property}"] = $value;
$element['time']['#attributes'][$property] = $value;
}
}
// Apply time step and format to the element.
if (!empty($element['#date_time_step'])) {
$element['time']['#step'] = $element['#date_time_step'];
$element['time']['#attributes']['step'] = $element['#date_time_step'];
}
if (!empty($element['#date_time_format'])) {
$element['time']['#time_format'] = $element['#date_time_format'];
}
// Remove extra attributes for date element.
unset($element['time']['#attributes']['data-min-year'], $element['time']['#attributes']['data-max-year']);
$type = isset($element['#date_time_element']) ? $element['#date_time_element'] : 'time';
switch ($type) {
case 'timepicker':
$element['time']['#type'] = 'webform_time';
$element['time']['#timepicker'] = TRUE;
break;
case 'time':
$element['time']['#type'] = 'webform_time';
break;
case 'text':
$element['time']['#element_validate'][] = [
'\\Drupal\\webform\\Element\\WebformTime',
'validateWebformTime',
];
break;
}
}