comment.install 7.01 KB
Newer Older
1 2 3 4 5 6 7 8
<?php
// $Id$

/**
 * Implementation of hook_enable().
 */
function comment_enable() {
  // Insert records into the node_comment_statistics for nodes that are missing.
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
  db_query_temporary("SELECT n.nid, n.changed, n.uid FROM {node} n LEFT JOIN {node_comment_statistics} c ON n.nid = c.nid WHERE c.comment_count IS NULL", 'missing_nids');
  db_query("INSERT INTO {node_comment_statistics} (nid, last_comment_timestamp, last_comment_name, last_comment_uid, comment_count) SELECT n.nid, n.changed, NULL, n.uid, 0 FROM missing_nids n");
}

/**
 * Changed node_comment_statistics to use node->changed to avoid future
 * timestamps.
 */
function comment_update_1() {
  // Change any future last comment timestamps to now.
  db_query('UPDATE {node_comment_statistics} SET last_comment_timestamp = %d WHERE last_comment_timestamp > %d', time(), time());

  // Unstuck node indexing timestamp if needed.
  if (($last = variable_get('node_cron_last', FALSE)) !== FALSE) {
    variable_set('node_cron_last', min(time(), $last));
  }
  return array();
26
}
27 28 29 30 31 32

function comment_update_6001() {
  $ret[] = update_sql("ALTER TABLE {comments} DROP score");
  $ret[] = update_sql("ALTER TABLE {comments} DROP users");
  return $ret;
}
33

34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
/**
 * Changed comment settings from global to per-node -- copy global
 * settings to all node types.
 */
function comment_update_6002() {
  $settings = array(
    'comment_default_mode' => COMMENT_MODE_THREADED_EXPANDED,
    'comment_default_order' => COMMENT_ORDER_NEWEST_FIRST,
    'comment_default_per_page' => 50,
    'comment_controls' => COMMENT_CONTROLS_HIDDEN,
    'comment_anonymous' => COMMENT_ANONYMOUS_MAYNOT_CONTACT,
    'comment_subject_field' => 1,
    'comment_preview' => COMMENT_PREVIEW_REQUIRED,
    'comment_form_location' => COMMENT_FORM_SEPARATE_PAGE,
  );
  $types = node_get_types();
  foreach ($settings as $setting => $default) {
    $value = variable_get($setting, $default);
    foreach ($types as $type => $object) {
      variable_set($setting .'_'. $type, $value);
    }
    variable_del($setting);
  }
  return array();
}

60 61 62 63 64
/**
 * Implementation of hook_schema().
 */
function comment_schema() {
  $schema['comments'] = array(
65
    'description' => t('Stores comments and associated data.'),
66
    'fields' => array(
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154
      'cid' => array(
        'type' => 'serial',
        'not null' => TRUE,
        'description' => t('Primary Key: Unique comment ID.'),
      ),
      'pid' => array(
        'type' => 'int',
        'not null' => TRUE,
        'default' => 0,
        'description' => t('The {comment}.cid to which this comment is a reply. If set to 0, this comment is not a reply to an existing comment.'),
      ),
      'nid' => array(
        'type' => 'int',
        'not null' => TRUE,
        'default' => 0,
        'description' => t('The {node}.nid to which this comment is a reply.'),
      ),
      'uid' => array(
        'type' => 'int',
        'not null' => TRUE,
        'default' => 0,
        'description' => t('The {user}.uid who authored the comment. If set to 0, this comment was created by an anonymous user.'),
      ),
      'subject' => array(
        'type' => 'varchar',
        'length' => 64,
        'not null' => TRUE,
        'default' => '',
        'description' => t('The comment title.'),
      ),
      'comment' => array(
        'type' => 'text',
        'not null' => TRUE,
        'size' => 'big',
        'description' => t('The comment body.'),
      ),
      'hostname' => array(
        'type' => 'varchar',
        'length' => 128,
        'not null' => TRUE,
        'default' => '',
        'description' => t("The author's host name."),
      ),
      'timestamp' => array(
        'type' => 'int',
        'not null' => TRUE,
        'default' => 0,
        'description' => t('The time that the comment was created, or last edited by its author, as a Unix timestamp.'),
      ),
      'status' => array(
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'default' => 0,
        'size' => 'tiny',
        'description' => t('The published status of a comment. (0 = Published, 1 = Not Published)'),
      ),
      'format' => array(
        'type' => 'int',
        'size' => 'small',
        'not null' => TRUE,
        'default' => 0,
        'description' => t('The {filter_formats}.format of the comment body.'),
      ),
      'thread' => array(
        'type' => 'varchar',
        'length' => 255,
        'not null' => TRUE,
        'description' => t("The vancode representation of the comment's place in a thread."),
      ),
      'name' => array(
        'type' => 'varchar',
        'length' => 60,
        'not null' => FALSE,
        'description' => t("The comment author's name. Uses {user}.name if the user is logged in, otherwise uses the value typed into the comment form."),
      ),
      'mail' => array(
        'type' => 'varchar',
        'length' => 64,
        'not null' => FALSE,
        'description' => t("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."),
      ),
      'homepage' => array(
        'type' => 'varchar',
        'length' => 255,
        'not null' => FALSE,
        'description' => t("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."),
      )
155 156 157 158 159 160 161 162
    ),
    'indexes' => array(
      'nid'    => array('nid'),
      'status' => array('status')
    ),
    'primary key' => array('cid'),
  );

163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200
    $schema['node_comment_statistics'] = array(
     'description' => t('Maintains statistics of node and comments posts to show "new" and "updated" flags.'),
      'fields' => array(
       'nid' => array(
         'type' => 'int',
         'unsigned' => TRUE,
         'not null' => TRUE,
         'default' => 0,
         'description' => t('The {node}.nid for which the statistics are compiled.'),
       ),
       'last_comment_timestamp' => array(
         'type' => 'int',
         'not null' => TRUE,
         'default' => 0,
         'description' => t('The Unix timestamp of the last comment that was posted within this node, from {comment}.timestamp.'),
       ),
       'last_comment_name' => array(
         'type' => 'varchar',
         'length' => 60,
         'not null' => FALSE,
         'description' => t('The name of the latest author to post a comment on this node, from {comment}.author.'),
       ),
       'last_comment_uid' => array(
         'type' => 'int',
         'not null' => TRUE,
         'default' => 0,
         'description' => t('The user ID of the latest author to post a comment on this node, from {comment}.uid.'),
       ),
       'comment_count' => array(
         'type' => 'int',
         'unsigned' => TRUE,
         'not null' => TRUE,
         'default' => 0,
         'description' => t('The total number of comments on this node.'),
       ),
      ),
      'indexes' => array('node_comment_timestamp' => array('last_comment_timestamp')),
      'primary key' => array('nid'),
201 202 203 204 205
  );

  return $schema;
}