You are here

biblio_self.module in Biblio Autocomplete 7

Same filename and directory in other branches
  1. 6 plugins/biblio_self/biblio_self.module

Allows autocoompletion of Biblio fields from values previously used.

Plugin module for biblio_autocomplete.

File

plugins/biblio_self/biblio_self.module
View source
<?php

/**
 * @file
 * Allows autocoompletion of Biblio fields from values previously used.
 *
 * Plugin module for biblio_autocomplete.
 */

/**
 * Implements hook_biblio_autocomplete_info().
 *
 * @return $fields
 *   An array of Biblio fields with associated autocomplete data.
 *   Format:
 *     'biblio_field_to_autocomplete' => array('function' => 'autocomplete_callback_function')
 */
function biblio_self_biblio_autocomplete_info() {
  $fields = array(
    'biblio_secondary_title' => array(
      'function' => 'biblio_self_autocomplete_secondary_title',
    ),
    'biblio_tertiary_title' => array(
      'function' => 'biblio_self_autocomplete_tertiary_title',
    ),
    'biblio_alternate_title' => array(
      'function' => 'biblio_self_autocomplete_alternate_title',
    ),
    'biblio_original_publication' => array(
      'function' => 'biblio_self_autocomplete_original_publication',
    ),
    'biblio_short_title' => array(
      'function' => 'biblio_self_autocomplete_short_title',
    ),
    'biblio_publisher' => array(
      'function' => 'biblio_self_autocomplete_publisher',
    ),
    'biblio_place_published' => array(
      'function' => 'biblio_self_autocomplete_place_published',
    ),
    'biblio_type_of_work' => array(
      'function' => 'biblio_self_autocomplete_type_of_work',
    ),
    'biblio_translated_title' => array(
      'function' => 'biblio_self_autocomplete_translated_title',
    ),
  );
  return $fields;
}
function biblio_self_autocomplete_secondary_title($string) {
  return biblio_self_autocomplete($string, 'secondary_title');
}
function biblio_self_autocomplete_tertiary_title($string) {
  return biblio_self_autocomplete($string, 'tertiary_title');
}
function biblio_self_autocomplete_alternate_title($string) {
  return biblio_self_autocomplete($string, 'alternate_title');
}
function biblio_self_autocomplete_original_publication($string) {
  return biblio_self_autocomplete($string, 'original_publication');
}
function biblio_self_autocomplete_short_title($string) {
  return biblio_self_autocomplete($string, 'short_title');
}
function biblio_self_autocomplete_publisher($string) {
  return biblio_self_autocomplete($string, 'publisher');
}
function biblio_self_autocomplete_place_published($string) {
  return biblio_self_autocomplete($string, 'place_published');
}
function biblio_self_autocomplete_type_of_work($string) {
  return biblio_self_autocomplete($string, 'type_of_work');
}
function biblio_self_autocomplete_translated_title($string) {
  return biblio_self_autocomplete($string, 'translated_title');
}
function biblio_self_autocomplete($string, $field) {
  $field = 'biblio_' . $field;
  $query = db_select('biblio', 'b');
  $query
    ->fields('b', array(
    $field,
  ));
  $query
    ->distinct();
  $query
    ->condition($field, '%' . db_like($string) . '%', 'LIKE');
  $records = $query
    ->execute()
    ->fetchAll();
  $results = array();
  foreach ($records as $match) {
    $results[] = array(
      'key' => $match->{$field},
      'description' => $match->{$field},
      'provider' => 'Biblio',
    );
  }
  return $results;
}