diff options
author | svncommit <devs@roundcube.net> | 2005-10-26 07:18:10 +0000 |
---|---|---|
committer | svncommit <devs@roundcube.net> | 2005-10-26 07:18:10 +0000 |
commit | d13c36941c585e84c8986e1eb47a296646cc7a21 (patch) | |
tree | 9bc03947d7964cf859e3779d4076575f41b36bc5 /program/lib/MDB2/Iterator.php | |
parent | d7cb77414c4cf074269b6812c3dd3571ee29afca (diff) |
missing mdb2 files
Diffstat (limited to 'program/lib/MDB2/Iterator.php')
-rwxr-xr-x | program/lib/MDB2/Iterator.php | 285 |
1 files changed, 285 insertions, 0 deletions
diff --git a/program/lib/MDB2/Iterator.php b/program/lib/MDB2/Iterator.php new file mode 100755 index 000000000..13db77a97 --- /dev/null +++ b/program/lib/MDB2/Iterator.php @@ -0,0 +1,285 @@ +<?php +// +----------------------------------------------------------------------+ +// | PHP version 5 | +// +----------------------------------------------------------------------+ +// | Copyright (c) 1998-2004 Manuel Lemos, Tomas V.V.Cox, | +// | Stig. S. Bakken, Lukas Smith | +// | All rights reserved. | +// +----------------------------------------------------------------------+ +// | MDB2 is a merge of PEAR DB and Metabases that provides a unified DB | +// | API as well as database abstraction for PHP applications. | +// | This LICENSE is in the BSD license style. | +// | | +// | Redistribution and use in source and binary forms, with or without | +// | modification, are permitted provided that the following conditions | +// | are met: | +// | | +// | Redistributions of source code must retain the above copyright | +// | notice, this list of conditions and the following disclaimer. | +// | | +// | Redistributions in binary form must reproduce the above copyright | +// | notice, this list of conditions and the following disclaimer in the | +// | documentation and/or other materials provided with the distribution. | +// | | +// | Neither the name of Manuel Lemos, Tomas V.V.Cox, Stig. S. Bakken, | +// | Lukas Smith nor the names of his contributors may be used to endorse | +// | or promote products derived from this software without specific prior| +// | written permission. | +// | | +// | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | +// | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | +// | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS | +// | FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE | +// | REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, | +// | INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, | +// | BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS| +// | OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED | +// | AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | +// | LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY| +// | WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | +// | POSSIBILITY OF SUCH DAMAGE. | +// +----------------------------------------------------------------------+ +// | Author: Lukas Smith <smith@pooteeweet.org> | +// +----------------------------------------------------------------------+ +// +// $Id$ + +/** + * @package MDB2 + * @category Database + * @author Lukas Smith <smith@pooteeweet.org> + */ +class MDB2_Iterator implements Iterator +{ + protected $fetchmode; + protected $result; + protected $row; + + // {{{ constructor + + /** + * Constructor + */ + public function __construct($result, $fetchmode = MDB2_FETCHMODE_DEFAULT) + { + $this->result = $result; + $this->fetchmode = $fetchmode; + } + + // }}} + // {{{ seek() + + /** + * seek forward to a specific row in a result set + * + * @param int $rownum number of the row where the data can be found + * @return void + * @access public + */ + public function seek($rownum) + { + $this->row = null; + if ($this->result) { + $this->result->seek($rownum); + } + } + + // }}} + // {{{ next() + + /** + * Fetch next row of data + * + * @return void + * @access public + */ + public function next() + { + $this->row = null; + } + + // }}} + // {{{ current() + + /** + * return a row of data + * + * @return void + * @access public + */ + public function current() + { + if (is_null($this->row)) { + $row = $this->result->fetchRow($this->fetchmode); + if (PEAR::isError($row)) { + $row = false; + } + $this->row = $row; + } + return $this->row; + } + + // }}} + // {{{ valid() + + /** + * check if the end of the result set has been reached + * + * @return mixed true or false on sucess, a MDB2 error on failure + * @access public + */ + public function valid() + { + return (bool)$this->current(); + } + + // }}} + // {{{ free() + + /** + * Free the internal resources associated with result. + * + * @return boolean true on success, false if result is invalid + * @access public + */ + public function free() + { + if ($this->result) { + return $this->result->free(); + } + $this->result = null; + $this->row = null; + return false; + } + + // }}} + // {{{ key() + + /** + * nothing, but Iterator wants to implement this. + * + * @return void + * @access public + */ + public function key() + { + if ($this->result) { + return $this->result->rowCount(); + } + return false; + } + + // }}} + // {{{ rewind() + + /** + * seek to the first row in a result set + * + * @return void + * @access public + */ + public function rewind() + { + } + + // }}} + // {{{ destructor + + /** + * Destructor + */ + public function __destruct() + { + $this->free(); + } +} + +class MDB2_BufferedIterator extends MDB2_Iterator implements SeekableIterator +{ + // }}} + // {{{ valid() + + /** + * check if the end of the result set has been reached + * + * @return mixed true or false on sucess, a MDB2 error on failure + * @access public + */ + public function valid() + { + if ($this->result) { + return $this->result->valid(); + } + return false; + } + + // }}} + // {{{count() + + /** + * returns the number of rows in a result object + * + * @return mixed MDB2 Error Object or the number of rows + * @access public + */ + public function count() + { + if ($this->result) { + return $this->result->numRows(); + } + return false; + } + + // }}} + // {{{ hasPrev() + + /** + * check if there is a previous row + * + * @return mixed true or false on sucess, a MDB2 error on failure + * @access public + */ + public function hasPrev() + { + if ($this->result) { + return $this->result->rowCount() > 0; + } + return false; + } + + // }}} + // {{{ rewind() + + /** + * seek to the first row in a result set + * + * @return mixed MDB2_OK on success, a MDB2 error on failure + * @access public + */ + public function rewind() + { + $this->seek(0); + } + + // }}} + // {{{ prev() + + /** + * move internal row point to the previous row + * Fetch and return a row of data + * + * @return void + * @access public + */ + public function prev() + { + if ($this->hasPrev()) { + $this->seek($this->result->rowCount() - 1); + } else { + return false; + } + return $this->next(); + } +} + +?>
\ No newline at end of file |