[ Index ]

PHP Cross Reference of vtigercrm-6.1.0

title

Body

[close]

/modules/Vtiger/models/ -> Paging.php (source)

   1  <?php
   2  /*+***********************************************************************************
   3   * The contents of this file are subject to the vtiger CRM Public License Version 1.0
   4   * ("License"); You may not use this file except in compliance with the License
   5   * The Original Code is:  vtiger CRM Open Source
   6   * The Initial Developer of the Original Code is vtiger.
   7   * Portions created by vtiger are Copyright (C) vtiger.
   8   * All Rights Reserved.
   9   *************************************************************************************/
  10  
  11  /**
  12   * Vtiger Paging Model Class
  13   */
  14  class Vtiger_Paging_Model extends Vtiger_Base_Model {
  15  
  16      const DEFAULT_PAGE = 1;
  17      const PAGE_LIMIT = 20;
  18  
  19      /**
  20       * Function to get the current page number
  21       * @return <Number>
  22       */
  23  	function getCurrentPage() {
  24          $currentPage = $this->get('page');
  25          if(empty($currentPage)) {
  26              $currentPage = self::DEFAULT_PAGE;
  27          }
  28          return $currentPage;
  29      }
  30  
  31      /**
  32       * Function to get the Next page number
  33       * @return <Number>
  34       */
  35  	function getNextPage() {
  36          $currentPage = $this->get('page');
  37          if(empty($currentPage)) {
  38              $currentPage = self::DEFAULT_PAGE;
  39          }
  40          return $currentPage+1;
  41      }
  42  
  43      /**
  44       * Function to get the limit on the number of records per page
  45       * @return <Number>
  46       */
  47  	function getPageLimit() {
  48          $pageLimit = $this->get('limit');
  49          if(empty($pageLimit)) {
  50              $pageLimit = vglobal('list_max_entries_per_page');
  51              if(empty($pageLimit)) {
  52                  $pageLimit = self::PAGE_LIMIT;
  53              }
  54          }
  55          return $pageLimit;
  56      }
  57  
  58  	function getStartIndex() {
  59          $currentPage = $this->getCurrentPage();
  60          $pageLimit = $this->getPageLimit();
  61          return ($currentPage-1)*$pageLimit;
  62      }
  63  
  64      /**
  65       * Retrieves start sequence number of records in the page
  66       * @return <Integer>
  67       */
  68  	function getRecordStartRange() {
  69          $rangeInfo = $this->getRecordRange();
  70          return $rangeInfo['start'];
  71      }
  72  
  73      /**
  74       * Retrieves end sequence number of records in the page
  75       * @return <Integer>
  76       */
  77  	function getRecordEndRange() {
  78          $rangeInfo = $this->getRecordRange();
  79          return $rangeInfo['end'];
  80      }
  81  
  82      /**
  83       * Retrieves start and end sequence number of records in the page
  84       * @return <array> - array of values
  85       *                        - start key which gives start sequence number
  86       *                        - end key which gives end sequence number
  87       */
  88  	function getRecordRange() {
  89          return $this->get('range');
  90      }
  91  
  92      /**
  93       * Function to specify if previous page exists
  94       * @return <Boolean> - true/false
  95       */
  96  	public function isPrevPageExists() {
  97          $prevPageExists = $this->get('prevPageExists');
  98          if(isset($prevPageExists)) {
  99              return $prevPageExists;
 100          }
 101          return true;
 102      }
 103  
 104      /**
 105       * Function to specify if next page exists
 106       * @return <Boolean> - true/false
 107       */
 108  	public function isNextPageExists() {
 109          $nextPageExists = $this->get('nextPageExists');
 110          if(isset($nextPageExists)) {
 111              return $nextPageExists;
 112          }
 113          return true;
 114      }
 115  
 116      /**
 117       * calculates page range
 118       * @param <type> $recordList - list of records which is show in current page
 119       * @return Vtiger_Paging_Model  -
 120       */
 121  	function calculatePageRange($recordList) {
 122          $rangeInfo = array();
 123          $recordCount = count($recordList);
 124          $pageLimit = $this->getPageLimit();
 125          if( $recordCount > 0) {
 126              //specifies what sequencce number of last record in prev page
 127              $prevPageLastRecordSequence = (($this->getCurrentPage()-1)*$pageLimit);
 128  
 129              $rangeInfo['start'] = $prevPageLastRecordSequence+1;
 130              if($rangeInfo['start'] == 1){
 131                  $this->set('prevPageExists', false);
 132              }
 133              //Have less number of records than the page limit
 134              if($recordCount < $pageLimit) {
 135                  $this->set('nextPageExists', false);
 136                  $rangeInfo['end'] = $prevPageLastRecordSequence+$recordCount;
 137              }else {
 138                  $rangeInfo['end'] = $prevPageLastRecordSequence+$pageLimit;
 139              }
 140              $this->set('range',$rangeInfo);
 141          } else {
 142              //Disable previous page only if page is first page and no records exists
 143              if($this->getCurrentPage() == 1) {
 144                  $this->set('prevPageExists', false);
 145              }
 146              $this->set('nextPageExists', false);
 147              
 148          }
 149          return $this;
 150      }
 151  
 152  }


Generated: Fri Nov 28 20:08:37 2014 Cross-referenced by PHPXref 0.7.1