Skip to content

Commit

Permalink
Another solution
Browse files Browse the repository at this point in the history
  • Loading branch information
trasher committed Apr 30, 2024
1 parent 430d34a commit 0d39959
Showing 1 changed file with 22 additions and 23 deletions.
45 changes: 22 additions & 23 deletions galette/lib/Galette/Entity/Contribution.php
Expand Up @@ -260,35 +260,34 @@ private function retrieveEndDate(): void

$now = new \DateTime();
$begin_date = new \DateTime($this->begin_date);
if ($preferences->pref_beg_membership != '') {

if ($this->type->extension > ContributionsTypes::TYPE_DONATION) {
$dext = new DateInterval('P' . $this->type->extension . 'M');
$end_date = $begin_date->add($dext);
} elseif ($preferences->pref_beg_membership != '') {
//case beginning of membership
if ($this->type->extension < 1) { // 0 = donate; -1= else duration (months)
list($j, $m) = explode('/', $preferences->pref_beg_membership);
$next_begin_date = new DateTime($begin_date->format('Y') . '-' . $m . '-' . $j);
while ($next_begin_date <= $begin_date) {
$next_begin_date->add(new DateInterval('P1Y'));
}
list($j, $m) = explode('/', $preferences->pref_beg_membership);
$next_begin_date = new DateTime($begin_date->format('Y') . '-' . $m . '-' . $j);
while ($next_begin_date <= $begin_date) {
$next_begin_date->add(new DateInterval('P1Y'));
}

if ($preferences->pref_membership_offermonths > 0) {
//count days until next membership begin date
$diff1 = (int)$now->diff($next_begin_date)->format('%a');
if ($preferences->pref_membership_offermonths > 0) {
//count days until next membership begin date
$diff1 = (int)$now->diff($next_begin_date)->format('%a');

//count days between next membership begin date and offered months
$tdate = clone $next_begin_date;
$tdate->sub(new DateInterval('P' . $preferences->pref_membership_offermonths . 'M'));
$diff2 = (int)$next_begin_date->diff($tdate)->format('%a');
//count days between next membership begin date and offered months
$tdate = clone $next_begin_date;
$tdate->sub(new DateInterval('P' . $preferences->pref_membership_offermonths . 'M'));
$diff2 = (int)$next_begin_date->diff($tdate)->format('%a');

//when number of days until next membership begin date is less than or equal to the offered months, it's free :)
if ($diff1 <= $diff2) {
$next_begin_date->add(new DateInterval('P1Y'));
}
//when number of days until next membership begin date is less than or equal to the offered months, it's free :)
if ($diff1 <= $diff2) {
$next_begin_date->add(new DateInterval('P1Y'));
}

$end_date = clone $next_begin_date;
} else {
$dext = new DateInterval('P' . $this->type->extension . 'M');
$end_date = $begin_date->add($dext);
}

$end_date = clone $next_begin_date;
} elseif ($preferences->pref_membership_ext != '') {
//case membership extension
if ($this->extension == null) {
Expand Down

0 comments on commit 0d39959

Please sign in to comment.