Details
-
Type: Bug
-
Status: Done/Fixed
-
Priority: Critical
-
Resolution: Fixed/Completed
-
Affects Version/s: 3.1.4
-
Fix Version/s: 3.1.6
-
Component/s: CiviMember
-
Labels:None
Description
When an expired member renews their membership through a contribution page, the membership end date changes to November 2001 regardless of the members real start/end date. This requires the administrator to manually set the proper end date.
With a clean 3.1.4 install, edit the default 'Member Signup and Renewal' form as follows:
- disable execute real time transactions
- enable contribution amounts section
- enable allow other amounts
Edit your Membership from the contact summary page and add a General membership with a start date and end date in the past (expired).
Now access the live page, make a contribution for General membership, continue, continue.
Now access the contact page and view your General membership. It's still listed as expired and the end date is November 2001.
After talking with DGG and debugging on a local copy, one possible fix would be:
CRM/Member/BAO/MembershipType.php
506c506
> $today = date('Ymd');
—
< $today = CRM_Utils_Date::processDate( $changeToday, null, false, 'Ymd' );
$changeToday is null when passed into processDate(), which means $today is null when returned.
From IRC
[12:15] <dgg> CRM/Contribute/Contribution/Confirm.php postProcess which calls CRM/Member/BAO/Membership postProcessMembership() function. The bug is prob in renewMembership() in that same BAO file - check for the condition where currentMembership[is_current_member] is false - starting around line 1157