From 143ceff0d83c53000dd29c2047d204c08dba9de7 Mon Sep 17 00:00:00 2001
From: Thomas Bruederli <thomas@roundcube.net>
Date: Thu, 06 Mar 2014 07:17:31 -0500
Subject: [PATCH] Implement ArrayAccess interface for conveniently accessing rcube_result_set as array

---
 program/lib/Roundcube/rcube_result_set.php |   30 +++++++++++++++++++++++++++++-
 1 files changed, 29 insertions(+), 1 deletions(-)

diff --git a/program/lib/Roundcube/rcube_result_set.php b/program/lib/Roundcube/rcube_result_set.php
index a4b070e..82502ce 100644
--- a/program/lib/Roundcube/rcube_result_set.php
+++ b/program/lib/Roundcube/rcube_result_set.php
@@ -25,7 +25,7 @@
  * @package    Framework
  * @subpackage Addressbook
  */
-class rcube_result_set implements Iterator
+class rcube_result_set implements Iterator, ArrayAccess
 {
     public $count = 0;
     public $first = 0;
@@ -61,6 +61,34 @@
         $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()

--
Gitblit v1.9.1