danielebarchiesi@0
|
1 <?php
|
danielebarchiesi@0
|
2
|
danielebarchiesi@0
|
3 /**
|
danielebarchiesi@0
|
4 * @file
|
danielebarchiesi@0
|
5 * Install, update and uninstall functions for the comment module.
|
danielebarchiesi@0
|
6 */
|
danielebarchiesi@0
|
7
|
danielebarchiesi@0
|
8 /**
|
danielebarchiesi@0
|
9 * Implements hook_uninstall().
|
danielebarchiesi@0
|
10 */
|
danielebarchiesi@0
|
11 function comment_uninstall() {
|
danielebarchiesi@0
|
12 // Delete comment_body field.
|
danielebarchiesi@0
|
13 field_delete_field('comment_body');
|
danielebarchiesi@0
|
14
|
danielebarchiesi@0
|
15 // Remove variables.
|
danielebarchiesi@0
|
16 variable_del('comment_block_count');
|
danielebarchiesi@0
|
17 $node_types = array_keys(node_type_get_types());
|
danielebarchiesi@0
|
18 foreach ($node_types as $node_type) {
|
danielebarchiesi@0
|
19 field_attach_delete_bundle('comment', 'comment_node_' . $node_type);
|
danielebarchiesi@0
|
20 variable_del('comment_' . $node_type);
|
danielebarchiesi@0
|
21 variable_del('comment_anonymous_' . $node_type);
|
danielebarchiesi@0
|
22 variable_del('comment_controls_' . $node_type);
|
danielebarchiesi@0
|
23 variable_del('comment_default_mode_' . $node_type);
|
danielebarchiesi@0
|
24 variable_del('comment_default_order_' . $node_type);
|
danielebarchiesi@0
|
25 variable_del('comment_default_per_page_' . $node_type);
|
danielebarchiesi@0
|
26 variable_del('comment_form_location_' . $node_type);
|
danielebarchiesi@0
|
27 variable_del('comment_preview_' . $node_type);
|
danielebarchiesi@0
|
28 variable_del('comment_subject_field_' . $node_type);
|
danielebarchiesi@0
|
29 }
|
danielebarchiesi@0
|
30 }
|
danielebarchiesi@0
|
31
|
danielebarchiesi@0
|
32 /**
|
danielebarchiesi@0
|
33 * Implements hook_enable().
|
danielebarchiesi@0
|
34 */
|
danielebarchiesi@0
|
35 function comment_enable() {
|
danielebarchiesi@0
|
36 // Insert records into the node_comment_statistics for nodes that are missing.
|
danielebarchiesi@0
|
37 $query = db_select('node', 'n');
|
danielebarchiesi@0
|
38 $query->leftJoin('node_comment_statistics', 'ncs', 'ncs.nid = n.nid');
|
danielebarchiesi@0
|
39 $query->addField('n', 'created', 'last_comment_timestamp');
|
danielebarchiesi@0
|
40 $query->addField('n', 'uid', 'last_comment_uid');
|
danielebarchiesi@0
|
41 $query->addField('n', 'nid');
|
danielebarchiesi@0
|
42 $query->addExpression('0', 'comment_count');
|
danielebarchiesi@0
|
43 $query->addExpression('NULL', 'last_comment_name');
|
danielebarchiesi@0
|
44 $query->isNull('ncs.comment_count');
|
danielebarchiesi@0
|
45
|
danielebarchiesi@0
|
46 db_insert('node_comment_statistics')
|
danielebarchiesi@0
|
47 ->from($query)
|
danielebarchiesi@0
|
48 ->execute();
|
danielebarchiesi@0
|
49 }
|
danielebarchiesi@0
|
50
|
danielebarchiesi@0
|
51 /**
|
danielebarchiesi@0
|
52 * Implements hook_modules_enabled().
|
danielebarchiesi@0
|
53 *
|
danielebarchiesi@0
|
54 * Creates comment body fields for node types existing before the comment module
|
danielebarchiesi@0
|
55 * is enabled. We use hook_modules_enabled() rather than hook_enable() so we can
|
danielebarchiesi@0
|
56 * react to node types of existing modules, and those of modules being enabled
|
danielebarchiesi@0
|
57 * both before and after comment module in the loop of module_enable().
|
danielebarchiesi@0
|
58 *
|
danielebarchiesi@0
|
59 * There is a separate comment bundle for each node type to allow for
|
danielebarchiesi@0
|
60 * per-node-type customization of comment fields. Each one of these bundles
|
danielebarchiesi@0
|
61 * needs a comment body field instance. A comment bundle is needed even for
|
danielebarchiesi@0
|
62 * node types whose comments are disabled by default, because individual nodes
|
danielebarchiesi@0
|
63 * may override that default.
|
danielebarchiesi@0
|
64 *
|
danielebarchiesi@0
|
65 * @see comment_node_type_insert()
|
danielebarchiesi@0
|
66 */
|
danielebarchiesi@0
|
67 function comment_modules_enabled($modules) {
|
danielebarchiesi@0
|
68 // Only react if comment module is one of the modules being enabled.
|
danielebarchiesi@0
|
69 // hook_node_type_insert() is used to create body fields while the comment
|
danielebarchiesi@0
|
70 // module is enabled.
|
danielebarchiesi@0
|
71 if (in_array('comment', $modules)) {
|
danielebarchiesi@0
|
72 // Ensure that the list of node types reflects newly enabled modules.
|
danielebarchiesi@0
|
73 node_types_rebuild();
|
danielebarchiesi@0
|
74
|
danielebarchiesi@0
|
75 // Create comment body fields for each node type, if needed.
|
danielebarchiesi@0
|
76 foreach (node_type_get_types() as $type => $info) {
|
danielebarchiesi@0
|
77 _comment_body_field_create($info);
|
danielebarchiesi@0
|
78 }
|
danielebarchiesi@0
|
79 }
|
danielebarchiesi@0
|
80 }
|
danielebarchiesi@0
|
81
|
danielebarchiesi@0
|
82 /**
|
danielebarchiesi@0
|
83 * Implements hook_update_dependencies().
|
danielebarchiesi@0
|
84 */
|
danielebarchiesi@0
|
85 function comment_update_dependencies() {
|
danielebarchiesi@0
|
86 // comment_update_7005() creates the comment body field and therefore must
|
danielebarchiesi@0
|
87 // run after all Field modules have been enabled, which happens in
|
danielebarchiesi@0
|
88 // system_update_7027().
|
danielebarchiesi@0
|
89 $dependencies['comment'][7005] = array(
|
danielebarchiesi@0
|
90 'system' => 7027,
|
danielebarchiesi@0
|
91 );
|
danielebarchiesi@0
|
92
|
danielebarchiesi@0
|
93 // comment_update_7006() needs to query the {filter_format} table to get a
|
danielebarchiesi@0
|
94 // list of existing text formats, so it must run after filter_update_7000(),
|
danielebarchiesi@0
|
95 // which creates that table.
|
danielebarchiesi@0
|
96 $dependencies['comment'][7006] = array(
|
danielebarchiesi@0
|
97 'filter' => 7000,
|
danielebarchiesi@0
|
98 );
|
danielebarchiesi@0
|
99
|
danielebarchiesi@0
|
100 return $dependencies;
|
danielebarchiesi@0
|
101 }
|
danielebarchiesi@0
|
102
|
danielebarchiesi@0
|
103 /**
|
danielebarchiesi@0
|
104 * @addtogroup updates-6.x-to-7.x
|
danielebarchiesi@0
|
105 * @{
|
danielebarchiesi@0
|
106 */
|
danielebarchiesi@0
|
107
|
danielebarchiesi@0
|
108 /**
|
danielebarchiesi@0
|
109 * Rename comment display setting variables.
|
danielebarchiesi@0
|
110 */
|
danielebarchiesi@0
|
111 function comment_update_7000() {
|
danielebarchiesi@0
|
112 $types = _update_7000_node_get_types();
|
danielebarchiesi@0
|
113 foreach ($types as $type => $type_object) {
|
danielebarchiesi@0
|
114 variable_del('comment_default_order' . $type);
|
danielebarchiesi@0
|
115
|
danielebarchiesi@0
|
116 // Drupal 6 had four display modes:
|
danielebarchiesi@0
|
117 // - COMMENT_MODE_FLAT_COLLAPSED = 1
|
danielebarchiesi@0
|
118 // - COMMENT_MODE_FLAT_EXPANDED = 2
|
danielebarchiesi@0
|
119 // - COMMENT_MODE_THREADED_COLLAPSED = 3
|
danielebarchiesi@0
|
120 // - COMMENT_MODE_THREADED_EXPANDED = 4
|
danielebarchiesi@0
|
121 //
|
danielebarchiesi@0
|
122 // Drupal 7 doesn't support collapsed/expanded modes anymore, so we
|
danielebarchiesi@0
|
123 // migrate all the flat modes to COMMENT_MODE_FLAT (0) and all the threaded
|
danielebarchiesi@0
|
124 // modes to COMMENT_MODE_THREADED (1).
|
danielebarchiesi@0
|
125 $setting = variable_get('comment_default_mode_' . $type, 4);
|
danielebarchiesi@0
|
126 if ($setting == 3 || $setting == 4) {
|
danielebarchiesi@0
|
127 variable_set('comment_default_mode_' . $type, 1);
|
danielebarchiesi@0
|
128 }
|
danielebarchiesi@0
|
129 else {
|
danielebarchiesi@0
|
130 variable_set('comment_default_mode_' . $type, 0);
|
danielebarchiesi@0
|
131 }
|
danielebarchiesi@0
|
132
|
danielebarchiesi@0
|
133 // There were only two comment modes in the past:
|
danielebarchiesi@0
|
134 // - 1 was 'required' previously, convert into DRUPAL_REQUIRED (2).
|
danielebarchiesi@0
|
135 // - 0 was 'optional' previously, convert into DRUPAL_OPTIONAL (1).
|
danielebarchiesi@0
|
136 $preview = variable_get('comment_preview_' . $type, 1) ? 2 : 1;
|
danielebarchiesi@0
|
137 variable_set('comment_preview_' . $type, $preview);
|
danielebarchiesi@0
|
138 }
|
danielebarchiesi@0
|
139 }
|
danielebarchiesi@0
|
140
|
danielebarchiesi@0
|
141 /**
|
danielebarchiesi@0
|
142 * Change comment status from published being 0 to being 1
|
danielebarchiesi@0
|
143 */
|
danielebarchiesi@0
|
144 function comment_update_7001() {
|
danielebarchiesi@0
|
145 // Choose a temporary status value different from the existing status values.
|
danielebarchiesi@0
|
146 $tmp_status = db_query('SELECT MAX(status) FROM {comments}')->fetchField() + 1;
|
danielebarchiesi@0
|
147
|
danielebarchiesi@0
|
148 $changes = array(
|
danielebarchiesi@0
|
149 0 => $tmp_status,
|
danielebarchiesi@0
|
150 1 => 0,
|
danielebarchiesi@0
|
151 $tmp_status => 1,
|
danielebarchiesi@0
|
152 );
|
danielebarchiesi@0
|
153
|
danielebarchiesi@0
|
154 foreach ($changes as $old => $new) {
|
danielebarchiesi@0
|
155 db_update('comments')
|
danielebarchiesi@0
|
156 ->fields(array('status' => $new))
|
danielebarchiesi@0
|
157 ->condition('status', $old)
|
danielebarchiesi@0
|
158 ->execute();
|
danielebarchiesi@0
|
159 }
|
danielebarchiesi@0
|
160 }
|
danielebarchiesi@0
|
161
|
danielebarchiesi@0
|
162 /**
|
danielebarchiesi@0
|
163 * Rename {comments} table to {comment} and upgrade it.
|
danielebarchiesi@0
|
164 */
|
danielebarchiesi@0
|
165 function comment_update_7002() {
|
danielebarchiesi@0
|
166 db_rename_table('comments', 'comment');
|
danielebarchiesi@0
|
167
|
danielebarchiesi@0
|
168 // Add user-related indexes. These may already exist from Drupal 6.
|
danielebarchiesi@0
|
169 if (!db_index_exists('comment', 'comment_uid')) {
|
danielebarchiesi@0
|
170 db_add_index('comment', 'comment_uid', array('uid'));
|
danielebarchiesi@0
|
171 db_add_index('node_comment_statistics', 'last_comment_uid', array('last_comment_uid'));
|
danielebarchiesi@0
|
172 }
|
danielebarchiesi@0
|
173
|
danielebarchiesi@0
|
174 // Create a language column.
|
danielebarchiesi@0
|
175 db_add_field('comment', 'language', array(
|
danielebarchiesi@0
|
176 'type' => 'varchar',
|
danielebarchiesi@0
|
177 'length' => 12,
|
danielebarchiesi@0
|
178 'not null' => TRUE,
|
danielebarchiesi@0
|
179 'default' => '',
|
danielebarchiesi@0
|
180 ));
|
danielebarchiesi@0
|
181 db_add_index('comment', 'comment_nid_language', array('nid', 'language'));
|
danielebarchiesi@0
|
182 }
|
danielebarchiesi@0
|
183
|
danielebarchiesi@0
|
184 /**
|
danielebarchiesi@0
|
185 * Split {comment}.timestamp into 'created' and 'changed', improve indexing on {comment}.
|
danielebarchiesi@0
|
186 */
|
danielebarchiesi@0
|
187 function comment_update_7003() {
|
danielebarchiesi@0
|
188 // Drop the old indexes.
|
danielebarchiesi@0
|
189 db_drop_index('comment', 'status');
|
danielebarchiesi@0
|
190 db_drop_index('comment', 'pid');
|
danielebarchiesi@0
|
191
|
danielebarchiesi@0
|
192 // Create a created column.
|
danielebarchiesi@0
|
193 db_add_field('comment', 'created', array(
|
danielebarchiesi@0
|
194 'type' => 'int',
|
danielebarchiesi@0
|
195 'not null' => TRUE,
|
danielebarchiesi@0
|
196 'default' => 0,
|
danielebarchiesi@0
|
197 ));
|
danielebarchiesi@0
|
198
|
danielebarchiesi@0
|
199 // Rename the timestamp column to changed.
|
danielebarchiesi@0
|
200 db_change_field('comment', 'timestamp', 'changed', array(
|
danielebarchiesi@0
|
201 'type' => 'int',
|
danielebarchiesi@0
|
202 'not null' => TRUE,
|
danielebarchiesi@0
|
203 'default' => 0,
|
danielebarchiesi@0
|
204 ));
|
danielebarchiesi@0
|
205
|
danielebarchiesi@0
|
206 // Migrate the data.
|
danielebarchiesi@0
|
207 // @todo db_update() should support this.
|
danielebarchiesi@0
|
208 db_query('UPDATE {comment} SET created = changed');
|
danielebarchiesi@0
|
209
|
danielebarchiesi@0
|
210 // Recreate the indexes.
|
danielebarchiesi@0
|
211 // The 'comment_num_new' index is optimized for comment_num_new()
|
danielebarchiesi@0
|
212 // and comment_new_page_count().
|
danielebarchiesi@0
|
213 db_add_index('comment', 'comment_num_new', array('nid', 'status', 'created', 'cid', 'thread'));
|
danielebarchiesi@0
|
214 db_add_index('comment', 'comment_pid_status', array('pid', 'status'));
|
danielebarchiesi@0
|
215 }
|
danielebarchiesi@0
|
216
|
danielebarchiesi@0
|
217 /**
|
danielebarchiesi@0
|
218 * Upgrade the {node_comment_statistics} table.
|
danielebarchiesi@0
|
219 */
|
danielebarchiesi@0
|
220 function comment_update_7004() {
|
danielebarchiesi@0
|
221 db_add_field('node_comment_statistics', 'cid', array(
|
danielebarchiesi@0
|
222 'type' => 'int',
|
danielebarchiesi@0
|
223 'not null' => TRUE,
|
danielebarchiesi@0
|
224 'default' => 0,
|
danielebarchiesi@0
|
225 'description' => 'The {comment}.cid of the last comment.',
|
danielebarchiesi@0
|
226 ));
|
danielebarchiesi@0
|
227 db_add_index('node_comment_statistics', 'cid', array('cid'));
|
danielebarchiesi@0
|
228
|
danielebarchiesi@0
|
229 // The comment_count index may have been added in Drupal 6.
|
danielebarchiesi@0
|
230 if (!db_index_exists('node_comment_statistics', 'comment_count')) {
|
danielebarchiesi@0
|
231 // Add an index on the comment_count.
|
danielebarchiesi@0
|
232 db_add_index('node_comment_statistics', 'comment_count', array('comment_count'));
|
danielebarchiesi@0
|
233 }
|
danielebarchiesi@0
|
234 }
|
danielebarchiesi@0
|
235
|
danielebarchiesi@0
|
236 /**
|
danielebarchiesi@0
|
237 * Create the comment_body field.
|
danielebarchiesi@0
|
238 */
|
danielebarchiesi@0
|
239 function comment_update_7005() {
|
danielebarchiesi@0
|
240 // Create comment body field.
|
danielebarchiesi@0
|
241 $field = array(
|
danielebarchiesi@0
|
242 'field_name' => 'comment_body',
|
danielebarchiesi@0
|
243 'type' => 'text_long',
|
danielebarchiesi@0
|
244 'module' => 'text',
|
danielebarchiesi@0
|
245 'entity_types' => array(
|
danielebarchiesi@0
|
246 'comment',
|
danielebarchiesi@0
|
247 ),
|
danielebarchiesi@0
|
248 'settings' => array(),
|
danielebarchiesi@0
|
249 'cardinality' => 1,
|
danielebarchiesi@0
|
250 );
|
danielebarchiesi@0
|
251 _update_7000_field_create_field($field);
|
danielebarchiesi@0
|
252
|
danielebarchiesi@0
|
253 // Add the field to comments for all existing bundles.
|
danielebarchiesi@0
|
254 $generic_instance = array(
|
danielebarchiesi@0
|
255 'entity_type' => 'comment',
|
danielebarchiesi@0
|
256 'label' => t('Comment'),
|
danielebarchiesi@0
|
257 'settings' => array(
|
danielebarchiesi@0
|
258 'text_processing' => 1,
|
danielebarchiesi@0
|
259 ),
|
danielebarchiesi@0
|
260 'required' => TRUE,
|
danielebarchiesi@0
|
261 'display' => array(
|
danielebarchiesi@0
|
262 'default' => array(
|
danielebarchiesi@0
|
263 'label' => 'hidden',
|
danielebarchiesi@0
|
264 'type' => 'text_default',
|
danielebarchiesi@0
|
265 'weight' => 0,
|
danielebarchiesi@0
|
266 'settings' => array(),
|
danielebarchiesi@0
|
267 'module' => 'text',
|
danielebarchiesi@0
|
268 ),
|
danielebarchiesi@0
|
269 ),
|
danielebarchiesi@0
|
270 'widget' => array(
|
danielebarchiesi@0
|
271 'type' => 'text_textarea',
|
danielebarchiesi@0
|
272 'settings' => array(
|
danielebarchiesi@0
|
273 'rows' => 5,
|
danielebarchiesi@0
|
274 ),
|
danielebarchiesi@0
|
275 'weight' => 0,
|
danielebarchiesi@0
|
276 'module' => 'text',
|
danielebarchiesi@0
|
277 ),
|
danielebarchiesi@0
|
278 'description' => '',
|
danielebarchiesi@0
|
279 );
|
danielebarchiesi@0
|
280
|
danielebarchiesi@0
|
281 $types = _update_7000_node_get_types();
|
danielebarchiesi@0
|
282 foreach ($types as $type => $type_object) {
|
danielebarchiesi@0
|
283 $instance = $generic_instance;
|
danielebarchiesi@0
|
284 $instance['bundle'] = 'comment_node_' . $type;
|
danielebarchiesi@0
|
285 _update_7000_field_create_instance($field, $instance);
|
danielebarchiesi@0
|
286 }
|
danielebarchiesi@0
|
287 }
|
danielebarchiesi@0
|
288
|
danielebarchiesi@0
|
289 /**
|
danielebarchiesi@0
|
290 * Migrate data from the comment field to field storage.
|
danielebarchiesi@0
|
291 */
|
danielebarchiesi@0
|
292 function comment_update_7006(&$sandbox) {
|
danielebarchiesi@0
|
293 // This is a multipass update. First set up some comment variables.
|
danielebarchiesi@0
|
294 if (empty($sandbox['total'])) {
|
danielebarchiesi@0
|
295 $comments = (bool) db_query_range('SELECT 1 FROM {comment}', 0, 1)->fetchField();
|
danielebarchiesi@0
|
296 $sandbox['types'] = array();
|
danielebarchiesi@0
|
297 if ($comments) {
|
danielebarchiesi@0
|
298 $sandbox['types'] = array_keys(_update_7000_node_get_types());
|
danielebarchiesi@0
|
299 }
|
danielebarchiesi@0
|
300 $sandbox['total'] = count($sandbox['types']);
|
danielebarchiesi@0
|
301 }
|
danielebarchiesi@0
|
302
|
danielebarchiesi@0
|
303 if (!empty($sandbox['types'])) {
|
danielebarchiesi@0
|
304 $type = array_shift($sandbox['types']);
|
danielebarchiesi@0
|
305
|
danielebarchiesi@0
|
306 $query = db_select('comment', 'c');
|
danielebarchiesi@0
|
307 $query->innerJoin('node', 'n', 'c.nid = n.nid AND n.type = :type', array(':type' => $type));
|
danielebarchiesi@0
|
308 $query->addField('c', 'cid', 'entity_id');
|
danielebarchiesi@0
|
309 $query->addExpression("'comment_node_$type'", 'bundle');
|
danielebarchiesi@0
|
310 $query->addExpression("'comment'", 'entity_type');
|
danielebarchiesi@0
|
311 $query->addExpression('0', 'deleted');
|
danielebarchiesi@0
|
312 $query->addExpression("'" . LANGUAGE_NONE . "'", 'language');
|
danielebarchiesi@0
|
313 $query->addExpression('0', 'delta');
|
danielebarchiesi@0
|
314 $query->addField('c', 'comment', 'comment_body_value');
|
danielebarchiesi@0
|
315 $query->addField('c', 'format', 'comment_body_format');
|
danielebarchiesi@0
|
316
|
danielebarchiesi@0
|
317 db_insert('field_data_comment_body')
|
danielebarchiesi@0
|
318 ->from($query)
|
danielebarchiesi@0
|
319 ->execute();
|
danielebarchiesi@0
|
320
|
danielebarchiesi@0
|
321 $sandbox['#finished'] = 1 - count($sandbox['types']) / $sandbox['total'];
|
danielebarchiesi@0
|
322 }
|
danielebarchiesi@0
|
323
|
danielebarchiesi@0
|
324 // On the last pass of the update, $sandbox['types'] will be empty.
|
danielebarchiesi@0
|
325 if (empty($sandbox['types'])) {
|
danielebarchiesi@0
|
326 // Update the comment body text formats. For an explanation of these
|
danielebarchiesi@0
|
327 // updates, see the code comments in user_update_7010().
|
danielebarchiesi@0
|
328 db_update('field_data_comment_body')
|
danielebarchiesi@0
|
329 ->fields(array('comment_body_format' => NULL))
|
danielebarchiesi@0
|
330 ->condition('comment_body_value', '')
|
danielebarchiesi@0
|
331 ->condition('comment_body_format', 0)
|
danielebarchiesi@0
|
332 ->execute();
|
danielebarchiesi@0
|
333 $existing_formats = db_query("SELECT format FROM {filter_format}")->fetchCol();
|
danielebarchiesi@0
|
334 $default_format = variable_get('filter_default_format', 1);
|
danielebarchiesi@0
|
335 db_update('field_data_comment_body')
|
danielebarchiesi@0
|
336 ->fields(array('comment_body_format' => $default_format))
|
danielebarchiesi@0
|
337 ->isNotNull('comment_body_format')
|
danielebarchiesi@0
|
338 ->condition('comment_body_format', $existing_formats, 'NOT IN')
|
danielebarchiesi@0
|
339 ->execute();
|
danielebarchiesi@0
|
340
|
danielebarchiesi@0
|
341 // Finally, remove the old comment data.
|
danielebarchiesi@0
|
342 db_drop_field('comment', 'comment');
|
danielebarchiesi@0
|
343 db_drop_field('comment', 'format');
|
danielebarchiesi@0
|
344 }
|
danielebarchiesi@0
|
345 }
|
danielebarchiesi@0
|
346
|
danielebarchiesi@0
|
347 /**
|
danielebarchiesi@0
|
348 * @} End of "addtogroup updates-6.x-to-7.x".
|
danielebarchiesi@0
|
349 */
|
danielebarchiesi@0
|
350
|
danielebarchiesi@0
|
351 /**
|
danielebarchiesi@0
|
352 * @addtogroup updates-7.x-extra
|
danielebarchiesi@0
|
353 * @{
|
danielebarchiesi@0
|
354 */
|
danielebarchiesi@0
|
355
|
danielebarchiesi@0
|
356 /**
|
danielebarchiesi@0
|
357 * Add an index to the created column.
|
danielebarchiesi@0
|
358 */
|
danielebarchiesi@0
|
359 function comment_update_7007() {
|
danielebarchiesi@0
|
360 db_add_index('comment', 'comment_created', array('created'));
|
danielebarchiesi@0
|
361 }
|
danielebarchiesi@0
|
362
|
danielebarchiesi@0
|
363 /**
|
danielebarchiesi@0
|
364 * Update database to match Drupal 7 schema.
|
danielebarchiesi@0
|
365 */
|
danielebarchiesi@0
|
366 function comment_update_7008() {
|
danielebarchiesi@0
|
367 // Update default status to 1.
|
danielebarchiesi@0
|
368 db_change_field('comment', 'status', 'status', array(
|
danielebarchiesi@0
|
369 'type' => 'int',
|
danielebarchiesi@0
|
370 'unsigned' => TRUE,
|
danielebarchiesi@0
|
371 'not null' => TRUE,
|
danielebarchiesi@0
|
372 'default' => 1,
|
danielebarchiesi@0
|
373 'size' => 'tiny',
|
danielebarchiesi@0
|
374 ));
|
danielebarchiesi@0
|
375
|
danielebarchiesi@0
|
376 // Realign indexes.
|
danielebarchiesi@0
|
377 db_drop_index('comment', 'comment_status_pid');
|
danielebarchiesi@0
|
378 db_add_index('comment', 'comment_status_pid', array('pid', 'status'));
|
danielebarchiesi@0
|
379 db_drop_index('comment', 'comment_pid_status');
|
danielebarchiesi@0
|
380 db_drop_index('comment', 'nid');
|
danielebarchiesi@0
|
381 }
|
danielebarchiesi@0
|
382
|
danielebarchiesi@0
|
383 /**
|
danielebarchiesi@0
|
384 * Change the last_comment_timestamp column description.
|
danielebarchiesi@0
|
385 */
|
danielebarchiesi@0
|
386 function comment_update_7009() {
|
danielebarchiesi@0
|
387 db_change_field('node_comment_statistics', 'last_comment_timestamp', 'last_comment_timestamp', array(
|
danielebarchiesi@0
|
388 'type' => 'int',
|
danielebarchiesi@0
|
389 'not null' => TRUE,
|
danielebarchiesi@0
|
390 'default' => 0,
|
danielebarchiesi@0
|
391 'description' => 'The Unix timestamp of the last comment that was posted within this node, from {comment}.changed.',
|
danielebarchiesi@0
|
392 ));
|
danielebarchiesi@0
|
393 }
|
danielebarchiesi@0
|
394
|
danielebarchiesi@0
|
395 /**
|
danielebarchiesi@0
|
396 * @} End of "addtogroup updates-7.x-extra".
|
danielebarchiesi@0
|
397 */
|
danielebarchiesi@0
|
398
|
danielebarchiesi@0
|
399 /**
|
danielebarchiesi@0
|
400 * Implements hook_schema().
|
danielebarchiesi@0
|
401 */
|
danielebarchiesi@0
|
402 function comment_schema() {
|
danielebarchiesi@0
|
403 $schema['comment'] = array(
|
danielebarchiesi@0
|
404 'description' => 'Stores comments and associated data.',
|
danielebarchiesi@0
|
405 'fields' => array(
|
danielebarchiesi@0
|
406 'cid' => array(
|
danielebarchiesi@0
|
407 'type' => 'serial',
|
danielebarchiesi@0
|
408 'not null' => TRUE,
|
danielebarchiesi@0
|
409 'description' => 'Primary Key: Unique comment ID.',
|
danielebarchiesi@0
|
410 ),
|
danielebarchiesi@0
|
411 'pid' => array(
|
danielebarchiesi@0
|
412 'type' => 'int',
|
danielebarchiesi@0
|
413 'not null' => TRUE,
|
danielebarchiesi@0
|
414 'default' => 0,
|
danielebarchiesi@0
|
415 '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
|
416 ),
|
danielebarchiesi@0
|
417 'nid' => array(
|
danielebarchiesi@0
|
418 'type' => 'int',
|
danielebarchiesi@0
|
419 'not null' => TRUE,
|
danielebarchiesi@0
|
420 'default' => 0,
|
danielebarchiesi@0
|
421 'description' => 'The {node}.nid to which this comment is a reply.',
|
danielebarchiesi@0
|
422 ),
|
danielebarchiesi@0
|
423 'uid' => array(
|
danielebarchiesi@0
|
424 'type' => 'int',
|
danielebarchiesi@0
|
425 'not null' => TRUE,
|
danielebarchiesi@0
|
426 'default' => 0,
|
danielebarchiesi@0
|
427 'description' => 'The {users}.uid who authored the comment. If set to 0, this comment was created by an anonymous user.',
|
danielebarchiesi@0
|
428 ),
|
danielebarchiesi@0
|
429 'subject' => array(
|
danielebarchiesi@0
|
430 'type' => 'varchar',
|
danielebarchiesi@0
|
431 'length' => 64,
|
danielebarchiesi@0
|
432 'not null' => TRUE,
|
danielebarchiesi@0
|
433 'default' => '',
|
danielebarchiesi@0
|
434 'description' => 'The comment title.',
|
danielebarchiesi@0
|
435 ),
|
danielebarchiesi@0
|
436 'hostname' => array(
|
danielebarchiesi@0
|
437 'type' => 'varchar',
|
danielebarchiesi@0
|
438 'length' => 128,
|
danielebarchiesi@0
|
439 'not null' => TRUE,
|
danielebarchiesi@0
|
440 'default' => '',
|
danielebarchiesi@0
|
441 'description' => "The author's host name.",
|
danielebarchiesi@0
|
442 ),
|
danielebarchiesi@0
|
443 'created' => array(
|
danielebarchiesi@0
|
444 'type' => 'int',
|
danielebarchiesi@0
|
445 'not null' => TRUE,
|
danielebarchiesi@0
|
446 'default' => 0,
|
danielebarchiesi@0
|
447 'description' => 'The time that the comment was created, as a Unix timestamp.',
|
danielebarchiesi@0
|
448 ),
|
danielebarchiesi@0
|
449 'changed' => array(
|
danielebarchiesi@0
|
450 'type' => 'int',
|
danielebarchiesi@0
|
451 'not null' => TRUE,
|
danielebarchiesi@0
|
452 'default' => 0,
|
danielebarchiesi@0
|
453 'description' => 'The time that the comment was last edited, as a Unix timestamp.',
|
danielebarchiesi@0
|
454 ),
|
danielebarchiesi@0
|
455 'status' => array(
|
danielebarchiesi@0
|
456 'type' => 'int',
|
danielebarchiesi@0
|
457 'unsigned' => TRUE,
|
danielebarchiesi@0
|
458 'not null' => TRUE,
|
danielebarchiesi@0
|
459 'default' => 1,
|
danielebarchiesi@0
|
460 'size' => 'tiny',
|
danielebarchiesi@0
|
461 'description' => 'The published status of a comment. (0 = Not Published, 1 = Published)',
|
danielebarchiesi@0
|
462 ),
|
danielebarchiesi@0
|
463 'thread' => array(
|
danielebarchiesi@0
|
464 'type' => 'varchar',
|
danielebarchiesi@0
|
465 'length' => 255,
|
danielebarchiesi@0
|
466 'not null' => TRUE,
|
danielebarchiesi@0
|
467 'description' => "The vancode representation of the comment's place in a thread.",
|
danielebarchiesi@0
|
468 ),
|
danielebarchiesi@0
|
469 'name' => array(
|
danielebarchiesi@0
|
470 'type' => 'varchar',
|
danielebarchiesi@0
|
471 'length' => 60,
|
danielebarchiesi@0
|
472 'not null' => FALSE,
|
danielebarchiesi@0
|
473 '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
|
474 ),
|
danielebarchiesi@0
|
475 'mail' => array(
|
danielebarchiesi@0
|
476 'type' => 'varchar',
|
danielebarchiesi@0
|
477 'length' => 64,
|
danielebarchiesi@0
|
478 'not null' => FALSE,
|
danielebarchiesi@0
|
479 '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
|
480 ),
|
danielebarchiesi@0
|
481 'homepage' => array(
|
danielebarchiesi@0
|
482 'type' => 'varchar',
|
danielebarchiesi@0
|
483 'length' => 255,
|
danielebarchiesi@0
|
484 'not null' => FALSE,
|
danielebarchiesi@0
|
485 '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
|
486 ),
|
danielebarchiesi@0
|
487 'language' => array(
|
danielebarchiesi@0
|
488 'description' => 'The {languages}.language of this comment.',
|
danielebarchiesi@0
|
489 'type' => 'varchar',
|
danielebarchiesi@0
|
490 'length' => 12,
|
danielebarchiesi@0
|
491 'not null' => TRUE,
|
danielebarchiesi@0
|
492 'default' => '',
|
danielebarchiesi@0
|
493 ),
|
danielebarchiesi@0
|
494 ),
|
danielebarchiesi@0
|
495 'indexes' => array(
|
danielebarchiesi@0
|
496 'comment_status_pid' => array('pid', 'status'),
|
danielebarchiesi@0
|
497 'comment_num_new' => array('nid', 'status', 'created', 'cid', 'thread'),
|
danielebarchiesi@0
|
498 'comment_uid' => array('uid'),
|
danielebarchiesi@0
|
499 'comment_nid_language' => array('nid', 'language'),
|
danielebarchiesi@0
|
500 'comment_created' => array('created'),
|
danielebarchiesi@0
|
501 ),
|
danielebarchiesi@0
|
502 'primary key' => array('cid'),
|
danielebarchiesi@0
|
503 'foreign keys' => array(
|
danielebarchiesi@0
|
504 'comment_node' => array(
|
danielebarchiesi@0
|
505 'table' => 'node',
|
danielebarchiesi@0
|
506 'columns' => array('nid' => 'nid'),
|
danielebarchiesi@0
|
507 ),
|
danielebarchiesi@0
|
508 'comment_author' => array(
|
danielebarchiesi@0
|
509 'table' => 'users',
|
danielebarchiesi@0
|
510 'columns' => array('uid' => 'uid'),
|
danielebarchiesi@0
|
511 ),
|
danielebarchiesi@0
|
512 ),
|
danielebarchiesi@0
|
513 );
|
danielebarchiesi@0
|
514
|
danielebarchiesi@0
|
515 $schema['node_comment_statistics'] = array(
|
danielebarchiesi@0
|
516 'description' => 'Maintains statistics of node and comments posts to show "new" and "updated" flags.',
|
danielebarchiesi@0
|
517 'fields' => array(
|
danielebarchiesi@0
|
518 'nid' => array(
|
danielebarchiesi@0
|
519 'type' => 'int',
|
danielebarchiesi@0
|
520 'unsigned' => TRUE,
|
danielebarchiesi@0
|
521 'not null' => TRUE,
|
danielebarchiesi@0
|
522 'default' => 0,
|
danielebarchiesi@0
|
523 'description' => 'The {node}.nid for which the statistics are compiled.',
|
danielebarchiesi@0
|
524 ),
|
danielebarchiesi@0
|
525 'cid' => array(
|
danielebarchiesi@0
|
526 'type' => 'int',
|
danielebarchiesi@0
|
527 'not null' => TRUE,
|
danielebarchiesi@0
|
528 'default' => 0,
|
danielebarchiesi@0
|
529 'description' => 'The {comment}.cid of the last comment.',
|
danielebarchiesi@0
|
530 ),
|
danielebarchiesi@0
|
531 'last_comment_timestamp' => array(
|
danielebarchiesi@0
|
532 'type' => 'int',
|
danielebarchiesi@0
|
533 'not null' => TRUE,
|
danielebarchiesi@0
|
534 'default' => 0,
|
danielebarchiesi@0
|
535 'description' => 'The Unix timestamp of the last comment that was posted within this node, from {comment}.changed.',
|
danielebarchiesi@0
|
536 ),
|
danielebarchiesi@0
|
537 'last_comment_name' => array(
|
danielebarchiesi@0
|
538 'type' => 'varchar',
|
danielebarchiesi@0
|
539 'length' => 60,
|
danielebarchiesi@0
|
540 'not null' => FALSE,
|
danielebarchiesi@0
|
541 'description' => 'The name of the latest author to post a comment on this node, from {comment}.name.',
|
danielebarchiesi@0
|
542 ),
|
danielebarchiesi@0
|
543 'last_comment_uid' => array(
|
danielebarchiesi@0
|
544 'type' => 'int',
|
danielebarchiesi@0
|
545 'not null' => TRUE,
|
danielebarchiesi@0
|
546 'default' => 0,
|
danielebarchiesi@0
|
547 'description' => 'The user ID of the latest author to post a comment on this node, from {comment}.uid.',
|
danielebarchiesi@0
|
548 ),
|
danielebarchiesi@0
|
549 'comment_count' => array(
|
danielebarchiesi@0
|
550 'type' => 'int',
|
danielebarchiesi@0
|
551 'unsigned' => TRUE,
|
danielebarchiesi@0
|
552 'not null' => TRUE,
|
danielebarchiesi@0
|
553 'default' => 0,
|
danielebarchiesi@0
|
554 'description' => 'The total number of comments on this node.',
|
danielebarchiesi@0
|
555 ),
|
danielebarchiesi@0
|
556 ),
|
danielebarchiesi@0
|
557 'primary key' => array('nid'),
|
danielebarchiesi@0
|
558 'indexes' => array(
|
danielebarchiesi@0
|
559 'node_comment_timestamp' => array('last_comment_timestamp'),
|
danielebarchiesi@0
|
560 'comment_count' => array('comment_count'),
|
danielebarchiesi@0
|
561 'last_comment_uid' => array('last_comment_uid'),
|
danielebarchiesi@0
|
562 ),
|
danielebarchiesi@0
|
563 'foreign keys' => array(
|
danielebarchiesi@0
|
564 'statistics_node' => array(
|
danielebarchiesi@0
|
565 'table' => 'node',
|
danielebarchiesi@0
|
566 'columns' => array('nid' => 'nid'),
|
danielebarchiesi@0
|
567 ),
|
danielebarchiesi@0
|
568 'last_comment_author' => array(
|
danielebarchiesi@0
|
569 'table' => 'users',
|
danielebarchiesi@0
|
570 'columns' => array(
|
danielebarchiesi@0
|
571 'last_comment_uid' => 'uid',
|
danielebarchiesi@0
|
572 ),
|
danielebarchiesi@0
|
573 ),
|
danielebarchiesi@0
|
574 ),
|
danielebarchiesi@0
|
575 );
|
danielebarchiesi@0
|
576
|
danielebarchiesi@0
|
577 return $schema;
|
danielebarchiesi@0
|
578 }
|