*
* @package moodlecore
* @subpackage DML
- * @copyright 2008 Andrei Bautu
+ * @copyright 2008 Petr Skoda (http://skodak.org)
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class pdo_moodle_recordset extends moodle_recordset {
private $sth;
- protected $fields;
- protected $rowCount = -1;
+ protected $current;
public function __construct($sth) {
$this->sth = $sth;
$this->sth->setFetchMode(PDO::FETCH_ASSOC);
+ $this->current = $this->fetch_next();
+ }
+
+ public function __destruct() {
+ $this->close();
+ }
+
+ private function fetch_next() {
+ if ($row = $this->sth->fetch()) {
+ $row = array_change_key_case($row, CASE_LOWER);
+ }
+ return $row;
}
public function current() {
- return (object)$this->fields;
+ return (object)$this->current;
}
public function key() {
/// return first column value as key
- return reset($this->fields);
+ if (!$this->current) {
+ return false;
+ }
+ $key = reset($this->current);
+ return $key;
}
public function next() {
- $this->fields = $this->sth->fetch();
- if ($this->fields) {
- ++$this->rowCount;
- }
- return $this->fields !== false;
+ $this->current = $this->fetch_next();
}
public function valid() {
- if($this->rowCount < 0) {
- $this->rewind();
- }
- return $this->fields !== FALSE;
+ return !empty($this->current);
}
public function close() {
- $this->sth->closeCursor();
- $this->sth = null;
+ if ($this->sth) {
+ $this->sth->closeCursor();
+ $this->sth = null;
+ }
+ $this->current = null;
}
}