annotate modules/forum/forum.install @ 2:b74b41bb73f0

-- Google analytics module
author danieleb <danielebarchiesi@me.com>
date Thu, 22 Aug 2013 17:22:54 +0100
parents ff03f76ab3fe
children
rev   line source
danielebarchiesi@0 1 <?php
danielebarchiesi@0 2
danielebarchiesi@0 3 /**
danielebarchiesi@0 4 * @file
danielebarchiesi@0 5 * Install, update, and uninstall functions for the Forum module.
danielebarchiesi@0 6 */
danielebarchiesi@0 7
danielebarchiesi@0 8 /**
danielebarchiesi@0 9 * Implements hook_install().
danielebarchiesi@0 10 */
danielebarchiesi@0 11 function forum_install() {
danielebarchiesi@0 12 // Set the weight of the forum.module to 1 so it is loaded after the taxonomy.module.
danielebarchiesi@0 13 db_update('system')
danielebarchiesi@0 14 ->fields(array('weight' => 1))
danielebarchiesi@0 15 ->condition('name', 'forum')
danielebarchiesi@0 16 ->execute();
danielebarchiesi@0 17 // Forum topics are published by default, but do not have any other default
danielebarchiesi@0 18 // options set (for example, they are not promoted to the front page).
danielebarchiesi@0 19 variable_set('node_options_forum', array('status'));
danielebarchiesi@0 20 }
danielebarchiesi@0 21
danielebarchiesi@0 22 /**
danielebarchiesi@0 23 * Implements hook_enable().
danielebarchiesi@0 24 */
danielebarchiesi@0 25 function forum_enable() {
danielebarchiesi@0 26 // If we enable forum at the same time as taxonomy we need to call
danielebarchiesi@0 27 // field_associate_fields() as otherwise the field won't be enabled until
danielebarchiesi@0 28 // hook modules_enabled is called which takes place after hook_enable events.
danielebarchiesi@0 29 field_associate_fields('taxonomy');
danielebarchiesi@0 30 // Create the forum vocabulary if it does not exist.
danielebarchiesi@0 31 $vocabulary = taxonomy_vocabulary_load(variable_get('forum_nav_vocabulary', 0));
danielebarchiesi@0 32 if (!$vocabulary) {
danielebarchiesi@0 33 $edit = array(
danielebarchiesi@0 34 'name' => t('Forums'),
danielebarchiesi@0 35 'machine_name' => 'forums',
danielebarchiesi@0 36 'description' => t('Forum navigation vocabulary'),
danielebarchiesi@0 37 'hierarchy' => 1,
danielebarchiesi@0 38 'module' => 'forum',
danielebarchiesi@0 39 'weight' => -10,
danielebarchiesi@0 40 );
danielebarchiesi@0 41 $vocabulary = (object) $edit;
danielebarchiesi@0 42 taxonomy_vocabulary_save($vocabulary);
danielebarchiesi@0 43 variable_set('forum_nav_vocabulary', $vocabulary->vid);
danielebarchiesi@0 44 }
danielebarchiesi@0 45
danielebarchiesi@0 46 // Create the 'taxonomy_forums' field if it doesn't already exist.
danielebarchiesi@0 47 if (!field_info_field('taxonomy_forums')) {
danielebarchiesi@0 48 $field = array(
danielebarchiesi@0 49 'field_name' => 'taxonomy_forums',
danielebarchiesi@0 50 'type' => 'taxonomy_term_reference',
danielebarchiesi@0 51 'settings' => array(
danielebarchiesi@0 52 'allowed_values' => array(
danielebarchiesi@0 53 array(
danielebarchiesi@0 54 'vocabulary' => $vocabulary->machine_name,
danielebarchiesi@0 55 'parent' => 0,
danielebarchiesi@0 56 ),
danielebarchiesi@0 57 ),
danielebarchiesi@0 58 ),
danielebarchiesi@0 59 );
danielebarchiesi@0 60 field_create_field($field);
danielebarchiesi@0 61
danielebarchiesi@0 62 // Create a default forum so forum posts can be created.
danielebarchiesi@0 63 $edit = array(
danielebarchiesi@0 64 'name' => t('General discussion'),
danielebarchiesi@0 65 'description' => '',
danielebarchiesi@0 66 'parent' => array(0),
danielebarchiesi@0 67 'vid' => $vocabulary->vid,
danielebarchiesi@0 68 );
danielebarchiesi@0 69 $term = (object) $edit;
danielebarchiesi@0 70 taxonomy_term_save($term);
danielebarchiesi@0 71
danielebarchiesi@0 72 // Create the instance on the bundle.
danielebarchiesi@0 73 $instance = array(
danielebarchiesi@0 74 'field_name' => 'taxonomy_forums',
danielebarchiesi@0 75 'entity_type' => 'node',
danielebarchiesi@0 76 'label' => $vocabulary->name,
danielebarchiesi@0 77 'bundle' => 'forum',
danielebarchiesi@0 78 'required' => TRUE,
danielebarchiesi@0 79 'widget' => array(
danielebarchiesi@0 80 'type' => 'options_select',
danielebarchiesi@0 81 ),
danielebarchiesi@0 82 'display' => array(
danielebarchiesi@0 83 'default' => array(
danielebarchiesi@0 84 'type' => 'taxonomy_term_reference_link',
danielebarchiesi@0 85 'weight' => 10,
danielebarchiesi@0 86 ),
danielebarchiesi@0 87 'teaser' => array(
danielebarchiesi@0 88 'type' => 'taxonomy_term_reference_link',
danielebarchiesi@0 89 'weight' => 10,
danielebarchiesi@0 90 ),
danielebarchiesi@0 91 ),
danielebarchiesi@0 92 );
danielebarchiesi@0 93 field_create_instance($instance);
danielebarchiesi@0 94 }
danielebarchiesi@0 95
danielebarchiesi@0 96 // Ensure the forum node type is available.
danielebarchiesi@0 97 node_types_rebuild();
danielebarchiesi@0 98 $types = node_type_get_types();
danielebarchiesi@0 99 node_add_body_field($types['forum']);
danielebarchiesi@0 100 }
danielebarchiesi@0 101
danielebarchiesi@0 102 /**
danielebarchiesi@0 103 * Implements hook_uninstall().
danielebarchiesi@0 104 */
danielebarchiesi@0 105 function forum_uninstall() {
danielebarchiesi@0 106 // Load the dependent Taxonomy module, in case it has been disabled.
danielebarchiesi@0 107 drupal_load('module', 'taxonomy');
danielebarchiesi@0 108
danielebarchiesi@0 109 variable_del('forum_containers');
danielebarchiesi@0 110 variable_del('forum_hot_topic');
danielebarchiesi@0 111 variable_del('forum_per_page');
danielebarchiesi@0 112 variable_del('forum_order');
danielebarchiesi@0 113 variable_del('forum_block_num_active');
danielebarchiesi@0 114 variable_del('forum_block_num_new');
danielebarchiesi@0 115 variable_del('node_options_forum');
danielebarchiesi@0 116
danielebarchiesi@0 117 field_delete_field('taxonomy_forums');
danielebarchiesi@0 118 // Purge field data now to allow taxonomy module to be uninstalled
danielebarchiesi@0 119 // if this is the only field remaining.
danielebarchiesi@0 120 field_purge_batch(10);
danielebarchiesi@0 121 }
danielebarchiesi@0 122
danielebarchiesi@0 123 /**
danielebarchiesi@0 124 * Implements hook_schema().
danielebarchiesi@0 125 */
danielebarchiesi@0 126 function forum_schema() {
danielebarchiesi@0 127 $schema['forum'] = array(
danielebarchiesi@0 128 'description' => 'Stores the relationship of nodes to forum terms.',
danielebarchiesi@0 129 'fields' => array(
danielebarchiesi@0 130 'nid' => array(
danielebarchiesi@0 131 'type' => 'int',
danielebarchiesi@0 132 'unsigned' => TRUE,
danielebarchiesi@0 133 'not null' => TRUE,
danielebarchiesi@0 134 'default' => 0,
danielebarchiesi@0 135 'description' => 'The {node}.nid of the node.',
danielebarchiesi@0 136 ),
danielebarchiesi@0 137 'vid' => array(
danielebarchiesi@0 138 'type' => 'int',
danielebarchiesi@0 139 'unsigned' => TRUE,
danielebarchiesi@0 140 'not null' => TRUE,
danielebarchiesi@0 141 'default' => 0,
danielebarchiesi@0 142 'description' => 'Primary Key: The {node}.vid of the node.',
danielebarchiesi@0 143 ),
danielebarchiesi@0 144 'tid' => array(
danielebarchiesi@0 145 'type' => 'int',
danielebarchiesi@0 146 'unsigned' => TRUE,
danielebarchiesi@0 147 'not null' => TRUE,
danielebarchiesi@0 148 'default' => 0,
danielebarchiesi@0 149 'description' => 'The {taxonomy_term_data}.tid of the forum term assigned to the node.',
danielebarchiesi@0 150 ),
danielebarchiesi@0 151 ),
danielebarchiesi@0 152 'indexes' => array(
danielebarchiesi@0 153 'forum_topic' => array('nid', 'tid'),
danielebarchiesi@0 154 'tid' => array('tid'),
danielebarchiesi@0 155 ),
danielebarchiesi@0 156 'primary key' => array('vid'),
danielebarchiesi@0 157 'foreign keys' => array(
danielebarchiesi@0 158 'forum_node' => array(
danielebarchiesi@0 159 'table' => 'node',
danielebarchiesi@0 160 'columns' => array(
danielebarchiesi@0 161 'nid' => 'nid',
danielebarchiesi@0 162 'vid' => 'vid',
danielebarchiesi@0 163 ),
danielebarchiesi@0 164 ),
danielebarchiesi@0 165 ),
danielebarchiesi@0 166 );
danielebarchiesi@0 167
danielebarchiesi@0 168 $schema['forum_index'] = array(
danielebarchiesi@0 169 'description' => 'Maintains denormalized information about node/term relationships.',
danielebarchiesi@0 170 'fields' => array(
danielebarchiesi@0 171 'nid' => array(
danielebarchiesi@0 172 'description' => 'The {node}.nid this record tracks.',
danielebarchiesi@0 173 'type' => 'int',
danielebarchiesi@0 174 'unsigned' => TRUE,
danielebarchiesi@0 175 'not null' => TRUE,
danielebarchiesi@0 176 'default' => 0,
danielebarchiesi@0 177 ),
danielebarchiesi@0 178 'title' => array(
danielebarchiesi@0 179 'description' => 'The title of this node, always treated as non-markup plain text.',
danielebarchiesi@0 180 'type' => 'varchar',
danielebarchiesi@0 181 'length' => 255,
danielebarchiesi@0 182 'not null' => TRUE,
danielebarchiesi@0 183 'default' => '',
danielebarchiesi@0 184 ),
danielebarchiesi@0 185 'tid' => array(
danielebarchiesi@0 186 'description' => 'The term ID.',
danielebarchiesi@0 187 'type' => 'int',
danielebarchiesi@0 188 'unsigned' => TRUE,
danielebarchiesi@0 189 'not null' => TRUE,
danielebarchiesi@0 190 'default' => 0,
danielebarchiesi@0 191 ),
danielebarchiesi@0 192 'sticky' => array(
danielebarchiesi@0 193 'description' => 'Boolean indicating whether the node is sticky.',
danielebarchiesi@0 194 'type' => 'int',
danielebarchiesi@0 195 'not null' => FALSE,
danielebarchiesi@0 196 'default' => 0,
danielebarchiesi@0 197 'size' => 'tiny',
danielebarchiesi@0 198 ),
danielebarchiesi@0 199 'created' => array(
danielebarchiesi@0 200 'description' => 'The Unix timestamp when the node was created.',
danielebarchiesi@0 201 'type' => 'int',
danielebarchiesi@0 202 'unsigned' => TRUE,
danielebarchiesi@0 203 'not null' => TRUE,
danielebarchiesi@0 204 'default'=> 0,
danielebarchiesi@0 205 ),
danielebarchiesi@0 206 'last_comment_timestamp' => array(
danielebarchiesi@0 207 'type' => 'int',
danielebarchiesi@0 208 'not null' => TRUE,
danielebarchiesi@0 209 'default' => 0,
danielebarchiesi@0 210 'description' => 'The Unix timestamp of the last comment that was posted within this node, from {comment}.timestamp.',
danielebarchiesi@0 211 ),
danielebarchiesi@0 212 'comment_count' => array(
danielebarchiesi@0 213 'type' => 'int',
danielebarchiesi@0 214 'unsigned' => TRUE,
danielebarchiesi@0 215 'not null' => TRUE,
danielebarchiesi@0 216 'default' => 0,
danielebarchiesi@0 217 'description' => 'The total number of comments on this node.',
danielebarchiesi@0 218 ),
danielebarchiesi@0 219 ),
danielebarchiesi@0 220 'indexes' => array(
danielebarchiesi@0 221 'forum_topics' => array('nid', 'tid', 'sticky', 'last_comment_timestamp'),
danielebarchiesi@0 222 'created' => array('created'),
danielebarchiesi@0 223 'last_comment_timestamp' => array('last_comment_timestamp'),
danielebarchiesi@0 224 ),
danielebarchiesi@0 225 'foreign keys' => array(
danielebarchiesi@0 226 'tracked_node' => array(
danielebarchiesi@0 227 'table' => 'node',
danielebarchiesi@0 228 'columns' => array('nid' => 'nid'),
danielebarchiesi@0 229 ),
danielebarchiesi@0 230 'term' => array(
danielebarchiesi@0 231 'table' => 'taxonomy_term_data',
danielebarchiesi@0 232 'columns' => array(
danielebarchiesi@0 233 'tid' => 'tid',
danielebarchiesi@0 234 ),
danielebarchiesi@0 235 ),
danielebarchiesi@0 236 ),
danielebarchiesi@0 237 );
danielebarchiesi@0 238
danielebarchiesi@0 239
danielebarchiesi@0 240 return $schema;
danielebarchiesi@0 241 }
danielebarchiesi@0 242
danielebarchiesi@0 243 /**
danielebarchiesi@0 244 * Implements hook_update_dependencies().
danielebarchiesi@0 245 */
danielebarchiesi@0 246 function forum_update_dependencies() {
danielebarchiesi@0 247 $dependencies['forum'][7003] = array(
danielebarchiesi@0 248 // Forum update 7003 uses field API update functions, so must run after
danielebarchiesi@0 249 // Field API has been enabled.
danielebarchiesi@0 250 'system' => 7020,
danielebarchiesi@0 251 // Forum update 7003 relies on updated taxonomy module schema. Ensure it
danielebarchiesi@0 252 // runs after all taxonomy updates.
danielebarchiesi@0 253 'taxonomy' => 7010,
danielebarchiesi@0 254 );
danielebarchiesi@0 255 return $dependencies;
danielebarchiesi@0 256 }
danielebarchiesi@0 257
danielebarchiesi@0 258 /**
danielebarchiesi@0 259 * Add new index to forum table.
danielebarchiesi@0 260 */
danielebarchiesi@0 261 function forum_update_7000() {
danielebarchiesi@0 262 db_drop_index('forum', 'nid');
danielebarchiesi@0 263 db_add_index('forum', 'forum_topic', array('nid', 'tid'));
danielebarchiesi@0 264 }
danielebarchiesi@0 265
danielebarchiesi@0 266 /**
danielebarchiesi@0 267 * Create new {forum_index} table.
danielebarchiesi@0 268 */
danielebarchiesi@0 269 function forum_update_7001() {
danielebarchiesi@0 270 $forum_index = array(
danielebarchiesi@0 271 'description' => 'Maintains denormalized information about node/term relationships.',
danielebarchiesi@0 272 'fields' => array(
danielebarchiesi@0 273 'nid' => array(
danielebarchiesi@0 274 'description' => 'The {node}.nid this record tracks.',
danielebarchiesi@0 275 'type' => 'int',
danielebarchiesi@0 276 'unsigned' => TRUE,
danielebarchiesi@0 277 'not null' => TRUE,
danielebarchiesi@0 278 'default' => 0,
danielebarchiesi@0 279 ),
danielebarchiesi@0 280 'title' => array(
danielebarchiesi@0 281 'description' => 'The title of this node, always treated as non-markup plain text.',
danielebarchiesi@0 282 'type' => 'varchar',
danielebarchiesi@0 283 'length' => 255,
danielebarchiesi@0 284 'not null' => TRUE,
danielebarchiesi@0 285 'default' => '',
danielebarchiesi@0 286 ),
danielebarchiesi@0 287 'tid' => array(
danielebarchiesi@0 288 'description' => 'The term ID.',
danielebarchiesi@0 289 'type' => 'int',
danielebarchiesi@0 290 'unsigned' => TRUE,
danielebarchiesi@0 291 'not null' => TRUE,
danielebarchiesi@0 292 'default' => 0,
danielebarchiesi@0 293 ),
danielebarchiesi@0 294 'sticky' => array(
danielebarchiesi@0 295 'description' => 'Boolean indicating whether the node is sticky.',
danielebarchiesi@0 296 'type' => 'int',
danielebarchiesi@0 297 'not null' => FALSE,
danielebarchiesi@0 298 'default' => 0,
danielebarchiesi@0 299 'size' => 'tiny',
danielebarchiesi@0 300 ),
danielebarchiesi@0 301 'created' => array(
danielebarchiesi@0 302 'description' => 'The Unix timestamp when the node was created.',
danielebarchiesi@0 303 'type' => 'int',
danielebarchiesi@0 304 'unsigned' => TRUE,
danielebarchiesi@0 305 'not null' => TRUE,
danielebarchiesi@0 306 'default'=> 0,
danielebarchiesi@0 307 ),
danielebarchiesi@0 308 'last_comment_timestamp' => array(
danielebarchiesi@0 309 'type' => 'int',
danielebarchiesi@0 310 'not null' => TRUE,
danielebarchiesi@0 311 'default' => 0,
danielebarchiesi@0 312 'description' => 'The Unix timestamp of the last comment that was posted within this node, from {comment}.timestamp.',
danielebarchiesi@0 313 ),
danielebarchiesi@0 314 'comment_count' => array(
danielebarchiesi@0 315 'type' => 'int',
danielebarchiesi@0 316 'unsigned' => TRUE,
danielebarchiesi@0 317 'not null' => TRUE,
danielebarchiesi@0 318 'default' => 0,
danielebarchiesi@0 319 'description' => 'The total number of comments on this node.',
danielebarchiesi@0 320 ),
danielebarchiesi@0 321 ),
danielebarchiesi@0 322 'indexes' => array(
danielebarchiesi@0 323 'forum_topics' => array('tid', 'sticky', 'last_comment_timestamp'),
danielebarchiesi@0 324 ),
danielebarchiesi@0 325 'foreign keys' => array(
danielebarchiesi@0 326 'tracked_node' => array(
danielebarchiesi@0 327 'table' => 'node',
danielebarchiesi@0 328 'columns' => array('nid' => 'nid'),
danielebarchiesi@0 329 ),
danielebarchiesi@0 330 'term' => array(
danielebarchiesi@0 331 'table' => 'taxonomy_term_data',
danielebarchiesi@0 332 'columns' => array(
danielebarchiesi@0 333 'tid' => 'tid',
danielebarchiesi@0 334 ),
danielebarchiesi@0 335 ),
danielebarchiesi@0 336 ),
danielebarchiesi@0 337 );
danielebarchiesi@0 338 db_create_table('forum_index', $forum_index);
danielebarchiesi@0 339
danielebarchiesi@0 340 $select = db_select('node', 'n');
danielebarchiesi@0 341 $forum_alias = $select->join('forum', 'f', 'n.vid = f.vid');
danielebarchiesi@0 342 $ncs_alias = $select->join('node_comment_statistics', 'ncs', 'n.nid = ncs.nid');
danielebarchiesi@0 343 $select
danielebarchiesi@0 344 ->fields('n', array('nid', 'title', 'sticky', 'created'))
danielebarchiesi@0 345 ->fields($forum_alias, array('tid'))
danielebarchiesi@0 346 ->fields($ncs_alias, array('last_comment_timestamp', 'comment_count'));
danielebarchiesi@0 347
danielebarchiesi@0 348 db_insert('forum_index')
danielebarchiesi@0 349 ->fields(array('nid', 'title', 'sticky', 'created', 'tid', 'last_comment_timestamp', 'comment_count'))
danielebarchiesi@0 350 ->from($select)
danielebarchiesi@0 351 ->execute();
danielebarchiesi@0 352 }
danielebarchiesi@0 353
danielebarchiesi@0 354 /**
danielebarchiesi@0 355 * @addtogroup updates-7.x-extra
danielebarchiesi@0 356 * @{
danielebarchiesi@0 357 */
danielebarchiesi@0 358
danielebarchiesi@0 359 /**
danielebarchiesi@0 360 * Add new index to forum_index table.
danielebarchiesi@0 361 */
danielebarchiesi@0 362 function forum_update_7002() {
danielebarchiesi@0 363 db_drop_index('forum_index', 'forum_topics');
danielebarchiesi@0 364 db_add_index('forum_index', 'forum_topics', array('nid', 'tid', 'sticky', 'last_comment_timestamp'));
danielebarchiesi@0 365 }
danielebarchiesi@0 366
danielebarchiesi@0 367 /**
danielebarchiesi@0 368 * Rename field to 'taxonomy_forums'.
danielebarchiesi@0 369 */
danielebarchiesi@0 370 function forum_update_7003() {
danielebarchiesi@0 371 $messages = array();
danielebarchiesi@0 372
danielebarchiesi@0 373 $new_field_name = 'taxonomy_forums';
danielebarchiesi@0 374
danielebarchiesi@0 375 // Test to see if the taxonomy_forums field exists.
danielebarchiesi@0 376 $fields = _update_7000_field_read_fields(array('field_name' => $new_field_name));
danielebarchiesi@0 377 if ($fields) {
danielebarchiesi@0 378 // Since the field exists, we're done.
danielebarchiesi@0 379 return;
danielebarchiesi@0 380 }
danielebarchiesi@0 381
danielebarchiesi@0 382 // Calculate the old field name.
danielebarchiesi@0 383 $vid = variable_get('forum_nav_vocabulary', 0);
danielebarchiesi@0 384 $vocabulary_machine_name = db_select('taxonomy_vocabulary', 'tv')
danielebarchiesi@0 385 ->fields('tv', array('machine_name'))
danielebarchiesi@0 386 ->condition('vid', $vid)
danielebarchiesi@0 387 ->execute()
danielebarchiesi@0 388 ->fetchField();
danielebarchiesi@0 389 $old_field_name = 'taxonomy_' . $vocabulary_machine_name;
danielebarchiesi@0 390
danielebarchiesi@0 391 // Read the old fields.
danielebarchiesi@0 392 $old_fields = _update_7000_field_read_fields(array('field_name' => $old_field_name));
danielebarchiesi@0 393 foreach ($old_fields as $old_field) {
danielebarchiesi@0 394 if ($old_field['storage']['type'] != 'field_sql_storage') {
danielebarchiesi@0 395 $messages[] = t('Cannot rename field %id (%old_field_name) to %new_field_name because it does not use the field_sql_storage storage type.', array(
danielebarchiesi@0 396 '%id' => $old_field['id'],
danielebarchiesi@0 397 '%old_field_name' => $old_field_name,
danielebarchiesi@0 398 '%new_field_name' => $new_field_name,
danielebarchiesi@0 399 ));
danielebarchiesi@0 400 continue;
danielebarchiesi@0 401 }
danielebarchiesi@0 402
danielebarchiesi@0 403 // Update {field_config}.
danielebarchiesi@0 404 db_update('field_config')
danielebarchiesi@0 405 ->fields(array('field_name' => $new_field_name))
danielebarchiesi@0 406 ->condition('id', $old_field['id'])
danielebarchiesi@0 407 ->execute();
danielebarchiesi@0 408
danielebarchiesi@0 409 // Update {field_config_instance}.
danielebarchiesi@0 410 db_update('field_config_instance')
danielebarchiesi@0 411 ->fields(array('field_name' => $new_field_name))
danielebarchiesi@0 412 ->condition('field_id', $old_field['id'])
danielebarchiesi@0 413 ->execute();
danielebarchiesi@0 414
danielebarchiesi@0 415 // The tables that need updating in the form 'old_name' => 'new_name'.
danielebarchiesi@0 416 $tables = array(
danielebarchiesi@0 417 'field_data_' . $old_field_name => 'field_data_' . $new_field_name,
danielebarchiesi@0 418 'field_revision_' . $old_field_name => 'field_revision_' . $new_field_name,
danielebarchiesi@0 419 );
danielebarchiesi@0 420 foreach ($tables as $old_table => $new_table) {
danielebarchiesi@0 421 $old_column_name = $old_field_name . '_tid';
danielebarchiesi@0 422 $new_column_name = $new_field_name . '_tid';
danielebarchiesi@0 423
danielebarchiesi@0 424 // Rename the column.
danielebarchiesi@0 425 db_drop_index($old_table, $old_column_name);
danielebarchiesi@0 426 db_change_field($old_table, $old_column_name, $new_column_name, array(
danielebarchiesi@0 427 'type' => 'int',
danielebarchiesi@0 428 'unsigned' => TRUE,
danielebarchiesi@0 429 'not null' => FALSE,
danielebarchiesi@0 430 ));
danielebarchiesi@0 431 db_drop_index($old_table, $new_column_name);
danielebarchiesi@0 432 db_add_index($old_table, $new_column_name, array($new_column_name));
danielebarchiesi@0 433
danielebarchiesi@0 434 // Rename the table.
danielebarchiesi@0 435 db_rename_table($old_table, $new_table);
danielebarchiesi@0 436 }
danielebarchiesi@0 437 }
danielebarchiesi@0 438
danielebarchiesi@0 439 cache_clear_all('*', 'cache_field', TRUE);
danielebarchiesi@0 440
danielebarchiesi@0 441 return $messages;
danielebarchiesi@0 442 }
danielebarchiesi@0 443
danielebarchiesi@0 444 /**
danielebarchiesi@0 445 * Update {forum_index} so that only published nodes are indexed.
danielebarchiesi@0 446 */
danielebarchiesi@0 447 function forum_update_7011() {
danielebarchiesi@0 448 $select = db_select('node', 'n')
danielebarchiesi@0 449 ->fields('n', array('nid'))
danielebarchiesi@0 450 ->condition('status', 0 );
danielebarchiesi@0 451
danielebarchiesi@0 452 db_delete('forum_index')
danielebarchiesi@0 453 ->condition('nid', $select, 'IN')
danielebarchiesi@0 454 ->execute();
danielebarchiesi@0 455 }
danielebarchiesi@0 456
danielebarchiesi@0 457 /**
danielebarchiesi@0 458 * Add 'created' and 'last_comment_timestamp' indexes.
danielebarchiesi@0 459 */
danielebarchiesi@0 460 function forum_update_7012() {
danielebarchiesi@0 461 db_add_index('forum_index', 'created', array('created'));
danielebarchiesi@0 462 db_add_index('forum_index', 'last_comment_timestamp', array('last_comment_timestamp'));
danielebarchiesi@0 463 }
danielebarchiesi@0 464
danielebarchiesi@0 465 /**
danielebarchiesi@0 466 * @} End of "addtogroup updates-7.x-extra".
danielebarchiesi@0 467 */