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
136
137
138
<?php
/**
* Zend Framework (http://framework.zend.com/)
*
* @link http://github.com/zendframework/zf2 for the canonical source repository
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
namespace Zend\View\Helper;
use Zend\Paginator;
use Zend\View;
use Zend\View\Exception;
class PaginationControl extends AbstractHelper
{
/**
* Default Scrolling Style
*
* @var string
*/
protected static $defaultScrollingStyle = 'sliding';
/**
* Default view partial
*
* @var string|array
*/
protected static $defaultViewPartial = null;
/**
* Render the provided pages. This checks if $view->paginator is set and,
* if so, uses that. Also, if no scrolling style or partial are specified,
* the defaults will be used (if set).
*
* @param Paginator\Paginator $paginator (Optional)
* @param string $scrollingStyle (Optional) Scrolling style
* @param string $partial (Optional) View partial
* @param array|string $params (Optional) params to pass to the partial
* @throws Exception\RuntimeException if no paginator or no view partial provided
* @throws Exception\InvalidArgumentException if partial is invalid array
* @return string
*/
public function __invoke(
Paginator\Paginator $paginator = null,
$scrollingStyle = null,
$partial = null,
$params = null
) {
if ($paginator === null) {
if (isset($this->view->paginator)
&& $this->view->paginator !== null
&& $this->view->paginator instanceof Paginator\Paginator
) {
$paginator = $this->view->paginator;
} else {
throw new Exception\RuntimeException('No paginator instance provided or incorrect type');
}
}
if ($partial === null) {
if (static::$defaultViewPartial === null) {
throw new Exception\RuntimeException('No view partial provided and no default set');
}
$partial = static::$defaultViewPartial;
}
if ($scrollingStyle === null) {
$scrollingStyle = static::$defaultScrollingStyle;
}
$pages = get_object_vars($paginator->getPages($scrollingStyle));
if ($params !== null) {
$pages = array_merge($pages, (array) $params);
}
if (is_array($partial)) {
if (count($partial) != 2) {
throw new Exception\InvalidArgumentException(
'A view partial supplied as an array must contain two values: the filename and its module'
);
}
if ($partial[1] !== null) {
$partialHelper = $this->view->plugin('partial');
return $partialHelper($partial[0], $pages);
}
$partial = $partial[0];
}
$partialHelper = $this->view->plugin('partial');
return $partialHelper($partial, $pages);
}
/**
* Sets the default Scrolling Style
*
* @param string $style string 'all' | 'elastic' | 'sliding' | 'jumping'
*/
public static function setDefaultScrollingStyle($style)
{
static::$defaultScrollingStyle = $style;
}
/**
* Gets the default scrolling style
*
* @return string
*/
public static function getDefaultScrollingStyle()
{
return static::$defaultScrollingStyle;
}
/**
* Sets the default view partial.
*
* @param string|array $partial View partial
*/
public static function setDefaultViewPartial($partial)
{
static::$defaultViewPartial = $partial;
}
/**
* Gets the default view partial
*
* @return string|array
*/
public static function getDefaultViewPartial()
{
return static::$defaultViewPartial;
}
}