more clamping

This commit is contained in:
Shish 2015-09-26 19:53:15 +01:00
parent 5a8df90fd9
commit e482f97955
3 changed files with 36 additions and 47 deletions

View file

@ -124,6 +124,23 @@ function no_escape($input) {
return $input;
}
/**
* @param int $val
* @param int|null $min
* @param int|null $max
* @return int
*/
function clamp($val, $min, $max) {
if(!is_numeric($val) || (!is_null($min) && $val < $min)) {
$val = $min;
}
if(!is_null($max) && $val > $max) {
$val = $max;
}
assert('$val <= $min && $val >= $max', "$min <= $val <= $max");
return $val;
}
/**
* @param string $name
* @param array $attrs

View file

@ -155,20 +155,12 @@ class CommentList extends Extension {
public function onPageRequest(PageRequestEvent $event) {
if($event->page_matches("comment")) {
if($event->get_arg(0) === "add") {
$this->onPageRequest_add();
}
else if($event->get_arg(0) === "delete") {
$this->onPageRequest_delete($event);
}
else if($event->get_arg(0) === "bulk_delete") {
$this->onPageRequest_bulk_delete();
}
else if($event->get_arg(0) === "list") {
$this->onPageRequest_list($event);
}
else if($event->get_arg(0) === "beta-search") {
$this->onPageRequest_beta_search($event);
switch($event->get_arg(0)) {
case "add": $this->onPageRequest_add(); break;
case "delete": $this->onPageRequest_delete($event); break;
case "bulk_delete": $this->onPageRequest_bulk_delete(); break;
case "list": $this->onPageRequest_list($event); break;
case "beta-search": $this->onPageRequest_beta_search($event); break;
}
}
}
@ -243,7 +235,7 @@ class CommentList extends Extension {
$i_comment_count = Comment::count_comments_by_user($duser);
$com_per_page = 50;
$total_pages = ceil($i_comment_count / $com_per_page);
$page_num = $this->sanity_check_pagenumber($page_num, $total_pages);
$page_num = clamp($page_num, 1, $total_pages);
$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, $total_pages, $duser);
}
@ -361,7 +353,7 @@ class CommentList extends Extension {
$database->cache->set("comment_pages", $total_pages, 600);
}
$current_page = $this->sanity_check_pagenumber($current_page, $total_pages);
$current_page = clamp($current_page, 1, $total_pages);
$threads_per_page = 10;
$start = $threads_per_page * ($current_page - 1);
@ -568,21 +560,6 @@ class CommentList extends Extension {
}
// do some checks
/**
* @param int $pagenum
* @param int $maxpage
* @return int
*/
private function sanity_check_pagenumber(/*int*/ $pagenum, /*int*/ $maxpage) {
if(!is_numeric($pagenum) || $pagenum <= 0) {
$pagenum = 1;
}
if($pagenum > $maxpage) {
$pagenum = $maxpage;
}
return $pagenum;
}
/**
* @param int $image_id
* @param User $user

View file

@ -252,6 +252,8 @@ class Pools extends Extension {
* When displaying an image, optionally list all the pools that the
* image is currently a member of on a side panel, as well as a link
* to the Next image in the pool.
*
* @var DisplayingImageEvent $event
*/
public function onDisplayingImage(DisplayingImageEvent $event) {
global $config;
@ -374,16 +376,10 @@ class Pools extends Extension {
private function list_pools(Page $page, /*int*/ $pageNumber) {
global $config, $database;
if(is_null($pageNumber) || !is_numeric($pageNumber))
$pageNumber = 0;
else if ($pageNumber <= 0)
$pageNumber = 0;
else
$pageNumber--;
$pageNumber = clamp($pageNumber, 1, null) - 1;
$poolsPerPage = $config->get_int("poolsListsPerPage");
$order_by = "";
$order = $page->get_cookie("ui-order-pool");
if($order == "created" || is_null($order)){
@ -397,15 +393,14 @@ class Pools extends Extension {
}
$pools = $database->get_all("
SELECT p.id, p.user_id, p.public, p.title, p.description,
p.posts, u.name as user_name
FROM pools AS p
INNER JOIN users AS u
ON p.user_id = u.id
$order_by
LIMIT :l OFFSET :o
", array("l"=>$poolsPerPage, "o"=>$pageNumber * $poolsPerPage)
);
SELECT p.id, p.user_id, p.public, p.title, p.description,
p.posts, u.name as user_name
FROM pools AS p
INNER JOIN users AS u
ON p.user_id = u.id
$order_by
LIMIT :l OFFSET :o
", array("l"=>$poolsPerPage, "o"=>$pageNumber * $poolsPerPage));
$totalPages = ceil($database->get_one("SELECT COUNT(*) FROM pools") / $poolsPerPage);