search_autocomplete.form.add.inc in Search Autocomplete 7.4
Same filename and directory in other branches
Search Autocomplete Add a new form to Search Autocomplete form list.
Sponsored by: www.axiomcafe.fr
File
search_autocomplete.form.add.incView source
<?php
/**
 * @file
 * Search Autocomplete
 * Add a new form to Search Autocomplete form list.
 *
 * Sponsored by:
 * www.axiomcafe.fr
 */
/**
 * MENU CALLBACK: Define the page to add a form.
 *
 * @return array
 *   A rendered form
 */
function search_autocomplete_form_add() {
  $selector = '';
  if (isset($_REQUEST['selector'])) {
    $selector = urldecode($_REQUEST['selector']);
  }
  $form = array();
  // ------------------------------------------------------------------.
  $form['title'] = array(
    '#title' => t('Title'),
    '#description' => 'Please enter a title for this form',
    '#type' => 'textfield',
    '#default_value' => '',
    '#maxlength' => 255,
    '#required' => TRUE,
  );
  $descr = t('Enter a valid query selector for the form. This should be an id or a class surrounding the input box.') . '<br/>' . t('Do not include input. In case of a doubt, refer to the <a href="http://drupal-addict.com/nos-projets/search-autocomplete">documentation</a>');
  $form['selector'] = array(
    '#title' => t('Selector'),
    '#description' => $descr,
    '#type' => 'textfield',
    '#default_value' => $selector,
    '#maxlength' => 255,
    '#required' => TRUE,
  );
  // Submit button.
  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Save'),
  );
  return $form;
}
// ----------------------------------------------------------------------------.
/**
 * Implements hook_submit().
 *
 * Save the new form in database.
 */
function search_autocomplete_form_add_submit($form, &$form_state) {
  // So far so good!
  $ok_query = TRUE;
  // Get the form values.
  $values = $form_state['values'];
  // Check if already existing records.
  $result = db_select('search_autocomplete_forms', 'f')
    ->fields('f')
    ->condition('title', $values['title'])
    ->condition('selector', $values['selector'])
    ->execute()
    ->fetchAll();
  foreach ($result as $selector) {
    drupal_set_message(t("The title or the selector @selector already exists. Please choose another one.", array(
      '@selector' => $selector,
    )), 'error');
    return;
  }
  // Insert the new form in database.
  $fid = db_insert('search_autocomplete_forms')
    ->fields(array(
    'title' => $values['title'],
    'selector' => $values['selector'],
    'no_results' => json_encode(array(
      // manually add no_results default
      'label' => t('No results found for [search-phrase]. Click to perform full search.'),
      'value' => '[search-phrase]',
      'link' => '',
      'group' => array(
        'group_id' => 'no_results',
      ),
    )),
    'all_results' => json_encode(array(
      // manually add all_results default
      'label' => t('View all results for [search-phrase].'),
      'value' => '[search-phrase]',
      'link' => '',
      'group' => array(
        'group_id' => 'all_results',
      ),
    )),
  ))
    ->execute();
  // Redirect to configuration page.
  $form_state['redirect'] = 'admin/config/search/search_autocomplete/' . $fid . '/configure';
  // Give a return to the user.
  $ok_query ? drupal_set_message(t('The form has been created successfully!') . '<br/>' . t('Please check its configuration.')) : drupal_set_message(t("An error has occurred while creating the form. Please, double check your settings!"), 'error');
}Functions
| 
            Name | 
                  Description | 
|---|---|
| search_autocomplete_form_add | MENU CALLBACK: Define the page to add a form. | 
| search_autocomplete_form_add_submit | Implements hook_submit(). |