public function delete($con = null) { $originalCacheRelations = sfConfig::get('sf_cache_relations'); sfConfig::set('sf_cache_relations', false); try { $docId = $this->getId(); $con = Propel::getConnection(); $con->begin(); // delete child relation $c = new Criteria(); $c->add(RelationPeer::ID2, $docId); $relations = RelationPeer::doSelect($c); foreach ($relations as $relation) { $relation->delete(null, sfConfig::get('sf_cache_relations')); //$relation->delete(); } // delete parent relations $children = Document::getChildrenOf($docId); foreach ($children as $child) { $relation = new Relation(); $relation->setId1($docId); $relation->setId2($child->getId()); $child->delete(); $relation->delete(); } // delete any tags for this document $c = new Criteria(); $c->add(TagrelationPeer::ID, $docId); $tagRelations = TagrelationPeer::doSelect($c); foreach ($tagRelations as $tag) { $tag->delete(); } parent::delete(); $con->commit(); } catch (Exception $e) { $con->rollback(); throw $e; } // set 'sf_cache_relations' it's original value sfConfig::set('sf_cache_relations', $originalCacheRelations); if ($originalCacheRelations) { Relation::updateRelationCache(); } return true; }
private function rejectRelationship($r) { if ($this->registry->getObject('authenticate')->isLoggedIn() == true) { $rel = new Relation($this->registry, $r, 0, 0, 0, 0); if ($rel->getUserB() == $this->registry->getObject('authenticate')->getUser()->getUserID()) { $rel->approveRelationship(); $rel->delete(); $this->registry->errorPage('Relationship deleted', 'We have rejected the relationship.'); } else { $this->registry->errorPage('Invalid request', 'You are not authorized to reject that request'); } } else { $this->registry->errorPage('Please login', 'Please login to reject this connection'); } }