<?php 
/* 
    itemsCount:        Total number of items in the current list 
    pageSize:        Number of items in each page 
    offset:            Index of the 1st item currently displayed 
    linksCount:        Number of direct links to show (default to 5) 
    url:            URL mask used to generate links (%s will be replace by offset) 
    itemsCount=$items_count pageSize=$module_config.perpage offset=$offset 
    url="viewcat.php?cid=`$entity.cid`&orderby=`$sort_order`&offset=%s" 
*/ 
 
/** 
 * @param $params 
 * @param $smarty 
 * 
 * @return string 
 */ 
function smarty_function_xoPageNav($params, &$smarty) 
{ 
    global $xoops; 
 
    extract($params); 
    if ($pageSize < 1) { 
        $pageSize = 10; 
    } 
    $pagesCount = (int)($itemsCount / $pageSize); 
    if ($itemsCount <= $pageSize || $pagesCount < 2) { 
        return ''; 
    } 
    $str         = ''; 
    $currentPage = (int)($offset / $pageSize) + 1; 
    $lastPage    = (int)($itemsCount / $pageSize) + 1; 
 
    $minPage = min(1, ceil($currentPage - $linksCount / 2)); 
    $maxPage = max($lastPage, floor($currentPage + $linksCount / 2)); 
 
    //TODO Remove this hardocded strings 
    if ($currentPage > 1) { 
        $str .= '<a href="' . $xoops->url(str_replace('%s', $offset - $pageSize, $url)) . '">Previous</a>'; 
    } 
    for ($i = $minPage; $i <= $maxPage; ++$i) { 
        $tgt = htmlspecialchars($xoops->url(str_replace('%s', ($i - 1) * $pageSize, $url)), ENT_QUOTES); 
        $str .= "<a href='$tgt'>$i</a>"; 
    } 
    if ($currentPage < $lastPage) { 
        $str .= '<a href="' . $xoops->url(str_replace('%s', $offset + $pageSize, $url)) . '">Next</a>'; 
    } 
    $class = @!empty($class) ? htmlspecialchars($class, ENT_QUOTES) : 'pagenav'; 
 
    $str = "<div class='{$class}'>{$str}</div>"; 
 
    return $str; 
} 
 
 |