public function __construct($record, $opts)
    {
        $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");
        } else {
            $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->options    = $opts;
        $this->collection = isset($opts['collection']) ? $opts['collection'] : $query->execute();
        $this->keys       = $this->collection->getKeys();
        $this->count      = $this->collection->count();
        $this->index      = -1;
        $this->level      = $record->getNode()->getLevel();
        $this->prevLeft   = $record->getNode()->getLeftValue();

        // clear the table identity cache
        $record->getTable()->clear();
    }
Exemple #2
0
 /**
  * constructor
  * @var Doctrine_Collection $collection
  */
 public function __construct($collection)
 {
     $this->collection = $collection;
     $this->keys = $this->collection->getKeys();
     $this->count = $this->collection->count();
 }
Exemple #3
0
 public function testAdd()
 {
     $coll = new Doctrine_Collection($this->objTable);
     $coll->add(new User());
     $this->assertEqual($coll->count(), 1);
     $coll->add(new User());
     $this->assertTrue($coll->count(), 2);
     $this->assertEqual($coll->getKeys(), array(0, 1));
     $coll[2] = new User();
     $this->assertTrue($coll->count(), 3);
     $this->assertEqual($coll->getKeys(), array(0, 1, 2));
 }