Class Page {
- Private $ total; // total quantity
- Private $ limit; // returns the mysql limit statement.
- Private $ pageStart; // the start value.
- Private $ pageStop; // The end value.
- Private $ pageNumber; // Number of pagination numbers displayed
- Private $ page; // current page
- Private $ pageSize; // The number displayed on each page
- Private $ pageToatl; // The total number of pages
- Private $ pageParam; // paging variable
- Private $ uri; // URL parameter
- /**
- * The pagination settings are case insensitive.
- * % PageToatl % // total number of pages
- * % Page % // current page
- * % PageSize % // number of data entries displayed on the current page
- * % PageStart % // start number of the current page
- * % PageStop % // number of end entries on the current page
- * % Total % // total number of data entries
- * % First % // home page
- * % Ending % // end page
- * % Up % // Previous Page
- * % Down % // Next page
- * % F % // Start Page
- * % E % // end page
- * % OmitFA % // skip before
- * % OmitEA % // skipped after adding jump
- * % OmitF % // omitted before
- * % OmitE % // later omitted
- * % NumberF % // fixed number of numeric pagination
- * % NumberD % // The right-side numeric paging
- * % Input % // jump to the input box
- * % GoTo % // jump button
- */Bbs.it-home.org
- Private $ pageType = '% page/% pageToatl % page % first % up % F % omitFA % numberF % omitEA % E % down % % ending % ';
- // Set the display value
- Private $ pageShow = array ('first '=> 'homepage', 'ending' => 'Last page', 'Up' => 'previous page ', 'Low' => 'next page', 'Goto '=> 'Go ');
/**
- * Initialize the data and construct the data.
- * @ Access public
- * @ Param int $ total data volume
- * @ Param int $ pageSize number of entries displayed per page
- * @ Param int $ pageNumber the number displayed on the page (using % numberF % is different from using % numberD %)
- * @ Param string $ pageParam paging variable
- * @ Return void
- */
- Public function _ construct ($ total, $ pageSize = 10, $ pageNumber = 5, $ pageParam = 'p '){
- $ This-> total = $ total <0? 0: $ total;
- $ This-> pageSize = $ pageSize <0? 0: $ pageSize;
- $ This-> pageNumber = $ pageNumber <0? 0: $ pageNumber;
- $ This-> pageParam = $ pageParam;
- $ This-> calculate ();
- }
/**
- * Display page
- * @ Access public
- * @ Return string HTML paging string
- */
- Public function pageShow (){
- $ This-> uri ();
- If ($ this-> pageToatl> 1 ){
- If ($ this-> page = 1 ){
- $ First = ''. $ this-> pageShow ['first'].'';
- $ Up = ''. $ this-> pageShow ['Up'].'';
- } Else {
- $ First = 'uri. '&'. $ this-> pageParam. '= 1 ">'. $ this-> pageShow ['first'].'';
- $ Up = 'uri. '&'. $ this-> pageParam. '= '. ($ this-> page-1 ). '"> '. $ this-> pageShow ['Up']. '';
- }
- If ($ this-> page >=$ this-> pageToatl ){
- $ Ending = ''. $ this-> pageShow ['ending'].'';
- $ Down = ''. $ this-> pageShow ['drop'].'';
- } Else {
- $ Ending = 'uri. '&'. $ this-> pageParam. '= '. $ this-> pageToatl. '"> '. $ this-> pageShow ['ending']. '';
- $ Down = 'uri. '&'. $ this-> pageParam. '= '. ($ this-> page + 1 ). '"> '. $ this-> pageShow ['low']. '';
- }
- $ Input ='';
- $ GoTo =''. $ This-> pageShow ['Goto'].'';
- } Else {
- $ First = ''; $ up =''; $ ending = ''; $ down =''; $ input = ''; $ GoTo = '';
- }
- $ This-> numberF ();
- Return str_ireplace (array ('% pageToatl %', '% page %', '% pageSize %', '% pageStart %', '% pageStop % ', '% total %', '% first %', '% ending %', '% up %', '% down %', '% input % ', '% GoTo %'), array ($ this-> pageToatl, $ this-> page, $ this-> pageStop-$ this-> pageStart, $ this-> pageStart, $ this-> pageStop, $ this-> total, $ first, $ ending, $ up, $ down, $ input, $ GoTo), $ this-> pageType );
- }
/**
- * Digit paging
- */
- Private function numberF (){
- $ PageF = stripos ($ this-> pageType, '% numberF % ');
- $ PageD = stripos ($ this-> pageType, '% numberD % ');
- $ NumberF = ''; $ numberD =''; $ F = ''; $ E =''; $ omitF = ''; $ omitFA = ''; $ omitE = ''; $ omitEA = '';
- If ($ pageF! = False | $ pageD! = False ){
- If ($ pageF! = False ){
- $ Number = $ this-> pageNumber % 2 = 0? $ This-> pageNumber/2 :( $ this-> pageNumber + 1)/2;
- $ DStart = $ this-> page-$ number <0? $ This-> page-$ number-1: 0;
- If ($ this-> page + $ number-$ DStart> $ this-> pageToatl ){
- $ DStop = ($ this-> page + $ number-$ DStart)-$ this-> pageToatl;
- $ ForStop = $ this-> pageToatl + 1;
- } Else {
- $ DStop = 0;
- $ ForStop = $ this-> page + $ number-$ DStart + 1;
- }
- $ ForStart = $ this-> page-$ number-$ DStop <1? 1: $ this-> page-$ number-$ DStop;
- For ($ I = $ forStart; $ I <$ forStop; ++ $ I ){
- If ($ I ==$ this-> page ){
- $ NumberF. = ''. $ I .'';
- } Else {
- $ NumberF. = 'uri. '&'. $ this-> pageParam. '='. $ I. '">'. $ I .'';
- }
- }
- }
- If ($ pageD! = False ){
- $ Number = $ this-> pageNumber;
- $ ForStart = $ this-> page-$ number> 0? $ This-> page-$ number: 1;
- $ ForStop = $ this-> page + $ number> $ this-> pageToatl? $ This-> pageToatl + 1: $ this-> page + $ number + 1;
- For ($ I = $ forStart; $ I <$ this-> page; ++ $ I ){
- $ NumberD. = 'uri. '&'. $ this-> pageParam. '='. $ I. '">'. $ I .'';
- }
- $ NumberD. = ''. $ this-> page .'';
- $ Start = $ this-> page + 1;
- For ($ I = $ start; $ I <$ forStop; ++ $ I ){
- $ NumberD. = 'uri. '&'. $ this-> pageParam. '='. $ I. '">'. $ I .'';
- }
- }
- $ F = $ forStart> 1? 'Uri. '&'. $ this-> pageParam. '= 1 "> 1 ':'';
- $ E = $ forStop <$ this-> pageToatl + 1? 'Uri. '&'. $ this-> pageParam. '='. $ this-> pageToatl. '">'. $ this-> pageToatl .'':'';
- If ($ forStart> 2 ){
- $ OmitF = '... ';
- $ StartA = $ this-> page-$ number <1? 1: $ this-> page-$ number;
- $ OmitFA = 'uri. '&'. $ this-> pageParam. '='. $ startA. '">... ';
- }
- If ($ forStop <$ this-> pageToatl ){
- $ OmitE = '... ';
- $ StopA = $ this-> page + $ number> $ this-> pageToatl? $ This-> pageToatl: $ this-> page + $ number;
- $ OmitEA = 'uri. '&'. $ this-> pageParam. '='. $ stopA. '">... ';
- }
- }
- $ This-> pageType = str_ireplace (array ('% F %', '% E %', '% omitFA %', '% omitEA %', '% omitF % ', '% omitE %', '% numberF %', '% numberD %'), array ($ F, $ E, $ omitFA, $ omitEA, $ omitF, $ omitE, $ numberF, $ numberD), $ this-> pageType );
- }
/**
- * Url processing method
- * @ Access public
- * @ Param array $ url: URL-preserving direct link array
- * @ Return string the url end parameter after filtering
- */
- Private function uri (){
- $ Url = $ _ SERVER ["REQUEST_URI"];
- $ Par = parse_url ($ url );
- If (isset ($ par ['query']) {
- Parse_str ($ par ['query'], $ query );
- If (! Is_array ($ this-> uri )){
- $ This-> uri = array ();
- }
- Array_merge ($ query, $ this-> uri );
- Unset ($ query [$ this-> pageParam]);
- While ($ key = array_search ('', $ query )){
- Unset ($ query [$ key]);
- }
- $ This-> uri = $ par ['path']. '? '. Http_build_query ($ query );
- } Else {
- $ This-> uri = $ par ['path']. '? ';
- }
- }
/**
- * Set the limit method and calculate the number of start and end items.
- */
- Private function calculate (){
- $ This-> pageToatl = ceil ($ this-> total/$ this-> pageSize );
- $ This-> page = intval ($ _ GET [$ this-> pageParam]);
- $ This-> page = $ this-> page> = 1? $ This-> page> $ this-> pageToatl? $ This-> pageToatl: $ this-> page: 1;
- $ This-> pageStart = ($ this-> page-1) * $ this-> pageSize;
- $ This-> pageStop = $ this-> pageStart + $ this-> pageSize;
- $ This-> pageStop = $ this-> pageStop> $ this-> total? $ This-> total: $ this-> pageStop;
- $ This-> limit = $ this-> pageStart. ','. $ this-> pageStop;
- }
/**
- * Set the filter.
- */
- Public function _ set ($ name, $ value ){
- Switch ($ name ){
- Case 'pagetype ':
- Case 'URL ':
- $ This-> $ name = $ value;
- Return;
- Case 'pageshow ':
- If (is_array ($ value )){
- $ This-> pageShow = array_merge ($ this-> pageShow, $ value );
- }
- Return;
- }
- }
/**
- * Value filter
- */
- Public function _ get ($ name ){
- Switch ($ name ){
- Case 'limit ':
- Case 'pagestart ':
- Case 'pagestop ':
- Return $ this-> $ name;
- Default:
- Return;
- }
- }
- }
|