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); } elseif ($key == 'order' && strlen($value) > 0) { //validate order switch ($value) { case 'asc': $sanitized_parameters .= "&order=asc"; break; case 'desc': $sanitized_parameters .= "&order=desc"; break; } } elseif (strlen($value) > 0 && is_numeric($value)) { $sanitized_parameters .= "&".$key."=".$value; } else { $sanitized_parameters .= "&".$key."=".urlencode($value); } } } } //get the offset $offset = ($page_number - 1) * $rows_per_page; //how many pages we have when using paging if ($num_rows > 0) { $max_page = ceil($num_rows/$rows_per_page); } //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 = "\n"; //◀ $first = "\n"; //▲ } else { $prev = "\n"; //◀ } if (($page_number + 1) < $max_page) { $page = $page_number + 1; $next = "\n"; //▶ $last = "\n"; //▼ } else { $last = "\n"; //▼ $next = "\n"; //▶ } //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 = "\n"; //▶ } $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; $array[] = $offset; return $array; } ?>