Merge branch 4.6 into master
[civicrm-core.git] / CRM / Contact / BAO / Relationship.php
index c762b65dc8986a0cb513effda67c485098ff907c..09824e666ab278e6f178ee8a9617c6eff9852194 100644 (file)
@@ -83,7 +83,10 @@ class CRM_Contact_BAO_Relationship extends CRM_Contact_DAO_Relationship {
       self::disableEnableRelationship($id, $action, $params, $ids, $active);
     }
 
-    self::addRecent($params, $relationship);
+    if (empty($params['skipRecentView'])) {
+      self::addRecent($params, $relationship);
+    }
+
     return $relationship;
   }
 
@@ -1476,11 +1479,10 @@ LEFT JOIN  civicrm_country ON (civicrm_address.country_id = civicrm_country.id)
 
     $query = 'SELECT * FROM `civicrm_membership_status`';
     if ($active) {
-      $query .= 'WHERE `is_current_member` = 1 OR `id` = %1 ';
+      $query .= ' WHERE `is_current_member` = 1 OR `id` = %1 ';
     }
 
-    $params[1] = array($pendingStatusId, 'String');
-    $dao = CRM_Core_DAO::executeQuery($query, $params);
+    $dao = CRM_Core_DAO::executeQuery($query, array(1 => array($pendingStatusId, 'Integer')));
 
     while ($dao->fetch()) {
       $membershipStatusRecordIds[$dao->id] = $dao->id;
@@ -1616,6 +1618,19 @@ SELECT relationship_type_id, relationship_direction
               }
             }
 
+            if ($action & CRM_Core_Action::UPDATE) {
+              //if updated relationship is already related to contact don't delete existing inherited membership
+              if (in_array($relTypeId, $relTypeIds
+                ) && !empty($values[$relatedContactId]['memberships']) && !empty($ownerMemIds
+                ) && in_array($membershipValues['owner_membership_id'], $ownerMemIds[$relatedContactId])) {
+                continue;
+              }
+
+              //delete the membership record for related
+              //contact before creating new membership record.
+              CRM_Member_BAO_Membership::deleteRelatedMemberships($membershipId, $relatedContactId);
+            }
+
             // check whether we have some related memberships still available
             $query = "
 SELECT count(*)