91 lines
1.9 KiB
PHP
91 lines
1.9 KiB
PHP
|
<?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
|
||
|
?>
|