public function updateRelation(Relation $relation) { try { $relation->setLastModification(time()); $this->dao->update($relation); } catch (Exception $e) { throw new EyePeopleException('Unable to update Relation ' . $relation->getId(), 0, $e); } }
public function createRelation($sourceId, $targetId) { try { $relations = $this->getAllRelationsByUserId($sourceId); $relationToMe = null; foreach ($relations as $relation) { if ($relation->getSourceId() == $sourceId && $relation->getTargetId() == $targetId) { throw new EyePeopleException('The relation already exists between the user ' . $relation->getSourceId() . ' and the user ' . $relation->getTargetId()); } else { if ($relation->getSourceId() == $targetId && $relation->getTargetId() == $sourceId) { $relationToMe = $relation; throw new EyePeopleException('The relation between the user ' . $relation->getSourceId() . ' and the user ' . $relation->getTargetId() . ' exists, and must be updated'); } } } $newRelation = new Relation(); $newRelation->setSourceId($sourceId); $newRelation->setTargetId($targetId); $newRelation->setState(STATE_PENDING); $newRelation->setLastModification(time()); $this->provider->storeRelation($newRelation); return $newRelation; } catch (EyePeopleException $e) { if ($relationToMe) { $relationToMe->setState(STATE_ACCEPTED); $this->provider->update($relationToMe); } else { throw new EyePeopleException('Unable to create the Relation ' . $relation->getId()); } } }