<?php defined('SYSPATH') OR die('No direct script access.');
/**
 * Object used for caching the results of select queries.  See [Results](/database/results#select-cached) for usage and examples.
 *
 * @package    Kohana/LDAP
 * @category   Query/Result
 * @author     Deon George
 * @copyright  (c) 2013 phpLDAPadmin Development Team
 * @license    http://dev.phpldapadmin.org/license.html
 */
class Kohana_Database_LDAP_Result_Cached extends Database_Result_Cached {

	public function __construct(array $result, $sql, $as_object = NULL)
	{
		parent::__construct($result, $sql, $as_object);

		// Find the number of rows in the result
		$this->_total_rows = count($result);
		$this->_current_row = key($result);
	}

	public function __destruct() {
		// Cached results do not use resources
	}

	public function cached() {
		return $this;
	}

	public function current() {
		// Return an array of the row
		return $this->valid() ? $this->_result[$this->_current_row] : NULL;
	}

	public function key() {
		return $this->_current_row;
	}

	public function next() {
		next($this->_result);
		$this->_current_row = key($this->_result);

		return $this;
	}

	public function offsetExists($offset) {
		return isset($this->_result[$offset]);
	}

	public function rewind() {
		// We dont index by numbers, so we can just return
		reset($this->_result);
		$this->_current_row = key($this->_result);

		return $this;
	}

	public function seek($offset) {
		if (isset($this->_result[$offset])) {
			$this->_current_row = $offset;

			return TRUE;

		} else {
			return FALSE;
		}
	}

} // End Database_LDAP_Result_Cached