- Patch #122098 by Damien Tournoud, catch, mdixoncm: split comment.timestamp into 'created' and 'changed' columns, just like for nodes.
parent
db53d99659
commit
15b24127b5
|
@ -62,7 +62,7 @@ function comment_admin_overview($form, &$form_state, $arg) {
|
|||
'subject' => array('data' => t('Subject'), 'field' => 'subject'),
|
||||
'author' => array('data' => t('Author'), 'field' => 'name'),
|
||||
'posted_in' => array('data' => t('Posted in'), 'field' => 'node_title'),
|
||||
'time' => array('data' => t('Time'), 'field' => 'timestamp', 'sort' => 'desc'),
|
||||
'changed' => array('data' => t('Updated'), 'field' => 'changed', 'sort' => 'desc'),
|
||||
'operations' => array('data' => t('Operations')),
|
||||
);
|
||||
|
||||
|
@ -72,7 +72,7 @@ function comment_admin_overview($form, &$form_state, $arg) {
|
|||
$query->addField('u', 'name', 'registered_name');
|
||||
$query->addField('n', 'title', 'node_title');
|
||||
$result = $query
|
||||
->fields('c', array('subject', 'nid', 'cid', 'comment', 'timestamp', 'status', 'name', 'homepage'))
|
||||
->fields('c', array('subject', 'nid', 'cid', 'comment', 'changed', 'status', 'name', 'homepage'))
|
||||
->fields('u', array('uid'))
|
||||
->condition('c.status', $status)
|
||||
->limit(50)
|
||||
|
@ -89,7 +89,7 @@ function comment_admin_overview($form, &$form_state, $arg) {
|
|||
'subject' => l($comment->subject, 'comment/' . $comment->cid, array('attributes' => array('title' => truncate_utf8($comment->comment, 128)), 'fragment' => 'comment-' . $comment->cid)),
|
||||
'author' => theme('username', array('account' => $comment)),
|
||||
'posted_in' => l($comment->node_title, 'node/' . $comment->nid),
|
||||
'time' => format_date($comment->timestamp, 'short'),
|
||||
'changed' => format_date($comment->changed, 'short'),
|
||||
'operations' => l(t('edit'), 'comment/edit/' . $comment->cid, array('query' => $destination)),
|
||||
);
|
||||
}
|
||||
|
|
|
@ -69,7 +69,7 @@ function hook_comment_load($comments) {
|
|||
*/
|
||||
function hook_comment_view($comment) {
|
||||
// how old is the comment
|
||||
$comment->time_ago = time() - $comment->timestamp;
|
||||
$comment->time_ago = time() - $comment->changed;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -129,6 +129,35 @@ function comment_update_7006() {
|
|||
db_add_index('node_comment_statistics', 'last_comment_uid', array('last_comment_uid'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Split {comment}.timestamp into {comment}.created and {comment}.changed.
|
||||
*/
|
||||
function comment_update_7007() {
|
||||
// Drop the index associated to timestamp.
|
||||
db_drop_index('comment', 'comment_num_new');
|
||||
|
||||
// Create a created column.
|
||||
db_add_field('comment', 'created', array(
|
||||
'type' => 'int',
|
||||
'not null' => TRUE,
|
||||
'default' => 0,
|
||||
));
|
||||
|
||||
// Rename the timestamp column to changed.
|
||||
db_change_field('comment', 'timestamp', 'changed', array(
|
||||
'type' => 'int',
|
||||
'not null' => TRUE,
|
||||
'default' => 0,
|
||||
));
|
||||
|
||||
// Recreate the index.
|
||||
db_add_index('comment', 'comment_num_new', array('nid', 'changed', 'status'));
|
||||
|
||||
// Migrate the data.
|
||||
// @todo db_update() should support this.
|
||||
db_query('UPDATE {comment} SET created = changed');
|
||||
}
|
||||
|
||||
/**
|
||||
* @} End of "defgroup updates-6.x-to-7.x"
|
||||
* The next series of updates should start at 8000.
|
||||
|
@ -184,11 +213,17 @@ function comment_schema() {
|
|||
'default' => '',
|
||||
'description' => "The author's host name.",
|
||||
),
|
||||
'timestamp' => array(
|
||||
'created' => array(
|
||||
'type' => 'int',
|
||||
'not null' => TRUE,
|
||||
'default' => 0,
|
||||
'description' => 'The time that the comment was created, or last edited by its author, as a Unix timestamp.',
|
||||
'description' => 'The time that the comment was created, as a Unix timestamp.',
|
||||
),
|
||||
'changed' => array(
|
||||
'type' => 'int',
|
||||
'not null' => TRUE,
|
||||
'default' => 0,
|
||||
'description' => 'The time that the comment was last edited, as a Unix timestamp.',
|
||||
),
|
||||
'status' => array(
|
||||
'type' => 'int',
|
||||
|
@ -232,7 +267,7 @@ function comment_schema() {
|
|||
),
|
||||
'indexes' => array(
|
||||
'comment_status_pid' => array('pid', 'status'),
|
||||
'comment_num_new' => array('nid', 'timestamp', 'status'),
|
||||
'comment_num_new' => array('nid', 'changed', 'status'),
|
||||
'comment_uid' => array('uid'),
|
||||
),
|
||||
'primary key' => array('cid'),
|
||||
|
@ -291,4 +326,4 @@ function comment_schema() {
|
|||
);
|
||||
|
||||
return $schema;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -382,9 +382,9 @@ function comment_permalink($comment) {
|
|||
* @param integer $number
|
||||
* (optional) The maximum number of comments to find.
|
||||
* @return
|
||||
* An array of comment objects each containing a nid,
|
||||
* subject, cid, and timestamp, or an empty array if there are no recent
|
||||
* comments visible to the current user.
|
||||
* An array of comment objects each containing a nid, subject, cid, created
|
||||
* and changed, or an empty array if there are no recent comments visible
|
||||
* to the current user.
|
||||
*/
|
||||
function comment_get_recent($number = 10) {
|
||||
// Step 1: Select a $number of nodes which have new comments,
|
||||
|
@ -399,7 +399,7 @@ function comment_get_recent($number = 10) {
|
|||
$query = db_select('comment', 'c');
|
||||
$query->innerJoin('node', 'n', 'n.nid = c.nid');
|
||||
return $query
|
||||
->fields('c', array('nid', 'subject', 'cid', 'timestamp'))
|
||||
->fields('c', array('nid', 'subject', 'cid', 'created', 'changed'))
|
||||
->condition('c.nid', $nids, 'IN')
|
||||
->condition('c.status', COMMENT_PUBLISHED)
|
||||
->condition('n.status', 1)
|
||||
|
@ -445,7 +445,7 @@ function comment_new_page_count($num_comments, $new_replies, $node) {
|
|||
FROM {comment}
|
||||
WHERE nid = :nid
|
||||
AND status = 0
|
||||
ORDER BY timestamp DESC) AS thread
|
||||
ORDER BY changed DESC) AS thread
|
||||
ORDER BY SUBSTRING(thread, 1, (LENGTH(thread) - 1))', 0, $new_replies, array(':nid' => $node->nid))->fetchField();
|
||||
$thread = substr($result, 0, -1);
|
||||
$count = db_query('SELECT COUNT(*) FROM {comment} WHERE nid = :nid AND status = 0 AND SUBSTRING(thread, 1, (LENGTH(thread) - 1)) < :thread', array(
|
||||
|
@ -473,7 +473,7 @@ function theme_comment_block() {
|
|||
$items = array();
|
||||
$number = variable_get('comment_block_count', 10);
|
||||
foreach (comment_get_recent($number) as $comment) {
|
||||
$items[] = l($comment->subject, 'comment/' . $comment->cid, array('fragment' => 'comment-' . $comment->cid)) . '<br />' . t('@time ago', array('@time' => format_interval(REQUEST_TIME - $comment->timestamp)));
|
||||
$items[] = l($comment->subject, 'comment/' . $comment->cid, array('fragment' => 'comment-' . $comment->cid)) . '<br />' . t('@time ago', array('@time' => format_interval(REQUEST_TIME - $comment->changed)));
|
||||
}
|
||||
|
||||
if ($items) {
|
||||
|
@ -1277,7 +1277,8 @@ function comment_save($comment) {
|
|||
db_update('comment')
|
||||
->fields(array(
|
||||
'status' => $comment->status,
|
||||
'timestamp' => $comment->timestamp,
|
||||
'created' => $comment->created,
|
||||
'changed' => $comment->changed,
|
||||
'subject' => $comment->subject,
|
||||
'comment' => $comment->comment,
|
||||
'format' => $comment->comment_format,
|
||||
|
@ -1336,8 +1337,12 @@ function comment_save($comment) {
|
|||
}
|
||||
}
|
||||
|
||||
if (empty($comment->timestamp)) {
|
||||
$comment->timestamp = REQUEST_TIME;
|
||||
if (empty($comment->created)) {
|
||||
$comment->created = REQUEST_TIME;
|
||||
}
|
||||
|
||||
if (empty($comment->changed)) {
|
||||
$comment->changed = $comment->created;
|
||||
}
|
||||
|
||||
if ($comment->uid === $user->uid && isset($user->name)) { // '===' Need to modify anonymous users as well.
|
||||
|
@ -1353,7 +1358,8 @@ function comment_save($comment) {
|
|||
'comment' => $comment->comment,
|
||||
'format' => $comment->comment_format,
|
||||
'hostname' => ip_address(),
|
||||
'timestamp' => $comment->timestamp,
|
||||
'created' => $comment->created,
|
||||
'changed' => $comment->changed,
|
||||
'status' => $comment->status,
|
||||
'thread' => $thread,
|
||||
'name' => $comment->name,
|
||||
|
@ -1501,7 +1507,7 @@ class CommentController extends DrupalDefaultEntityController {
|
|||
foreach ($comments as $key => $comment) {
|
||||
$comment = drupal_unpack($comment);
|
||||
$comment->name = $comment->uid ? $comment->registered_name : $comment->name;
|
||||
$comment->new = node_mark($comment->nid, $comment->timestamp);
|
||||
$comment->new = node_mark($comment->nid, $comment->changed);
|
||||
$comment->node_type = 'comment_node_' . $comment->node_type;
|
||||
$comments[$key] = $comment;
|
||||
}
|
||||
|
@ -1550,9 +1556,9 @@ function comment_num_new($nid, $timestamp = 0) {
|
|||
$timestamp = ($timestamp > NODE_NEW_LIMIT ? $timestamp : NODE_NEW_LIMIT);
|
||||
|
||||
// Use the timestamp to retrieve the number of new comments.
|
||||
return db_query('SELECT COUNT(cid) FROM {comment} WHERE nid = :nid AND timestamp > :timestamp AND status = :status', array(
|
||||
return db_query('SELECT COUNT(cid) FROM {comment} WHERE nid = :nid AND changed > :changed AND status = :status', array(
|
||||
':nid' => $nid,
|
||||
':timestamp' => $timestamp,
|
||||
':changed' => $timestamp,
|
||||
':status' => COMMENT_PUBLISHED,
|
||||
))->fetchField();
|
||||
}
|
||||
|
@ -1676,7 +1682,7 @@ function comment_form($form, &$form_state, $comment) {
|
|||
$date = $comment->date;
|
||||
}
|
||||
else {
|
||||
$date = format_date($comment->timestamp, 'custom', 'Y-m-d H:i O');
|
||||
$date = format_date($comment->changed, 'custom', 'Y-m-d H:i O');
|
||||
}
|
||||
|
||||
$form['admin'] = array(
|
||||
|
@ -1921,7 +1927,8 @@ function comment_preview($comment) {
|
|||
$comment->name = variable_get('anonymous', t('Anonymous'));
|
||||
}
|
||||
|
||||
$comment->timestamp = !empty($comment->timestamp) ? $comment->timestamp : REQUEST_TIME;
|
||||
$comment->created = !empty($comment->created) ? $comment->created : REQUEST_TIME;
|
||||
$comment->changed = REQUEST_TIME;
|
||||
$comment->in_preview = TRUE;
|
||||
$comment_build = comment_build($comment, $node);
|
||||
$comment_build += array(
|
||||
|
@ -2017,7 +2024,9 @@ function comment_submit($comment) {
|
|||
$comment['date'] = 'now';
|
||||
}
|
||||
|
||||
$comment['timestamp'] = strtotime($comment['date']);
|
||||
$comment['created'] = strtotime($comment['date']);
|
||||
$comment['changed'] = REQUEST_TIME;
|
||||
|
||||
if (isset($comment['author'])) {
|
||||
$account = user_load_by_name($comment['author']);
|
||||
$comment['uid'] = $account->uid;
|
||||
|
@ -2105,7 +2114,9 @@ function template_preprocess_comment(&$variables) {
|
|||
$variables['comment'] = $comment;
|
||||
$variables['node'] = $node;
|
||||
$variables['author'] = theme('username', array('account' => $comment));
|
||||
$variables['date'] = format_date($comment->timestamp);
|
||||
$variables['created'] = format_date($comment->created);
|
||||
$variables['changed'] = format_date($comment->changed);
|
||||
|
||||
$variables['new'] = !empty($comment->new) ? t('new') : '';
|
||||
$variables['picture'] = theme_get_setting('toggle_comment_user_picture') ? theme('user_picture', array('account' => $comment)) : '';
|
||||
$variables['signature'] = $comment->signature;
|
||||
|
@ -2237,14 +2248,14 @@ function _comment_update_node_statistics($nid) {
|
|||
|
||||
if ($count > 0) {
|
||||
// Comments exist.
|
||||
$last_reply = db_query_range('SELECT cid, name, timestamp, uid FROM {comment} WHERE nid = :nid AND status = :status ORDER BY cid DESC', 0, 1, array(
|
||||
$last_reply = db_query_range('SELECT cid, name, changed, uid FROM {comment} WHERE nid = :nid AND status = :status ORDER BY cid DESC', 0, 1, array(
|
||||
':nid' => $nid,
|
||||
':status' => COMMENT_PUBLISHED,
|
||||
))->fetchObject();
|
||||
db_update('node_comment_statistics')
|
||||
->fields( array(
|
||||
'comment_count' => $count,
|
||||
'last_comment_timestamp' => $last_reply->timestamp,
|
||||
'last_comment_timestamp' => $last_reply->changed,
|
||||
'last_comment_name' => $last_reply->uid ? '' : $last_reply->name,
|
||||
'last_comment_uid' => $last_reply->uid,
|
||||
))
|
||||
|
|
|
@ -200,7 +200,11 @@ function comment_tokens($type, $tokens, array $data = array(), array $options =
|
|||
break;
|
||||
|
||||
case 'created':
|
||||
$replacements[$original] = format_date($comment->timestamp, 'medium', '', NULL, $language_code);
|
||||
$replacements[$original] = format_date($comment->created, 'medium', '', NULL, $language_code);
|
||||
break;
|
||||
|
||||
case 'changed':
|
||||
$replacements[$original] = format_date($comment->changed, 'medium', '', NULL, $language_code);
|
||||
break;
|
||||
|
||||
case 'node':
|
||||
|
@ -217,7 +221,7 @@ function comment_tokens($type, $tokens, array $data = array(), array $options =
|
|||
}
|
||||
|
||||
if ($date_tokens = token_find_with_prefix($tokens, 'created')) {
|
||||
$replacements += token_generate('date', $date_tokens, array('date' => $comment->timestamp), $options);
|
||||
$replacements += token_generate('date', $date_tokens, array('date' => $comment->created), $options);
|
||||
}
|
||||
|
||||
if (($parent_tokens = token_find_with_prefix($tokens, 'parent')) && $parent = comment_load($comment->pid)) {
|
||||
|
|
|
@ -11,7 +11,8 @@
|
|||
* print a subset such as render($content['field_example']). Use
|
||||
* hide($content['field_example']) to temporarily suppress the printing of a
|
||||
* given element.
|
||||
* - $date: Date and time of posting.
|
||||
* - $created: Date and time this comment was created.
|
||||
* - $changed: Date and time this comment was changed.
|
||||
* - $new: New comment marker.
|
||||
* - $picture: Authors picture.
|
||||
* - $signature: Authors signature.
|
||||
|
@ -56,7 +57,7 @@
|
|||
<div class="submitted">
|
||||
<?php
|
||||
print t('Submitted by !username on @datetime.',
|
||||
array('!username' => $author, '@datetime' => $date));
|
||||
array('!username' => $author, '@datetime' => $created));
|
||||
?>
|
||||
</div>
|
||||
|
||||
|
|
|
@ -198,21 +198,21 @@ function tracker_comment_update($comment) {
|
|||
* comment_save() calls hook_comment_publish() for all published comments.
|
||||
*/
|
||||
function tracker_comment_publish($comment) {
|
||||
_tracker_add($comment->nid, $comment->uid, $comment->timestamp);
|
||||
_tracker_add($comment->nid, $comment->uid, $comment->changed);
|
||||
}
|
||||
|
||||
/**
|
||||
* Implement hook_comment_unpublish().
|
||||
*/
|
||||
function tracker_comment_unpublish($comment) {
|
||||
_tracker_remove($comment->nid, $comment->uid, $comment->timestamp);
|
||||
_tracker_remove($comment->nid, $comment->uid, $comment->changed);
|
||||
}
|
||||
|
||||
/**
|
||||
* Implement hook_comment_delete().
|
||||
*/
|
||||
function tracker_comment_delete($comment) {
|
||||
_tracker_remove($comment->nid, $comment->uid, $comment->timestamp);
|
||||
_tracker_remove($comment->nid, $comment->uid, $comment->changed);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -266,12 +266,12 @@ function _tracker_add($nid, $uid, $changed) {
|
|||
*/
|
||||
function _tracker_calculate_changed($nid) {
|
||||
$changed = db_query('SELECT changed FROM {node} WHERE nid = :nid', array(':nid' => $nid))->fetchField();
|
||||
$latest_comment = db_query_range('SELECT cid, timestamp FROM {comment} WHERE nid = :nid AND status = :status ORDER BY timestamp DESC', 0, 1, array(
|
||||
$latest_comment = db_query_range('SELECT cid, changed FROM {comment} WHERE nid = :nid AND status = :status ORDER BY changed DESC', 0, 1, array(
|
||||
':nid' => $nid,
|
||||
':status' => COMMENT_PUBLISHED,
|
||||
))->fetchObject();
|
||||
if ($latest_comment && $latest_comment->timestamp > $changed) {
|
||||
$changed = $latest_comment->timestamp;
|
||||
if ($latest_comment && $latest_comment->changed > $changed) {
|
||||
$changed = $latest_comment->changed;
|
||||
}
|
||||
return $changed;
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
<div class="clearfix">
|
||||
|
||||
<span class="submitted"><?php print $date; ?> — <?php print $author; ?></span>
|
||||
<span class="submitted"><?php print $created; ?> — <?php print $author; ?></span>
|
||||
|
||||
<?php if ($new) : ?>
|
||||
<span class="new"><?php print drupal_ucfirst($new) ?></span>
|
||||
|
|
Loading…
Reference in New Issue