CBasePager.php
3.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<?php
/**
* CBasePager class file.
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.yiiframework.com/
* @copyright Copyright © 2008-2011 Yii Software LLC
* @license http://www.yiiframework.com/license/
*/
/**
* CBasePager is the base class for all pagers.
*
* It provides the calculation of page count and maintains the current page.
*
* @property CPagination $pages The pagination information.
* @property integer $pageSize Number of items in each page.
* @property integer $itemCount Total number of items.
* @property integer $pageCount Number of pages.
* @property integer $currentPage The zero-based index of the current page. Defaults to 0.
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @version $Id$
* @package system.web.widgets.pagers
* @since 1.0
*/
abstract class CBasePager extends CWidget
{
private $_pages;
/**
* Returns the pagination information used by this pager.
* @return CPagination the pagination information
*/
public function getPages()
{
if($this->_pages===null)
$this->_pages=$this->createPages();
return $this->_pages;
}
/**
* Sets the pagination information used by this pager.
* @param CPagination $pages the pagination information
*/
public function setPages($pages)
{
$this->_pages=$pages;
}
/**
* Creates the default pagination.
* This is called by {@link getPages} when the pagination is not set before.
* @return CPagination the default pagination instance.
*/
protected function createPages()
{
return new CPagination;
}
/**
* @return integer number of items in each page.
* @see CPagination::getPageSize
*/
public function getPageSize()
{
return $this->getPages()->getPageSize();
}
/**
* @param integer $value number of items in each page
* @see CPagination::setPageSize
*/
public function setPageSize($value)
{
$this->getPages()->setPageSize($value);
}
/**
* @return integer total number of items.
* @see CPagination::getItemCount
*/
public function getItemCount()
{
return $this->getPages()->getItemCount();
}
/**
* @param integer $value total number of items.
* @see CPagination::setItemCount
*/
public function setItemCount($value)
{
$this->getPages()->setItemCount($value);
}
/**
* @return integer number of pages
* @see CPagination::getPageCount
*/
public function getPageCount()
{
return $this->getPages()->getPageCount();
}
/**
* @param boolean $recalculate whether to recalculate the current page based on the page size and item count.
* @return integer the zero-based index of the current page. Defaults to 0.
* @see CPagination::getCurrentPage
*/
public function getCurrentPage($recalculate=true)
{
return $this->getPages()->getCurrentPage($recalculate);
}
/**
* @param integer $value the zero-based index of the current page.
* @see CPagination::setCurrentPage
*/
public function setCurrentPage($value)
{
$this->getPages()->setCurrentPage($value);
}
/**
* Creates the URL suitable for pagination.
* @param integer $page the page that the URL should point to.
* @return string the created URL
* @see CPagination::createPageUrl
*/
protected function createPageUrl($page)
{
return $this->getPages()->createPageUrl($this->getController(),$page);
}
}