* @throws \CRM_Core_Exception
*/
public static function create(&$params) {
- $params = self::loadExistingRelationshipDetails($params);
- if (self::checkDuplicateRelationship($params, $params['contact_id_a'], $params['contact_id_b'], CRM_Utils_Array::value('id', $params, 0))) {
+
+ $extended_params = self::loadExistingRelationshipDetails($params);
+ // When id is specified we always wan't to update, so we don't need to
+ // check for duplicate relations.
+ if (!isset($params['id']) && self::checkDuplicateRelationship($extended_params, $extended_params['contact_id_a'], $extended_params['contact_id_b'], CRM_Utils_Array::value('id', $extended_params, 0))) {
throw new CRM_Core_Exception('Duplicate Relationship');
}
+ $params = $extended_params;
if (self::checkValidRelationship($params, $params, 0)) {
throw new CRM_Core_Exception('Invalid Relationship');
}