public function initRelated(Doctrine_Record $record, $name) { if (!isset($this->_initializedRelations[$record->getOid()][$name])) { $relation = $record->getTable()->getRelation($name); $coll = new Doctrine_Collection($relation->getTable()->getComponentName()); $coll->setReference($record, $relation); $record[$name] = $coll; $this->_initializedRelations[$record->getOid()][$name] = true; } return true; }
/** * @see Doctrine_Connection_UnitOfWork::_collectDeletions() copy&past from * * @param Doctrine_Record $record * @param array $definitions * @return null */ private function collect(Doctrine_Record $record, &$definitions) { if (!$record->exists()) { return; } if (!$record->getTable()->hasTemplate(sfCacheTaggingToolkit::TEMPLATE_NAME)) { return; } # delete definitions if ($this->tagNamesToDelete === $definitions) { $definitions[$record->getOid()] = $record->obtainTagName(); $this->cascade($record); } else { # do not call cascade - due to SET NULL only updates columns # do not add tag, if its already on deletion list if (!array_key_exists($record->getOid(), $this->tagNamesToDelete)) { $definitions[$record->getOid()] = $record->obtainTagName(); } } }
/** * Compares two records. To be used on _snapshot diffs using array_udiff * * @param Doctrine_Record $a * @param Doctrine_Record $b * @return integer */ protected function compareRecords($a, $b) { if ($a->getOid() == $b->getOid()) { return 0; } return $a->getOid() > $b->getOid() ? 1 : -1; }
/** * Collects all records that need to be deleted by applying defined * application-level delete cascades. * * @param array $deletions Map of the records to delete. Keys=Oids Values=Records. */ private function _collectDeletions(Doctrine_Record $record, array &$deletions) { if (!$record->exists()) { return; } $deletions[$record->getOid()] = $record; $this->_cascadeDelete($record, $deletions); }
/** * Collects all records that need to be deleted by applying defined * application-level delete cascades. * * @param array $deletions Map of the records to delete. Keys=Oids Values=Records. */ private function _collectDeletions(Doctrine_Record $record, array &$deletions) { if (!$record->exists()) { throw new Doctrine_Connection_Exception("Transient records can't be deleted."); } $deletions[$record->getOid()] = $record; $this->_cascadeDelete($record, $deletions); }