/** * adds a reference track from an object to another if that reference does not already exist * expects objects or arrays in the form array(id, 'ModelName') */ public static function addReference($mFromObject, $mToObject) { if ($mFromObject instanceof BaseObject && $mFromObject->isNew()) { self::$aUnsavedReferences[] = array($mFromObject, $mToObject); return; } self::prepareObjectArgument($mFromObject); self::prepareObjectArgument($mToObject); if (self::referenceExists($mFromObject, $mToObject)) { return; } $oReference = new Reference(); $oReference->setFromId($mFromObject[0]); $oReference->setFromModelName($mFromObject[1]); $oReference->setToId($mToObject[0]); $oReference->setToModelName($mToObject[1]); try { $oReference->save(); } catch (PropelException $ex) { if ($ex->getCause() instanceof NotPermittedException) { //Silently discard NotPermittedException because the FromObject won’t be saved either } else { throw $ex; } } }