cursorPos = 0; } public function seek($rownum) { if ($rownum < 0) { return false; } // PostgreSQL rows start w/ 0, but this works, because we are // looking to move the position _before_ the next desired position $this->cursorPos = $rownum; return true; } function valid() { return true; } public function first() { if($this->cursorPos !== 0) { $this->seek(0); } return $this->next(); } function next() { if ($this->getRecordCount() > $this->cursorPos) { if (!isset($this->cache[$this->cursorPos])) { $this->cache[$this->cursorPos] = $this->fetch(PDO::FETCH_ASSOC); } $this->fields = $this->cache[$this->cursorPos]; $this->cursorPos++; return true; } else { $this->fields = null; return false; } } function key() { return $this->cursorPos; } function current() { return $this->cache[$this->cursorPos]; } function getRow() { return $this->fields; } function getInt($name) { return (int)$this->fields[$name]; } function getBlob($name) { return $this->fields[$name]; } function getString($name) { return isset($this->fields[$name]) ? $this->fields[$name]: null; } function getBoolean($name) { return (bool)$this->fields[$name]; } function get($name) { return $this->fields[$name]; } function getArray($name) { return Tools_String::strToArray($this->fields[$name]); } function getRecordCount() { return count($this->cache); } function execute($args = null) { $result = parent::execute($args); return $result; } }