0
|
1 <?php
|
|
2
|
|
3 /**
|
|
4 +-----------------------------------------------------------------------+
|
|
5 | This file is part of the Roundcube Webmail client |
|
|
6 | Copyright (C) 2006-2013, The Roundcube Dev Team |
|
|
7 | |
|
|
8 | Licensed under the GNU General Public License version 3 or |
|
|
9 | any later version with exceptions for skins & plugins. |
|
|
10 | See the README file for a full license statement. |
|
|
11 | |
|
|
12 | PURPOSE: |
|
|
13 | Class representing an address directory result set |
|
|
14 +-----------------------------------------------------------------------+
|
|
15 | Author: Thomas Bruederli <roundcube@gmail.com> |
|
|
16 +-----------------------------------------------------------------------+
|
|
17 */
|
|
18
|
|
19 /**
|
|
20 * Roundcube result set class
|
|
21 *
|
|
22 * Representing an address directory result set.
|
|
23 * Implenets Iterator and thus be used in foreach() loops.
|
|
24 *
|
|
25 * @package Framework
|
|
26 * @subpackage Addressbook
|
|
27 */
|
|
28 class rcube_result_set implements Iterator, ArrayAccess
|
|
29 {
|
|
30 public $count = 0;
|
|
31 public $first = 0;
|
|
32 public $searchonly = false;
|
|
33 public $records = array();
|
|
34
|
|
35 private $current = 0;
|
|
36
|
|
37 function __construct($c=0, $f=0)
|
|
38 {
|
|
39 $this->count = (int)$c;
|
|
40 $this->first = (int)$f;
|
|
41 }
|
|
42
|
|
43 function add($rec)
|
|
44 {
|
|
45 $this->records[] = $rec;
|
|
46 }
|
|
47
|
|
48 function iterate()
|
|
49 {
|
|
50 return $this->records[$this->current++];
|
|
51 }
|
|
52
|
|
53 function first()
|
|
54 {
|
|
55 $this->current = 0;
|
|
56 return $this->records[$this->current];
|
|
57 }
|
|
58
|
|
59 function seek($i)
|
|
60 {
|
|
61 $this->current = $i;
|
|
62 }
|
|
63
|
|
64 /*** Implement PHP ArrayAccess interface ***/
|
|
65
|
|
66 public function offsetSet($offset, $value)
|
|
67 {
|
|
68 if (is_null($offset)) {
|
|
69 $offset = count($this->records);
|
|
70 $this->records[] = $value;
|
|
71 }
|
|
72 else {
|
|
73 $this->records[$offset] = $value;
|
|
74 }
|
|
75 }
|
|
76
|
|
77 public function offsetExists($offset)
|
|
78 {
|
|
79 return isset($this->records[$offset]);
|
|
80 }
|
|
81
|
|
82 public function offsetUnset($offset)
|
|
83 {
|
|
84 unset($this->records[$offset]);
|
|
85 }
|
|
86
|
|
87 public function offsetGet($offset)
|
|
88 {
|
|
89 return $this->records[$offset];
|
|
90 }
|
|
91
|
|
92 /*** PHP 5 Iterator interface ***/
|
|
93
|
|
94 function rewind()
|
|
95 {
|
|
96 $this->current = 0;
|
|
97 }
|
|
98
|
|
99 function current()
|
|
100 {
|
|
101 return $this->records[$this->current];
|
|
102 }
|
|
103
|
|
104 function key()
|
|
105 {
|
|
106 return $this->current;
|
|
107 }
|
|
108
|
|
109 function next()
|
|
110 {
|
|
111 return $this->iterate();
|
|
112 }
|
|
113
|
|
114 function valid()
|
|
115 {
|
|
116 return isset($this->records[$this->current]);
|
|
117 }
|
|
118 }
|