Esempio n. 1
0
 /**
  * Validate
  *
  * @param string $key
  * @param string $value
  * @param string $label
  * @param array $fields
  * @return boolean
  */
 public function validate($key, $value, $label, &$fields)
 {
     unset($fields[$key]);
     $fields['>=' . $key] = null;
     $fields['<=' . $key] = null;
     if (!is_array($value)) {
         $this->addError($key, $this->getMessageInvalid(), ['#LABEL#' => $label]);
         return false;
     }
     if ($this->first_field === null) {
         $this->first_field = $this->min();
     }
     if ($this->second_field === null) {
         $this->second_field = $this->max();
     }
     $min_value = array_key_exists($this->min_key, $value) ? $value[$this->min_key] : null;
     if (!$this->first_field->validate($this->min_key, $min_value, $label, $fields)) {
         $this->addError($key, $this->getMessageInvalidMin(), ['#LABEL#' => $label, '#VALUE#' => $min_value]);
         return false;
     }
     $max_value = array_key_exists($this->max_key, $value) ? $value[$this->max_key] : null;
     if (!$this->second_field->validate($this->max_key, $max_value, $label, $fields)) {
         $this->addError($key, $this->getMessageInvalidMax(), ['#LABEL#' => $label, '#VALUE#' => $max_value]);
         return false;
     }
     if ($this->string()->length($max_value) > 0) {
         $max_time = $this->date()->makeTimeStamp($max_value, $this->format_input);
         $fields['<=' . $key] = $this->date()->convertTimeStamp($max_time);
     }
     if ($this->string()->length($min_value) > 0) {
         $min_time = $this->date()->makeTimeStamp($min_value, $this->format_input);
         $fields['>=' . $key] = $this->date()->convertTimeStamp($min_time);
     }
     if (isset($max_time) && isset($min_time)) {
         if ($max_time < $min_time) {
             $this->addError($key, $this->getMessageMinMoreMax(), ['#LABEL#' => $label, '#MIN#' => $min_value, '#MAX#' => $max_value]);
             return false;
         }
     }
     return true;
 }