blob: 82502ce5fdb866ac62d8d444e324825b7d9371be (
plain)
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
|
<?php
/*
+-----------------------------------------------------------------------+
| This file is part of the Roundcube Webmail client |
| Copyright (C) 2006-2013, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
| See the README file for a full license statement. |
| |
| PURPOSE: |
| Class representing an address directory result set |
+-----------------------------------------------------------------------+
| Author: Thomas Bruederli <roundcube@gmail.com> |
+-----------------------------------------------------------------------+
*/
/**
* Roundcube result set class
*
* Representing an address directory result set.
* Implenets Iterator and thus be used in foreach() loops.
*
* @package Framework
* @subpackage Addressbook
*/
class rcube_result_set implements Iterator, ArrayAccess
{
public $count = 0;
public $first = 0;
public $searchonly = false;
public $records = array();
private $current = 0;
function __construct($c=0, $f=0)
{
$this->count = (int)$c;
$this->first = (int)$f;
}
function add($rec)
{
$this->records[] = $rec;
}
function iterate()
{
return $this->records[$this->current++];
}
function first()
{
$this->current = 0;
return $this->records[$this->current];
}
function seek($i)
{
$this->current = $i;
}
/*** Implement PHP ArrayAccess interface ***/
public function offsetSet($offset, $value)
{
if (is_null($offset)) {
$offset = count($this->records);
$this->records[] = $value;
}
else {
$this->records[$offset] = $value;
}
}
public function offsetExists($offset)
{
return isset($this->records[$offset]);
}
public function offsetUnset($offset)
{
unset($this->records[$offset]);
}
public function offsetGet($offset)
{
return $this->records[$offset];
}
/*** PHP 5 Iterator interface ***/
function rewind()
{
$this->current = 0;
}
function current()
{
return $this->records[$this->current];
}
function key()
{
return $this->current;
}
function next()
{
return $this->iterate();
}
function valid()
{
return isset($this->records[$this->current]);
}
}
|