Mercurial > hg > rr-repo
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