You are here

function search_autocomplete_update_6201 in Search Autocomplete 6.2

Get ready for version 2.0-alpha1 to 2.1

File

./search_autocomplete.install, line 247
This file is used to install/update/delete the module tables in database

Code

function search_autocomplete_update_6201() {
  $ret = array();
  $ok_result = TRUE;

  // so far so good
  // don't need the method field anymore
  if (db_column_exists('search_autocomplete_forms', 'method')) {
    $ret = array();
    db_drop_field($ret, 'search_autocomplete_forms', 'method');
  }
  if (db_column_exists('search_autocomplete_forms', 'form_id')) {
    $ret = array();
    db_drop_field($ret, 'search_autocomplete_forms', 'form_id');
  }
  if (db_column_exists('search_autocomplete_forms', 'sort')) {
    $ret = array();
    db_drop_field($ret, 'search_autocomplete_forms', 'sort');
  }

  // change sug_module to sug_dependencies
  if (db_column_exists('search_autocomplete_suggestions', 'sug_module')) {
    $ok_result &= db_query('ALTER TABLE {search_autocomplete_suggestions} CHANGE sug_module sug_dependencies VARCHAR(255) NOT NULL');
  }

  // add the query column
  if (!db_column_exists('search_autocomplete_suggestions', 'sug_query')) {
    $ret = array();
    db_add_field($ret, 'search_autocomplete_suggestions', 'sug_query', array(
      'description' => 'The database query for this suggestion',
      'type' => 'varchar',
      'length' => 512,
      'not null' => TRUE,
      'default' => '',
    ));
    $ok_result &= db_query('UPDATE {search_autocomplete_suggestions} SET sug_query = "%s" WHERE sid = 1', "SELECT n.title FROM {node} n WHERE n.status = 1 AND LOWER(n.title) LIKE LOWER(:like_word)");
    $ok_result &= db_query('UPDATE {search_autocomplete_suggestions} SET sug_query = "%s" WHERE sid = 2', "SELECT u.name FROM {users} u WHERE u.status = 1 AND LOWER(u.name) LIKE LOWER(:like_word)");
    $ok_result &= db_query('UPDATE {search_autocomplete_suggestions} SET sug_query = "%s" WHERE sid = 3', "SELECT t.name FROM {term_data} t WHERE LOWER(t.name) LIKE LOWER(:like_word)");
    $ok_result &= db_query('UPDATE {search_autocomplete_suggestions} SET sug_query = "%s" WHERE sid = 4', "SELECT c.subject FROM {comments} c WHERE c.subject LIKE LOWER(:like_word)");
    $ok_result &= db_query('UPDATE {search_autocomplete_suggestions} SET sug_query = "%s" WHERE sid = 5', "SELECT DISTINCT s.word FROM {search_index} s, {node} n WHERE s.type = 'node' AND n.nid = s.sid AND n.status = 1 AND LOWER(s.word) LIKE LOWER(:like_word)");

    // Add the default (zero fid) suggestions
    $sql = 'INSERT INTO {search_autocomplete_suggestions} (sid, sug_fid, sug_enabled, sug_prefix, sug_title, sug_name, sug_dependencies, sug_weight, sug_query) VALUES ' . '(%d, %d, %d, "%s", "%s", "%s", "%s", %d, "%s"),' . '(%d, %d, %d, "%s", "%s", "%s", "%s", %d, "%s"),' . '(%d, %d, %d, "%s", "%s", "%s", "%s", %d, "%s"),' . '(%d, %d, %d, "%s", "%s", "%s", "%s", %d, "%s"),' . '(%d, %d, %d, "%s", "%s", "%s", "%s", %d, "%s")';
    $variables = array(
      1,
      0,
      1,
      "node:",
      "Add node titles",
      "node_title",
      "",
      1,
      "SELECT n.title FROM {node} n WHERE n.status = 1 AND LOWER(n.title) LIKE LOWER(:like_word)",
      2,
      0,
      1,
      "user:",
      "Add node usernames",
      "username",
      "",
      2,
      "SELECT u.name FROM {users} u WHERE u.status = 1 AND LOWER(u.name) LIKE LOWER(:like_word)",
      3,
      0,
      1,
      "vocab:",
      "Add taxonomies",
      "taxo_title",
      "taxonomy",
      3,
      "SELECT t.name FROM {term_data} t WHERE LOWER(t.name) LIKE LOWER(:like_word)",
      4,
      0,
      1,
      "comment:",
      "Add node comment titles",
      "comment_title",
      "comment",
      4,
      "SELECT c.subject FROM {comments} c WHERE c.subject LIKE LOWER(:like_word)",
      5,
      0,
      1,
      "",
      "Add all possible words (any word appearing on your website)",
      "word_title",
      "search",
      5,
      "SELECT DISTINCT s.word FROM {search_index} s, {node} n WHERE s.type = 'node' AND n.nid = s.sid AND n.status = 1 AND LOWER(s.word) LIKE LOWER(:like_word)",
    );
    $ok_result &= db_query($sql, $variables);
  }
  if (!$ok_result) {
    drupal_set_message(st('An error has occured during 6201 update of Search Autocomplete module'), 'error');
  }

  // Rebuild system table contents.
  module_rebuild_cache();
  system_theme_data();
  return $ret;
}