function advanced_forum_post_position in Advanced Forum 6.2
Same name and namespace in other branches
- 7.2 advanced_forum.module \advanced_forum_post_position()
Returns the display position of a given reply post ID on a given node.
2 calls to advanced_forum_post_position()
- _advanced_forum_preprocess_comment in includes/
advanced_forum_preprocess_comment.inc - @file Holds the contents of a preprocess function moved into its own file to ease memory requirements and having too much code in one file.
- _advanced_forum_preprocess_node in includes/
advanced_forum_preprocess_node.inc - @file Holds the contents of a preprocess function moved into its own file to ease memory requirements and having too much code in one file.
File
- ./
advanced_forum.module, line 1326 - Enables the look and feel of other popular forum software.
Code
function advanced_forum_post_position($node_id, $post_id) {
static $post_order = array();
if (!isset($post_order[$node_id])) {
// Initialize the spot for this node's list.
$post_order[$node_id] = array();
// Make this work with either core comments or node comments.
$table = module_exists('nodecomment') ? "node_comments" : "comments";
// Get the list of CIDs from the database in order of oldest first.
// We are going to make that assumption for now for simplicity but may
// revisit in the future if there are requests for newest first.
$query = "SELECT c.cid FROM {" . $table . "} c WHERE c.nid = %d ORDER BY c.cid ASC";
// Cycle through the results and fill in the array.
$result = db_query($query, $node_id);
while ($post = db_fetch_array($result)) {
$post_order[$node_id][] = reset($post);
}
}
// Find the position of the passed in post ID.
$post_position = 0;
if (is_array($post_order[$node_id])) {
if (($index = array_search($post_id, $post_order[$node_id])) !== FALSE) {
$post_position = $index;
// We need to add 2 because the array starts at 0 and also because the topic
// node is post #1 on display but is not included in the index.
$post_position = $post_position + 2;
}
}
return $post_position;
}