function node_form_search_form_alter

Implements hook_form_FORM_ID_alter().

File

modules/node/node.module, line 2810

Code

function node_form_search_form_alter(&$form, $form_state) {
    if (isset($form['module']) && $form['module']['#value'] == 'node' && user_access('use advanced search')) {
        // Keyword boxes:
        $form['advanced'] = array(
            '#type' => 'fieldset',
            '#title' => t('Advanced search'),
            '#collapsible' => TRUE,
            '#collapsed' => TRUE,
            '#attributes' => array(
                'class' => array(
                    'search-advanced',
                ),
            ),
        );
        $form['advanced']['keywords'] = array(
            '#prefix' => '<div class="criterion">',
            '#suffix' => '</div>',
        );
        $form['advanced']['keywords']['or'] = array(
            '#type' => 'textfield',
            '#title' => t('Containing any of the words'),
            '#size' => 30,
            '#maxlength' => 255,
        );
        $form['advanced']['keywords']['phrase'] = array(
            '#type' => 'textfield',
            '#title' => t('Containing the phrase'),
            '#size' => 30,
            '#maxlength' => 255,
        );
        $form['advanced']['keywords']['negative'] = array(
            '#type' => 'textfield',
            '#title' => t('Containing none of the words'),
            '#size' => 30,
            '#maxlength' => 255,
        );
        // Node types:
        $types = array_map('check_plain', node_type_get_names());
        $form['advanced']['type'] = array(
            '#type' => 'checkboxes',
            '#title' => t('Only of the type(s)'),
            '#prefix' => '<div class="criterion">',
            '#suffix' => '</div>',
            '#options' => $types,
        );
        $form['advanced']['submit'] = array(
            '#type' => 'submit',
            '#value' => t('Advanced search'),
            '#prefix' => '<div class="action">',
            '#suffix' => '</div>',
            '#weight' => 100,
        );
        // Languages:
        $language_options = array();
        foreach (language_list('language') as $key => $entity) {
            if ($entity->enabled) {
                $language_options[$key] = $entity->name;
            }
        }
        if (count($language_options) > 1) {
            $form['advanced']['language'] = array(
                '#type' => 'checkboxes',
                '#title' => t('Languages'),
                '#prefix' => '<div class="criterion">',
                '#suffix' => '</div>',
                '#options' => $language_options,
            );
        }
        $form['#validate'][] = 'node_search_validate';
    }
}

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