Source for file TablePager.php

Documentation is available at TablePager.php

  1. <?php
  2.     /**
  3.      * Recordset Pager Classes
  4.      *
  5.      * @copyright Copyright (c) 2003-2006 Mirchev Ideas Ltd. All rights reserved.
  6.      * @package MIPHPF
  7.      */
  8.     
  9.     /**
  10.      * Recordset Pager Class
  11.      * Manage the movement between pages when data is shown in table fomat
  12.      *
  13.      * @copyright Copyright (c) 2003-2006 Mirchev Ideas Ltd. All rights reserved.
  14.      * @package MIPHPF
  15.      */
  16.     class miTablePager extends miTableFeature {
  17.         
  18.         const TMPL_VAR_RECORDSET_NAVIGATOR = 'HTML_RECORDSET_NAVIGATOR';
  19.         const TMPL_VAR_RECORDSET_POSITION = 'RECORDSET_POSITION';
  20.         const TMPL_VAR_FIRST_RECORD = 'FIRST_RECORD';
  21.         const TMPL_VAR_LAST_RECORD = 'LAST_RECORD';
  22.         const TMPL_VAR_TOTAL_RECORDS = 'TOTAL_RECORDS';
  23.         
  24.         const PARAM_PAGE = 'page';
  25.         const PARAM_RECORDS_PER_PAGE = 'recordsPerPage';
  26.         
  27.         /**
  28.          * The current page number
  29.          * 
  30.          * @access protected
  31.          */        
  32.         protected $_page = 0;
  33.         
  34.         /**
  35.          * Number of records per page
  36.          * 
  37.          * @access protected
  38.          */
  39.         protected $_recordsPerPage;
  40.         
  41.         /**
  42.          * Total number of records
  43.          * 
  44.          * @access protected
  45.          */
  46.         protected $_totalRecords = 0;
  47.         
  48.         /**
  49.          * The records per page by default
  50.          * 
  51.          * @access protected
  52.          */
  53.         protected $_defaultRecordsPerPage;
  54.         
  55.         /**
  56.          * 
  57.          */
  58.         function __construct($table)
  59.         {
  60.             parent::__construct($table);
  61.             
  62.             $this->_recordsPerPage = $this->_defaultRecordsPerPage = miSettings::singleton()->get('MI_RECORDS_PER_PAGE');
  63.         }
  64.         
  65.         /**
  66.          * Sets the pager location
  67.          * 
  68.          * @access public
  69.          * @param $page integer
  70.          * @param $recordsPerPage integer
  71.          * @param $totalRecords integer
  72.          */
  73.         public function setPagerLocation($page$recordsPerPage$totalRecords)
  74.         {
  75.             $this->_page = $page;
  76.             $this->_recordsPerPage = $recordsPerPage;
  77.             $this->_totalRecords = $totalRecords;
  78.         }
  79.         
  80.         /**
  81.          * In this function subclasses will return Navigator
  82.          * 
  83.          * @access public
  84.          * @return array 
  85.          */
  86.         public function getValues()
  87.         {
  88.             /* in this function subclasses will return specific Navigator */
  89.         }
  90.         
  91.         /**
  92.          * Returns associative array with params that save the feature state
  93.          * 
  94.          * @return array 
  95.          */
  96.         public function getStateParams()
  97.         {
  98.             $params array(self::PARAM_PAGE => $this->getStateValue(self::PARAM_PAGE''));
  99.             if ($this->_defaultRecordsPerPage != $this->getStateValue(self::PARAM_RECORDS_PER_PAGE$this->_defaultRecordsPerPage))
  100.                 $params[self::PARAM_RECORDS_PER_PAGE$this->getStateValue(self::PARAM_RECORDS_PER_PAGE$this->_defaultRecordsPerPage);
  101.             return $params;
  102.         }
  103.         
  104.         
  105.         /**
  106.          * Sets the default records per page
  107.          * 
  108.          * @param int $defaultRecordsPerPage the number of records per page by default
  109.          * @access public
  110.          */
  111.         public function setDefaultRecordsPerPage($defaultRecordsPerPage)
  112.         {
  113.             $this->_defaultRecordsPerPage = $defaultRecordsPerPage;
  114.         }
  115.         
  116.         /**
  117.          * Gets the value of "page" param
  118.          * 
  119.          * @access public
  120.          * @return string 
  121.          */
  122.         public function getPageParam()
  123.         {
  124.             return $this->getStateValue(self::PARAM_PAGE1);
  125.         }
  126.         
  127.         /**
  128.          * Gets the value of "records per page" param
  129.          * 
  130.          * @access public
  131.          * @return string 
  132.          */
  133.         public function getRecordsPerPageParam()
  134.         {
  135.             return $this->getStateValue(self::PARAM_RECORDS_PER_PAGE$this->_defaultRecordsPerPage);
  136.         }
  137.         
  138.         /**
  139.          * Calculates first and last positions for a page from the total recodrs
  140.          * 
  141.          * @access protected
  142.          * @return array 
  143.          */
  144.         protected function assignPosition()
  145.         {
  146.             $firstRecord ((($this->_page-1$this->_recordsPerPage)+1);
  147.             $lastRecord ($this->_page * $this->_recordsPerPage$this->_totalRecords ? $this->_totalRecords : ($this->_page * $this->_recordsPerPage);
  148.             
  149.             $values array();
  150.             $values[self::TMPL_VAR_FIRST_RECORD$firstRecord;
  151.             $values[self::TMPL_VAR_LAST_RECORD$lastRecord;
  152.             $values[self::TMPL_VAR_TOTAL_RECORDS$this->_totalRecords;
  153.             if ($this->_totalRecords > 0{
  154.                 $values[self::TMPL_VAR_RECORDSET_POSITION=
  155.                     sprintf(miI18N::getSystemMessage('MI_RECORDSETPAGER_POSITION_MSG')$firstRecord$lastRecord$this->_totalRecords);
  156.                     //'You are viewing records ' . $firstRecord     . ' to ' . $lastRecord . ' of ' . $totalRecords);
  157.             else {
  158.                 $values[self::TMPL_VAR_RECORDSET_POSITIONmiI18N::getSystemMessage('MI_RECORDSETPAGER_POSITION_NO_RECORDS_MSG');
  159.             }
  160.             return $values;
  161.         }
  162.         
  163.         
  164.         /**
  165.          * Gets navigator links params
  166.          * 
  167.          * @access protected
  168.          */
  169.         protected function getNavigatorParams()
  170.         {
  171.             $navigatorParams $this->_table->getTableFeaturesStateParams();
  172.             unset($navigatorParams[self::PARAM_PAGE]);
  173.             return $this->_table->paramsArrayToUrl($navigatorParams);
  174.         }
  175.     }
  176.     
  177.     
  178.     /**
  179.      * Default Recordset Pager Class
  180.      * Manage the movement between pages when data is shown in table fomat
  181.      *
  182.      * @copyright Copyright (c) 2003-2006 Mirchev Ideas Ltd. All rights reserved.
  183.      * @package MIPHPF
  184.      */
  185.     class miDefaultTablePager extends miTablePager {
  186.     
  187.         
  188.         /**
  189.          * Return Default Navigator
  190.          * 
  191.          * @access public
  192.          * @return array 
  193.          */
  194.         function getValues()
  195.         {
  196.             $page $this->_page;
  197.  
  198.             $recordsPerPage $this->_recordsPerPage;
  199.             if ($recordsPerPage 1)
  200.                 throw new miException(miI18N::getSystemMessage('MI_RECORDS_PER_PAGE_MUST_BE_AT_LEAST_ONE'));
  201.             
  202.             $strNavParams $this->getNavigatorParams();
  203.             
  204.             if ($this->_totalRecords <= $recordsPerPage)
  205.                 $navigator '<< | < | <b>1</b> | > | >>';
  206.             else {
  207.                 $navigator '';
  208.                 $firstpage 1;
  209.                 $lastpage (intval(($this->_totalRecords-1$recordsPerPage)) 1;
  210.                 $first $firstpage;
  211.                 $last $lastpage;
  212.                 if ($last ($page 5)) $last $page 5
  213.                 if ($first ($page 5)) $first $page 5
  214.                 $prevpage ($page 1$page 1;
  215.                 $nextpage ($page $lastpage$page $lastpage;
  216.                 
  217.                 $navigator .= '<a href="?' self::PARAM_PAGE '=1&' $strNavParams '">&lt;&lt;</a> | ';
  218.                 $navigator .= '<a href="?' self::PARAM_PAGE'=' $prevpage '&' $strNavParams '">&lt;</a> | ';
  219.                 for ($i $first$i <= $last$i++{
  220.                     if ($i == $page)
  221.                         $navigator .= '<b>' $page '</b> | ';
  222.                     else
  223.                         $navigator .= '<a href="?' self::PARAM_PAGE '=' $i '&' $strNavParams '">' $i '</a> | ';
  224.                 }
  225.                 $navigator .= '<a href="?' self::PARAM_PAGE '=' $nextpage '&' $strNavParams '">&gt;</a> | ';
  226.                 $navigator .= '<a href="?' self::PARAM_PAGE '=' $lastpage '&' $strNavParams '">&gt;&gt;</a>';
  227.             }
  228.             return array_merge(array(self::TMPL_VAR_RECORDSET_NAVIGATOR => $navigator)$this->assignPosition());
  229.         }
  230.     }
  231.     
  232.     
  233.     /**
  234.      * Default Recordset Pager Class
  235.      * Manage the movement between pages when data is shown in table fomat
  236.      *
  237.      * @copyright Copyright (c) 2003-2006 Mirchev Ideas Ltd. All rights reserved.
  238.      * @package MIPHPF
  239.      */
  240.     class miSimpleTablePager extends miTablePager {
  241.         
  242.         /**
  243.          * Return Simple Navigator
  244.          * 
  245.          * @access public
  246.          * @return array 
  247.          */
  248.         function getValues()
  249.         {
  250.             $page $this->_page;
  251.             $recordsPerPage $this->_recordsPerPage;
  252.             $strNavParams $this->getNavigatorParams();
  253.             
  254.             if ($this->_totalRecords <= $recordsPerPage)
  255.                 $navigator miI18N::getSystemMessage('MI_RECORDSETPAGER_NAVIGATIONS_MSG');
  256.             else {
  257.                 $lastpage (intval(($this->_totalRecords-1$recordsPerPage)) 1;
  258.                 $prevpage ($page 1$page 1;
  259.                 $nextpage ($page $lastpage$page $lastpage;
  260.                 $navigator =
  261.                     '<a href="?' self::PARAM_PAGE '=1&' $strNavParams '">First</a> | ' .
  262.                     '<a href="?' self::PARAM_PAGE '=' $prevpage '&' $strNavParams '">Previous</a> | ' .
  263.                     '<a href="?' self::PARAM_PAGE '=' $nextpage '&' $strNavParams '">Next</a> | ' .
  264.                     '<a href="?' self::PARAM_PAGE '=' $lastpage '&' $strNavParams '">Last</a>';
  265.             }
  266.             return array_merge(array(self::TMPL_VAR_RECORDSET_NAVIGATOR => $navigator)$this->assignPosition());
  267.         }
  268.     }
  269. ?>

Documentation generated on Thu, 08 May 2008 16:57:46 +0300 by phpDocumentor 1.4.1