diff sites/all/modules/search_autocomplete/search_autocomplete.install @ 4:ce11bbd8f642

added modules
author danieleb <danielebarchiesi@me.com>
date Thu, 19 Sep 2013 10:38:44 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sites/all/modules/search_autocomplete/search_autocomplete.install	Thu Sep 19 10:38:44 2013 +0100
@@ -0,0 +1,338 @@
+<?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;
+}
\ No newline at end of file