Source for file PreOrderIterator.php
Documentation is available at PreOrderIterator.php
* $Id: PreOrderIterator.php 1080 2007-02-10 18:17:08Z romanb $
* 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 COPYRIGHT
* OWNER 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.
* This software consists of voluntary contributions made by many individuals
* and is licensed under the LGPL. For more information, see
* <http://www.phpdoctrine.com>.
* Doctrine_Node_NestedSet_PreOrderIterator
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @category Object Relational Mapping
* @link www.phpdoctrine.com
* @version $Revision: 1080 $
* @author Joe Simms <joe.simms@websites4.com>
* @var Doctrine_Collection $collection
$componentName =
$record->getTable()->getComponentName();
$q =
$record->getTable()->createQuery();
$params =
array($record->get('lft'), $record->get('rgt'));
if (isset
($opts['include_record']) &&
$opts['include_record']) {
$query =
$q->where("$componentName.lft >= ? AND $componentName.rgt <= ?", $params)->orderBy("$componentName.lft asc");
$query =
$q->where("$componentName.lft > ? AND $componentName.rgt < ?", $params)->orderBy("$componentName.lft asc");
$query =
$record->getTable()->getTree()->returnQueryWithRootId($query, $record->getNode()->getRootValue());
$this->maxLevel = isset
($opts['depth']) ?
($opts['depth'] +
$record->getNode()->getLevel()) :
0;
$this->collection = isset
($opts['collection']) ?
$opts['collection'] :
$query->execute();
$this->level =
$record->getNode()->getLevel();
$this->prevLeft =
$record->getNode()->getLeftValue();
// clear the table identity cache
$record->getTable()->clear();
* returns the current key
* returns the current record
* @return Doctrine_Record
$record->getNode()->setLevel($this->level);
* advances the internal pointer
if ($this->maxLevel &&
($this->level >
$this->maxLevel)) {
* @return boolean whether or not the iteration will continue
if (!(isset
($this->options['include_record']) &&
$this->options['include_record'] &&
$this->index ==
0)) {
$this->level +=
$this->prevLeft -
$left +
2;
if (isset
($this->keys[$i])) {