function clientside_validation_field_validation_regular in Clientside Validation 7
2 calls to clientside_validation_field_validation_regular()
- clientside_validation_field_validation_after_build_recurse in clientside_validation_field_validation/
clientside_validation_field_validation.module - clientside_validation_field_validation_clientside_validation_form_alter in clientside_validation_field_validation/
clientside_validation_field_validation.module - Implements hook_clientside_validation_form_alter().
File
- clientside_validation_field_validation/
clientside_validation_field_validation.module, line 136 - Add clientside validation support for Field Validation
Code
function clientside_validation_field_validation_regular($form_id, $element, $rule, &$js_rules) {
if (!empty($rule['disabled'])) {
return;
}
if (isset($rule['col']) && $rule['col'] !== '') {
$parent_last = end($element['#parents']);
reset($element['#parents']);
if ($element['#type'] !== 'select' && $parent_last !== FALSE && $parent_last !== $rule['col']) {
return;
}
elseif ($element['#type'] == 'select' && isset($element['#value_key']) && $element['#value_key'] !== $rule['col']) {
return;
}
}
$el_name = $element['#name'];
if (isset($element['#multiple']) && $element['#multiple']) {
$el_name .= '[]';
}
$el_title = $el_name;
if (isset($element['#title'])) {
$el_title = $element['#title'];
}
switch ($rule['validator']) {
case 'regex':
case 'field_validation_regex_validator':
$message = isset($rule['error_message']) && !empty($rule['error_message']) ? $rule['error_message'] : t('Invalid value for !name', array(
'!name' => variable_get('clientside_validation_prefix', '') . $el_title . variable_get('clientside_validation_suffix', ''),
));
// Field Validation 1.x and 2.x
$data = isset($rule['data']) ? $rule['data'] : $rule['settings']['data'];
_clientside_validation_set_regex($el_name, $el_title, $js_rules, $data, $message);
break;
case 'min_length':
$message = isset($rule['error_message']) ? $rule['error_message'] : t('!name field has a minimum length of !minl characters.', array(
'!name' => variable_get('clientside_validation_prefix', '') . $el_title . variable_get('clientside_validation_suffix', ''),
'!minl' => $rule['data'],
));
_clientside_validation_set_minmaxlength($el_name, $el_title, $rule['data'], '', $js_rules, $message);
break;
case 'max_length':
$message = isset($rule['error_message']) ? $rule['error_message'] : t('!name field has a maximum length of !maxl characters.', array(
'!name' => variable_get('clientside_validation_prefix', '') . $el_title . variable_get('clientside_validation_suffix', ''),
'!maxl' => $rule['data'],
));
_clientside_validation_set_minmaxlength($el_name, $el_title, '', $rule['data'], $js_rules, $message);
break;
// Field Validation 2.x
case 'field_validation_length_validator':
$message = '';
$rule['settings']['min'] = isset($rule['settings']['min']) ? $rule['settings']['min'] : '';
$rule['settings']['max'] = isset($rule['settings']['max']) ? $rule['settings']['max'] : '';
if (isset($rule['error_message'])) {
$message = $rule['error_message'];
}
else {
if (!empty($rule['settings']['min'])) {
$message = t('!name field has a minimum length of !minl characters.', array(
'!name' => variable_get('clientside_validation_prefix', '') . $el_title . variable_get('clientside_validation_suffix', ''),
'!minl' => $rule['settings']['min'],
));
}
if (!empty($rule['settings']['max'])) {
$message = empty($message) ? t('!name field has a maximum length of !maxl characters.', array(
'!name' => variable_get('clientside_validation_prefix', '') . $el_title . variable_get('clientside_validation_suffix', ''),
'!maxl' => $rule['settings']['max'],
)) : $message . ' ' . t('and a maximum length of !maxl characters', array(
'!maxl' => $rule['settings']['maxl'],
));
}
}
_clientside_validation_set_minmaxlength($el_name, $el_title, $rule['settings']['min'], $rule['settings']['max'], $js_rules, $message);
break;
case 'min_words':
$message = isset($rule['error_message']) && !empty($rule['error_message']) ? $rule['error_message'] : '';
_clientside_validation_set_minmax_words($el_name, $el_title, $rule['data'], '', $js_rules, $message);
break;
case 'max_words':
$message = isset($rule['error_message']) && !empty($rule['error_message']) ? $rule['error_message'] : '';
_clientside_validation_set_minmax_words($el_name, $el_title, '', $rule['data'], $js_rules, $message);
break;
// Field Validation 2.x
case 'field_validation_words_validator':
$message = '';
$rule['settings']['min'] = isset($rule['settings']['min']) ? $rule['settings']['min'] : '';
$rule['settings']['max'] = isset($rule['settings']['max']) ? $rule['settings']['max'] : '';
if (isset($rule['error_message'])) {
$message = $rule['error_message'];
}
else {
if (!empty($rule['settings']['min'])) {
$message = t('!name field has a minimum length of !minl words.', array(
'!name' => variable_get('clientside_validation_prefix', '') . $el_title . variable_get('clientside_validation_suffix', ''),
'!minl' => $rule['settings']['min'],
));
}
if (!empty($rule['settings']['max'])) {
$message = empty($message) ? t('!name field has a maximum length of !maxl words.', array(
'!name' => variable_get('clientside_validation_prefix', '') . $el_title . variable_get('clientside_validation_suffix', ''),
'!maxl' => $rule['settings']['max'],
)) : $message . ' ' . t('and a maximum length of !maxl words', array(
'!maxl' => $rule['settings']['maxl'],
));
}
}
_clientside_validation_set_minmax_words($el_name, $el_title, $rule['settings']['min'], $rule['settings']['max'], $js_rules, $message);
break;
case 'plain_text':
case 'field_validation_plain_text_validator':
$message = isset($rule['error_message']) && !empty($rule['error_message']) ? $rule['error_message'] : '';
// Field Validation 1.x and 2.x
$data = isset($rule['data']) ? $rule['data'] : '';
_clientside_validation_set_plain_text($el_name, $el_title, $data, $js_rules, $message);
break;
case 'must_be_empty':
case 'field_validation_must_be_empty_validator':
$message = isset($rule['error_message']) && !empty($rule['error_message']) ? $rule['error_message'] : '';
_clientside_validation_set_specific_value($el_name, $el_title, '', $js_rules, $message);
break;
case 'blacklist':
case 'field_validation_blacklist_validator':
$message = isset($rule['error_message']) && !empty($rule['error_message']) ? $rule['error_message'] : '';
// Field Validation 1.x
if (isset($rule['data'])) {
$blacklist = explode(',', $rule['data']);
}
else {
$blacklist = explode(',', $rule['settings']['data']);
}
$blacklist = array_map('trim', $blacklist);
_clientside_validation_set_blacklist($el_name, $el_title, $blacklist, $js_rules, $message);
break;
case 'numeric':
case 'field_validation_numeric2_validator':
$range = array(
'min' => NULL,
'max' => NULL,
);
$message = isset($rule['error_message']) && !empty($rule['error_message']) ? $rule['error_message'] : '';
// Field Validation 1.x
if (isset($rule['data'])) {
$data = $rule['data'];
if (strpos($data, '|') !== FALSE) {
list($min, $max) = explode('|', $data);
if ($min != '' && is_numeric($min)) {
$range['min'] = (int) $min;
}
if ($max != '' && is_numeric($max)) {
$range['max'] = (int) $max;
}
}
else {
if ($data != '' && is_numeric($data)) {
$range['min'] = (int) $data;
}
}
}
else {
$range['min'] = isset($rule['settings']['min']) ? $rule['settings']['min'] : '';
$range['max'] = isset($rule['settings']['max']) ? $rule['settings']['max'] : '';
}
if (!empty($range['min']) || !empty($range['max'])) {
_clientside_validation_set_minmax($el_name, $el_title, $range['min'], $range['max'], $js_rules, $message);
}
else {
_clientside_validation_set_number_decimal($el_name, $el_title, '.', $js_rules, $message);
}
break;
case 'specific_value':
case 'field_validation_specific_value_validator':
// Field Validation 1.x and 2.x
$value = isset($rule['data']) ? explode(',', $rule['data']) : explode(',', $rule['settings']['data']);
$message = isset($rule['error_message']) && !empty($rule['error_message']) ? $rule['error_message'] : '';
_clientside_validation_set_specific_value($el_name, $el_title, $value, $js_rules, $message);
break;
case 'select_min':
$message = isset($rule['error_message']) && !empty($rule['error_message']) ? $rule['error_message'] : '';
_clientside_validation_set_minmaxlength_select($el_name, $el_title, $rule['data'], '', $js_rules, $message);
break;
case 'select_max':
$message = isset($rule['error_message']) && !empty($rule['error_message']) ? $rule['error_message'] : '';
_clientside_validation_set_minmaxlength_select($el_name, $el_title, '', $rule['data'], $js_rules, $message);
break;
case 'select_exact':
$message = isset($rule['error_message']) && !empty($rule['error_message']) ? $rule['error_message'] : '';
_clientside_validation_set_minmaxlength_select($el_name, $el_title, $rule['data'], $rule['data'], $js_rules, $message);
break;
case 'field_validation_number_of_selections_validator':
$message = '';
$rule['settings']['min'] = isset($rule['settings']['min']) ? $rule['settings']['min'] : '';
$rule['settings']['max'] = isset($rule['settings']['max']) ? $rule['settings']['max'] : '';
if (isset($rule['error_message'])) {
$message = $rule['error_message'];
}
else {
if (!empty($rule['settings']['min'])) {
$message = t('You must select a minimum of !minl items for !name.', array(
'!name' => _clientside_validation_set_title($el_title),
'!minl' => $rule['settings']['min'],
));
}
if (!empty($rule['settings']['max'])) {
$message = empty($message) ? t('You can\'t select more than !maxl items for !name.', array(
'!name' => _clientside_validation_set_title($el_title),
'!maxl' => $rule['settings']['max'],
)) : $message . ' ' . t('and a maximum of !maxl', array(
'!maxl' => $rule['settings']['maxl'],
));
}
}
_clientside_validation_set_minmaxlength_select($el_name, $el_title, $rule['settings']['min'], $rule['settings']['max'], $js_rules, $message);
break;
case 'field_validation_email_validator':
$message = isset($rule['error_message']) ? $rule['error_message'] : t('!name is not a valid email address', array(
'!name' => _clientside_validation_set_title($el_title),
));
_clientside_validation_set_email($el_name, $el_title, $js_rules, $message);
break;
case 'field_validation_url_validator':
$message = isset($rule['error_message']) ? $rule['error_message'] : t('!name is not a valid url', array(
'!name' => _clientside_validation_set_title($el_title),
));
_clientside_validation_set_url($el_name, $el_title, $js_rules, $message);
break;
default:
$message = isset($rule['error_message']) && !empty($rule['error_message']) ? $rule['error_message'] : t('Invalid value for !name', array(
'!name' => _clientside_validation_set_title($el_title),
));
$context = array(
'type' => 'field_validation',
'rule' => $rule,
'message' => $message,
);
if (isset($element['#entity_type'])) {
// Add an ajax based validation by default - but allow modules to alter
// it using hook_clientside_validation_rule_alter().
list($entity_id, $revision_id, $bundle) = entity_extract_ids($element['#entity_type'], $element['#entity']);
$js_rules[$el_name]['fieldValidationAjax'][$rule['name']] = array(
'language' => $element['#language'],
'delta' => $element['#delta'],
'entity_id' => $entity_id,
'revision_id' => $revision_id,
);
$variables = array(
'message' => $message,
'error_type' => 'fieldValidationAjax',
'element_name' => $el_name,
);
$js_rules[$el_name]['messages']['fieldValidationAjax'] = theme('clientside_error', $variables);
}
drupal_alter('clientside_validation_rule', $js_rules, $element, $context);
break;
}
}