<?php
/**
 * @功能        smarty分页插件
 * @author    肖红阳
 * @使用方法      {[listpage page=$initpager.page pageSize=$initpager.pageSize total=$initpager.total tpl='tpl02' ]}
 * @page     当前页面
 * @page    每页记录数
 * @total   总记录数
 * @tpl     模板
 * @version   2011-04-29
 */
function smarty_function_listpage($params)
{
    $page = $params['page']?$params['page']:1;
    $total = $params['total'];
    $pageSize = $params['pageSize']?$params['pageSize']:5;
    $tpl = $params['tpl']?$params['tpl']:'tpl01';
    if($total<1){
        return;
    }else{
        //组装页码
        $pageEnd = ceil($total/$pageSize);
        $firstPage = 1;
        if($page>1){
            $pagePrev = ($page<=$pageEnd)? $page-1:$pageEnd;
        }else{
            $pagePrev = 1;
        }
        if($page<$pageEnd){
            $pageNext = $page+1;
        }else{
            $pageNext = $pageEnd;
        }
    }
      
    $url = $urlTmp = $_SERVER[REQUEST_URI];
    if($position = strpos($urlTmp,'?')){
        $url = substr($urlTmp,0,$position);
        $strQuery = substr($urlTmp,$position+1);
        $arrQuery = array();
        parse_str($strQuery,$arrQuery);
        if(key_exists('page',$arrQuery)){
            unset($arrQuery['page']);
        }
        $urlPostfix = http_build_query($arrQuery);
    }
      
    //组装url
    $urlString = $url.'?'.$urlPostfix;
    $urlFirst = $urlString.'&page=1';
    $urlPrev = $urlString.'&page='.$pagePrev;
    $urlNext = $urlString.'&page='.$pageNext;
    $urlEnd = $urlString.'&page='.$pageEnd;
    //禁用按钮
    $hideFirst = $page==1?'class="disabled"':'';
    $hideEnd = $page==$pageEnd?'class="disabled"':'';
       
      
    //模板1
    $strPage = "";
    if($pageEnd>0){
        $strPage = "<select name='sltPage' οnchange='window.location=this.value' />";
        for($i=1;$i<=$pageEnd;$i++){
            $selected = $i==$page?' selected="selected"':'';
            $strPage.="<option {$selected}  value='".$urlString.'&page='.$i."'>{$i}</option>";
        }
        $strPage.= "</select>";
    }
    $tpl01 = '
            <div class="page">
                <ul class="ul1">
                    <li>共$total$条记录</li>
                    <li>当前第$page$页</li>
                    <li><a href="$urlFirst$">首页</a></li>
                    <li><a href="$urlPrev$">上页</a></li>
                    <li><a href="$urlNext$">下页</a></li>
                    <li><a href="$urlEnd$">尾页</a></li>             
                </ul>
                <ul class="ul2">
                    <li>$strPage01$</li>
                </ul>
            </div>
            ';
    //模板2
    $strPage02 = "";
    if($pageEnd>0){
        if(($page-5)>0&&($page+5)<$pageEnd){
            $start = $page-5;
        }else{
            $start=$page<$pageEnd-9?$page:$pageEnd-9;
              
            $start=$start>0?$start:1;
            //$start = $page;
        }
        if($page<=$pageEnd){
            for($i=$start;$i<=$start+9;$i++){
                if($i>$pageEnd) continue;
                $selected = $i==$page?' class="active"':'';
                $strPage02.="<li {$selected}><a href='{$urlString}&page={$i}'>{$i}</a></li>";
            }
        }
    }
      
    $tpl02 = '
            <div class="page ">
                <ul class="ul1 pagination">
                    <li class="disabled"><a href="javascript:void(0);">共$total$条记录</a></li>
                    <li class="disabled"><a href="javascript:void(0);">当前第$page$/$pageEnd$页</a></li>
                    <li $hideFirst$><a href="$urlFirst$">首页</a></li>
                    <li $hideFirst$><a href="$urlPrev$">上页</a></li>
                    $strPage02$
                    <li $hideEnd$><a href="$urlNext$">下页</a></li>
                    <li $hideEnd$><a href="$urlEnd$">尾页</a></li>
                </ul>
            </div>
            ';
      
    $search = array('$urlFirst$','$urlPrev$','$urlNext$','$urlEnd$','$total$','$page$','$pageEnd$','$hideFirst$','$hideEnd$','$strPage01$','$strPage02$');
    $replace = array($urlFirst,$urlPrev,$urlNext,$urlEnd,$total,$page,$pageEnd,$hideFirst,$hideEnd,$strPage,$strPage02);
    $str = str_replace($search, $replace, $$tpl);
       
    return $str;
}