Value callback for a datetime element.
array $element: The form element whose value is being populated.
array $input: (optional) The incoming input to populate the form element. If this is FALSE, the element's default value should be returned. Defaults to FALSE.
array The data that will appear in the $element_state['values'] collection for this element. Return nothing to use the default.
function form_type_datetime_value($element, $input = FALSE) {
if ($input !== FALSE) {
$date_input = $element['#date_date_element'] != 'none' && !empty($input['date']) ? $input['date'] : '';
$time_input = $element['#date_time_element'] != 'none' && !empty($input['time']) ? $input['time'] : '';
$date_format = $element['#date_date_element'] != 'none' ? datetime_html5_format('date', $element) : '';
$time_format = $element['#date_time_element'] != 'none' ? datetime_html5_format('time', $element) : '';
$timezone = !empty($element['#date_timezone']) ? $element['#date_timezone'] : NULL;
// Seconds will be omitted in a post in case there's no entry.
if (!empty($time_input) && strlen($time_input) == 5) {
$time_input .= ':00';
}
$date = new DrupalDateTime(trim($date_input . ' ' . $time_input), $timezone, trim($date_format . ' ' . $time_format));
$input = array(
'date' => $date_input,
'time' => $time_input,
'object' => $date instanceof DrupalDateTime && !$date
->hasErrors() ? $date : NULL,
);
}
else {
$date = $element['#default_value'];
if ($date instanceof DrupalDateTime && !$date
->hasErrors()) {
$input = array(
'date' => $date
->format($element['#date_date_format']),
'time' => $date
->format($element['#date_time_format']),
'object' => $date,
);
}
else {
$input = array(
'date' => '',
'time' => '',
'object' => NULL,
);
}
}
return $input;
}