Skip to content

Commit

Permalink
Merge pull request #18030 from eileenmcnaughton/fail
Browse files Browse the repository at this point in the history
[REF] Simplify membership status date handling
  • Loading branch information
mattwire authored Aug 3, 2020
2 parents a7a22b8 + 5872a4b commit e357a7d
Showing 1 changed file with 18 additions and 22 deletions.
40 changes: 18 additions & 22 deletions CRM/Member/BAO/MembershipStatus.php
Original file line number Diff line number Diff line change
Expand Up @@ -240,12 +240,6 @@ public static function getMembershipStatusByDate(
foreach ($dates as $dat) {
if (${$dat . 'Date'} && ${$dat . 'Date'} != "null") {
${$dat . 'Date'} = CRM_Utils_Date::customFormat(${$dat . 'Date'}, '%Y%m%d');

${$dat . 'Year'} = substr(${$dat . 'Date'}, 0, 4);

${$dat . 'Month'} = substr(${$dat . 'Date'}, 4, 2);

${$dat . 'Day'} = substr(${$dat . 'Date'}, 6, 2);
}
else {
${$dat . 'Date'} = '';
Expand All @@ -266,13 +260,15 @@ public static function getMembershipStatusByDate(
ORDER BY weight ASC";

$membershipStatus = CRM_Core_DAO::executeQuery($query);
$hour = $minute = $second = 0;

while ($membershipStatus->fetch()) {
$startEvent = NULL;
$endEvent = NULL;
foreach ($events as $eve) {
foreach ($dates as $dat) {
$month = date('m', strtotime(${$dat . 'Date'}));
$day = date('d', strtotime(${$dat . 'Date'}));
$year = date('Y', strtotime(${$dat . 'Date'}));
// calculate start-event/date and end-event/date
if (($membershipStatus->{$eve . '_event'} == $dat . '_date') &&
${$dat . 'Date'}
Expand All @@ -281,27 +277,27 @@ public static function getMembershipStatusByDate(
$membershipStatus->{$eve . '_event_adjust_interval'}
) {
// add in months
if ($membershipStatus->{$eve . '_event_adjust_unit'} == 'month') {
${$eve . 'Event'} = date('Ymd', mktime($hour, $minute, $second,
${$dat . 'Month'} + $membershipStatus->{$eve . '_event_adjust_interval'},
${$dat . 'Day'},
${$dat . 'Year'}
if ($membershipStatus->{$eve . '_event_adjust_unit'} === 'month') {
${$eve . 'Event'} = date('Ymd', mktime(0, 0, 0,
$month + $membershipStatus->{$eve . '_event_adjust_interval'},
$day,
$year
));
}
// add in days
if ($membershipStatus->{$eve . '_event_adjust_unit'} == 'day') {
${$eve . 'Event'} = date('Ymd', mktime($hour, $minute, $second,
${$dat . 'Month'},
${$dat . 'Day'} + $membershipStatus->{$eve . '_event_adjust_interval'},
${$dat . 'Year'}
if ($membershipStatus->{$eve . '_event_adjust_unit'} === 'day') {
${$eve . 'Event'} = date('Ymd', mktime(0, 0, 0,
$month,
$day + $membershipStatus->{$eve . '_event_adjust_interval'},
$year
));
}
// add in years
if ($membershipStatus->{$eve . '_event_adjust_unit'} == 'year') {
${$eve . 'Event'} = date('Ymd', mktime($hour, $minute, $second,
${$dat . 'Month'},
${$dat . 'Day'},
${$dat . 'Year'} + $membershipStatus->{$eve . '_event_adjust_interval'}
if ($membershipStatus->{$eve . '_event_adjust_unit'} === 'year') {
${$eve . 'Event'} = date('Ymd', mktime(0, 0, 0,
$month,
$day,
$year + $membershipStatus->{$eve . '_event_adjust_interval'}
));
}
// if no interval and unit, present
Expand Down

0 comments on commit e357a7d

Please sign in to comment.