function double_field_allowed_values_setting_validate in Double Field 7.2
Element validate callback; check that the entered values are valid.
1 string reference to 'double_field_allowed_values_setting_validate'
File
- ./
double_field.module, line 606 - Defines "Double field" field type.
Code
function double_field_allowed_values_setting_validate($element, &$form_state) {
$settings = $form_state['values']['field']['settings'][$element['#subfield']];
$type = $settings['type'];
$values = list_extract_allowed_values($element['#value'], 'list_text', FALSE);
foreach ($values as $key => $value) {
if ($type == 'varchar' && drupal_strlen($key) > $settings['maxlength']) {
form_error($element, t('Allowed values list: each key must be a string at most !maxlength characters long.', array(
'!maxlength' => $settings['maxlength'],
)));
break;
}
elseif ($type == 'int' && !preg_match('/^-?\\d+$/', $key)) {
form_error($element, t('Allowed values list: keys must be integers.'));
break;
}
elseif ($type == 'int' && !double_field_validate_integer_range($key, $settings['size'])) {
form_error($element, t('Allowed values list: keys out of range.'));
break;
}
elseif (($type == 'float' || $type == 'decimal') && !is_numeric($key)) {
form_error($element, t('Allowed values list: each key must be a valid integer or float.'));
break;
}
elseif ($type == 'decimal' && !double_field_validate_decimal_range($key, $settings['precision'], $settings['scale'])) {
form_error($element, t('Allowed values list: keys out of range.'));
break;
}
}
if (!is_array($values)) {
form_error($element, t('Allowed values list: invalid input.'));
}
form_set_value($element, $values, $form_state);
}