/Admin/Lib/ORG/Page.class.php
PHP | 180 lines | 110 code | 10 blank | 60 comment | 22 complexity | 7f54701de5acdafb510a8d1867943f34 MD5 | raw file
- <?php
- // +----------------------------------------------------------------------
- // | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
- // +----------------------------------------------------------------------
- // | Copyright (c) 2009 http://thinkphp.cn All rights reserved.
- // +----------------------------------------------------------------------
- // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
- // +----------------------------------------------------------------------
- // | Author: liu21st <liu21st@gmail.com>
- // +----------------------------------------------------------------------
- // $Id: Page.class.php 3 2011-02-03 16:24:00Z nicholasinlove1986@gmail.com $
-
- // +----------------------------------------------------------------------
- // | @author nicholas <nicholasinlove@126.com>
- // +----------------------------------------------------------------------
- // | @link ( http://www.yurnero.net )
- // +----------------------------------------------------------------------
- // | ??????????? $rollPage???????
- // +----------------------------------------------------------------------
- // | ???? ???? ????$upPage,$downPage???
- // +----------------------------------------------------------------------
-
- class Page extends Think {
- // ????
- public $firstRow ;
- // ????????
- public $listRows ;
- // ??????????
- public $parameter ;
- // ??????
- protected $totalPages ;
- // ???
- protected $totalRows ;
- // ????
- protected $nowPage ;
- // ????????
- protected $coolPages ;
- // ??????????
- protected $rollPage ;
- // ??????
- protected $config = array('header'=>'records','prev'=>'','next'=>'','first'=>'1...','last'=>'????','theme'=>'Total %totalRow% %header%, Pages: %nowPage%/%totalPage%, %first% %upPage% %linkPage% %downPage% %end% %input%'); //?? %select% %prePage% ?$rollPage? %nextPage% ?$rollPage? ???
-
- /**
- +----------------------------------------------------------
- * ????
- +----------------------------------------------------------
- * @access public
- +----------------------------------------------------------
- * @param array $totalRows ?????
- * @param array $listRows ???????
- * @param array $parameter ???????
- +----------------------------------------------------------
- */
- public function __construct($totalRows,$listRows,$parameter='') {
- $this->totalRows = $totalRows;
- $this->parameter = $parameter;
- $this->rollPage = C('PAGE_ROLLPAGE');
- $this->listRows = !empty($listRows)?$listRows:C('PAGE_LISTROWS');
- $this->totalPages = ceil($this->totalRows/$this->listRows); //???
- $this->coolPages = ceil($this->totalPages/$this->rollPage);
- $this->nowPage = !empty($_GET[C('VAR_PAGE')])?$_GET[C('VAR_PAGE')]:1;
- if(!empty($this->totalPages) && $this->nowPage>$this->totalPages) {
- $this->nowPage = $this->totalPages;
- }
- $this->firstRow = $this->listRows*($this->nowPage-1);
- }
-
- public function setConfig($name,$value) {
- if(isset($this->config[$name])) {
- $this->config[$name] = $value;
- }
- }
-
- /**
- +----------------------------------------------------------
- * ??????
- +----------------------------------------------------------
- * @access public
- +----------------------------------------------------------
- */
- public function show() {
- if(0 == $this->totalRows) return '';
- $p = C('VAR_PAGE');
- $nowCoolPage = ceil($this->nowPage/$this->rollPage);
- $url = $_SERVER['REQUEST_URI'].(strpos($_SERVER['REQUEST_URI'],'?')?'':"?").$this->parameter;
- $parse = parse_url($url);
- if(isset($parse['query'])) {
- parse_str($parse['query'],$params);
- unset($params[$p]);
- $url = $parse['path'].'?'.http_build_query($params);
- }
- //???????
- $upRow = $this->nowPage-1;
- $downRow = $this->nowPage+1;
- if ($upRow>0){
- $upPage="<a href='".$url."&".$p."=$upRow'>".$this->config['prev']."</a>";
- }else{
- //$upPage="";
- $upPage="<span class='disabled'>".$this->config['prev']."</span>";
- }
-
- if ($downRow <= $this->totalPages){
- $downPage="<a href='".$url."&".$p."=$downRow'>".$this->config['next']."</a>";
- }else{
- //$downPage="";
- $downPage="<span class='disabled'>".$this->config['next']."</span>";
- }
- // << < > >>
- if($nowCoolPage == 1){
- $theFirst = "";
- $prePage = "";
- }else{
- $preRow = $this->nowPage-$this->rollPage;
- $prePage = "<a href='".$url."&".$p."=$preRow' >?".$this->rollPage."?</a>";
- }
- //??3?
- if($this->nowPage - 3 > 0){
- $theFirst = "<a href='".$url."&".$p."=1' >".$this->config['first']."</a>";
- }
- if($nowCoolPage == $this->coolPages){
- $nextPage = "";
- $theEnd="";
- }else{
- $nextRow = $this->nowPage+$this->rollPage;
- $theEndRow = $this->totalPages;
- $nextPage = "<a href='".$url."&".$p."=$nextRow' >?".$this->rollPage."?/a>";
- $theEnd = "<a href='".$url."&".$p."=$theEndRow' >...".$theEndRow."</a>";
- }
- // 1 2 3 4 5
- $linkPage = "";
-
- //??????
- $init = 1;//?????
- $max = $this->totalPages;//?????
- $pageoffset = ($this->rollPage-1)/2;//?????????
-
- //??????????????
- if($this->totalPages>$this->rollPage){
- //????????????
- if($this->nowPage<=$pageoffset){
- $init=1;
- $max = $this->rollPage;
- }else{//??????????
- //????????????????
- if($this->nowPage+$pageoffset>=$this->totalPages+1){
- $init = $this->totalPages-$this->rollPage+1;
- }else{
- //???????????
- $init = $this->nowPage-$pageoffset;
- $max = $this->nowPage+$pageoffset;
- }
- }
- }
- //echo $init.';'.$max;
- for($i=$init;$i<=$max;$i++){
- $page=$this->nowPage;
- if($i==$page){
- $linkPage .= "<span class='current'>".$page."</span>";
- } else {
- $linkPage .= "<a href='".$url."&".$p."=$i'>".$i."</a>";
- }
- }
- /*???*/
- $input = 'Go <input style="width:20px; padding:0;font:10px Verdana;background:#aaa;" onkeypress="var keyChar=event.keyCode;if(keyChar == 13){location.href=\''.$url.'&'.$p.'=\'+this.value}" />';
- /*???*/
- $select.='Go <select name="topage" size="1" onchange="window.location.href=\''.$url.'&'.$p.'=\'+this.value">\n';
- for($i=1;$i<=$this->totalPages;$i++){
- if($i==$page) $select.="<option value='".$url."&".$p."=$i' selected>".$i."</option>\n";
- else $select.="<option value='".$url."&".$p."=$i'>".$i."</option>\n";
- }
- $select.="</select>";
-
- $pageStr = str_replace(
- array('%header%','%nowPage%','%totalRow%','%totalPage%','%upPage%','%downPage%','%first%','%prePage%','%linkPage%','%nextPage%','%end%','%input%','%select%'),
- array($this->config['header'],$this->nowPage,$this->totalRows,$this->totalPages,$upPage,$downPage,$theFirst,$prePage,$linkPage,$nextPage,$theEnd,$input,$select),$this->config['theme']);
- return $pageStr;
- }
- }
-
- ?>