<?php
trait Paginator {
static function __paginatorInitialize($obj) {
$obj->helper('render_pagination');
}
private function get_link_markup($num_url, $active = false) {
$item_state = '<li class="blog-pagination__item ' . ($active ? 'active' : '') . '">';
$link_url = '<a href="page' . $num_url . '">';
$close_tags = $num_url . '</a></li>';
return $item_state . $link_url . $close_tags;
}
public function render_pagination() {
$total_pages = $this->total_pages;
$current_page = $this->input->pageNum;
$lower_limit = max(min(max($current_page - 2, 1), $total_pages - 4), 1);
$upper_limit = min($lower_limit + 4, $total_pages);
$output = '';
for ($pageNumber=$lower_limit; $pageNumber <= $upper_limit; $pageNumber++) {
$output .= self::get_link_markup($pageNumber, $pageNumber == $current_page);
}
return $output;
}
}