function _date_validation_date_range_check_data in Field Validation 7
1 call to _date_validation_date_range_check_data()
- date_validation_field_validation_validate in date_validation/
date_validation.validators.inc - Implements hook_field_validation_validate().
File
- date_validation/
date_validation.validators.inc, line 115 - Provides validation functionality and hooks
Code
function _date_validation_date_range_check_data($data) {
$date_range = array(
'unit' => 'global',
'start_contain' => TRUE,
'start' => '',
'end' => '',
'end_contain' => TRUE,
'less' => FALSE,
);
// if no value was specified, don't validate
if ($data == '') {
return $date_range;
}
if (strpos($data, '}') !== FALSE) {
list($first, $second) = explode('}', $data);
//remove space
$first = trim($first);
//remove "{"
$first = substr($first, 1);
$date_range['unit'] = trim($first);
list($start_raw, $end_raw) = explode(',', $second);
//remove space
$start_raw = trim($start_raw);
$end_raw = trim($end_raw);
$start_contain = substr($start_raw, 0, 1);
if ($start_contain == '[') {
$date_range['start_contain'] = TRUE;
}
elseif ($start_contain == '(') {
$date_range['start_contain'] = FALSE;
}
$start = substr($start_raw, 1);
$date_range['start'] = trim($start);
$end = substr($end_raw, 0, strlen($end_raw) - 1);
$date_range['end'] = trim($end);
$end_contain = substr($end_raw, strlen($end_raw) - 1, 1);
if ($end_contain == ']') {
$date_range['end_contain'] = TRUE;
}
elseif ($end_contain == ')') {
$date_range['end_contain'] = FALSE;
}
//support php date format when unit = 'global'
if ($date_range['unit'] == 'global') {
$date_range['start'] = strtotime($date_range['start']);
$date_range['start'] = date("Y-m-d H:i:s", $date_range['start']);
$date_range['end'] = strtotime($date_range['end']);
$date_range['end'] = date("Y-m-d H:i:s", $date_range['end']);
}
//if end less than start, reverse;
//then we could support: {year}(10-10 08:30:00, 02-13 20:30:00]
if ($date_range['end'] < $date_range['start']) {
$date_range['less'] = TRUE;
$start = $date_range['start'];
$start_contain = $date_range['start_contain'];
$date_range['start'] = $date_range['end'];
$date_range['end'] = $start;
$date_range['start_contain'] = $date_range['end_contain'] ? FALSE : TRUE;
$date_range['end_contain'] = $start_contain ? FALSE : TRUE;
}
}
return $date_range;
}