function _datex_date_popup_field_element_validate_callback in Datex 7.3
Form element validation callback for date popup form element.
1 string reference to '_datex_date_popup_field_element_validate_callback'
- datex_element_info_alter in ./
datex_date.inc - Adds datex as a date form element validator.
File
- datex_popup/
datex_popup.module, line 143
Code
function _datex_date_popup_field_element_validate_callback(&$element, &$fs) {
if (date_hidden_element($element)) {
return;
}
$greg = FALSE;
$calendar = _datex_date_field_calendar($element);
$calendar = _datex_date_field_calendar($element);
if (!$calendar) {
$calendar = datex_factory();
if (!$calendar) {
$calendar = datex_factory(NULL, 'en');
}
$greg = $calendar
->getCalendarName() !== 'persian';
}
$date_fmt = date_popup_date_format($element);
$time_fmt = date_popup_time_format($element);
$dg = date_popup_date_granularity($element);
$tg = date_popup_time_granularity($element);
$input = _datex_get_fs($element, $fs, NULL, TRUE);
$has_date_input = $input && isset($input['date']) && !empty($input['date']);
$has_time_input = $input && isset($input['time']) && !empty($input['time']);
$has_default = !empty($element['#default_value']);
$def = date_default_date($element);
$has_month = in_array('month', $dg);
$has_day = in_array('day', $dg);
list($from, $to) = date_range_years($element['#date_year_range']);
$from = _datex_popup_year_to_timestamp($calendar, $from, $greg) . '000';
$to = _datex_popup_year_to_timestamp($calendar, $to, $greg) . '000';
if (!$greg && !$has_month) {
$def
->setDate($def
->format('Y'), 6, $def
->format('j'));
}
if (!$greg && !$has_day) {
$def
->setDate($def
->format('Y'), $def
->format('n'), 25);
}
$calendar
->setTimestamp($def
->getTimestamp());
// Remove minute/second, if there should be none.
$v = _datex_get_fs($element, $fs, 'time', TRUE);
if ($v) {
if (count(explode(':', $v)) === 3 && !in_array('second', $tg, TRUE)) {
$v = explode(':', $v);
unset($v[2]);
$v = implode(':', $v);
_datex_set_fs($element, $fs, $v, 'time', TRUE);
}
if (count(explode(':', $v)) === 2 && !in_array('minute', $tg, TRUE)) {
$v = explode(':', $v);
unset($v[1]);
$v = implode(':', $v);
_datex_set_fs($element, $fs, $v, 'time', TRUE);
}
}
$v = _datex_get_fs($element, $fs, 'time', FALSE);
if ($v) {
if (count(explode(':', $v)) === 3 && !in_array('second', $tg, TRUE)) {
$v = explode(':', $v);
unset($v[2]);
$v = implode(':', $v);
_datex_set_fs($element, $fs, $v, 'time', FALSE);
}
if (count(explode(':', $v)) === 2 && !in_array('minute', $tg, TRUE)) {
$v = explode(':', $v);
unset($v[1]);
$v = implode(':', $v);
_datex_set_fs($element, $fs, $v, 'time', FALSE);
}
}
$parse = $has_date_input ? _datex_popup_parse($calendar, $input['date'], $dg) : NULL;
if ($parse === NULL) {
// Let date_popup handle this.
return;
}
if ($parse === FALSE) {
form_set_error($element['#name'], t('Invalid date'));
return;
}
$v = $calendar
->xFormat($date_fmt);
_datex_set_fs($element, $fs, $v, 'date', TRUE);
_datex_set_fs($element, $fs, $v, 'date', FALSE);
}