view sites/all/modules/search_autocomplete/search_autocomplete.install @ 13:134d4b2e75f6

updated quicktabs and google analytics modules
author danieleb <danielebarchiesi@me.com>
date Tue, 29 Oct 2013 13:48:59 +0000
parents ce11bbd8f642
children
line wrap: on
line source
<?php

/**
 * @file
 * This file is used to install/update/delete the module tables in database
 *
 * @authors
 * Miroslav Talenberg (Dominique CLAUSE) <http://www.axiomcafe.fr/contact>
 *
 * Sponsored by:
 * www.axiomcafe.fr
 */

// -----------------------------------------------------------------------------------------------
/**
 * Implements hook_schema().
 * Set the schema of database
 * @return the schema for of the table to create
 */
function search_autocomplete_schema() {
  // schema for search_autocomplete database
  $schema['search_autocomplete_forms'] = array(
    'description' => t('Store the forms to autocomplete using Search Autocomplete.'),
    'fields' => array(
      'fid'       => array(
        'type'        => 'serial',
        'unsigned'    => TRUE,
        'not null'    => TRUE,
      ),
      'title'     => array(
        'description' => 'Human readable name for the form',
        'type'        => 'varchar',
        'length'      => 255,
        'not null'    => TRUE,
        'default'     => '',
      ),
      'selector'  => array(
        'description' => 'Reference id selector of the the form in drupal',
        'type'        => 'varchar',
        'length'      => 255,
        'not null'    => TRUE,
        'default'     => '',
      ),
      'weight'    => array(
        'description' => 'Form weight in table',
        'type'        => 'int',
        'not null'    => TRUE,
        'default'     => 0,
      ),
      'enabled'   => array(
        'description' => 'Define if autocomplete is activated or not',
        'type'        => 'int',
        'not null'    => TRUE,
        'default'     => 0,
      ),
      'parent_fid' => array(
        'description' => 'Define if the from follows the configuration of another one',
        'type'        => 'int',
        'not null'    => TRUE,
        'default'     => 0,
      ),
      'min_char'  => array(
        'description' => 'Minimum of character before triggering suggestions',
        'type'        => 'int',
        'not null'    => TRUE,
        'default'     => 3,
      ),
      'max_sug'   => array(
        'description' => 'Maximum number of suggestions',
        'type'        => 'int',
        'not null'    => TRUE,
        'default'     => 10,
      ),
      'no_results'   => array(
        'description' => 'Maximum number of suggestions',
        'type'        => 'varchar',
        'length'      => 50,
        'not null'    => FALSE,
        'default'     => '-- no results --',
      ),
      'auto_submit'   => array(
        'description' => 'Define if form should be autosubmitted when suggestion is choosen',
        'type'        => 'int',
        'not null'    => TRUE,
        'default'     => 1,
      ),
      'auto_redirect'   => array(
        'description' => 'Define if user should be redirected to suggestion directly',
        'type'        => 'int',
        'not null'    => TRUE,
        'default'     => 1,
      ),
      'translite'    => array(
        'description' => 'Define if suggestion searches should be translited',
        'type'        => 'int',
        'not null'    => TRUE,
        'default'     => 1,
      ),
      'data_source'  => array(
        'description' => 'Should data come from callback or from static resource',
        'type'        => 'int',
        'not null'    => TRUE,
        'default'     => 1,
      ),
      'data_callback'  => array(
        'description' => 'Callback URL for data source',
        'type'        => 'varchar',
        'length'      => 255,
        'default'     => '',
      ),
      'data_static'  => array(
        'description' => 'Static text as a data',
        'type'        => 'text',
        'size'         => 'big',
      ),
      'theme'  => array(
        'description' => 'Theme to use with this form',
        'type'        => 'varchar',
        'length'      => 255,
        'not null'    => TRUE,
        'default'     => 'lightness',
      ),
    ),
    'primary key' => array('fid'),
  );

  return $schema;
} // function search_autocomplete_schema

//-----------------------------------------------------------------------------------------------
/**
 * Implements hook_install().
 */
function search_autocomplete_install() {
  global $base_url;
  
  $limit            = variable_get('search_autocomplete_limit', 10);
  $trigger          = variable_get('search_autocomplete_trigger', 3);
  $enabled          = 1;

  // ----------------
  // declare insertion statement
  $insert = db_insert('search_autocomplete_forms')
                ->fields(array('title', 'selector', 'weight', 'enabled', 'min_char', 'max_sug', 'auto_submit', 'auto_redirect', 'data_source', 'data_callback', 'data_static', 'theme'));     
  $insert->values(array(
    'title' => st('Search page - Node Tab') . "  (search/node/%)",
    'selector'      => '#search-form[action="/search/node"] #edit-keys',
    'weight'        => 0,
    'enabled'       => $enabled,
    'min_char'      => $trigger,
    'max_sug'       => $limit,
    'translite'     => 1,
    'auto_submit'   => 1,
    'auto_redirect' => 1,
    'data_source'   => 1,
    'data_callback' => 'autocomplete-nodes?filter=',
    'data_static'   => '',
    'theme'         => 'classic.css'
  ));
  $insert->values(array(
    'title'     => st('Search page - User Tab') . "  (search/user/%)",
    'selector'  => '#search-form[action="/search/user"] #edit-keys',
    'weight'    => 1,
    'enabled'   => $enabled,
    'min_char'  => $trigger,
    'max_sug'   => $limit,
    'translite'     => 1,
    'auto_submit'   => 1,
    'auto_redirect' => 1,
    'data_source'   => 1,
    'data_callback' => 'autocomplete-users?filter=',
    'data_static'   => '',
    'theme'         => 'classic.css'
  ));
  $insert->values(array(
    'title'     => st('Search Block'),
    'selector'  => "#edit-search-block-form--2",
    'weight'    => 0,
    'enabled'   => $enabled,
    'min_char'  => $trigger,
    'max_sug'   => $limit,
    'translite'     => 1,
    'auto_submit'   => 1,
    'auto_redirect' => 1,
    'data_source'   => 1,
    'data_callback' => 'autocomplete-nodes?filter=',
    'data_static'   => '',
    'theme'         => 'classic.css'
  ));
  $insert->execute();

  drupal_set_message(st('Search Autocomplete is now correctly installed!') . "<br/>" . st('If you see some functionalities missing or broken, please post an issue here:') . '  <a href="http://drupal.org/project/issues/search_autocomplete">http://drupal.org/project/issues/search_autocomplete</a>');


} // function search_autocomplete_install

/**
 * Permission fix for update process from 6.x
 */
function search_autocomplete_update_7000() {
  $t = get_t();
  // In Drupal 6 the permissions were wrapped in t(), but in Drupal 7 they are
  // not. So we want to make sure the database is storing the untranslated
  // permission or we could run into issues on upgraded Drupal 7 sites.
  db_update('role_permission')
    ->fields(array(
      'permission' => 'administer Search Autocomplete',
    ))
    ->condition('permission', $t('administer Search Autocomplete'))
    ->execute();

  db_update('role_permission')
    ->fields(array(
      'permission' => 'use Search Autocomplete',
    ))
    ->condition('permission', $t('use Search Autocomplete'))
    ->execute();
}

/**
  * Get ready for Search Autocomplete 7.3-x
  */
function search_autocomplete_update_7300(&$sandbox) {
  $ret = array();

  $num_deleted =  db_drop_table('search_autocomplete_forms');
  $num_deleted &= db_drop_table('search_autocomplete_suggestions');
  
  db_create_table('search_autocomplete_forms', drupal_get_schema('search_autocomplete_forms', TRUE));
  search_autocomplete_install();
  
  return t('The update process is successfull.');

  // In case of an error, simply throw an exception with an error message.
  throw new DrupalUpdateException('Something went wrong. Please uninstall and install the module again.');
  return $ret;
}
/**
  * Get ready for Search Autocomplete 7.x-3.0-rc2
  */
function search_autocomplete_update_7301(&$sandbox) {
  global $base_url;
  $ret = array();
  
  $result = db_select('search_autocomplete_forms', 'f')
    ->fields('f', array('fid', 'data_callback'))
    ->execute()
    ->fetchAll();

  foreach ($result as $item) {
    db_update('search_autocomplete_forms')
      ->fields(array(
        'data_callback'   => str_replace($base_url . "/", "", $item->data_callback)
      ))
      ->condition('fid', $item->fid)
      ->execute();
  }
  drupal_clear_js_cache();

  return t('Update has:<br/>- change internal callback URL from absolute to relative.<br/>- clear JS cache.<br/> Done with success.');

  // In case of an error, simply throw an exception with an error message.
  throw new DrupalUpdateException('Something went wrong. Please uninstall and install the module again.');
  return $ret;
}

/**
  * Get ready for Search Autocomplete 7.x-3.0-rc3
  */
function search_autocomplete_update_7302(&$sandbox) {
  $ret = array();
  cache_clear_all();
  return $ret;
}
/**
  * Get ready for Search Autocomplete 7.x-3.1
  */
function search_autocomplete_update_7310(&$sandbox) {
  $ret = array();

  $translite_field = array(
    'description' => 'Define if suggestion searches should be translited',
    'type'        => 'int',
    'not null'    => TRUE,
    'default'     => 1,
  ); 
  db_add_field( 'search_autocomplete_forms', 'translite', $translite_field);
  $no_results_field = array(
    'description' => 'Maximum number of suggestions',
    'type'        => 'varchar',
    'length'      => 50,
    'not null'    => FALSE,
    'default'     => '-- no results --',
  ); 
  db_add_field( 'search_autocomplete_forms', 'no_results', $no_results_field);
  
  drupal_clear_js_cache();
  return t('Update has:<br/>- add a column "translite" in the search autocomplete database.<br/>- add a column "no_results" in the search autocomplete database.<br/> Done with success.');

  // In case of an error, simply throw an exception with an error message.
  throw new DrupalUpdateException('Something went wrong. Please uninstall and install the module again.');
  return $ret;
}
// -----------------------------------------------------------------------------------------------

/**
  * Get ready for Search Autocomplete 7.x-3.2
  */
function search_autocomplete_update_7320(&$sandbox) {
  // Create the definition for the field
  $new_field = array(
    'description' => 'Static text as a data',
    'type'        => 'text',
    'size'        => 'big',
  );
  db_change_field('search_autocomplete_forms', 'data_static', 'data_static', $new_field);
  
  // Select data_callbacks of 
  $result = db_select('search_autocomplete_forms', 'f')
    ->fields('f', array('fid', 'data_callback'))
    ->execute()
    ->fetchAll();
  foreach ($result as $item) {
    db_update('search_autocomplete_forms')
      ->fields(array(
        'data_callback'   => $item->data_callback . '?filter=')
      )
      ->condition('data_callback', array('autocomplete-nodes', 'autocomplete-users'), 'IN')
      ->execute();
  }

  return (t('Update has:') . '<br/>' . t('- changed column type "data_static" from TEXT to LONGTEXT.')
                           . '<br/>' . t('- Add filter to VIEWS callback for performance improvement.'));
  
  // In case of an error, simply throw an exception with an error message.
  throw new DrupalUpdateException('Something went wrong. Please uninstall and install the module again.');
  return $ret;
}