This repository has been archived on 2024-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
lnldap/classes/Kohana/Database/LDAP/Search/Result.php

91 lines
1.9 KiB
PHP
Raw Normal View History

2013-08-16 02:21:17 +00:00
<?php defined('SYSPATH') OR die('No direct script access.');
/**
* Return the query search result.
*
* @package Kohana/LDAP
* @category Query
* @author Deon George
* @copyright (c) 2013 phpLDAPadmin Development Team
* @license http://dev.phpldapadmin.org/license.html
*/
abstract class Kohana_Database_LDAP_Search_Result implements ArrayAccess,Iterator,Countable {
private $_count = 0;
protected $result = array();
private $_rewound = FALSE;
private $_current_key = NULL;
/** Countable **/
public function count() {
$c = 0;
foreach ($this->result as $k=>$v)
$c += count($v);
return $c;
}
/** ArrayAccess **/
public function offsetExists($offset) {
return isset($this->result[$offset]);
}
public function offsetGet($offset) {
return $this->result[$offset];
}
public function offsetSet($offset,$value) {
if (isset($this->result[$offset]))
$this->_count -= $this->result[$offset]->count();
$this->result[$offset] = $value;
$this->_count += $value->count();
}
public function offsetUnset($offset) {
unset($this->result[$offset]);
}
/** Iterator **/
public function current() {
if (! $this->_rewound)
$this->rewind();
return current($this->result)->current();
}
public function key() {
return current($this->result)->key();
}
public function next() {
if (current($this->result)->valid() AND current($this->result)->next()->valid())
return current($this->result);
next($this->result);
while (current($this->result) AND ! current($this->result)->valid())
if (next($this->result) === FALSE)
break;
return current($this->result);
}
public function rewind() {
reset($this->result);
if (! current($this->result)->valid())
$this->next(FALSE);
$this->_rewound = TRUE;
}
public function valid() {
return is_object(current($this->result)) ? current($this->result)->valid() : FALSE;
}
} // End Database_LDAP_Search_Result
?>