search_extra_type.module

Dummy module implementing a search type for search module testing.

File

drupal/core/modules/search/tests/modules/search_extra_type/search_extra_type.module
View source
<?php

/**
 * @file
 * Dummy module implementing a search type for search module testing.
 */

/**
 * Implements hook_search_info().
 */
function search_extra_type_search_info() {
  return array(
    'title' => 'Dummy search type',
    'path' => 'dummy_path',
    'conditions_callback' => 'search_extra_type_conditions',
  );
}

/**
 * Implements callback_search_conditions().
 *
 * Tests the conditions callback for hook_search_info().
 */
function search_extra_type_conditions() {
  $conditions = array();
  if (!empty($_REQUEST['search_conditions'])) {
    $conditions['search_conditions'] = $_REQUEST['search_conditions'];
  }
  return $conditions;
}

/**
 * Implements hook_search_execute().
 *
 * This is a dummy search, so when search "executes", we just return a dummy
 * result containing the keywords and a list of conditions.
 */
function search_extra_type_search_execute($keys = NULL, $conditions = NULL) {
  if (!$keys) {
    $keys = '';
  }
  return array(
    array(
      'link' => url('node'),
      'type' => 'Dummy result type',
      'title' => 'Dummy title',
      'snippet' => "Dummy search snippet to display. Keywords: {$keys}\n\nConditions: " . print_r($conditions, TRUE),
    ),
  );
}

/**
 * Implements hook_search_page().
 *
 * Adds some text to the search page so we can verify that it runs.
 */
function search_extra_type_search_page($results) {
  $output['prefix']['#markup'] = '<h2>Test page text is here</h2> <ol class="search-results">';
  foreach ($results as $entry) {
    $output[] = array(
      '#theme' => 'search_result',
      '#result' => $entry,
      '#module' => 'search_extra_type',
    );
  }
  $output['suffix']['#markup'] = '</ol>' . theme('pager');
  return $output;
}

/**
 * Implements hook_search_admin().
 */
function search_extra_type_search_admin() {

  // Output form for defining rank factor weights.
  $form['extra_type_settings'] = array(
    '#type' => 'fieldset',
    '#title' => t('Extra type settings'),
    '#tree' => TRUE,
  );
  $form['extra_type_settings']['boost'] = array(
    '#type' => 'select',
    '#title' => t('Boost method'),
    '#options' => array(
      'bi' => t('Bistromathic'),
      'ii' => t('Infinite Improbability'),
    ),
    '#default_value' => config('search_extra_type.settings')
      ->get('boost'),
  );
  $form['#submit'][] = 'search_extra_type_admin_submit';
  return $form;
}

/**
 * Form API callback: Save admin settings
 */
function search_extra_type_admin_submit($form, &$form_state) {
  config('search_extra_type.settings')
    ->set('boost', $form_state['values']['extra_type_settings']['boost'])
    ->save();
}

Functions