From 27a576ae8ab92335dbfb2c6008f602f2aa8802b7 Mon Sep 17 00:00:00 2001 From: James Cole Date: Sat, 31 Dec 2022 06:57:05 +0100 Subject: [PATCH] Various bug fixes and code cleanup. --- app/Console/Commands/Upgrade/BackToJournals.php | 3 --- app/Console/Commands/VerifySecurityAlerts.php | 3 ++- .../Webhook/StandardMessageGenerator.php | 6 ++++-- app/Handlers/Events/UserEventHandler.php | 8 +------- app/Helpers/Attachments/AttachmentHelper.php | 17 +++++++++-------- app/Helpers/Collector/GroupCollector.php | 12 +++++++----- .../Controllers/Account/ReconcileController.php | 2 +- app/Http/Controllers/Account/ShowController.php | 2 +- .../Auth/ResetPasswordController.php | 2 +- app/Http/Controllers/Budget/IndexController.php | 2 +- app/Http/Controllers/Budget/ShowController.php | 2 +- .../Category/NoCategoryController.php | 2 +- .../Controllers/Category/ShowController.php | 2 +- app/Http/Controllers/Chart/BudgetController.php | 6 +++--- app/Http/Controllers/CurrencyController.php | 2 +- app/Http/Controllers/DebugController.php | 3 ++- .../Controllers/Json/FrontpageController.php | 2 +- app/Http/Controllers/Json/IntroController.php | 6 +++--- .../Controllers/Json/ReconcileController.php | 4 ++-- .../Transaction/DeleteController.php | 2 +- .../Controllers/Webhooks/DeleteController.php | 2 +- app/Http/Middleware/Authenticate.php | 3 ++- app/Mail/InvitationMail.php | 4 +++- .../assets/js/components/webhooks/Show.vue | 14 +++++++------- resources/views/admin/users/index.twig | 2 +- resources/views/list/ale.twig | 6 +++--- resources/views/recurring/show.twig | 4 ++-- 27 files changed, 62 insertions(+), 61 deletions(-) diff --git a/app/Console/Commands/Upgrade/BackToJournals.php b/app/Console/Commands/Upgrade/BackToJournals.php index 397e6b1930..7f280c839c 100644 --- a/app/Console/Commands/Upgrade/BackToJournals.php +++ b/app/Console/Commands/Upgrade/BackToJournals.php @@ -86,9 +86,6 @@ class BackToJournals extends Command /** * @return bool - * @throws FireflyException - * @throws ContainerExceptionInterface - * @throws NotFoundExceptionInterface */ private function isMigrated(): bool { diff --git a/app/Console/Commands/VerifySecurityAlerts.php b/app/Console/Commands/VerifySecurityAlerts.php index b7ab063619..6c1f9dbf48 100644 --- a/app/Console/Commands/VerifySecurityAlerts.php +++ b/app/Console/Commands/VerifySecurityAlerts.php @@ -62,7 +62,8 @@ class VerifySecurityAlerts extends Command // check for security advisories. $version = config('firefly.version'); $disk = Storage::disk('resources'); - if (!$disk->has('alerts.json')) { + // Next line is ignored because it's a Laravel Facade. + if (!$disk->has('alerts.json')) { // @phpstan-ignore-line Log::debug('No alerts.json file present.'); return 0; diff --git a/app/Generator/Webhook/StandardMessageGenerator.php b/app/Generator/Webhook/StandardMessageGenerator.php index 0a5b088ed1..d329ba3533 100644 --- a/app/Generator/Webhook/StandardMessageGenerator.php +++ b/app/Generator/Webhook/StandardMessageGenerator.php @@ -111,7 +111,8 @@ class StandardMessageGenerator implements MessageGeneratorInterface private function generateMessage(Webhook $webhook, Model $model): void { $class = get_class($model); - Log::debug(sprintf('Now in generateMessage(#%d, %s#%d)', $webhook->id, $class, $model->id)); + // Line is ignored because all of Firefly III's Models have an id property. + Log::debug(sprintf('Now in generateMessage(#%d, %s#%d)', $webhook->id, $class, $model->id)); // @phpstan-ignore-line $uuid = Uuid::uuid4(); $basicMessage = [ @@ -127,7 +128,8 @@ class StandardMessageGenerator implements MessageGeneratorInterface // depends on the model how user_id is set: switch ($class) { default: - Log::error(sprintf('Webhook #%d was given %s#%d to deal with but can\'t extract user ID from it.', $webhook->id, $class, $model->id)); + // Line is ignored because all of Firefly III's Models have an id property. + Log::error(sprintf('Webhook #%d was given %s#%d to deal with but can\'t extract user ID from it.', $webhook->id, $class, $model->id)); // @phpstan-ignore-line return; case TransactionGroup::class: diff --git a/app/Handlers/Events/UserEventHandler.php b/app/Handlers/Events/UserEventHandler.php index f5aef259a6..224eb935c6 100644 --- a/app/Handlers/Events/UserEventHandler.php +++ b/app/Handlers/Events/UserEventHandler.php @@ -64,8 +64,6 @@ class UserEventHandler * This method will bestow upon a user the "owner" role if he is the first user in the system. * * @param RegisteredUser $event - * - * @return bool */ public function attachUserRole(RegisteredUser $event): void { @@ -83,8 +81,6 @@ class UserEventHandler * Fires to see if a user is admin. * * @param Login $event - * - * @return bool */ public function checkSingleUserIsAdmin(Login $event): void { @@ -113,7 +109,6 @@ class UserEventHandler /** * @param RegisteredUser $event - * @return bool */ public function createExchangeRates(RegisteredUser $event): void { @@ -124,7 +119,6 @@ class UserEventHandler /** * @param RegisteredUser $event * - * @return bool * @throws FireflyException */ public function createGroupMembership(RegisteredUser $event): void @@ -330,7 +324,6 @@ class UserEventHandler { Log::debug('Now in storeUserIPAddress'); $user = $event->user; - /** @var array $preference */ if ($user->hasRole('demo')) { Log::debug('Do not log demo user logins'); @@ -338,6 +331,7 @@ class UserEventHandler } try { + /** @var array $preference */ $preference = app('preferences')->getForUser($user, 'login_ip_history', [])->data; } catch (FireflyException $e) { // don't care. diff --git a/app/Helpers/Attachments/AttachmentHelper.php b/app/Helpers/Attachments/AttachmentHelper.php index 9fe1160c44..18a15bfbb4 100644 --- a/app/Helpers/Attachments/AttachmentHelper.php +++ b/app/Helpers/Attachments/AttachmentHelper.php @@ -232,10 +232,10 @@ class AttachmentHelper implements AttachmentHelperInterface $validation = $this->validateUpload($file, $model); $attachment = null; if (false !== $validation) { - $class = get_class($model); - $user = $model->user; - if (PiggyBank::class === $class) { - $user = $model->account->user; + $user = $model->user; // @phpstan-ignore-line + // ignore lines about polymorphic calls. + if ($model instanceof PiggyBank) { + $user = $model->account->user; // @phpstan-ignore-line } $attachment = new Attachment(); // create Attachment object. @@ -372,11 +372,12 @@ class AttachmentHelper implements AttachmentHelperInterface $name = $file->getClientOriginalName(); $class = get_class($model); $count = 0; - if (PiggyBank::class === $class) { - $count = $model->account->user->attachments()->where('md5', $md5)->where('attachable_id', $model->id)->where('attachable_type', $class)->count(); + // ignore lines about polymorphic calls. + if ($model instanceof PiggyBank) { + $count = $model->account->user->attachments()->where('md5', $md5)->where('attachable_id', $model->id)->where('attachable_type', $class)->count(); // @phpstan-ignore-line } - if (PiggyBank::class !== $class) { - $count = $model->user->attachments()->where('md5', $md5)->where('attachable_id', $model->id)->where('attachable_type', $class)->count(); + if ($model instanceof PiggyBank) { + $count = $model->user->attachments()->where('md5', $md5)->where('attachable_id', $model->id)->where('attachable_type', $class)->count(); // @phpstan-ignore-line } $result = false; if ($count > 0) { diff --git a/app/Helpers/Collector/GroupCollector.php b/app/Helpers/Collector/GroupCollector.php index 9baeacb073..9f2a980dd1 100644 --- a/app/Helpers/Collector/GroupCollector.php +++ b/app/Helpers/Collector/GroupCollector.php @@ -517,19 +517,22 @@ class GroupCollector implements GroupCollectorInterface $groupArray = [ 'id' => (int)$augumentedJournal->transaction_group_id, 'user_id' => (int)$augumentedJournal->user_id, - 'title' => $augumentedJournal->transaction_group_title, + // Field transaction_group_title was added by the query. + 'title' => $augumentedJournal->transaction_group_title, // @phpstan-ignore-line 'transaction_type' => $parsedGroup['transaction_type_type'], 'count' => 1, 'sums' => [], 'transactions' => [], ]; - $journalId = (int)$augumentedJournal->transaction_journal_id; + // Field transaction_journal_id was added by the query. + $journalId = (int)$augumentedJournal->transaction_journal_id; // @phpstan-ignore-line $groupArray['transactions'][$journalId] = $parsedGroup; $groups[$groupId] = $groupArray; continue; } // or parse the rest. - $journalId = (int)$augumentedJournal->transaction_journal_id; + // Field transaction_journal_id was added by the query. + $journalId = (int)$augumentedJournal->transaction_journal_id; // @phpstan-ignore-line if (array_key_exists($journalId, $groups[$groupId]['transactions'])) { // append data to existing group + journal (for multiple tags or multiple attachments) $groups[$groupId]['transactions'][$journalId] = $this->mergeTags($groups[$groupId]['transactions'][$journalId], $augumentedJournal); @@ -770,7 +773,6 @@ class GroupCollector implements GroupCollectorInterface { $currentCollection = $collection; /** - * @var int $i * @var Closure $function */ foreach ($this->postFilters as $function) { @@ -779,7 +781,7 @@ class GroupCollector implements GroupCollectorInterface // and save it (or not) in the new collection. // that new collection is the next current collection /** - * @var int $index + * @var int $ii * @var array $item */ foreach ($currentCollection as $ii => $item) { diff --git a/app/Http/Controllers/Account/ReconcileController.php b/app/Http/Controllers/Account/ReconcileController.php index fd8acc54ce..7ff5ad881d 100644 --- a/app/Http/Controllers/Account/ReconcileController.php +++ b/app/Http/Controllers/Account/ReconcileController.php @@ -93,7 +93,7 @@ class ReconcileController extends Controller * @throws ContainerExceptionInterface * @throws NotFoundExceptionInterface */ - public function reconcile(Account $account, Carbon $start = null, Carbon $end = null) // @phpstan-ignore-line + public function reconcile(Account $account, Carbon $start = null, Carbon $end = null) { if (!$this->isEditableAccount($account)) { return $this->redirectAccountToAccount($account); diff --git a/app/Http/Controllers/Account/ShowController.php b/app/Http/Controllers/Account/ShowController.php index 1417122bba..9adeee99e0 100644 --- a/app/Http/Controllers/Account/ShowController.php +++ b/app/Http/Controllers/Account/ShowController.php @@ -91,7 +91,7 @@ class ShowController extends Controller * @throws ContainerExceptionInterface * @throws NotFoundExceptionInterface */ - public function show(Request $request, Account $account, Carbon $start = null, Carbon $end = null) // @phpstan-ignore-line + public function show(Request $request, Account $account, Carbon $start = null, Carbon $end = null) { $objectType = config(sprintf('firefly.shortNamesByFullName.%s', $account->accountType->type)); diff --git a/app/Http/Controllers/Auth/ResetPasswordController.php b/app/Http/Controllers/Auth/ResetPasswordController.php index 9e8ce72d90..c8214251c9 100644 --- a/app/Http/Controllers/Auth/ResetPasswordController.php +++ b/app/Http/Controllers/Auth/ResetPasswordController.php @@ -129,7 +129,7 @@ class ResetPasswordController extends Controller * @throws ContainerExceptionInterface * @throws NotFoundExceptionInterface */ - public function showResetForm(Request $request, $token = null) // @phpstan-ignore-line + public function showResetForm(Request $request, $token = null) { $loginProvider = config('firefly.login_provider'); if ('eloquent' !== $loginProvider) { diff --git a/app/Http/Controllers/Budget/IndexController.php b/app/Http/Controllers/Budget/IndexController.php index f04c813ad7..0377016088 100644 --- a/app/Http/Controllers/Budget/IndexController.php +++ b/app/Http/Controllers/Budget/IndexController.php @@ -99,7 +99,7 @@ class IndexController extends Controller * @throws ContainerExceptionInterface * @throws NotFoundExceptionInterface */ - public function index(Request $request, Carbon $start = null, Carbon $end = null) // @phpstan-ignore-line + public function index(Request $request, Carbon $start = null, Carbon $end = null) { Log::debug('Start of IndexController::index()'); diff --git a/app/Http/Controllers/Budget/ShowController.php b/app/Http/Controllers/Budget/ShowController.php index 111b1c1041..4a206923de 100644 --- a/app/Http/Controllers/Budget/ShowController.php +++ b/app/Http/Controllers/Budget/ShowController.php @@ -87,7 +87,7 @@ class ShowController extends Controller * @throws ContainerExceptionInterface * @throws NotFoundExceptionInterface */ - public function noBudget(Request $request, Carbon $start = null, Carbon $end = null)// @phpstan-ignore-line + public function noBudget(Request $request, Carbon $start = null, Carbon $end = null) { /** @var Carbon $start */ $start = $start ?? session('start'); diff --git a/app/Http/Controllers/Category/NoCategoryController.php b/app/Http/Controllers/Category/NoCategoryController.php index aa363f3208..9873883387 100644 --- a/app/Http/Controllers/Category/NoCategoryController.php +++ b/app/Http/Controllers/Category/NoCategoryController.php @@ -83,7 +83,7 @@ class NoCategoryController extends Controller * @throws ContainerExceptionInterface * @throws NotFoundExceptionInterface */ - public function show(Request $request, Carbon $start = null, Carbon $end = null)// @phpstan-ignore-line + public function show(Request $request, Carbon $start = null, Carbon $end = null) { Log::debug('Start of noCategory()'); /** @var Carbon $start */ diff --git a/app/Http/Controllers/Category/ShowController.php b/app/Http/Controllers/Category/ShowController.php index dba00078fb..36f1911d77 100644 --- a/app/Http/Controllers/Category/ShowController.php +++ b/app/Http/Controllers/Category/ShowController.php @@ -85,7 +85,7 @@ class ShowController extends Controller * @throws ContainerExceptionInterface * @throws NotFoundExceptionInterface */ - public function show(Request $request, Category $category, Carbon $start = null, Carbon $end = null) // @phpstan-ignore-line + public function show(Request $request, Category $category, Carbon $start = null, Carbon $end = null) { /** @var Carbon $start */ $start = $start ?? session('start', Carbon::now()->startOfMonth()); diff --git a/app/Http/Controllers/Chart/BudgetController.php b/app/Http/Controllers/Chart/BudgetController.php index d9138d1894..bedd62688a 100644 --- a/app/Http/Controllers/Chart/BudgetController.php +++ b/app/Http/Controllers/Chart/BudgetController.php @@ -205,7 +205,7 @@ class BudgetController extends Controller * * @return JsonResponse */ - public function expenseAsset(Budget $budget, ?BudgetLimit $budgetLimit = null): JsonResponse // @phpstan-ignore-line + public function expenseAsset(Budget $budget, ?BudgetLimit $budgetLimit = null): JsonResponse { /** @var GroupCollectorInterface $collector */ $collector = app(GroupCollectorInterface::class); @@ -273,7 +273,7 @@ class BudgetController extends Controller * * @return JsonResponse */ - public function expenseCategory(Budget $budget, ?BudgetLimit $budgetLimit = null): JsonResponse // @phpstan-ignore-line + public function expenseCategory(Budget $budget, ?BudgetLimit $budgetLimit = null): JsonResponse { /** @var GroupCollectorInterface $collector */ $collector = app(GroupCollectorInterface::class); @@ -337,7 +337,7 @@ class BudgetController extends Controller * * @return JsonResponse */ - public function expenseExpense(Budget $budget, ?BudgetLimit $budgetLimit = null): JsonResponse // @phpstan-ignore-line + public function expenseExpense(Budget $budget, ?BudgetLimit $budgetLimit = null): JsonResponse { /** @var GroupCollectorInterface $collector */ $collector = app(GroupCollectorInterface::class); diff --git a/app/Http/Controllers/CurrencyController.php b/app/Http/Controllers/CurrencyController.php index cce7d35805..b63cf9030a 100644 --- a/app/Http/Controllers/CurrencyController.php +++ b/app/Http/Controllers/CurrencyController.php @@ -300,7 +300,7 @@ class CurrencyController extends Controller /** * @param Request $request - * @return RedirectResponse|Redirector + * @return JsonResponse */ public function enableCurrency(Request $request): JsonResponse { diff --git a/app/Http/Controllers/DebugController.php b/app/Http/Controllers/DebugController.php index d68892d5dd..50badfc0f5 100644 --- a/app/Http/Controllers/DebugController.php +++ b/app/Http/Controllers/DebugController.php @@ -180,7 +180,8 @@ class DebugController extends Controller // get latest log file: $logger = Log::driver(); - $handlers = $logger->getHandlers(); + // PHPstan doesn't recognize the method because of its polymorphic nature. + $handlers = $logger->getHandlers(); // @phpstan-ignore-line $logContent = ''; foreach ($handlers as $handler) { if ($handler instanceof RotatingFileHandler) { diff --git a/app/Http/Controllers/Json/FrontpageController.php b/app/Http/Controllers/Json/FrontpageController.php index 2f618edbac..407b524cba 100644 --- a/app/Http/Controllers/Json/FrontpageController.php +++ b/app/Http/Controllers/Json/FrontpageController.php @@ -54,7 +54,7 @@ class FrontpageController extends Controller // percentage! $pct = 0; if (0 !== bccomp($piggyBank->targetamount, '0')) { - $pct = round(($amount / $piggyBank->targetamount) * 100); + $pct = (int)bcmul(bcdiv($amount, $piggyBank->targetamount), '100'); } $entry = [ diff --git a/app/Http/Controllers/Json/IntroController.php b/app/Http/Controllers/Json/IntroController.php index 947a19517d..460a9a4780 100644 --- a/app/Http/Controllers/Json/IntroController.php +++ b/app/Http/Controllers/Json/IntroController.php @@ -44,7 +44,7 @@ class IntroController extends Controller * * @return JsonResponse */ - public function getIntroSteps(string $route, string $specificPage = null): JsonResponse // @phpstan-ignore-line + public function getIntroSteps(string $route, string $specificPage = null): JsonResponse { Log::debug(sprintf('getIntroSteps for route "%s" and page "%s"', $route, $specificPage)); $specificPage = $specificPage ?? ''; @@ -105,7 +105,7 @@ class IntroController extends Controller * @return JsonResponse * @throws FireflyException */ - public function postEnable(string $route, string $specialPage = null): JsonResponse // @phpstan-ignore-line + public function postEnable(string $route, string $specialPage = null): JsonResponse { $specialPage = $specialPage ?? ''; $route = str_replace('.', '_', $route); @@ -129,7 +129,7 @@ class IntroController extends Controller * @return JsonResponse * @throws FireflyException */ - public function postFinished(string $route, string $specialPage = null): JsonResponse // @phpstan-ignore-line + public function postFinished(string $route, string $specialPage = null): JsonResponse { $specialPage = $specialPage ?? ''; $key = 'shown_demo_'.$route; diff --git a/app/Http/Controllers/Json/ReconcileController.php b/app/Http/Controllers/Json/ReconcileController.php index 68a1338656..a5e8a4527a 100644 --- a/app/Http/Controllers/Json/ReconcileController.php +++ b/app/Http/Controllers/Json/ReconcileController.php @@ -85,7 +85,7 @@ class ReconcileController extends Controller * @throws FireflyException * @throws JsonException */ - public function overview(Request $request, Account $account = null, Carbon $start = null, Carbon $end = null): JsonResponse // @phpstan-ignore-line + public function overview(Request $request, Account $account = null, Carbon $start = null, Carbon $end = null): JsonResponse { $startBalance = $request->get('startBalance'); $endBalance = $request->get('endBalance'); @@ -226,7 +226,7 @@ class ReconcileController extends Controller * @throws FireflyException * @throws JsonException */ - public function transactions(Account $account, Carbon $start = null, Carbon $end = null) // @phpstan-ignore-line + public function transactions(Account $account, Carbon $start = null, Carbon $end = null) { if (null === $start || null === $end) { throw new FireflyException('Invalid dates submitted.'); diff --git a/app/Http/Controllers/Transaction/DeleteController.php b/app/Http/Controllers/Transaction/DeleteController.php index 39b6290b64..1daa260bc9 100644 --- a/app/Http/Controllers/Transaction/DeleteController.php +++ b/app/Http/Controllers/Transaction/DeleteController.php @@ -87,7 +87,7 @@ class DeleteController extends Controller } $objectType = strtolower($journal->transaction_type_type ?? $journal->transactionType->type); $subTitle = (string)trans('firefly.delete_'.$objectType, ['description' => $group->title ?? $journal->description]); - $previous = app('steam')->getSafePreviousUrl(route('index')); + $previous = app('steam')->getSafePreviousUrl(); // put previous url in session Log::debug('Will try to remember previous URL'); $this->rememberPreviousUrl('transactions.delete.url'); diff --git a/app/Http/Controllers/Webhooks/DeleteController.php b/app/Http/Controllers/Webhooks/DeleteController.php index f97bee9492..6ed53c278a 100644 --- a/app/Http/Controllers/Webhooks/DeleteController.php +++ b/app/Http/Controllers/Webhooks/DeleteController.php @@ -66,7 +66,7 @@ class DeleteController extends Controller */ public function index(Webhook $webhook) { - $subTitle = (string)trans('firefly.delete_webhook', ['title' => $webhook->name]); + $subTitle = (string)trans('firefly.delete_webhook', ['title' => $webhook->title]); $this->rememberPreviousUrl('webhooks.delete.url'); return view('webhooks.delete', compact('webhook', 'subTitle')); diff --git a/app/Http/Middleware/Authenticate.php b/app/Http/Middleware/Authenticate.php index 1507af86b6..9bbb715417 100644 --- a/app/Http/Middleware/Authenticate.php +++ b/app/Http/Middleware/Authenticate.php @@ -122,7 +122,8 @@ class Authenticate foreach ($guards as $guard) { if ($this->auth->guard($guard)->check()) { - return $this->auth->shouldUse($guard); + // According to PHPstan the method returns void, but we'll see. + return $this->auth->shouldUse($guard); // @phpstan-ignore-line } } diff --git a/app/Mail/InvitationMail.php b/app/Mail/InvitationMail.php index 65490d9b0f..9f82a8f6f3 100644 --- a/app/Mail/InvitationMail.php +++ b/app/Mail/InvitationMail.php @@ -41,7 +41,9 @@ class InvitationMail extends Mailable /** * OAuthTokenCreatedMail constructor. * - * @param string $ipAddress + * @param string $invitee + * @param string $admin + * @param string $url */ public function __construct(string $invitee, string $admin, string $url) { diff --git a/resources/assets/js/components/webhooks/Show.vue b/resources/assets/js/components/webhooks/Show.vue index 1521c7dd4d..00943db856 100644 --- a/resources/assets/js/components/webhooks/Show.vue +++ b/resources/assets/js/components/webhooks/Show.vue @@ -37,29 +37,29 @@

{{ title }}

- +
- + - + - + - + - + @@ -82,7 +82,7 @@

{{ $t('firefly.meta_data') }}

-
TitleTitle {{ title }}
{{ $t('list.active') }}{{ $t('list.active') }}
{{ $t('list.trigger') }}{{ $t('list.trigger') }} {{ trigger }}
{{ $t('list.response') }}{{ $t('list.response') }} {{ response }}
{{ $t('list.delivery') }}{{ $t('list.delivery') }} {{ delivery }}
+
diff --git a/resources/views/admin/users/index.twig b/resources/views/admin/users/index.twig index d2bc9d5b7a..96e18d05fd 100644 --- a/resources/views/admin/users/index.twig +++ b/resources/views/admin/users/index.twig @@ -36,7 +36,7 @@

{{ 'all_users'|_ }}

-
{{ $t('list.url') }}
+
diff --git a/resources/views/list/ale.twig b/resources/views/list/ale.twig index e490295275..12263e95e7 100644 --- a/resources/views/list/ale.twig +++ b/resources/views/list/ale.twig @@ -1,7 +1,7 @@ -
+
{% for logEntry in logEntries %} - diff --git a/resources/views/recurring/show.twig b/resources/views/recurring/show.twig index 2d33f380ef..355fada105 100644 --- a/resources/views/recurring/show.twig +++ b/resources/views/recurring/show.twig @@ -70,11 +70,11 @@ {% endif %}

-
+ {# link to object: #} {% if 'FireflyIII\\Models\\Rule' == logEntry.changer_type %} @@ -9,7 +9,7 @@ {{ logEntry.changer_type|replace({"FireflyIII\\Models\\": ""}) }} #{{ logEntry.changer_id }} - + {{ trans('firefly.ale_action_'~logEntry.action) }}
+
{% for occ in rep.occurrences %} - +
{{ occ.date.isoFormat(trans('config.month_and_date_day_js')) }}{{ occ.date.isoFormat(trans('config.month_and_date_day_js')) }} {% if not occ.fired %}