_total_rows = db2_num_rows($result); } public function __destruct() { if (is_resource($this->_result)) { db2_free_result($this->_result); } } public function seek($offset) { if ($this->offsetExists($offset) AND db2_next_result($this->_result)) { // Set the current row to the offset $this->_current_row = $this->_internal_row = $offset; return TRUE; } else { return isset($this->_internal_data[$offset+1]); } } public function current() { if ($this->_current_row !== $this->_internal_row AND ! $this->seek($this->_current_row)) return NULL; // Increment internal row for optimization assuming rows are fetched in order $this->_internal_row++; if ($this->_as_object === TRUE) { throw new Kohana_Exception('This configuration is not tested for caching'); // Return an stdClass return db2_fetch_object($this->_result); } elseif (is_string($this->_as_object)) { throw new Kohana_Exception('This configuration is not tested for caching'); $o = new $this->_as_object; // Return an object of given class name // @todo This doesnt have $this->_loaded = $this->_valid = TRUE; return $o->values(db2_fetch_assoc($this->_result)); } else { // Return an array of the row return isset($this->_internal_data[$this->_internal_row]) ? $this->_internal_data[$this->_internal_row] : ($this->_internal_data[$this->_internal_row] = db2_fetch_assoc($this->_result)); } } public function rewind() { $this->_internal_row = 0; return parent::rewind(); } } // End Database_DB2_Result