function path_form_element_validate

Form element validation handler for URL alias form element.

See also

path_form_node_form_alter()

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

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.'));
        }
    }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.