Open Journal Systems  3.3.0
VirtualArrayIterator.inc.php
1 <?php
2 
18 import('lib.pkp.classes.core.ItemIterator');
19 
22  var $theArray;
23 
26 
28  var $page;
29 
31  var $count;
32 
34  var $wasEmpty;
35 
43  function __construct(&$theArray, $totalItems, $page=-1, $itemsPerPage=-1) {
44  parent::__construct();
45  if ($page>=1 && $itemsPerPage>=1) {
46  $this->page = $page;
47  } else {
48  $this->page = 1;
49  $this->itemsPerPage = max(count($this->theArray),1);
50  }
51  $this->theArray =& $theArray;
52  $this->count = $totalItems;
53  $this->itemsPerPage = $itemsPerPage;
54  $this->wasEmpty = count($this->theArray)==0;
55  reset($this->theArray);
56  }
57 
66  static function factory($wholeArray, $rangeInfo) {
67  if ($rangeInfo->isValid()) $slicedArray = array_slice($wholeArray, $rangeInfo->getCount() * ($rangeInfo->getPage()-1), $rangeInfo->getCount(), true);
68  return new VirtualArrayIterator($slicedArray, count($wholeArray), $rangeInfo->getPage(), $rangeInfo->getCount());
69  }
70 
75  function &next() {
76  if (!is_array($this->theArray)) {
77  $nullVar = null;
78  return $nullVar;
79  }
80  $value = current($this->theArray);
81  if (next($this->theArray)==null) {
82  $this->theArray = null;
83  }
84  return $value;
85  }
86 
91  function nextWithKey() {
92  $key = key($this->theArray);
93  $value = $this->next();
94  return array($key, $value);
95  }
96 
101  function atFirstPage() {
102  return $this->page==1;
103  }
104 
109  function atLastPage() {
110  return ($this->page * $this->itemsPerPage) + 1 > $this->count;
111  }
112 
117  function getPage() {
118  return $this->page;
119  }
120 
125  function getCount() {
126  return $this->count;
127  }
128 
133  function getPageCount() {
134  return max(1, ceil($this->count / $this->itemsPerPage));
135  }
136 
143  function eof() {
144  return (($this->theArray == null) || (count($this->theArray)==0));
145  }
146 
151  function wasEmpty() {
152  return $this->wasEmpty;
153  }
154 
159  function &toArray() {
160  return $this->theArray;
161  }
162 
174  function array_slice_key($array, $offset, $len=-1) {
175  if (!is_array($array)) return false;
176 
177  $return = array();
178  $length = $len >= 0? $len: count($array);
179  $keys = array_slice(array_keys($array), $offset, $length);
180  foreach($keys as $key) {
181  $return[$key] = $array[$key];
182  }
183 
184  return $return;
185  }
186 }
187 
188 
VirtualArrayIterator\$wasEmpty
$wasEmpty
Definition: VirtualArrayIterator.inc.php:49
VirtualArrayIterator\next
& next()
Definition: VirtualArrayIterator.inc.php:90
VirtualArrayIterator\$count
$count
Definition: VirtualArrayIterator.inc.php:43
Seboettg\Collection\current
current()
Definition: ArrayListTrait.php:53
VirtualArrayIterator\__construct
__construct(&$theArray, $totalItems, $page=-1, $itemsPerPage=-1)
Definition: VirtualArrayIterator.inc.php:58
VirtualArrayIterator\atFirstPage
atFirstPage()
Definition: VirtualArrayIterator.inc.php:116
VirtualArrayIterator\getPage
getPage()
Definition: VirtualArrayIterator.inc.php:132
VirtualArrayIterator\getCount
getCount()
Definition: VirtualArrayIterator.inc.php:140
VirtualArrayIterator
Provides paging and iteration for "virtual" arrays – arrays for which only the current "page" is avai...
Definition: VirtualArrayIterator.inc.php:20
VirtualArrayIterator\array_slice_key
array_slice_key($array, $offset, $len=-1)
Definition: VirtualArrayIterator.inc.php:189
VirtualArrayIterator\toArray
& toArray()
Definition: VirtualArrayIterator.inc.php:174
VirtualArrayIterator\$page
$page
Definition: VirtualArrayIterator.inc.php:37
VirtualArrayIterator\getPageCount
getPageCount()
Definition: VirtualArrayIterator.inc.php:148
Seboettg\Collection\count
count()
Definition: ArrayListTrait.php:253
VirtualArrayIterator\nextWithKey
nextWithKey()
Definition: VirtualArrayIterator.inc.php:106
ItemIterator\__construct
__construct()
Definition: ItemIterator.inc.php:22
VirtualArrayIterator\$theArray
$theArray
Definition: VirtualArrayIterator.inc.php:25
VirtualArrayIterator\$itemsPerPage
$itemsPerPage
Definition: VirtualArrayIterator.inc.php:31
VirtualArrayIterator\atLastPage
atLastPage()
Definition: VirtualArrayIterator.inc.php:124
VirtualArrayIterator\factory
static factory($wholeArray, $rangeInfo)
Definition: VirtualArrayIterator.inc.php:81
VirtualArrayIterator\eof
eof()
Definition: VirtualArrayIterator.inc.php:158
VirtualArrayIterator\wasEmpty
wasEmpty()
Definition: VirtualArrayIterator.inc.php:166
ItemIterator
Generic iterator class; needs to be overloaded by subclasses providing specific implementations.
Definition: ItemIterator.inc.php:18