*Total number of pages correctly calculated for user comments

*Page number sanity checks for both user comments and site comments
This commit is contained in:
pachuco 2012-11-24 20:28:49 +02:00
parent f30e34861d
commit f6f2638003

View File

@ -178,13 +178,16 @@ class CommentList extends Extension {
$this->build_page($page_num); $this->build_page($page_num);
} }
else if($event->get_arg(0) === "beta-search") { else if($event->get_arg(0) === "beta-search") {
$i_comment_count = Comment::count_comments_by_user($user);
$com_per_page = 50;
$total_pages = ceil($i_comment_count/$com_per_page);
$search = $event->get_arg(1); $search = $event->get_arg(1);
$page_num = int_escape($event->get_arg(2)); $page_num = int_escape($event->get_arg(2));
$page_num = $this->sanity_check_pagenumber($page_num, $total_pages);
$duser = User::by_name($search); $duser = User::by_name($search);
$comments = $this->get_user_comments($duser->id, 50, ($page_num-1) * 50); $comments = $this->get_user_comments($duser->id, $com_per_page, ($page_num-1) * $com_per_page);
$this->theme->display_all_user_comments($comments, $page_num, 10); $this->theme->display_all_user_comments($comments, $page_num, $total_pages);
} }
} }
} }
@ -289,11 +292,11 @@ class CommentList extends Extension {
if(class_exists("Ratings")) { if(class_exists("Ratings")) {
$user_ratings = Ratings::get_user_privs($user); $user_ratings = Ratings::get_user_privs($user);
} }
$total_pages = $database->cache->get("comment_pages");
if(is_null($current_page) || $current_page <= 0) { if(is_null($current_page) || $current_page <= 0) {
$current_page = 1; $current_page = 1;
} }
$current_page = $this->sanity_check_pagenumber($current_page, $total_pages);
$threads_per_page = 10; $threads_per_page = 10;
$start = $threads_per_page * ($current_page - 1); $start = $threads_per_page * ($current_page - 1);
@ -307,7 +310,6 @@ class CommentList extends Extension {
"; ";
$result = $database->Execute($get_threads, array("limit"=>$threads_per_page, "offset"=>$start)); $result = $database->Execute($get_threads, array("limit"=>$threads_per_page, "offset"=>$start));
$total_pages = $database->cache->get("comment_pages");
if(empty($total_pages)) { if(empty($total_pages)) {
$total_pages = (int)($database->get_one("SELECT COUNT(c1) FROM (SELECT COUNT(image_id) AS c1 FROM comments $where GROUP BY image_id) AS s1") / 10); $total_pages = (int)($database->get_one("SELECT COUNT(c1) FROM (SELECT COUNT(image_id) AS c1 FROM comments $where GROUP BY image_id) AS s1") / 10);
$database->cache->set("comment_pages", $total_pages, 600); $database->cache->set("comment_pages", $total_pages, 600);
@ -474,7 +476,19 @@ class CommentList extends Extension {
global $database; global $database;
return ($database->get_row("SELECT * FROM comments WHERE image_id=:image_id AND comment=:comment", array("image_id"=>$image_id, "comment"=>$comment))); return ($database->get_row("SELECT * FROM comments WHERE image_id=:image_id AND comment=:comment", array("image_id"=>$image_id, "comment"=>$comment)));
} }
// do some checks
private function sanity_check_pagenumber($pagenum, $maxpage){
if (!is_numeric($pagenum)){
$pagenum=1;
}
if ($pagenum>$maxpage){
$pagenum=$maxpage;
}
if ($pagenum<=0){
$pagenum=1;
}
return $pagenum;
}
private function add_comment_wrapper(/*int*/ $image_id, User $user, /*string*/ $comment) { private function add_comment_wrapper(/*int*/ $image_id, User $user, /*string*/ $comment) {
global $database; global $database;
global $config; global $config;