function path_form_element_validate in Drupal 7
Form element validation handler for URL alias form element.
See also
2 string references to 'path_form_element_validate'
- path_form_node_form_alter in modules/
path/ path.module - Implements hook_form_BASE_FORM_ID_alter() for node_form().
- path_form_taxonomy_form_term_alter in modules/
path/ path.module - Implements hook_form_FORM_ID_alter() for taxonomy_form_term().
File
- modules/
path/ path.module, line 152 - Enables users to rename URLs.
Code
function path_form_element_validate($element, &$form_state, $complete_form) {
// Trim the submitted value.
$alias = trim($form_state['values']['path']['alias']);
if (!empty($alias)) {
form_set_value($element['alias'], $alias, $form_state);
// Node language (Locale module) needs special care. Since the language of
// the URL alias depends on the node language, and the node language can be
// switched right within the same form, we need to conditionally overload
// the originally assigned URL alias language.
// @todo Remove this after converting Path module to a field, and, after
// stopping Locale module from abusing the content language system.
if (isset($form_state['values']['language'])) {
form_set_value($element['language'], $form_state['values']['language'], $form_state);
}
$path = $form_state['values']['path'];
// Ensure that the submitted alias does not exist yet.
$query = db_select('url_alias')
->condition('alias', $path['alias'])
->condition('language', $path['language']);
if (!empty($path['source'])) {
$query
->condition('source', $path['source'], '<>');
}
$query
->addExpression('1');
$query
->range(0, 1);
if ($query
->execute()
->fetchField()) {
form_error($element, t('The alias is already in use.'));
}
}
}