annotate 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
rev   line source
danielebarchiesi@4 1 <?php
danielebarchiesi@4 2
danielebarchiesi@4 3 /**
danielebarchiesi@4 4 * @file
danielebarchiesi@4 5 * This file is used to install/update/delete the module tables in database
danielebarchiesi@4 6 *
danielebarchiesi@4 7 * @authors
danielebarchiesi@4 8 * Miroslav Talenberg (Dominique CLAUSE) <http://www.axiomcafe.fr/contact>
danielebarchiesi@4 9 *
danielebarchiesi@4 10 * Sponsored by:
danielebarchiesi@4 11 * www.axiomcafe.fr
danielebarchiesi@4 12 */
danielebarchiesi@4 13
danielebarchiesi@4 14 // -----------------------------------------------------------------------------------------------
danielebarchiesi@4 15 /**
danielebarchiesi@4 16 * Implements hook_schema().
danielebarchiesi@4 17 * Set the schema of database
danielebarchiesi@4 18 * @return the schema for of the table to create
danielebarchiesi@4 19 */
danielebarchiesi@4 20 function search_autocomplete_schema() {
danielebarchiesi@4 21 // schema for search_autocomplete database
danielebarchiesi@4 22 $schema['search_autocomplete_forms'] = array(
danielebarchiesi@4 23 'description' => t('Store the forms to autocomplete using Search Autocomplete.'),
danielebarchiesi@4 24 'fields' => array(
danielebarchiesi@4 25 'fid' => array(
danielebarchiesi@4 26 'type' => 'serial',
danielebarchiesi@4 27 'unsigned' => TRUE,
danielebarchiesi@4 28 'not null' => TRUE,
danielebarchiesi@4 29 ),
danielebarchiesi@4 30 'title' => array(
danielebarchiesi@4 31 'description' => 'Human readable name for the form',
danielebarchiesi@4 32 'type' => 'varchar',
danielebarchiesi@4 33 'length' => 255,
danielebarchiesi@4 34 'not null' => TRUE,
danielebarchiesi@4 35 'default' => '',
danielebarchiesi@4 36 ),
danielebarchiesi@4 37 'selector' => array(
danielebarchiesi@4 38 'description' => 'Reference id selector of the the form in drupal',
danielebarchiesi@4 39 'type' => 'varchar',
danielebarchiesi@4 40 'length' => 255,
danielebarchiesi@4 41 'not null' => TRUE,
danielebarchiesi@4 42 'default' => '',
danielebarchiesi@4 43 ),
danielebarchiesi@4 44 'weight' => array(
danielebarchiesi@4 45 'description' => 'Form weight in table',
danielebarchiesi@4 46 'type' => 'int',
danielebarchiesi@4 47 'not null' => TRUE,
danielebarchiesi@4 48 'default' => 0,
danielebarchiesi@4 49 ),
danielebarchiesi@4 50 'enabled' => array(
danielebarchiesi@4 51 'description' => 'Define if autocomplete is activated or not',
danielebarchiesi@4 52 'type' => 'int',
danielebarchiesi@4 53 'not null' => TRUE,
danielebarchiesi@4 54 'default' => 0,
danielebarchiesi@4 55 ),
danielebarchiesi@4 56 'parent_fid' => array(
danielebarchiesi@4 57 'description' => 'Define if the from follows the configuration of another one',
danielebarchiesi@4 58 'type' => 'int',
danielebarchiesi@4 59 'not null' => TRUE,
danielebarchiesi@4 60 'default' => 0,
danielebarchiesi@4 61 ),
danielebarchiesi@4 62 'min_char' => array(
danielebarchiesi@4 63 'description' => 'Minimum of character before triggering suggestions',
danielebarchiesi@4 64 'type' => 'int',
danielebarchiesi@4 65 'not null' => TRUE,
danielebarchiesi@4 66 'default' => 3,
danielebarchiesi@4 67 ),
danielebarchiesi@4 68 'max_sug' => array(
danielebarchiesi@4 69 'description' => 'Maximum number of suggestions',
danielebarchiesi@4 70 'type' => 'int',
danielebarchiesi@4 71 'not null' => TRUE,
danielebarchiesi@4 72 'default' => 10,
danielebarchiesi@4 73 ),
danielebarchiesi@4 74 'no_results' => array(
danielebarchiesi@4 75 'description' => 'Maximum number of suggestions',
danielebarchiesi@4 76 'type' => 'varchar',
danielebarchiesi@4 77 'length' => 50,
danielebarchiesi@4 78 'not null' => FALSE,
danielebarchiesi@4 79 'default' => '-- no results --',
danielebarchiesi@4 80 ),
danielebarchiesi@4 81 'auto_submit' => array(
danielebarchiesi@4 82 'description' => 'Define if form should be autosubmitted when suggestion is choosen',
danielebarchiesi@4 83 'type' => 'int',
danielebarchiesi@4 84 'not null' => TRUE,
danielebarchiesi@4 85 'default' => 1,
danielebarchiesi@4 86 ),
danielebarchiesi@4 87 'auto_redirect' => array(
danielebarchiesi@4 88 'description' => 'Define if user should be redirected to suggestion directly',
danielebarchiesi@4 89 'type' => 'int',
danielebarchiesi@4 90 'not null' => TRUE,
danielebarchiesi@4 91 'default' => 1,
danielebarchiesi@4 92 ),
danielebarchiesi@4 93 'translite' => array(
danielebarchiesi@4 94 'description' => 'Define if suggestion searches should be translited',
danielebarchiesi@4 95 'type' => 'int',
danielebarchiesi@4 96 'not null' => TRUE,
danielebarchiesi@4 97 'default' => 1,
danielebarchiesi@4 98 ),
danielebarchiesi@4 99 'data_source' => array(
danielebarchiesi@4 100 'description' => 'Should data come from callback or from static resource',
danielebarchiesi@4 101 'type' => 'int',
danielebarchiesi@4 102 'not null' => TRUE,
danielebarchiesi@4 103 'default' => 1,
danielebarchiesi@4 104 ),
danielebarchiesi@4 105 'data_callback' => array(
danielebarchiesi@4 106 'description' => 'Callback URL for data source',
danielebarchiesi@4 107 'type' => 'varchar',
danielebarchiesi@4 108 'length' => 255,
danielebarchiesi@4 109 'default' => '',
danielebarchiesi@4 110 ),
danielebarchiesi@4 111 'data_static' => array(
danielebarchiesi@4 112 'description' => 'Static text as a data',
danielebarchiesi@4 113 'type' => 'text',
danielebarchiesi@4 114 'size' => 'big',
danielebarchiesi@4 115 ),
danielebarchiesi@4 116 'theme' => array(
danielebarchiesi@4 117 'description' => 'Theme to use with this form',
danielebarchiesi@4 118 'type' => 'varchar',
danielebarchiesi@4 119 'length' => 255,
danielebarchiesi@4 120 'not null' => TRUE,
danielebarchiesi@4 121 'default' => 'lightness',
danielebarchiesi@4 122 ),
danielebarchiesi@4 123 ),
danielebarchiesi@4 124 'primary key' => array('fid'),
danielebarchiesi@4 125 );
danielebarchiesi@4 126
danielebarchiesi@4 127 return $schema;
danielebarchiesi@4 128 } // function search_autocomplete_schema
danielebarchiesi@4 129
danielebarchiesi@4 130 //-----------------------------------------------------------------------------------------------
danielebarchiesi@4 131 /**
danielebarchiesi@4 132 * Implements hook_install().
danielebarchiesi@4 133 */
danielebarchiesi@4 134 function search_autocomplete_install() {
danielebarchiesi@4 135 global $base_url;
danielebarchiesi@4 136
danielebarchiesi@4 137 $limit = variable_get('search_autocomplete_limit', 10);
danielebarchiesi@4 138 $trigger = variable_get('search_autocomplete_trigger', 3);
danielebarchiesi@4 139 $enabled = 1;
danielebarchiesi@4 140
danielebarchiesi@4 141 // ----------------
danielebarchiesi@4 142 // declare insertion statement
danielebarchiesi@4 143 $insert = db_insert('search_autocomplete_forms')
danielebarchiesi@4 144 ->fields(array('title', 'selector', 'weight', 'enabled', 'min_char', 'max_sug', 'auto_submit', 'auto_redirect', 'data_source', 'data_callback', 'data_static', 'theme'));
danielebarchiesi@4 145 $insert->values(array(
danielebarchiesi@4 146 'title' => st('Search page - Node Tab') . " (search/node/%)",
danielebarchiesi@4 147 'selector' => '#search-form[action="/search/node"] #edit-keys',
danielebarchiesi@4 148 'weight' => 0,
danielebarchiesi@4 149 'enabled' => $enabled,
danielebarchiesi@4 150 'min_char' => $trigger,
danielebarchiesi@4 151 'max_sug' => $limit,
danielebarchiesi@4 152 'translite' => 1,
danielebarchiesi@4 153 'auto_submit' => 1,
danielebarchiesi@4 154 'auto_redirect' => 1,
danielebarchiesi@4 155 'data_source' => 1,
danielebarchiesi@4 156 'data_callback' => 'autocomplete-nodes?filter=',
danielebarchiesi@4 157 'data_static' => '',
danielebarchiesi@4 158 'theme' => 'classic.css'
danielebarchiesi@4 159 ));
danielebarchiesi@4 160 $insert->values(array(
danielebarchiesi@4 161 'title' => st('Search page - User Tab') . " (search/user/%)",
danielebarchiesi@4 162 'selector' => '#search-form[action="/search/user"] #edit-keys',
danielebarchiesi@4 163 'weight' => 1,
danielebarchiesi@4 164 'enabled' => $enabled,
danielebarchiesi@4 165 'min_char' => $trigger,
danielebarchiesi@4 166 'max_sug' => $limit,
danielebarchiesi@4 167 'translite' => 1,
danielebarchiesi@4 168 'auto_submit' => 1,
danielebarchiesi@4 169 'auto_redirect' => 1,
danielebarchiesi@4 170 'data_source' => 1,
danielebarchiesi@4 171 'data_callback' => 'autocomplete-users?filter=',
danielebarchiesi@4 172 'data_static' => '',
danielebarchiesi@4 173 'theme' => 'classic.css'
danielebarchiesi@4 174 ));
danielebarchiesi@4 175 $insert->values(array(
danielebarchiesi@4 176 'title' => st('Search Block'),
danielebarchiesi@4 177 'selector' => "#edit-search-block-form--2",
danielebarchiesi@4 178 'weight' => 0,
danielebarchiesi@4 179 'enabled' => $enabled,
danielebarchiesi@4 180 'min_char' => $trigger,
danielebarchiesi@4 181 'max_sug' => $limit,
danielebarchiesi@4 182 'translite' => 1,
danielebarchiesi@4 183 'auto_submit' => 1,
danielebarchiesi@4 184 'auto_redirect' => 1,
danielebarchiesi@4 185 'data_source' => 1,
danielebarchiesi@4 186 'data_callback' => 'autocomplete-nodes?filter=',
danielebarchiesi@4 187 'data_static' => '',
danielebarchiesi@4 188 'theme' => 'classic.css'
danielebarchiesi@4 189 ));
danielebarchiesi@4 190 $insert->execute();
danielebarchiesi@4 191
danielebarchiesi@4 192 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>');
danielebarchiesi@4 193
danielebarchiesi@4 194
danielebarchiesi@4 195 } // function search_autocomplete_install
danielebarchiesi@4 196
danielebarchiesi@4 197 /**
danielebarchiesi@4 198 * Permission fix for update process from 6.x
danielebarchiesi@4 199 */
danielebarchiesi@4 200 function search_autocomplete_update_7000() {
danielebarchiesi@4 201 $t = get_t();
danielebarchiesi@4 202 // In Drupal 6 the permissions were wrapped in t(), but in Drupal 7 they are
danielebarchiesi@4 203 // not. So we want to make sure the database is storing the untranslated
danielebarchiesi@4 204 // permission or we could run into issues on upgraded Drupal 7 sites.
danielebarchiesi@4 205 db_update('role_permission')
danielebarchiesi@4 206 ->fields(array(
danielebarchiesi@4 207 'permission' => 'administer Search Autocomplete',
danielebarchiesi@4 208 ))
danielebarchiesi@4 209 ->condition('permission', $t('administer Search Autocomplete'))
danielebarchiesi@4 210 ->execute();
danielebarchiesi@4 211
danielebarchiesi@4 212 db_update('role_permission')
danielebarchiesi@4 213 ->fields(array(
danielebarchiesi@4 214 'permission' => 'use Search Autocomplete',
danielebarchiesi@4 215 ))
danielebarchiesi@4 216 ->condition('permission', $t('use Search Autocomplete'))
danielebarchiesi@4 217 ->execute();
danielebarchiesi@4 218 }
danielebarchiesi@4 219
danielebarchiesi@4 220 /**
danielebarchiesi@4 221 * Get ready for Search Autocomplete 7.3-x
danielebarchiesi@4 222 */
danielebarchiesi@4 223 function search_autocomplete_update_7300(&$sandbox) {
danielebarchiesi@4 224 $ret = array();
danielebarchiesi@4 225
danielebarchiesi@4 226 $num_deleted = db_drop_table('search_autocomplete_forms');
danielebarchiesi@4 227 $num_deleted &= db_drop_table('search_autocomplete_suggestions');
danielebarchiesi@4 228
danielebarchiesi@4 229 db_create_table('search_autocomplete_forms', drupal_get_schema('search_autocomplete_forms', TRUE));
danielebarchiesi@4 230 search_autocomplete_install();
danielebarchiesi@4 231
danielebarchiesi@4 232 return t('The update process is successfull.');
danielebarchiesi@4 233
danielebarchiesi@4 234 // In case of an error, simply throw an exception with an error message.
danielebarchiesi@4 235 throw new DrupalUpdateException('Something went wrong. Please uninstall and install the module again.');
danielebarchiesi@4 236 return $ret;
danielebarchiesi@4 237 }
danielebarchiesi@4 238 /**
danielebarchiesi@4 239 * Get ready for Search Autocomplete 7.x-3.0-rc2
danielebarchiesi@4 240 */
danielebarchiesi@4 241 function search_autocomplete_update_7301(&$sandbox) {
danielebarchiesi@4 242 global $base_url;
danielebarchiesi@4 243 $ret = array();
danielebarchiesi@4 244
danielebarchiesi@4 245 $result = db_select('search_autocomplete_forms', 'f')
danielebarchiesi@4 246 ->fields('f', array('fid', 'data_callback'))
danielebarchiesi@4 247 ->execute()
danielebarchiesi@4 248 ->fetchAll();
danielebarchiesi@4 249
danielebarchiesi@4 250 foreach ($result as $item) {
danielebarchiesi@4 251 db_update('search_autocomplete_forms')
danielebarchiesi@4 252 ->fields(array(
danielebarchiesi@4 253 'data_callback' => str_replace($base_url . "/", "", $item->data_callback)
danielebarchiesi@4 254 ))
danielebarchiesi@4 255 ->condition('fid', $item->fid)
danielebarchiesi@4 256 ->execute();
danielebarchiesi@4 257 }
danielebarchiesi@4 258 drupal_clear_js_cache();
danielebarchiesi@4 259
danielebarchiesi@4 260 return t('Update has:<br/>- change internal callback URL from absolute to relative.<br/>- clear JS cache.<br/> Done with success.');
danielebarchiesi@4 261
danielebarchiesi@4 262 // In case of an error, simply throw an exception with an error message.
danielebarchiesi@4 263 throw new DrupalUpdateException('Something went wrong. Please uninstall and install the module again.');
danielebarchiesi@4 264 return $ret;
danielebarchiesi@4 265 }
danielebarchiesi@4 266
danielebarchiesi@4 267 /**
danielebarchiesi@4 268 * Get ready for Search Autocomplete 7.x-3.0-rc3
danielebarchiesi@4 269 */
danielebarchiesi@4 270 function search_autocomplete_update_7302(&$sandbox) {
danielebarchiesi@4 271 $ret = array();
danielebarchiesi@4 272 cache_clear_all();
danielebarchiesi@4 273 return $ret;
danielebarchiesi@4 274 }
danielebarchiesi@4 275 /**
danielebarchiesi@4 276 * Get ready for Search Autocomplete 7.x-3.1
danielebarchiesi@4 277 */
danielebarchiesi@4 278 function search_autocomplete_update_7310(&$sandbox) {
danielebarchiesi@4 279 $ret = array();
danielebarchiesi@4 280
danielebarchiesi@4 281 $translite_field = array(
danielebarchiesi@4 282 'description' => 'Define if suggestion searches should be translited',
danielebarchiesi@4 283 'type' => 'int',
danielebarchiesi@4 284 'not null' => TRUE,
danielebarchiesi@4 285 'default' => 1,
danielebarchiesi@4 286 );
danielebarchiesi@4 287 db_add_field( 'search_autocomplete_forms', 'translite', $translite_field);
danielebarchiesi@4 288 $no_results_field = array(
danielebarchiesi@4 289 'description' => 'Maximum number of suggestions',
danielebarchiesi@4 290 'type' => 'varchar',
danielebarchiesi@4 291 'length' => 50,
danielebarchiesi@4 292 'not null' => FALSE,
danielebarchiesi@4 293 'default' => '-- no results --',
danielebarchiesi@4 294 );
danielebarchiesi@4 295 db_add_field( 'search_autocomplete_forms', 'no_results', $no_results_field);
danielebarchiesi@4 296
danielebarchiesi@4 297 drupal_clear_js_cache();
danielebarchiesi@4 298 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.');
danielebarchiesi@4 299
danielebarchiesi@4 300 // In case of an error, simply throw an exception with an error message.
danielebarchiesi@4 301 throw new DrupalUpdateException('Something went wrong. Please uninstall and install the module again.');
danielebarchiesi@4 302 return $ret;
danielebarchiesi@4 303 }
danielebarchiesi@4 304 // -----------------------------------------------------------------------------------------------
danielebarchiesi@4 305
danielebarchiesi@4 306 /**
danielebarchiesi@4 307 * Get ready for Search Autocomplete 7.x-3.2
danielebarchiesi@4 308 */
danielebarchiesi@4 309 function search_autocomplete_update_7320(&$sandbox) {
danielebarchiesi@4 310 // Create the definition for the field
danielebarchiesi@4 311 $new_field = array(
danielebarchiesi@4 312 'description' => 'Static text as a data',
danielebarchiesi@4 313 'type' => 'text',
danielebarchiesi@4 314 'size' => 'big',
danielebarchiesi@4 315 );
danielebarchiesi@4 316 db_change_field('search_autocomplete_forms', 'data_static', 'data_static', $new_field);
danielebarchiesi@4 317
danielebarchiesi@4 318 // Select data_callbacks of
danielebarchiesi@4 319 $result = db_select('search_autocomplete_forms', 'f')
danielebarchiesi@4 320 ->fields('f', array('fid', 'data_callback'))
danielebarchiesi@4 321 ->execute()
danielebarchiesi@4 322 ->fetchAll();
danielebarchiesi@4 323 foreach ($result as $item) {
danielebarchiesi@4 324 db_update('search_autocomplete_forms')
danielebarchiesi@4 325 ->fields(array(
danielebarchiesi@4 326 'data_callback' => $item->data_callback . '?filter=')
danielebarchiesi@4 327 )
danielebarchiesi@4 328 ->condition('data_callback', array('autocomplete-nodes', 'autocomplete-users'), 'IN')
danielebarchiesi@4 329 ->execute();
danielebarchiesi@4 330 }
danielebarchiesi@4 331
danielebarchiesi@4 332 return (t('Update has:') . '<br/>' . t('- changed column type "data_static" from TEXT to LONGTEXT.')
danielebarchiesi@4 333 . '<br/>' . t('- Add filter to VIEWS callback for performance improvement.'));
danielebarchiesi@4 334
danielebarchiesi@4 335 // In case of an error, simply throw an exception with an error message.
danielebarchiesi@4 336 throw new DrupalUpdateException('Something went wrong. Please uninstall and install the module again.');
danielebarchiesi@4 337 return $ret;
danielebarchiesi@4 338 }