comment_get_recent
modules/comment/comment.module, строка 309
- Версии
- 5 – 6
comment_get_recent($number = 10)
Find a number of recent comments. This is done in two steps.
1. Find the n (specified by $number
) nodes that have the most recent
comments. This is done by querying node_comment_statistics which has
an index on last_comment_timestamp, and is thus a fast query.
2. Loading the information from the comments table based on the nids found
in step 1.
Параметры
$number
(optional) The maximum number of comments to find.
Возвращаемое значение
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.
Код
<?php
function comment_get_recent($number = 10) {
// Select the $number nodes (visible to the current user) with the most
// recent comments. This is efficient due to the index on
// last_comment_timestamp.
$result = db_query_range(db_rewrite_sql("SELECT nc.nid FROM {node_comment_statistics} nc WHERE nc.comment_count > 0 ORDER BY nc.last_comment_timestamp DESC", 'nc'), 0, $number);
$nids = array();
while ($row = db_fetch_object($result)) {
$nids[] = $row->nid;
}
$comments = array();
if (!empty($nids)) {
// From among the comments on the nodes selected in the first query,
// find the $number most recent comments.
$result = db_query_range('SELECT c.nid, c.subject, c.cid, c.timestamp FROM {comments} c INNER JOIN {node} n ON n.nid = c.nid WHERE c.nid IN ('. implode(',', $nids) .') AND n.status = 1 AND c.status = %d ORDER BY c.cid DESC', COMMENT_PUBLISHED, 0, $number);
while ($comment = db_fetch_object($result)) {
$comments[] = $comment;
}
}
return $comments;
}
?>
Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии