/**
  * {@inheritdoc}
  */
 public function frontend_validate(array $item, $input_value)
 {
     $options = $item['options'];
     $messages = array('required' => str_replace(array('{label}'), array($options['label']), __('The {label} field is required', 'fw')), 'incorrect' => str_replace(array('{label}'), array($options['label']), __('The {label} field must contain a valid email', 'fw')));
     if ($options['required'] && !fw_strlen(trim($input_value))) {
         return $messages['required'];
     }
     if (!empty($input_value) && !filter_var($input_value, FILTER_VALIDATE_EMAIL)) {
         return $messages['incorrect'];
     }
 }
 /**
  * {@inheritdoc}
  */
 public function frontend_validate(array $item, $input_value)
 {
     $options = $item['options'];
     $messages = array('required' => str_replace(array('{label}'), array($options['label']), __('The {label} field is required', 'fw')), 'incorrect' => str_replace(array('{label}'), array($options['label']), __('The {label} field must be a valid website name', 'fw')));
     if (!$options['required'] && !fw_strlen(trim($input_value))) {
         return null;
     }
     if ($options['required'] && !fw_strlen(trim($input_value))) {
         return $messages['required'];
     }
     if (!preg_match('/^https?:\\/\\//', $input_value)) {
         $input_value = 'http://' . $input_value;
     }
     if (!empty($input_value) && !filter_var($input_value, FILTER_VALIDATE_URL)) {
         return $messages['incorrect'];
     }
 }
 /**
  * {@inheritdoc}
  */
 public function frontend_validate(array $item, $input_value)
 {
     $options = $item['options'];
     $messages = array('invalid' => str_replace(array('{label}'), array($options['label']), __('The {label} field must be a valid number', 'fw')), 'required' => str_replace(array('{label}'), array($options['label']), __('The {label} field is required', 'fw')), 'digits_min_singular' => str_replace(array('{label}'), array($options['label']), __('The {label} field must have minimum %d digit', 'fw')), 'digits_min_plural' => str_replace(array('{label}'), array($options['label']), __('The {label} field must have minimum %d digits', 'fw')), 'digits_max_singular' => str_replace(array('{label}'), array($options['label']), __('The {label} field must have maximum %d digit', 'fw')), 'digits_max_plural' => str_replace(array('{label}'), array($options['label']), __('The {label} field must have maximum %d digits', 'fw')), 'value_min' => str_replace(array('{label}'), array($options['label']), __('The {label} field minimum value must be %s', 'fw')), 'value_max' => str_replace(array('{label}'), array($options['label']), __('The {label} field maximum value must be %s', 'fw')));
     if ($options['required'] && !fw_strlen(trim($input_value))) {
         return $messages['required'];
     }
     if (!empty($input_value) && !preg_match($this->number_regex, $input_value)) {
         return $messages['invalid'];
     }
     if (!empty($input_value) && !empty($options['constraints']['constraint'])) {
         $constraint = $options['constraints']['constraint'];
         $constraint_data = $options['constraints'][$constraint];
         switch ($constraint) {
             case 'digits':
                 $length = fw_strlen(str_replace(array(',', '.', '-'), '', $input_value));
                 if ($constraint_data['min'] && $length < $constraint_data['min']) {
                     return sprintf($messages['digits_min_' . ($constraint_data['min'] == 1 ? 'singular' : 'plural')], $constraint_data['min']);
                 }
                 if ($constraint_data['max'] && $length > $constraint_data['max']) {
                     return sprintf($messages['digits_max_' . ($constraint_data['max'] == 1 ? 'singular' : 'plural')], $constraint_data['max']);
                 }
                 break;
             case 'value':
                 $value = doubleval($input_value);
                 if (!is_null($constraint_data['min']) && $value < $constraint_data['min']) {
                     return sprintf($messages['value_min'], $constraint_data['min'], $constraint_data['min'] == 1 ? '' : 's');
                 }
                 if (!is_null($constraint_data['max']) && $value > $constraint_data['max']) {
                     return sprintf($messages['value_max'], $constraint_data['max'], $constraint_data['max'] == 1 ? '' : 's');
                 }
                 break;
             default:
                 return 'Unknown constraint: ' . $constraint;
         }
     }
 }
 /**
  * {@inheritdoc}
  */
 public function frontend_validate(array $item, $input_value)
 {
     $options = $item['options'];
     $messages = array('required' => str_replace(array('{label}'), array($options['label']), __('The {label} field is required', 'fw')), 'characters_min_singular' => str_replace(array('{label}'), array($options['label']), __('The {label} field must contain minimum %d character', 'fw')), 'characters_min_plural' => str_replace(array('{label}'), array($options['label']), __('The {label} field must contain minimum %d characters', 'fw')), 'characters_max_singular' => str_replace(array('{label}'), array($options['label']), __('The {label} field must contain maximum %d character', 'fw')), 'characters_max_plural' => str_replace(array('{label}'), array($options['label']), __('The {label} field must contain maximum %d characters', 'fw')), 'words_min_singular' => str_replace(array('{label}'), array($options['label']), __('The {label} field must contain minimum %d word', 'fw')), 'words_min_plural' => str_replace(array('{label}'), array($options['label']), __('The {label} field must contain minimum %d words', 'fw')), 'words_max_singular' => str_replace(array('{label}'), array($options['label']), __('The {label} field must contain maximum %d word', 'fw')), 'words_max_plural' => str_replace(array('{label}'), array($options['label']), __('The {label} field must contain maximum %d words', 'fw')));
     if ($options['required'] && !fw_strlen(trim($input_value))) {
         return $messages['required'];
     }
     $length = fw_strlen($input_value);
     if ($length && !empty($options['constraints']['constraint'])) {
         $constraint = $options['constraints']['constraint'];
         $constraint_data = $options['constraints'][$constraint];
         switch ($constraint) {
             case 'characters':
                 if ($constraint_data['min'] && $length < $constraint_data['min']) {
                     return sprintf($messages['characters_min_' . ($constraint_data['min'] == 1 ? 'singular' : 'plural')], $constraint_data['min']);
                 }
                 if ($constraint_data['max'] && $length > $constraint_data['max']) {
                     return sprintf($messages['characters_max_' . ($constraint_data['max'] == 1 ? 'singular' : 'plural')], $constraint_data['max']);
                 }
                 break;
             case 'words':
                 $words_length = count(preg_split('/\\s+/', $input_value));
                 if ($constraint_data['min'] && $words_length < $constraint_data['min']) {
                     return sprintf($messages['words_min_' . ($constraint_data['min'] == 1 ? 'singular' : 'plural')], $constraint_data['min']);
                 }
                 if ($constraint_data['max'] && $words_length > $constraint_data['max']) {
                     return sprintf($messages['words_max_' . ($constraint_data['max'] == 1 ? 'singular' : 'plural')], $constraint_data['max']);
                 }
                 break;
             default:
                 return 'Unknown constraint: ' . $constraint;
         }
     }
 }