0) { $page = (int)$setting['page']; } else { $page = 1; } if (isset($setting['limit']) && (int)$setting['limit']) { $limit = (int)$setting['limit']; } else { $limit = 10; } if (isset($setting['url'])) { $url = str_replace('%7Bpage%7D', '{page}', (string)$setting['url']); } else { $url = ''; } $num_links = 8; $num_pages = ceil($total / $limit); if ($url && $page > 1 && $num_pages < $page) { $back = true; } else { $back = false; } $data['page'] = $page; if ($page > 1) { $data['first'] = str_replace(['&page={page}', '?page={page}', '&page={page}'], '', $url); if ($page - 1 === 1) { $data['prev'] = str_replace(['&page={page}', '?page={page}', '&page={page}'], '', $url); } else { $data['prev'] = str_replace('{page}', $page - 1, $url); } } else { $data['first'] = ''; $data['prev'] = ''; } $data['links'] = []; if ($num_pages > 1) { if ($num_pages <= $num_links) { $start = 1; $end = $num_pages; } else { $start = $page - floor($num_links / 2); $end = $page + floor($num_links / 2); if ($start < 1) { $end += abs($start) + 1; $start = 1; } if ($end > $num_pages) { $start -= ($end - $num_pages); $end = $num_pages; } } for ($i = $start; $i <= $end; $i++) { $data['links'][] = [ 'page' => $i, 'href' => str_replace('{page}', $i, $url) ]; } } if ($num_pages > $page) { $data['next'] = str_replace('{page}', $page + 1, $url); $data['last'] = str_replace('{page}', $num_pages, $url); } else { $data['next'] = ''; $data['last'] = ''; } if ($num_pages > 1 || $back) { return $this->load->view('common/pagination', $data); } else { return ''; } } }