// data cleanup only: all verifications on number of related memberships are done upstream in:
// CRM_Member_BAO_Membership::createRelatedMemberships()
// CRM_Contact_BAO_Relationship::relatedMemberships()
- if (isset($params['owner_membership_id'])) {
+ if (!empty($params['owner_membership_id'])) {
unset($params['max_related']);
}
else {
* @return int
* Id of deleted Membership on success, false otherwise.
*/
- public static function del($membershipId) {
+ public static function del($membershipId, $preserveContrib = FALSE) {
//delete related first and then delete parent.
self::deleteRelatedMemberships($membershipId);
- return self::deleteMembership($membershipId);
+ return self::deleteMembership($membershipId, $preserveContrib);
}
/**
* @return int
* Id of deleted Membership on success, false otherwise.
*/
- public static function deleteMembership($membershipId) {
+ public static function deleteMembership($membershipId, $preserveContrib = FALSE) {
// CRM-12147, retrieve membership data before we delete it for hooks
$params = array('id' => $membershipId);
$memValues = array();
$params['source_record_id'] = $membershipId;
CRM_Activity_BAO_Activity::deleteActivity($params);
}
- self::deleteMembershipPayment($membershipId);
+ self::deleteMembershipPayment($membershipId, $preserveContrib);
$results = $membership->delete();
$transaction->commit();
* @return object
* $membershipPayment deleted membership payment object
*/
- public static function deleteMembershipPayment($membershipId) {
+ public static function deleteMembershipPayment($membershipId, $preserveContrib = FALSE) {
$membershipPayment = new CRM_Member_DAO_MembershipPayment();
$membershipPayment->membership_id = $membershipId;
$membershipPayment->find();
while ($membershipPayment->fetch()) {
- CRM_Contribute_BAO_Contribution::deleteContribution($membershipPayment->contribution_id);
+ if (!$preserveContrib) {
+ CRM_Contribute_BAO_Contribution::deleteContribution($membershipPayment->contribution_id);
+ }
CRM_Utils_Hook::pre('delete', 'MembershipPayment', $membershipPayment->id, $membershipPayment);
$membershipPayment->delete();
CRM_Utils_Hook::post('delete', 'MembershipPayment', $membershipPayment->id, $membershipPayment);