1 date.elements.inc | date_select_validate($element, &$form_state) |
Validation function for date selector.
When used as a Views widget, the validation step always gets triggered, even with no form submission. Before form submission $element['#value'] contains a string, after submission it contains an array.
File
- core/
modules/ date/ date.elements.inc, line 727 - Date forms and form themes and validation.
Code
function date_select_validate($element, &$form_state) {
if (date_hidden_element($element)) {
return;
}
if (is_string($element['#value'])) {
return;
}
$input_exists = NULL;
$input = backdrop_array_get_nested_value($form_state['values'], $element['#parents'], $input_exists);
backdrop_alter('date_select_pre_validate', $element, $form_state, $input);
$label = !empty($element['#date_title']) ? $element['#date_title'] : (!empty($element['#title']) ? $element['#title'] : '');
if (isset($input['ampm'])) {
if ($input['ampm'] == 'pm' && $input['hour'] < 12) {
$input['hour'] += 12;
}
elseif ($input['ampm'] == 'am' && $input['hour'] == 12) {
$input['hour'] -= 12;
}
}
unset($input['ampm']);
$date = date_select_input_date($element, $input);
// If the field has errors, display them.
$error_field = implode('][', $element['#parents']);
$entered = array_values(array_filter($input));
if (empty($date) || !empty($date->errors)) {
// The input created a date but it has errors.
if (is_object($date) && !empty($date->errors)) {
if (count($date->errors) === 1) {
$error_list = ' ' . reset($date->errors);
}
else {
$error_list = theme('item_list', array('items' => $date->errors));
}
$message = t('The value input for field %field is invalid:', array('%field' => $label)) . $error_list;
form_set_error($error_field, $message);
return;
}
// Nothing was entered but the date is required.
elseif (empty($entered) && $element['#required']) {
$message = t('A valid date is required for %title.', array('%title' => $label));
form_set_error($error_field, $message);
return;
}
// Something was input but it wasn't enough to create a valid date.
elseif (!empty($entered)) {
$message = t('The value input for field %field is invalid.', array('%field' => $label));
form_set_error($error_field, $message);
return;
}
}
$value = date_is_date($date) ? $date->format(DATE_FORMAT_DATETIME) : NULL;
form_set_value($element, $value, $form_state);
}