public function field_validation_date_range2_validator::validate in Field Validation 7.2
Validate field.
Overrides field_validation_validator::validate
File
- plugins/
validator/ field_validation_date_range2_validator.inc, line 20
Class
Code
public function validate() {
$data = $this->value;
if ($data != '') {
$flag = FALSE;
$settings = $this->rule->settings;
$cycle = $settings['cycle'];
// support date, datetime
if (!is_numeric($data)) {
$data = strtotime($data);
}
$date_str = date("Y-m-d H:i:s", $data);
if ($cycle == 'global') {
//Support token value and value2, for example "value + 1 day".
$value = isset($this->item['value']) ? $this->item['value'] : '';
$value2 = isset($this->item['value2']) ? $this->item['value2'] : '';
// support date, datetime
if (!is_numeric($value)) {
$value = strtotime($value);
}
$value = date("Y-m-d H:i:s", $value);
// support date, datetime
if (!is_numeric($value2)) {
$value2 = strtotime($value2);
}
$value2 = date("Y-m-d H:i:s", $value2);
$tokens = array(
'value' => $value,
'value2' => $value2,
);
if (!empty($settings['min'])) {
$settings['min'] = strtr($settings['min'], $tokens);
$settings['min'] = strtotime($settings['min']);
$settings['min'] = date("Y-m-d H:i:s", $settings['min']);
}
if (!empty($settings['max'])) {
$settings['max'] = strtr($settings['max'], $tokens);
$settings['max'] = strtotime($settings['max']);
$settings['max'] = date("Y-m-d H:i:s", $settings['max']);
}
}
if ($cycle == 'year') {
$date_str = substr($date_str, 5);
}
elseif ($cycle == 'month') {
$date_str = substr($date_str, 8);
}
elseif ($cycle == 'week') {
$week_day = date('w', strtotime($date_str));
$date_str = substr($date_str, 10);
$date_str = $week_day . $date_str;
}
elseif ($cycle == 'day') {
$date_str = substr($date_str, 11);
}
elseif ($cycle == 'hour') {
$date_str = substr($date_str, 14);
}
elseif ($cycle == 'minute') {
$date_str = substr($date_str, 17);
}
if (!empty($settings['min']) && $date_str < $settings['min']) {
$flag = TRUE;
}
if (!empty($settings['max']) && $date_str > $settings['max']) {
$flag = TRUE;
}
if (!empty($settings['reverse'])) {
$flag = $flag ? FALSE : TRUE;
}
if ($flag) {
$this
->set_error();
}
}
}