Portions created by the Initial Developer are Copyright (C) 2008-2019 the Initial Developer. All Rights Reserved. Contributor(s): Mark J Crane */ function paging($num_rows, $param, $rows_per_page, $mini = false, $result_count = 0) { //validate the data if (!is_numeric($num_rows)) { $num_rows = 0; } if (!is_numeric($rows_per_page)) { $rows_per_page = 100; } if (!is_numeric($result_count)) { $result_count = 0; } // if $_get['page'] defined, use it as page number if (isset($_GET['page']) && is_numeric($_GET['page'])) { $page_number = $_GET['page']; } else { $page_number = 0; } //sanitize the parameters $sanitized_parameters = ''; if (isset($param) && strlen($param) > 0) { $param_array = explode("&", $param); if (is_array($param_array)) { foreach($param_array as $row) { $param_sub_array = explode("=", $row); $key = preg_replace('#[^a-zA-Z0-9_\-]#', '', $param_sub_array['0']); $value = urldecode($param_sub_array['1']); if ($key == 'order_by' && strlen($value) > 0) { //validate order by $sanitized_parameters .= "&order_by=". preg_replace('#[^a-zA-Z0-9_\-]#', '', $value); } else if ($key == 'order' && strlen($value) > 0) { //validate order switch ($value) { case 'asc': $sanitized_parameters .= "&order=asc"; break; case 'desc': $sanitized_parameters .= "&order=desc"; break; } } else if (strlen($value) > 0 && is_numeric($value)) { $sanitized_parameters .= "&".$key."=".$value; } else { $sanitized_parameters .= "&".$key."=".urlencode($value); } } } } //how many pages we have when using paging if ($num_rows > 0) { $max_page = ceil($num_rows/$rows_per_page); } else { $max_page = 1; } //add multi-lingual support $language = new text; $text = $language->get(); //print the link to access each page $self = htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES, 'UTF-8'); $nav = ''; for ($page = 1; $page <= $max_page; $page++){ if ($page == $page_number) { $nav .= " $page "; // no need to create a link to current page } else { $nav .= " ".$page." \n"; } } if ($page_number > 0) { $page = $page_number - 1; $prev = button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>'chevron-left','link'=>$self."?page=".$page.$sanitized_parameters,'title'=>$text['label-page'].' '.($page+1)]); $first = button::create(['type'=>'button','label'=>$text['button-next'],'icon'=>'chevron-left','link'=>$self."?page=1".$sanitized_parameters]); } else { $prev = button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>'chevron-left','onclick'=>"return false;",'title'=>'','style'=>'opacity: 0.4; -moz-opacity: 0.4; cursor: default;']); } if (($page_number + 1) < $max_page) { $page = $page_number + 1; $next = button::create(['type'=>'button','label'=>$text['button-next'],'icon'=>'chevron-right','link'=>$self."?page=".$page.$sanitized_parameters,'title'=>$text['label-page'].' '.($page+1)]); $last = button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>'chevron-right','link'=>$self."?page=".$max_page.$sanitized_parameters]); } else { $last = button::create(['type'=>'button','label'=>$text['button-next'],'icon'=>'chevron-right','link'=>$self."?page=".$max_page.$sanitized_parameters]); $next = button::create(['type'=>'button','label'=>$text['button-next'],'icon'=>'chevron-right','onclick'=>"return false;",'title'=>'','style'=>'opacity: 0.4; -moz-opacity: 0.4; cursor: default;']); } //if the result count is less than the rows per page then this is the last page of results if ($result_count > 0 and $result_count < $rows_per_page) { $next = button::create(['type'=>'button','label'=>(!$mini ? $text['button-next'] : null),'icon'=>'chevron-right','onclick'=>"return false;",'title'=>'','style'=>'opacity: 0.4; -moz-opacity: 0.4; cursor: default;']); } $array = array(); $code = ''; if ($max_page > 1) { //define javascript to include $script = "\n"; //determine size if ($mini) { $code = "".$prev.$next."\n".$script; } else { $code .= "
"; $code .= " ".$prev; $code .= "    "; $code .= " "; if ($result_count == 0) { $code .= "   ".$max_page.""; } $code .= "    "; $code .= " ".$next; $code .= "
\n".$script; } //add to array $array[] = $code; } else { $array[] = ""; } $array[] = $rows_per_page; return $array; } ?>