<?php /** * PHP Mikrotik Billing (https://github.com/hotspotbilling/phpnuxbill/) * by https://t.me/ibnux **/ class Paginator { public static function build($table, $colVal = [], $query='', $per_page = '10') { global $routes; global $_L; $url = U . implode('/', $routes); $query = urlencode($query); $adjacents = "2"; $page = (int)(empty(_get('p')) ? 1 : _get('p')); $pagination = ""; foreach($colVal as $k=>$v) { if(!is_array($v) && strpos($v,'%') === false) { $table = $table->where($k, $v); }else{ if(is_array($v)){ $table = $table->where_in($k, $v); }else{ $table = $table->where_like($k, $v); } } } $totalReq = $table->count(); $page = ($page == 0 ? 1 : $page); $next = $page + 1; $lastpage = ceil($totalReq / $per_page); $lpm1 = $lastpage - 1; $limit = $per_page; $startpoint = ($page * $limit) - $limit; if ($lastpage >= 1) { $pagination .= '<ul class="pagination pagination-sm">'; if ($lastpage < 7 + ($adjacents * 2)) { for ($counter = 1; $counter <= $lastpage; $counter++) { if ($counter == $page) $pagination .= "<li class='active'><a href='javascript:void(0);'>$counter</a></li>"; else $pagination .= "<li><a href='{$url}&p=$counter&q=$query'>$counter</a></li>"; } } elseif ($lastpage > 5 + ($adjacents * 2)) { if ($page < 1 + ($adjacents * 2)) { for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++) { if ($counter == $page) $pagination .= "<li class='active'><a href='javascript:void(0);'>$counter</a></li>"; else $pagination .= "<li><a href='{$url}&p=$counter&q=$query'>$counter</a></li>"; } $pagination .= "<li class='disabled'><a href='#'>...</a></li>"; $pagination .= "<li><a href='{$url}&p=$lpm1&q=$query'>$lpm1</a></li>"; $pagination .= "<li><a href='{$url}&p=$lastpage&q=$query'>$lastpage</a></li>"; } elseif ($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2)) { $pagination .= "<li><a href='{$url}&p=1&q=$query'>1</a></li>"; $pagination .= "<li><a href='{$url}&p=2&q=$query'>2</a></li>"; $pagination .= "<li class='disabled'><a href='#'>...</a></li>"; for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++) { if ($counter == $page) $pagination .= "<li class='active'><a href='javascript:void(0);'>$counter</a></li>"; else $pagination .= "<li><a href='{$url}&p=$counter&q=$query'>$counter</a></li>"; } $pagination .= "<li class='disabled'><a href='#'>...</a></li>"; $pagination .= "<li><a href='{$url}&p=$lpm1&q=$query'>$lpm1</a></li>"; $pagination .= "<li><a href='{$url}&p=$lastpage&q=$query'>$lastpage</a></li>"; } else { $pagination .= "<li><a href='{$url}&p=1&q=$query'>1</a></li>"; $pagination .= "<li><a href='{$url}&p=2&q=$query'>2</a></li>"; $pagination .= "<li><a href='#'>...</a></li>"; for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++) { if ($counter == $page) $pagination .= "<li class='active'><a class='disabled'>$counter</a></li>"; else $pagination .= "<li><a href='{$url}&p=$counter&q=$query'>$counter</a></li>"; } } } if ($page < $counter - 1) { $pagination .= "<li><a href='{$url}&p=$next&q=$query'>" . Lang::T('Next') . "</a></li>"; $pagination .= "<li><a href='{$url}&p=$lastpage&q=$query'>" . Lang::T('Last') . "</a></li>"; } else { $pagination .= "<li class='disabled'><a class='disabled'>" . Lang::T('Next') . "</a></li>"; $pagination .= "<li class='disabled'><a class='disabled'>" . Lang::T('Last') . "</a></li>"; } $pagination .= "</ul>"; return array("startpoint" => $startpoint, "limit" => $limit, "found" => $totalReq, "page" => $page, "lastpage" => $lastpage, "contents" => $pagination); } } public static function bootstrap($table, $w1 = '', $c1 = '', $w2 = '', $c2 = '', $w3 = '', $c3 = '', $w4 = '', $c4 = '', $per_page = '10') { global $routes; global $_L; $url = U . $routes['0'] . '/' . $routes['1'] . '/'; $adjacents = "2"; $page = (int)(!isset($routes['2']) ? 1 : $routes['2']); $pagination = ""; if(is_object($table)){ if ($w1 != '') { $totalReq = $table->where($w1, $c1)->count(); } elseif ($w2 != '') { $totalReq = $table->where($w1, $c1)->where($w2, $c2)->count(); } elseif ($w3 != '') { $totalReq = $table->where($w1, $c1)->where($w2, $c2)->where($w3, $c3)->count(); } elseif ($w4 != '') { $totalReq = $table->where($w1, $c1)->where($w2, $c2)->where($w3, $c3)->where($w4, $c4)->count(); } else { $totalReq = $table->count(); } }else{ if ($w1 != '') { $totalReq = ORM::for_table($table)->where($w1, $c1)->count(); } elseif ($w2 != '') { $totalReq = ORM::for_table($table)->where($w1, $c1)->where($w2, $c2)->count(); } elseif ($w3 != '') { $totalReq = ORM::for_table($table)->where($w1, $c1)->where($w2, $c2)->where($w3, $c3)->count(); } elseif ($w4 != '') { $totalReq = ORM::for_table($table)->where($w1, $c1)->where($w2, $c2)->where($w3, $c3)->where($w4, $c4)->count(); } else { $totalReq = ORM::for_table($table)->count(); } } $i = 0; $page = ($page == 0 ? 1 : $page); $start = ($page - 1) * $per_page; $prev = $page - 1; $next = $page + 1; $lastpage = ceil($totalReq / $per_page); $lpm1 = $lastpage - 1; $limit = $per_page; $startpoint = ($page * $limit) - $limit; if ($lastpage >= 1) { $pagination .= '<ul class="pagination pagination-sm">'; if ($lastpage < 7 + ($adjacents * 2)) { for ($counter = 1; $counter <= $lastpage; $counter++) { if ($counter == $page) $pagination .= "<li class='active'><a href='javascript:void(0);'>$counter</a></li>"; else $pagination .= "<li><a href='{$url}$counter'>$counter</a></li>"; } } elseif ($lastpage > 5 + ($adjacents * 2)) { if ($page < 1 + ($adjacents * 2)) { for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++) { if ($counter == $page) $pagination .= "<li class='active'><a href='javascript:void(0);'>$counter</a></li>"; else $pagination .= "<li><a href='{$url}$counter'>$counter</a></li>"; } $pagination .= "<li class='disabled'><a href='#'>...</a></li>"; $pagination .= "<li><a href='{$url}$lpm1'>$lpm1</a></li>"; $pagination .= "<li><a href='{$url}$lastpage'>$lastpage</a></li>"; } elseif ($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2)) { $pagination .= "<li><a href='{$url}1'>1</a></li>"; $pagination .= "<li><a href='{$url}2'>2</a></li>"; $pagination .= "<li class='disabled'><a href='#'>...</a></li>"; for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++) { if ($counter == $page) $pagination .= "<li class='active'><a href='javascript:void(0);'>$counter</a></li>"; else $pagination .= "<li><a href='{$url}$counter'>$counter</a></li>"; } $pagination .= "<li class='disabled'><a href='#'>...</a></li>"; $pagination .= "<li><a href='{$url}$lpm1'>$lpm1</a></li>"; $pagination .= "<li><a href='{$url}$lastpage'>$lastpage</a></li>"; } else { $pagination .= "<li><a href='{$url}1'>1</a></li>"; $pagination .= "<li><a href='{$url}2'>2</a></li>"; $pagination .= "<li><a href='#'>...</a></li>"; for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++) { if ($counter == $page) $pagination .= "<li class='active'><a class='disabled'>$counter</a></li>"; else $pagination .= "<li><a href='{$url}$counter'>$counter</a></li>"; } } } if ($page < $counter - 1) { $pagination .= "<li><a href='{$url}$next'>" . Lang::T('Next') . "</a></li>"; $pagination .= "<li><a href='{$url}$lastpage'>" . Lang::T('Last') . "</a></li>"; } else { $pagination .= "<li class='disabled'><a class='disabled'>" . Lang::T('Next') . "</a></li>"; $pagination .= "<li class='disabled'><a class='disabled'>" . Lang::T('Last') . "</a></li>"; } $pagination .= "</ul>"; $gen = array("startpoint" => $startpoint, "limit" => $limit, "found" => $totalReq, "page" => $page, "lastpage" => $lastpage, "contents" => $pagination); return $gen; } } public static function bootstrapRaw($table, $w1 = '', $c1 = [], $per_page = '10') { global $routes; global $_L; $url = U . $routes['0'] . '/' . $routes['1'] . '/'; $adjacents = "2"; $page = (int)(!isset($routes['2']) ? 1 : $routes['2']); $pagination = ""; if(is_object($table)){ if ($w1 != '') { $totalReq = $table->where_raw($w1, $c1)->count(); } else { $totalReq = $table->count(); } }else{ if ($w1 != '') { $totalReq = ORM::for_table($table)->where_raw($w1, $c1)->count(); } else { $totalReq = ORM::for_table($table)->count(); } } $i = 0; $page = ($page == 0 ? 1 : $page); $start = ($page - 1) * $per_page; $prev = $page - 1; $next = $page + 1; $lastpage = ceil($totalReq / $per_page); $lpm1 = $lastpage - 1; $limit = $per_page; $startpoint = ($page * $limit) - $limit; if ($lastpage >= 1) { $pagination .= '<ul class="pagination pagination-sm">'; if ($lastpage < 7 + ($adjacents * 2)) { for ($counter = 1; $counter <= $lastpage; $counter++) { if ($counter == $page) $pagination .= "<li class='active'><a href='javascript:void(0);'>$counter</a></li>"; else $pagination .= "<li><a href='{$url}$counter'>$counter</a></li>"; } } elseif ($lastpage > 5 + ($adjacents * 2)) { if ($page < 1 + ($adjacents * 2)) { for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++) { if ($counter == $page) $pagination .= "<li class='active'><a href='javascript:void(0);'>$counter</a></li>"; else $pagination .= "<li><a href='{$url}$counter'>$counter</a></li>"; } $pagination .= "<li class='disabled'><a href='#'>...</a></li>"; $pagination .= "<li><a href='{$url}$lpm1'>$lpm1</a></li>"; $pagination .= "<li><a href='{$url}$lastpage'>$lastpage</a></li>"; } elseif ($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2)) { $pagination .= "<li><a href='{$url}1'>1</a></li>"; $pagination .= "<li><a href='{$url}2'>2</a></li>"; $pagination .= "<li class='disabled'><a href='#'>...</a></li>"; for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++) { if ($counter == $page) $pagination .= "<li class='active'><a href='javascript:void(0);'>$counter</a></li>"; else $pagination .= "<li><a href='{$url}$counter'>$counter</a></li>"; } $pagination .= "<li class='disabled'><a href='#'>...</a></li>"; $pagination .= "<li><a href='{$url}$lpm1'>$lpm1</a></li>"; $pagination .= "<li><a href='{$url}$lastpage'>$lastpage</a></li>"; } else { $pagination .= "<li><a href='{$url}1'>1</a></li>"; $pagination .= "<li><a href='{$url}2'>2</a></li>"; $pagination .= "<li><a href='#'>...</a></li>"; for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++) { if ($counter == $page) $pagination .= "<li class='active'><a class='disabled'>$counter</a></li>"; else $pagination .= "<li><a href='{$url}$counter'>$counter</a></li>"; } } } if ($page < $counter - 1) { $pagination .= "<li><a href='{$url}$next'>" . Lang::T('Next') . "</a></li>"; $pagination .= "<li><a href='{$url}$lastpage'>" . Lang::T('Last') . "</a></li>"; } else { $pagination .= "<li class='disabled'><a class='disabled'>" . Lang::T('Next') . "</a></li>"; $pagination .= "<li class='disabled'><a class='disabled'>" . Lang::T('Last') . "</a></li>"; } $pagination .= "</ul>"; $gen = array("startpoint" => $startpoint, "limit" => $limit, "found" => $totalReq, "page" => $page, "lastpage" => $lastpage, "contents" => $pagination); return $gen; } } }