diff --git a/html/sites/all/modules/contrib/notifications/notifications_content/notifications_content.module b/html/sites/all/modules/contrib/notifications/notifications_content/notifications_content.module
index 376b7fd..3c8a6c7 100644
--- a/html/sites/all/modules/contrib/notifications/notifications_content/notifications_content.module
+++ b/html/sites/all/modules/contrib/notifications/notifications_content/notifications_content.module
@@ -859,7 +859,8 @@ function notifications_content_token_values($type, $object = NULL, $options = ar
break;
case 'comment':
if ($comment = (object)$object) {
- $values['comment-url'] = url('node/'. $comment->nid, array('fragment' =>'comment-'. $comment->cid, 'absolute' => TRUE));
+ $page = notifications_comment_page($comment->nid);
+ $values['comment-url'] = url('node/'. $comment->nid, array('fragment' =>'comment-'. $comment->cid, 'absolute' => TRUE, 'query' => $page));
$values['comment-reply-url'] = url('comment/reply/'. $comment->nid .'/'. $comment->cid, array('absolute' => TRUE));
return $values;
}
@@ -904,3 +905,66 @@ function notifications_content_comment_allow($account, $comment) {
}
return $access[$account->uid][$comment->cid];
}
+
+
+/**
+ * Determines the page the comment it on.
+ *
+ * @see comment_new_page_count
+ *
+ * @param $nid
+ * The nid that the page query is to be determined for
+ *
+ * @return string
+ * "page=X" if the page number is greater than zero; empty string otherwise.
+ */
+function notifications_comment_page($nid) {
+ static $types = array();
+ if (!isset($types[$nid])) {
+ $types[$nid] = db_result(db_query("SELECT type FROM {node} WHERE nid = %d", $nid));
+ }
+ // we get the comment settings
+ // @see _comment_get_display_setting
+ $type = $types[$nid];
+ $pagenum = NULL;
+ $new_replies = 1;
+ $num_comments = db_result(db_query("SELECT comment_count FROM {node_comment_statistics} WHERE nid = %d", $nid)) + 1;
+ if ($type) {
+ $comments_per_page = variable_get('comment_default_per_page_' . $type, 50);
+ $mode = variable_get('comment_default_mode_' . $type, COMMENT_MODE_THREADED_EXPANDED);
+ $order = variable_get('comment_default_order_' . $type, COMMENT_ORDER_NEWEST_FIRST);
+ $flat = in_array($mode, array(COMMENT_MODE_FLAT_COLLAPSED, COMMENT_MODE_FLAT_EXPANDED));
+ if ($num_comments <= $comments_per_page || ($flat && $order == COMMENT_ORDER_NEWEST_FIRST)) {
+ // Only one page of comments or flat forum and newest first.
+ // First new comment will always be on first page.
+ $pageno = 0;
+ }
+ else {
+ if ($flat) {
+ // Flat comments and oldest first.
+ $count = $num_comments - $new_replies;
+ }
+ else {
+ // Threaded comments. See the documentation for comment_render().
+ if ($order == COMMENT_ORDER_NEWEST_FIRST) {
+ // Newest first: find the last thread with new comment
+ $result = db_query('(SELECT thread FROM {comments} WHERE nid = %d AND status = 0 ORDER BY timestamp DESC LIMIT %d) ORDER BY thread DESC LIMIT 1', $nid, $new_replies);
+ $thread = db_result($result);
+ $result_count = db_query("SELECT COUNT(*) FROM {comments} WHERE nid = %d AND status = 0 AND thread > '". $thread ."'", $nid);
+ }
+ else {
+ // Oldest first: find the first thread with new comment
+ $result = db_query('(SELECT thread FROM {comments} WHERE nid = %d AND status = 0 ORDER BY timestamp DESC LIMIT %d) ORDER BY SUBSTRING(thread, 1, (LENGTH(thread) - 1)) LIMIT 1', $nid, $new_replies);
+ $thread = substr(db_result($result), 0, -1);
+ $result_count = db_query("SELECT COUNT(*) FROM {comments} WHERE nid = %d AND status = 0 AND SUBSTRING(thread, 1, (LENGTH(thread) - 1)) < '". $thread ."'", $nid);
+ }
+ $count = db_result($result_count);
+ }
+ $pageno = $count / $comments_per_page;
+ }
+ if ($pageno >= 1) {
+ $pagenum = "page=". intval($pageno);
+ }
+ }
+ return $pagenum;
+}