summaryrefslogtreecommitdiff
path: root/modules/comment/comment.install
blob: 59bf81061dbeba76b3079862ffbb3527c5506a69 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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
60
61
62
63
64
65
66
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
<?php
// $Id$

/**
 * Implementation of hook_enable().
 */
function comment_enable() {
  // Insert records into the node_comment_statistics for nodes that are missing.
  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();
}

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

/**
 * 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();
}

/**
 * Implementation of hook_schema().
 */
function comment_schema() {
  $schema['comments'] = array(
    'fields' => array(
      'cid'       => array('type' => 'serial', 'not null' => TRUE),
      'pid'       => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
      'nid'       => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
      'uid'       => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
      'subject'   => array('type' => 'varchar', 'length' => 64, 'not null' => TRUE, 'default' => ''),
      'comment'   => array('type' => 'text', 'not null' => TRUE, 'size' => 'big'),
      'hostname'  => array('type' => 'varchar', 'length' => 128, 'not null' => TRUE, 'default' => ''),
      'timestamp' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
      'status'    => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0, 'size' => 'tiny'),
      'format'    => array('type' => 'int', 'size' => 'small', 'not null' => TRUE, 'default' => 0),
      'thread'    => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE),
      'name'      => array('type' => 'varchar', 'length' => 60, 'not null' => FALSE),
      'mail'      => array('type' => 'varchar', 'length' => 64, 'not null' => FALSE),
      'homepage'  => array('type' => 'varchar', 'length' => 255, 'not null' => FALSE)
    ),
    'indexes' => array(
      'nid'    => array('nid'),
      'status' => array('status')
    ),
    'primary key' => array('cid'),
  );

  $schema['node_comment_statistics'] = array(
    'fields' => array(
      'nid'                    => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0),
      'last_comment_timestamp' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
      'last_comment_name'      => array('type' => 'varchar', 'length' => 60, 'not null' => FALSE),
      'last_comment_uid'       => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
      'comment_count'          => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0)
    ),
    'indexes' => array('node_comment_timestamp' => array('last_comment_timestamp')),
    'primary key' => array('nid'),
  );

  return $schema;
}