annotate modules/comment/comment.install @ 19:3edae6ecd6c6 6.9

Drupal 6.9
author Franck Deroche <franck@defr.org>
date Thu, 15 Jan 2009 10:15:56 +0100
parents c1f4ac30525a
children
rev   line source
webmaster@1 1 <?php
franck@19 2 // $Id: comment.install,v 1.19.2.1 2009/01/06 15:46:36 goba Exp $
webmaster@1 3
webmaster@1 4 /**
webmaster@1 5 * Implementation of hook_enable().
webmaster@1 6 */
webmaster@1 7 function comment_enable() {
webmaster@1 8 // Insert records into the node_comment_statistics for nodes that are missing.
webmaster@1 9 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 {node} n LEFT JOIN {node_comment_statistics} c ON n.nid = c.nid WHERE c.comment_count IS NULL");
webmaster@1 10 }
webmaster@1 11
webmaster@1 12 /**
webmaster@1 13 * Changed node_comment_statistics to use node->changed to avoid future timestamps.
webmaster@1 14 */
webmaster@1 15 function comment_update_1() {
webmaster@1 16 // Change any future last comment timestamps to now.
webmaster@1 17 db_query('UPDATE {node_comment_statistics} SET last_comment_timestamp = %d WHERE last_comment_timestamp > %d', time(), time());
webmaster@1 18
webmaster@1 19 // Unstuck node indexing timestamp if needed.
webmaster@1 20 if (($last = variable_get('node_cron_last', FALSE)) !== FALSE) {
webmaster@1 21 variable_set('node_cron_last', min(time(), $last));
webmaster@1 22 }
webmaster@1 23 return array();
webmaster@1 24 }
webmaster@1 25
webmaster@1 26 function comment_update_6001() {
webmaster@1 27 $ret[] = update_sql("ALTER TABLE {comments} DROP score");
webmaster@1 28 $ret[] = update_sql("ALTER TABLE {comments} DROP users");
webmaster@1 29 return $ret;
webmaster@1 30 }
webmaster@1 31
webmaster@1 32 /**
webmaster@1 33 * Changed comment settings from global to per-node -- copy global
webmaster@1 34 * settings to all node types.
webmaster@1 35 */
webmaster@1 36 function comment_update_6002() {
webmaster@1 37 // Comment module might not be enabled when this is run, but we need the
webmaster@1 38 // constants defined by the module for this update.
webmaster@1 39 drupal_load('module', 'comment');
webmaster@1 40 $settings = array(
webmaster@1 41 'comment_default_mode' => COMMENT_MODE_THREADED_EXPANDED,
webmaster@1 42 'comment_default_order' => COMMENT_ORDER_NEWEST_FIRST,
webmaster@1 43 'comment_default_per_page' => 50,
webmaster@1 44 'comment_controls' => COMMENT_CONTROLS_HIDDEN,
webmaster@1 45 'comment_anonymous' => COMMENT_ANONYMOUS_MAYNOT_CONTACT,
webmaster@1 46 'comment_subject_field' => 1,
webmaster@1 47 'comment_preview' => COMMENT_PREVIEW_REQUIRED,
webmaster@1 48 'comment_form_location' => COMMENT_FORM_SEPARATE_PAGE,
webmaster@1 49 );
webmaster@1 50 $types = node_get_types();
webmaster@1 51 foreach ($settings as $setting => $default) {
webmaster@1 52 $value = variable_get($setting, $default);
webmaster@1 53 foreach ($types as $type => $object) {
webmaster@1 54 variable_set($setting .'_'. $type, $value);
webmaster@1 55 }
webmaster@1 56 variable_del($setting);
webmaster@1 57 }
webmaster@1 58 return array(array('success' => TRUE, 'query' => 'Global comment settings copied to all node types.'));
webmaster@1 59 }
webmaster@1 60
webmaster@1 61 /**
webmaster@1 62 * Add index to parent ID field.
webmaster@1 63 */
webmaster@1 64 function comment_update_6003() {
webmaster@1 65 $ret = array();
webmaster@1 66 db_add_index($ret, 'comments', 'pid', array('pid'));
webmaster@1 67 return $ret;
webmaster@1 68 }
webmaster@1 69
webmaster@1 70
webmaster@1 71 /**
webmaster@1 72 * Implementation of hook_schema().
webmaster@1 73 */
webmaster@1 74 function comment_schema() {
webmaster@1 75 $schema['comments'] = array(
franck@19 76 'description' => 'Stores comments and associated data.',
webmaster@1 77 'fields' => array(
webmaster@1 78 'cid' => array(
webmaster@1 79 'type' => 'serial',
webmaster@1 80 'not null' => TRUE,
franck@19 81 'description' => 'Primary Key: Unique comment ID.',
webmaster@1 82 ),
webmaster@1 83 'pid' => array(
webmaster@1 84 'type' => 'int',
webmaster@1 85 'not null' => TRUE,
webmaster@1 86 'default' => 0,
franck@19 87 'description' => 'The {comments}.cid to which this comment is a reply. If set to 0, this comment is not a reply to an existing comment.',
webmaster@1 88 ),
webmaster@1 89 'nid' => array(
webmaster@1 90 'type' => 'int',
webmaster@1 91 'not null' => TRUE,
webmaster@1 92 'default' => 0,
franck@19 93 'description' => 'The {node}.nid to which this comment is a reply.',
webmaster@1 94 ),
webmaster@1 95 'uid' => array(
webmaster@1 96 'type' => 'int',
webmaster@1 97 'not null' => TRUE,
webmaster@1 98 'default' => 0,
franck@19 99 'description' => 'The {users}.uid who authored the comment. If set to 0, this comment was created by an anonymous user.',
webmaster@1 100 ),
webmaster@1 101 'subject' => array(
webmaster@1 102 'type' => 'varchar',
webmaster@1 103 'length' => 64,
webmaster@1 104 'not null' => TRUE,
webmaster@1 105 'default' => '',
franck@19 106 'description' => 'The comment title.',
webmaster@1 107 ),
webmaster@1 108 'comment' => array(
webmaster@1 109 'type' => 'text',
webmaster@1 110 'not null' => TRUE,
webmaster@1 111 'size' => 'big',
franck@19 112 'description' => 'The comment body.',
webmaster@1 113 ),
webmaster@1 114 'hostname' => array(
webmaster@1 115 'type' => 'varchar',
webmaster@1 116 'length' => 128,
webmaster@1 117 'not null' => TRUE,
webmaster@1 118 'default' => '',
franck@19 119 'description' => "The author's host name.",
webmaster@1 120 ),
webmaster@1 121 'timestamp' => array(
webmaster@1 122 'type' => 'int',
webmaster@1 123 'not null' => TRUE,
webmaster@1 124 'default' => 0,
franck@19 125 'description' => 'The time that the comment was created, or last edited by its author, as a Unix timestamp.',
webmaster@1 126 ),
webmaster@1 127 'status' => array(
webmaster@1 128 'type' => 'int',
webmaster@1 129 'unsigned' => TRUE,
webmaster@1 130 'not null' => TRUE,
webmaster@1 131 'default' => 0,
webmaster@1 132 'size' => 'tiny',
franck@19 133 'description' => 'The published status of a comment. (0 = Published, 1 = Not Published)',
webmaster@1 134 ),
webmaster@1 135 'format' => array(
webmaster@1 136 'type' => 'int',
webmaster@1 137 'size' => 'small',
webmaster@1 138 'not null' => TRUE,
webmaster@1 139 'default' => 0,
franck@19 140 'description' => 'The {filter_formats}.format of the comment body.',
webmaster@1 141 ),
webmaster@1 142 'thread' => array(
webmaster@1 143 'type' => 'varchar',
webmaster@1 144 'length' => 255,
webmaster@1 145 'not null' => TRUE,
franck@19 146 'description' => "The vancode representation of the comment's place in a thread.",
webmaster@1 147 ),
webmaster@1 148 'name' => array(
webmaster@1 149 'type' => 'varchar',
webmaster@1 150 'length' => 60,
webmaster@1 151 'not null' => FALSE,
franck@19 152 'description' => "The comment author's name. Uses {users}.name if the user is logged in, otherwise uses the value typed into the comment form.",
webmaster@1 153 ),
webmaster@1 154 'mail' => array(
webmaster@1 155 'type' => 'varchar',
webmaster@1 156 'length' => 64,
webmaster@1 157 'not null' => FALSE,
franck@19 158 '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.",
webmaster@1 159 ),
webmaster@1 160 'homepage' => array(
webmaster@1 161 'type' => 'varchar',
webmaster@1 162 'length' => 255,
webmaster@1 163 'not null' => FALSE,
franck@19 164 '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.",
webmaster@1 165 )
webmaster@1 166 ),
webmaster@1 167 'indexes' => array(
webmaster@1 168 'pid' => array('pid'),
webmaster@1 169 'nid' => array('nid'),
webmaster@1 170 'status' => array('status'), // This index is probably unused
webmaster@1 171 ),
webmaster@1 172 'primary key' => array('cid'),
webmaster@1 173 );
webmaster@1 174
webmaster@1 175 $schema['node_comment_statistics'] = array(
franck@19 176 'description' => 'Maintains statistics of node and comments posts to show "new" and "updated" flags.',
webmaster@1 177 'fields' => array(
webmaster@1 178 'nid' => array(
webmaster@1 179 'type' => 'int',
webmaster@1 180 'unsigned' => TRUE,
webmaster@1 181 'not null' => TRUE,
webmaster@1 182 'default' => 0,
franck@19 183 'description' => 'The {node}.nid for which the statistics are compiled.',
webmaster@1 184 ),
webmaster@1 185 'last_comment_timestamp' => array(
webmaster@1 186 'type' => 'int',
webmaster@1 187 'not null' => TRUE,
webmaster@1 188 'default' => 0,
franck@19 189 'description' => 'The Unix timestamp of the last comment that was posted within this node, from {comments}.timestamp.',
webmaster@1 190 ),
webmaster@1 191 'last_comment_name' => array(
webmaster@1 192 'type' => 'varchar',
webmaster@1 193 'length' => 60,
webmaster@1 194 'not null' => FALSE,
franck@19 195 'description' => 'The name of the latest author to post a comment on this node, from {comments}.name.',
webmaster@1 196 ),
webmaster@1 197 'last_comment_uid' => array(
webmaster@1 198 'type' => 'int',
webmaster@1 199 'not null' => TRUE,
webmaster@1 200 'default' => 0,
franck@19 201 'description' => 'The user ID of the latest author to post a comment on this node, from {comments}.uid.',
webmaster@1 202 ),
webmaster@1 203 'comment_count' => array(
webmaster@1 204 'type' => 'int',
webmaster@1 205 'unsigned' => TRUE,
webmaster@1 206 'not null' => TRUE,
webmaster@1 207 'default' => 0,
franck@19 208 'description' => 'The total number of comments on this node.',
webmaster@1 209 ),
webmaster@1 210 ),
webmaster@1 211 'primary key' => array('nid'),
webmaster@1 212 'indexes' => array(
webmaster@1 213 'node_comment_timestamp' => array('last_comment_timestamp')
webmaster@1 214 ),
webmaster@1 215 );
webmaster@1 216
webmaster@1 217 return $schema;
webmaster@1 218 }
webmaster@1 219