function form_validate_machine_name in Drupal 7
Form element validation handler for machine_name elements.
Note that #maxlength is validated by _form_validate() already.
Related topics
1 string reference to 'form_validate_machine_name'
- system_element_info in modules/
system/ system.module - Implements hook_element_info().
File
- includes/
form.inc, line 3702 - Functions for form and batch generation and processing.
Code
function form_validate_machine_name(&$element, &$form_state) {
// Verify that the machine name not only consists of replacement tokens.
if (preg_match('@^' . $element['#machine_name']['replace'] . '+$@', $element['#value'])) {
form_error($element, t('The machine-readable name must contain unique characters.'));
}
// Verify that the machine name contains no disallowed characters.
if (preg_match('@' . $element['#machine_name']['replace_pattern'] . '@', $element['#value'])) {
if (!isset($element['#machine_name']['error'])) {
// Since a hyphen is the most common alternative replacement character,
// a corresponding validation error message is supported here.
if ($element['#machine_name']['replace'] == '-') {
form_error($element, t('The machine-readable name must contain only lowercase letters, numbers, and hyphens.'));
}
else {
form_error($element, t('The machine-readable name must contain only lowercase letters, numbers, and underscores.'));
}
}
else {
form_error($element, $element['#machine_name']['error']);
}
}
// Verify that the machine name is unique.
if ($element['#default_value'] !== $element['#value']) {
$function = $element['#machine_name']['exists'];
if ($function($element['#value'], $element, $form_state)) {
form_error($element, t('The machine-readable name is already in use. It must be unique.'));
}
}
}