public function property_validation_date_range_validator::validate in Field Validation 7.2
Validate property.
Overrides property_validation_validator::validate
File
- property_validation/
plugins/ validator/ property_validation_date_range_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') {
if (!empty($settings['min'])) {
$settings['min'] = strtotime($settings['min']);
$settings['min'] = date("Y-m-d H:i:s", $settings['min']);
}
if (!empty($settings['max'])) {
$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();
}
}
}