danielebarchiesi@0: leftJoin('node_comment_statistics', 'ncs', 'ncs.nid = n.nid'); danielebarchiesi@0: $query->addField('n', 'created', 'last_comment_timestamp'); danielebarchiesi@0: $query->addField('n', 'uid', 'last_comment_uid'); danielebarchiesi@0: $query->addField('n', 'nid'); danielebarchiesi@0: $query->addExpression('0', 'comment_count'); danielebarchiesi@0: $query->addExpression('NULL', 'last_comment_name'); danielebarchiesi@0: $query->isNull('ncs.comment_count'); danielebarchiesi@0: danielebarchiesi@0: db_insert('node_comment_statistics') danielebarchiesi@0: ->from($query) danielebarchiesi@0: ->execute(); danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: /** danielebarchiesi@0: * Implements hook_modules_enabled(). danielebarchiesi@0: * danielebarchiesi@0: * Creates comment body fields for node types existing before the comment module danielebarchiesi@0: * is enabled. We use hook_modules_enabled() rather than hook_enable() so we can danielebarchiesi@0: * react to node types of existing modules, and those of modules being enabled danielebarchiesi@0: * both before and after comment module in the loop of module_enable(). danielebarchiesi@0: * danielebarchiesi@0: * There is a separate comment bundle for each node type to allow for danielebarchiesi@0: * per-node-type customization of comment fields. Each one of these bundles danielebarchiesi@0: * needs a comment body field instance. A comment bundle is needed even for danielebarchiesi@0: * node types whose comments are disabled by default, because individual nodes danielebarchiesi@0: * may override that default. danielebarchiesi@0: * danielebarchiesi@0: * @see comment_node_type_insert() danielebarchiesi@0: */ danielebarchiesi@0: function comment_modules_enabled($modules) { danielebarchiesi@0: // Only react if comment module is one of the modules being enabled. danielebarchiesi@0: // hook_node_type_insert() is used to create body fields while the comment danielebarchiesi@0: // module is enabled. danielebarchiesi@0: if (in_array('comment', $modules)) { danielebarchiesi@0: // Ensure that the list of node types reflects newly enabled modules. danielebarchiesi@0: node_types_rebuild(); danielebarchiesi@0: danielebarchiesi@0: // Create comment body fields for each node type, if needed. danielebarchiesi@0: foreach (node_type_get_types() as $type => $info) { danielebarchiesi@0: _comment_body_field_create($info); danielebarchiesi@0: } danielebarchiesi@0: } danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: /** danielebarchiesi@0: * Implements hook_update_dependencies(). danielebarchiesi@0: */ danielebarchiesi@0: function comment_update_dependencies() { danielebarchiesi@0: // comment_update_7005() creates the comment body field and therefore must danielebarchiesi@0: // run after all Field modules have been enabled, which happens in danielebarchiesi@0: // system_update_7027(). danielebarchiesi@0: $dependencies['comment'][7005] = array( danielebarchiesi@0: 'system' => 7027, danielebarchiesi@0: ); danielebarchiesi@0: danielebarchiesi@0: // comment_update_7006() needs to query the {filter_format} table to get a danielebarchiesi@0: // list of existing text formats, so it must run after filter_update_7000(), danielebarchiesi@0: // which creates that table. danielebarchiesi@0: $dependencies['comment'][7006] = array( danielebarchiesi@0: 'filter' => 7000, danielebarchiesi@0: ); danielebarchiesi@0: danielebarchiesi@0: return $dependencies; danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: /** danielebarchiesi@0: * @addtogroup updates-6.x-to-7.x danielebarchiesi@0: * @{ danielebarchiesi@0: */ danielebarchiesi@0: danielebarchiesi@0: /** danielebarchiesi@0: * Rename comment display setting variables. danielebarchiesi@0: */ danielebarchiesi@0: function comment_update_7000() { danielebarchiesi@0: $types = _update_7000_node_get_types(); danielebarchiesi@0: foreach ($types as $type => $type_object) { danielebarchiesi@0: variable_del('comment_default_order' . $type); danielebarchiesi@0: danielebarchiesi@0: // Drupal 6 had four display modes: danielebarchiesi@0: // - COMMENT_MODE_FLAT_COLLAPSED = 1 danielebarchiesi@0: // - COMMENT_MODE_FLAT_EXPANDED = 2 danielebarchiesi@0: // - COMMENT_MODE_THREADED_COLLAPSED = 3 danielebarchiesi@0: // - COMMENT_MODE_THREADED_EXPANDED = 4 danielebarchiesi@0: // danielebarchiesi@0: // Drupal 7 doesn't support collapsed/expanded modes anymore, so we danielebarchiesi@0: // migrate all the flat modes to COMMENT_MODE_FLAT (0) and all the threaded danielebarchiesi@0: // modes to COMMENT_MODE_THREADED (1). danielebarchiesi@0: $setting = variable_get('comment_default_mode_' . $type, 4); danielebarchiesi@0: if ($setting == 3 || $setting == 4) { danielebarchiesi@0: variable_set('comment_default_mode_' . $type, 1); danielebarchiesi@0: } danielebarchiesi@0: else { danielebarchiesi@0: variable_set('comment_default_mode_' . $type, 0); danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: // There were only two comment modes in the past: danielebarchiesi@0: // - 1 was 'required' previously, convert into DRUPAL_REQUIRED (2). danielebarchiesi@0: // - 0 was 'optional' previously, convert into DRUPAL_OPTIONAL (1). danielebarchiesi@0: $preview = variable_get('comment_preview_' . $type, 1) ? 2 : 1; danielebarchiesi@0: variable_set('comment_preview_' . $type, $preview); danielebarchiesi@0: } danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: /** danielebarchiesi@0: * Change comment status from published being 0 to being 1 danielebarchiesi@0: */ danielebarchiesi@0: function comment_update_7001() { danielebarchiesi@0: // Choose a temporary status value different from the existing status values. danielebarchiesi@0: $tmp_status = db_query('SELECT MAX(status) FROM {comments}')->fetchField() + 1; danielebarchiesi@0: danielebarchiesi@0: $changes = array( danielebarchiesi@0: 0 => $tmp_status, danielebarchiesi@0: 1 => 0, danielebarchiesi@0: $tmp_status => 1, danielebarchiesi@0: ); danielebarchiesi@0: danielebarchiesi@0: foreach ($changes as $old => $new) { danielebarchiesi@0: db_update('comments') danielebarchiesi@0: ->fields(array('status' => $new)) danielebarchiesi@0: ->condition('status', $old) danielebarchiesi@0: ->execute(); danielebarchiesi@0: } danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: /** danielebarchiesi@0: * Rename {comments} table to {comment} and upgrade it. danielebarchiesi@0: */ danielebarchiesi@0: function comment_update_7002() { danielebarchiesi@0: db_rename_table('comments', 'comment'); danielebarchiesi@0: danielebarchiesi@0: // Add user-related indexes. These may already exist from Drupal 6. danielebarchiesi@0: if (!db_index_exists('comment', 'comment_uid')) { danielebarchiesi@0: db_add_index('comment', 'comment_uid', array('uid')); danielebarchiesi@0: db_add_index('node_comment_statistics', 'last_comment_uid', array('last_comment_uid')); danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: // Create a language column. danielebarchiesi@0: db_add_field('comment', 'language', array( danielebarchiesi@0: 'type' => 'varchar', danielebarchiesi@0: 'length' => 12, danielebarchiesi@0: 'not null' => TRUE, danielebarchiesi@0: 'default' => '', danielebarchiesi@0: )); danielebarchiesi@0: db_add_index('comment', 'comment_nid_language', array('nid', 'language')); danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: /** danielebarchiesi@0: * Split {comment}.timestamp into 'created' and 'changed', improve indexing on {comment}. danielebarchiesi@0: */ danielebarchiesi@0: function comment_update_7003() { danielebarchiesi@0: // Drop the old indexes. danielebarchiesi@0: db_drop_index('comment', 'status'); danielebarchiesi@0: db_drop_index('comment', 'pid'); danielebarchiesi@0: danielebarchiesi@0: // Create a created column. danielebarchiesi@0: db_add_field('comment', 'created', array( danielebarchiesi@0: 'type' => 'int', danielebarchiesi@0: 'not null' => TRUE, danielebarchiesi@0: 'default' => 0, danielebarchiesi@0: )); danielebarchiesi@0: danielebarchiesi@0: // Rename the timestamp column to changed. danielebarchiesi@0: db_change_field('comment', 'timestamp', 'changed', array( danielebarchiesi@0: 'type' => 'int', danielebarchiesi@0: 'not null' => TRUE, danielebarchiesi@0: 'default' => 0, danielebarchiesi@0: )); danielebarchiesi@0: danielebarchiesi@0: // Migrate the data. danielebarchiesi@0: // @todo db_update() should support this. danielebarchiesi@0: db_query('UPDATE {comment} SET created = changed'); danielebarchiesi@0: danielebarchiesi@0: // Recreate the indexes. danielebarchiesi@0: // The 'comment_num_new' index is optimized for comment_num_new() danielebarchiesi@0: // and comment_new_page_count(). danielebarchiesi@0: db_add_index('comment', 'comment_num_new', array('nid', 'status', 'created', 'cid', 'thread')); danielebarchiesi@0: db_add_index('comment', 'comment_pid_status', array('pid', 'status')); danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: /** danielebarchiesi@0: * Upgrade the {node_comment_statistics} table. danielebarchiesi@0: */ danielebarchiesi@0: function comment_update_7004() { danielebarchiesi@0: db_add_field('node_comment_statistics', 'cid', array( danielebarchiesi@0: 'type' => 'int', danielebarchiesi@0: 'not null' => TRUE, danielebarchiesi@0: 'default' => 0, danielebarchiesi@0: 'description' => 'The {comment}.cid of the last comment.', danielebarchiesi@0: )); danielebarchiesi@0: db_add_index('node_comment_statistics', 'cid', array('cid')); danielebarchiesi@0: danielebarchiesi@0: // The comment_count index may have been added in Drupal 6. danielebarchiesi@0: if (!db_index_exists('node_comment_statistics', 'comment_count')) { danielebarchiesi@0: // Add an index on the comment_count. danielebarchiesi@0: db_add_index('node_comment_statistics', 'comment_count', array('comment_count')); danielebarchiesi@0: } danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: /** danielebarchiesi@0: * Create the comment_body field. danielebarchiesi@0: */ danielebarchiesi@0: function comment_update_7005() { danielebarchiesi@0: // Create comment body field. danielebarchiesi@0: $field = array( danielebarchiesi@0: 'field_name' => 'comment_body', danielebarchiesi@0: 'type' => 'text_long', danielebarchiesi@0: 'module' => 'text', danielebarchiesi@0: 'entity_types' => array( danielebarchiesi@0: 'comment', danielebarchiesi@0: ), danielebarchiesi@0: 'settings' => array(), danielebarchiesi@0: 'cardinality' => 1, danielebarchiesi@0: ); danielebarchiesi@0: _update_7000_field_create_field($field); danielebarchiesi@0: danielebarchiesi@0: // Add the field to comments for all existing bundles. danielebarchiesi@0: $generic_instance = array( danielebarchiesi@0: 'entity_type' => 'comment', danielebarchiesi@0: 'label' => t('Comment'), danielebarchiesi@0: 'settings' => array( danielebarchiesi@0: 'text_processing' => 1, danielebarchiesi@0: ), danielebarchiesi@0: 'required' => TRUE, danielebarchiesi@0: 'display' => array( danielebarchiesi@0: 'default' => array( danielebarchiesi@0: 'label' => 'hidden', danielebarchiesi@0: 'type' => 'text_default', danielebarchiesi@0: 'weight' => 0, danielebarchiesi@0: 'settings' => array(), danielebarchiesi@0: 'module' => 'text', danielebarchiesi@0: ), danielebarchiesi@0: ), danielebarchiesi@0: 'widget' => array( danielebarchiesi@0: 'type' => 'text_textarea', danielebarchiesi@0: 'settings' => array( danielebarchiesi@0: 'rows' => 5, danielebarchiesi@0: ), danielebarchiesi@0: 'weight' => 0, danielebarchiesi@0: 'module' => 'text', danielebarchiesi@0: ), danielebarchiesi@0: 'description' => '', danielebarchiesi@0: ); danielebarchiesi@0: danielebarchiesi@0: $types = _update_7000_node_get_types(); danielebarchiesi@0: foreach ($types as $type => $type_object) { danielebarchiesi@0: $instance = $generic_instance; danielebarchiesi@0: $instance['bundle'] = 'comment_node_' . $type; danielebarchiesi@0: _update_7000_field_create_instance($field, $instance); danielebarchiesi@0: } danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: /** danielebarchiesi@0: * Migrate data from the comment field to field storage. danielebarchiesi@0: */ danielebarchiesi@0: function comment_update_7006(&$sandbox) { danielebarchiesi@0: // This is a multipass update. First set up some comment variables. danielebarchiesi@0: if (empty($sandbox['total'])) { danielebarchiesi@0: $comments = (bool) db_query_range('SELECT 1 FROM {comment}', 0, 1)->fetchField(); danielebarchiesi@0: $sandbox['types'] = array(); danielebarchiesi@0: if ($comments) { danielebarchiesi@0: $sandbox['types'] = array_keys(_update_7000_node_get_types()); danielebarchiesi@0: } danielebarchiesi@0: $sandbox['total'] = count($sandbox['types']); danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: if (!empty($sandbox['types'])) { danielebarchiesi@0: $type = array_shift($sandbox['types']); danielebarchiesi@0: danielebarchiesi@0: $query = db_select('comment', 'c'); danielebarchiesi@0: $query->innerJoin('node', 'n', 'c.nid = n.nid AND n.type = :type', array(':type' => $type)); danielebarchiesi@0: $query->addField('c', 'cid', 'entity_id'); danielebarchiesi@0: $query->addExpression("'comment_node_$type'", 'bundle'); danielebarchiesi@0: $query->addExpression("'comment'", 'entity_type'); danielebarchiesi@0: $query->addExpression('0', 'deleted'); danielebarchiesi@0: $query->addExpression("'" . LANGUAGE_NONE . "'", 'language'); danielebarchiesi@0: $query->addExpression('0', 'delta'); danielebarchiesi@0: $query->addField('c', 'comment', 'comment_body_value'); danielebarchiesi@0: $query->addField('c', 'format', 'comment_body_format'); danielebarchiesi@0: danielebarchiesi@0: db_insert('field_data_comment_body') danielebarchiesi@0: ->from($query) danielebarchiesi@0: ->execute(); danielebarchiesi@0: danielebarchiesi@0: $sandbox['#finished'] = 1 - count($sandbox['types']) / $sandbox['total']; danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: // On the last pass of the update, $sandbox['types'] will be empty. danielebarchiesi@0: if (empty($sandbox['types'])) { danielebarchiesi@0: // Update the comment body text formats. For an explanation of these danielebarchiesi@0: // updates, see the code comments in user_update_7010(). danielebarchiesi@0: db_update('field_data_comment_body') danielebarchiesi@0: ->fields(array('comment_body_format' => NULL)) danielebarchiesi@0: ->condition('comment_body_value', '') danielebarchiesi@0: ->condition('comment_body_format', 0) danielebarchiesi@0: ->execute(); danielebarchiesi@0: $existing_formats = db_query("SELECT format FROM {filter_format}")->fetchCol(); danielebarchiesi@0: $default_format = variable_get('filter_default_format', 1); danielebarchiesi@0: db_update('field_data_comment_body') danielebarchiesi@0: ->fields(array('comment_body_format' => $default_format)) danielebarchiesi@0: ->isNotNull('comment_body_format') danielebarchiesi@0: ->condition('comment_body_format', $existing_formats, 'NOT IN') danielebarchiesi@0: ->execute(); danielebarchiesi@0: danielebarchiesi@0: // Finally, remove the old comment data. danielebarchiesi@0: db_drop_field('comment', 'comment'); danielebarchiesi@0: db_drop_field('comment', 'format'); danielebarchiesi@0: } danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: /** danielebarchiesi@0: * @} End of "addtogroup updates-6.x-to-7.x". danielebarchiesi@0: */ danielebarchiesi@0: danielebarchiesi@0: /** danielebarchiesi@0: * @addtogroup updates-7.x-extra danielebarchiesi@0: * @{ danielebarchiesi@0: */ danielebarchiesi@0: danielebarchiesi@0: /** danielebarchiesi@0: * Add an index to the created column. danielebarchiesi@0: */ danielebarchiesi@0: function comment_update_7007() { danielebarchiesi@0: db_add_index('comment', 'comment_created', array('created')); danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: /** danielebarchiesi@0: * Update database to match Drupal 7 schema. danielebarchiesi@0: */ danielebarchiesi@0: function comment_update_7008() { danielebarchiesi@0: // Update default status to 1. danielebarchiesi@0: db_change_field('comment', 'status', 'status', array( danielebarchiesi@0: 'type' => 'int', danielebarchiesi@0: 'unsigned' => TRUE, danielebarchiesi@0: 'not null' => TRUE, danielebarchiesi@0: 'default' => 1, danielebarchiesi@0: 'size' => 'tiny', danielebarchiesi@0: )); danielebarchiesi@0: danielebarchiesi@0: // Realign indexes. danielebarchiesi@0: db_drop_index('comment', 'comment_status_pid'); danielebarchiesi@0: db_add_index('comment', 'comment_status_pid', array('pid', 'status')); danielebarchiesi@0: db_drop_index('comment', 'comment_pid_status'); danielebarchiesi@0: db_drop_index('comment', 'nid'); danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: /** danielebarchiesi@0: * Change the last_comment_timestamp column description. danielebarchiesi@0: */ danielebarchiesi@0: function comment_update_7009() { danielebarchiesi@0: db_change_field('node_comment_statistics', 'last_comment_timestamp', 'last_comment_timestamp', array( danielebarchiesi@0: 'type' => 'int', danielebarchiesi@0: 'not null' => TRUE, danielebarchiesi@0: 'default' => 0, danielebarchiesi@0: 'description' => 'The Unix timestamp of the last comment that was posted within this node, from {comment}.changed.', danielebarchiesi@0: )); danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: /** danielebarchiesi@0: * @} End of "addtogroup updates-7.x-extra". danielebarchiesi@0: */ danielebarchiesi@0: danielebarchiesi@0: /** danielebarchiesi@0: * Implements hook_schema(). danielebarchiesi@0: */ danielebarchiesi@0: function comment_schema() { danielebarchiesi@0: $schema['comment'] = array( danielebarchiesi@0: 'description' => 'Stores comments and associated data.', danielebarchiesi@0: 'fields' => array( danielebarchiesi@0: 'cid' => array( danielebarchiesi@0: 'type' => 'serial', danielebarchiesi@0: 'not null' => TRUE, danielebarchiesi@0: 'description' => 'Primary Key: Unique comment ID.', danielebarchiesi@0: ), danielebarchiesi@0: 'pid' => array( danielebarchiesi@0: 'type' => 'int', danielebarchiesi@0: 'not null' => TRUE, danielebarchiesi@0: 'default' => 0, danielebarchiesi@0: 'description' => 'The {comment}.cid to which this comment is a reply. If set to 0, this comment is not a reply to an existing comment.', danielebarchiesi@0: ), danielebarchiesi@0: 'nid' => array( danielebarchiesi@0: 'type' => 'int', danielebarchiesi@0: 'not null' => TRUE, danielebarchiesi@0: 'default' => 0, danielebarchiesi@0: 'description' => 'The {node}.nid to which this comment is a reply.', danielebarchiesi@0: ), danielebarchiesi@0: 'uid' => array( danielebarchiesi@0: 'type' => 'int', danielebarchiesi@0: 'not null' => TRUE, danielebarchiesi@0: 'default' => 0, danielebarchiesi@0: 'description' => 'The {users}.uid who authored the comment. If set to 0, this comment was created by an anonymous user.', danielebarchiesi@0: ), danielebarchiesi@0: 'subject' => array( danielebarchiesi@0: 'type' => 'varchar', danielebarchiesi@0: 'length' => 64, danielebarchiesi@0: 'not null' => TRUE, danielebarchiesi@0: 'default' => '', danielebarchiesi@0: 'description' => 'The comment title.', danielebarchiesi@0: ), danielebarchiesi@0: 'hostname' => array( danielebarchiesi@0: 'type' => 'varchar', danielebarchiesi@0: 'length' => 128, danielebarchiesi@0: 'not null' => TRUE, danielebarchiesi@0: 'default' => '', danielebarchiesi@0: 'description' => "The author's host name.", danielebarchiesi@0: ), danielebarchiesi@0: 'created' => array( danielebarchiesi@0: 'type' => 'int', danielebarchiesi@0: 'not null' => TRUE, danielebarchiesi@0: 'default' => 0, danielebarchiesi@0: 'description' => 'The time that the comment was created, as a Unix timestamp.', danielebarchiesi@0: ), danielebarchiesi@0: 'changed' => array( danielebarchiesi@0: 'type' => 'int', danielebarchiesi@0: 'not null' => TRUE, danielebarchiesi@0: 'default' => 0, danielebarchiesi@0: 'description' => 'The time that the comment was last edited, as a Unix timestamp.', danielebarchiesi@0: ), danielebarchiesi@0: 'status' => array( danielebarchiesi@0: 'type' => 'int', danielebarchiesi@0: 'unsigned' => TRUE, danielebarchiesi@0: 'not null' => TRUE, danielebarchiesi@0: 'default' => 1, danielebarchiesi@0: 'size' => 'tiny', danielebarchiesi@0: 'description' => 'The published status of a comment. (0 = Not Published, 1 = Published)', danielebarchiesi@0: ), danielebarchiesi@0: 'thread' => array( danielebarchiesi@0: 'type' => 'varchar', danielebarchiesi@0: 'length' => 255, danielebarchiesi@0: 'not null' => TRUE, danielebarchiesi@0: 'description' => "The vancode representation of the comment's place in a thread.", danielebarchiesi@0: ), danielebarchiesi@0: 'name' => array( danielebarchiesi@0: 'type' => 'varchar', danielebarchiesi@0: 'length' => 60, danielebarchiesi@0: 'not null' => FALSE, danielebarchiesi@0: 'description' => "The comment author's name. Uses {users}.name if the user is logged in, otherwise uses the value typed into the comment form.", danielebarchiesi@0: ), danielebarchiesi@0: 'mail' => array( danielebarchiesi@0: 'type' => 'varchar', danielebarchiesi@0: 'length' => 64, danielebarchiesi@0: 'not null' => FALSE, danielebarchiesi@0: 'description' => "The comment author's e-mail address from the comment form, if user is anonymous, and the 'Anonymous users may/must leave their contact information' setting is turned on.", danielebarchiesi@0: ), danielebarchiesi@0: 'homepage' => array( danielebarchiesi@0: 'type' => 'varchar', danielebarchiesi@0: 'length' => 255, danielebarchiesi@0: 'not null' => FALSE, danielebarchiesi@0: 'description' => "The comment author's home page address from the comment form, if user is anonymous, and the 'Anonymous users may/must leave their contact information' setting is turned on.", danielebarchiesi@0: ), danielebarchiesi@0: 'language' => array( danielebarchiesi@0: 'description' => 'The {languages}.language of this comment.', danielebarchiesi@0: 'type' => 'varchar', danielebarchiesi@0: 'length' => 12, danielebarchiesi@0: 'not null' => TRUE, danielebarchiesi@0: 'default' => '', danielebarchiesi@0: ), danielebarchiesi@0: ), danielebarchiesi@0: 'indexes' => array( danielebarchiesi@0: 'comment_status_pid' => array('pid', 'status'), danielebarchiesi@0: 'comment_num_new' => array('nid', 'status', 'created', 'cid', 'thread'), danielebarchiesi@0: 'comment_uid' => array('uid'), danielebarchiesi@0: 'comment_nid_language' => array('nid', 'language'), danielebarchiesi@0: 'comment_created' => array('created'), danielebarchiesi@0: ), danielebarchiesi@0: 'primary key' => array('cid'), danielebarchiesi@0: 'foreign keys' => array( danielebarchiesi@0: 'comment_node' => array( danielebarchiesi@0: 'table' => 'node', danielebarchiesi@0: 'columns' => array('nid' => 'nid'), danielebarchiesi@0: ), danielebarchiesi@0: 'comment_author' => array( danielebarchiesi@0: 'table' => 'users', danielebarchiesi@0: 'columns' => array('uid' => 'uid'), danielebarchiesi@0: ), danielebarchiesi@0: ), danielebarchiesi@0: ); danielebarchiesi@0: danielebarchiesi@0: $schema['node_comment_statistics'] = array( danielebarchiesi@0: 'description' => 'Maintains statistics of node and comments posts to show "new" and "updated" flags.', danielebarchiesi@0: 'fields' => array( danielebarchiesi@0: 'nid' => array( danielebarchiesi@0: 'type' => 'int', danielebarchiesi@0: 'unsigned' => TRUE, danielebarchiesi@0: 'not null' => TRUE, danielebarchiesi@0: 'default' => 0, danielebarchiesi@0: 'description' => 'The {node}.nid for which the statistics are compiled.', danielebarchiesi@0: ), danielebarchiesi@0: 'cid' => array( danielebarchiesi@0: 'type' => 'int', danielebarchiesi@0: 'not null' => TRUE, danielebarchiesi@0: 'default' => 0, danielebarchiesi@0: 'description' => 'The {comment}.cid of the last comment.', danielebarchiesi@0: ), danielebarchiesi@0: 'last_comment_timestamp' => array( danielebarchiesi@0: 'type' => 'int', danielebarchiesi@0: 'not null' => TRUE, danielebarchiesi@0: 'default' => 0, danielebarchiesi@0: 'description' => 'The Unix timestamp of the last comment that was posted within this node, from {comment}.changed.', danielebarchiesi@0: ), danielebarchiesi@0: 'last_comment_name' => array( danielebarchiesi@0: 'type' => 'varchar', danielebarchiesi@0: 'length' => 60, danielebarchiesi@0: 'not null' => FALSE, danielebarchiesi@0: 'description' => 'The name of the latest author to post a comment on this node, from {comment}.name.', danielebarchiesi@0: ), danielebarchiesi@0: 'last_comment_uid' => array( danielebarchiesi@0: 'type' => 'int', danielebarchiesi@0: 'not null' => TRUE, danielebarchiesi@0: 'default' => 0, danielebarchiesi@0: 'description' => 'The user ID of the latest author to post a comment on this node, from {comment}.uid.', danielebarchiesi@0: ), danielebarchiesi@0: 'comment_count' => array( danielebarchiesi@0: 'type' => 'int', danielebarchiesi@0: 'unsigned' => TRUE, danielebarchiesi@0: 'not null' => TRUE, danielebarchiesi@0: 'default' => 0, danielebarchiesi@0: 'description' => 'The total number of comments on this node.', danielebarchiesi@0: ), danielebarchiesi@0: ), danielebarchiesi@0: 'primary key' => array('nid'), danielebarchiesi@0: 'indexes' => array( danielebarchiesi@0: 'node_comment_timestamp' => array('last_comment_timestamp'), danielebarchiesi@0: 'comment_count' => array('comment_count'), danielebarchiesi@0: 'last_comment_uid' => array('last_comment_uid'), danielebarchiesi@0: ), danielebarchiesi@0: 'foreign keys' => array( danielebarchiesi@0: 'statistics_node' => array( danielebarchiesi@0: 'table' => 'node', danielebarchiesi@0: 'columns' => array('nid' => 'nid'), danielebarchiesi@0: ), danielebarchiesi@0: 'last_comment_author' => array( danielebarchiesi@0: 'table' => 'users', danielebarchiesi@0: 'columns' => array( danielebarchiesi@0: 'last_comment_uid' => 'uid', danielebarchiesi@0: ), danielebarchiesi@0: ), danielebarchiesi@0: ), danielebarchiesi@0: ); danielebarchiesi@0: danielebarchiesi@0: return $schema; danielebarchiesi@0: }