function webform_validate_date in Webform 6.3
Same name and namespace in other branches
- 5.2 components/date.inc \webform_validate_date()
- 5 components/date.inc \webform_validate_date()
- 6.2 components/date.inc \webform_validate_date()
- 7.4 components/date.inc \webform_validate_date()
- 7.3 components/date.inc \webform_validate_date()
Element validation for Webform date fields.
1 string reference to 'webform_validate_date'
- _webform_render_date in components/
date.inc - Implements _webform_render_component().
File
- components/
date.inc, line 275 - Webform module date component.
Code
function webform_validate_date($element, $form_state) {
// Check if the user filled the required fields.
foreach (array(
'day',
'month',
'year',
) as $field_type) {
if (!is_numeric($element[$field_type]['#value']) && $element['#required']) {
form_error($element, t('!name field is required.', array(
'!name' => $element['#title'],
)));
return;
}
}
if ($element['month']['#value'] !== '' || $element['day']['#value'] !== '' || $element['year']['#value'] !== '') {
// Check for a valid date.
if (!checkdate((int) $element['month']['#value'], (int) $element['day']['#value'], (int) $element['year']['#value'])) {
form_error($element, t('Entered !name is not a valid date.', array(
'!name' => $element['#title'],
)));
return;
}
// Create a timestamp of the entered value for comparison.
$timestamp = strtotime($element['year']['#value'] . '-' . $element['month']['#value'] . '-' . $element['day']['#value']);
$format = webform_date_format('short');
// Flip start and end if needed.
$date1 = strtotime($element['#start_date']);
$date2 = strtotime($element['#end_date']);
if ($date1 !== FALSE && $date2 !== FALSE) {
$start_date = $date1 < $date2 ? $date1 : $date2;
$end_date = $date1 > $date2 ? $date1 : $date2;
}
else {
$start_date = $date1;
$end_date = $date2;
}
// Check that the date is after the start date.
if ($start_date !== FALSE) {
if ($timestamp < $start_date) {
form_error($element, t('The entered date must be @start_date or later.', array(
'@start_date' => date($format, $start_date),
)));
}
}
// Check that the date is before the end date.
if ($end_date !== FALSE) {
if ($timestamp > $end_date) {
form_error($element, t('The entered date must be @end_date or earlier.', array(
'@end_date' => date($format, $end_date),
)));
}
}
}
}