You are here

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

property_validation_date_range_validator

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();
    }
  }
}