From 41dd139bdee84ee7cdfec230ab22bcd522e7b758 Mon Sep 17 00:00:00 2001 From: Sander Dorigo Date: Sun, 12 Oct 2014 09:37:31 +0200 Subject: [PATCH] Trigger no longer fires or creates reminders for piggy banks. --- .../Piggybanks/EloquentPiggybankTrigger.php | 156 ------------------ 1 file changed, 156 deletions(-) diff --git a/app/lib/Firefly/Trigger/Piggybanks/EloquentPiggybankTrigger.php b/app/lib/Firefly/Trigger/Piggybanks/EloquentPiggybankTrigger.php index 11a687b02a..168082a360 100644 --- a/app/lib/Firefly/Trigger/Piggybanks/EloquentPiggybankTrigger.php +++ b/app/lib/Firefly/Trigger/Piggybanks/EloquentPiggybankTrigger.php @@ -107,159 +107,6 @@ class EloquentPiggybankTrigger return true; } - /** - * Whenever a repetition is made, the decision is there to make reminders for it. Or not. - * Some combinations are "invalid" or impossible and will never trigger reminders. Others do. - * - * The numbers below refer to a small list I made in a text-file (it no longer exists) which contained the eight - * binary combinations that can be made of three properties each piggy bank has (among others): - * - * - Whether or not it has a start date. - * - Whether or not it has an end date. - * - Whether or not the piggy bank repeats itself. - * - * @SuppressWarnings(PHPMD.ExcessiveMethodLength) - * @SuppressWarnings(PHPMD.NPathComplexity) - * @SuppressWarnings(PHPMD.CyclomaticComplexity) - * - * @param \PiggybankRepetition $repetition - * - * @return null - */ - public function createdRepetition(\PiggybankRepetition $repetition) - { - \Log::debug('TRIGGER on createdRepetition() for repetition #' . $repetition->id); - - $piggyBank = $repetition->piggybank; - - // first, exclude all combinations that will not generate (valid) reminders - - // no reminders needed (duh) - if (is_null(($piggyBank->reminder))) { - \Log::debug('No reminders because no reminder needed.'); - return null; - } - - // no start, no target, no repeat (#1): - if (is_null($piggyBank->startdate) && is_null($piggyBank->targetdate) && $piggyBank->repeats == 0) { - \Log::debug('No reminders because no start, no target, no repeat (#1)'); - return null; - } - - // no start, but repeats (#5): - if (is_null($piggyBank->startdate) && $piggyBank->repeats == 1) { - \Log::debug('No reminders because no start, but repeats (#5)'); - return null; - } - - // no start, no end, but repeats (#6) - if (is_null($piggyBank->startdate) && is_null($piggyBank->targetdate) && $piggyBank->repeats == 1) { - \Log::debug('No reminders because no start, no end, but repeats (#6)'); - return null; - } - - // no end, but repeats (#7) - if (is_null($piggyBank->targetdate) && $piggyBank->repeats == 1) { - \Log::debug('No reminders because no end, but repeats (#7)'); - return null; - } - - \Log::debug('Will continue...'); - /* - * #2, #3, #4 and #8 are valid combo's. - * - * We add two years to the end when the repetition has no target date; we "pretend" there is a target date. - * - */ - if (is_null($repetition->targetdate)) { - $end = new Carbon; - $end->addYears(2); - } else { - $end = $repetition->targetdate; - } - /* - * If there is no start date, the start dat becomes right now. - */ - if (is_null($repetition->startdate)) { - $start = new Carbon; - } else { - $start = $repetition->startdate; - } - - /* - * Firefly checks every period X between $start and $end and if necessary creates a reminder. Firefly - * only creates reminders if the $current date is after today. Piggy banks may have their start in the past. - * - * This loop will jump a month when the reminder is set monthly, a week when it's set weekly, etcetera. - */ - $current = $start; - $today = new Carbon; - $today->startOfDay(); - while ($current <= $end) { - \Log::debug('Looping reminder dates; now at ' . $current); - /* - * Piggy bank reminders start X days before the actual date of the event. - */ - $reminderStart = clone $current; - switch ($piggyBank->reminder) { - case 'day': - $reminderStart->subDay(); - break; - case 'week': - $reminderStart->subDays(4); - break; - case 'month': - $reminderStart->subDays(21); - break; - case 'year': - $reminderStart->subMonths(9); - break; - } - - /* - * If the date is past today we create a reminder, otherwise we don't. The end date is the date - * the reminder is due; after that it is invalid. - */ - if ($current >= $today) { - $reminder = new \PiggybankReminder; - $reminder->piggybank()->associate($piggyBank); - $reminder->user()->associate(\Auth::user()); - $reminder->startdate = $reminderStart; - $reminder->enddate = $current; - $reminder->active = 1; - \Log::debug('Will create a reminder. Is it valid?'); - \Log::debug($reminder->validate()); - try { - - $reminder->save(); - } catch (QueryException $e) { - \Log::error('Could not save reminder: ' . $e->getMessage()); - } - } else { - \Log::debug('Current is before today, will not make a reminder.'); - } - - /* - * Here Firefly jumps ahead to the next reminder period. - */ - switch ($piggyBank->reminder) { - case 'day': - $current->addDays($piggyBank->reminder_skip); - break; - case 'week': - $current->addWeeks($piggyBank->reminder_skip); - break; - case 'month': - $current->addMonths($piggyBank->reminder_skip); - break; - case 'year': - $current->addYears($piggyBank->reminder_skip); - break; - } - } - - } - /** * @param \Piggybank $piggyBank * @@ -356,9 +203,6 @@ class EloquentPiggybankTrigger 'piggybanks.check', 'Firefly\Trigger\Piggybanks\EloquentPiggybankTrigger@checkRepeatingPiggies' ); - $events->listen( - 'piggybanks.repetition', 'Firefly\Trigger\Piggybanks\EloquentPiggybankTrigger@createdRepetition' - ); } /**