<?php defined('SYSPATH') or die('No direct access allowed.');

/**
 * TSM database show result.   See [Results](/database/results) for usage and examples.
 *
 * @package    TSM Database Module
 * @category   Database
 * @author     Deon George
 * @copyright  (c) 2010-2014 Deon George
 * @license    http://dev.leenooks.net/license.html
 */
abstract class lnApp_Database_Result extends Kohana_Database_Result {
	protected $_internal_row = 0;
	protected $_rows;

	// Required Abstract Classes
	public function __destruct() {}

	public function seek($offset) {
		if ($this->offsetExists($offset)) {
			// Set the current row to the offset
			$this->_current_row = $this->_internal_row = $offset;

			return TRUE;

		} else {
			return FALSE;
		}
	}

	public function current() {
		if ($this->_current_row !== $this->_internal_row AND ! $this->seek($this->_current_row))
			return FALSE;

		// Return an stdClass
		if ($this->_as_object === TRUE) {
			return $this;

		} elseif (is_string($this->_as_object)) {
			// Return an object of given class name
			$o = new $this->_as_object;

			return $o->load_object($this->_rows[$this->_current_row]);

		// Return an array of the row
		} else {
			return $this->_rows[$this->_current_row];
		}
	}

	/**
	 * Get a row value from the query
	 *
	 * TSM returns all columns in upper case
	 */
	public function get($name, $default = NULL) {
		$name = strtoupper($name);

		return parent::get($name,$default);
	}
}
?>