Compare commits

..

6 Commits

Author SHA1 Message Date
github-actions[bot]
aa6169e314 Merge pull request #11582 from firefly-iii/release-1769259448
🤖 Automatically merge the PR into the develop branch.
2026-01-24 13:57:36 +01:00
JC5
4a4f1ff055 🤖 Auto commit for release 'develop' on 2026-01-24 2026-01-24 13:57:28 +01:00
James Cole
844470bf08 Move more events #11544 2026-01-24 13:52:35 +01:00
James Cole
92e985a9b8 Move more events #11544 2026-01-24 13:44:02 +01:00
James Cole
70e11098af Move more events #11544 2026-01-24 13:33:40 +01:00
James Cole
e76ab21091 Fix #11563 2026-01-24 07:17:19 +01:00
56 changed files with 351 additions and 358 deletions

View File

@@ -26,7 +26,7 @@ namespace FireflyIII\Api\V1\Controllers\Webhook;
use FireflyIII\Api\V1\Controllers\Controller;
use FireflyIII\Enums\WebhookTrigger;
use FireflyIII\Events\RequestedSendWebhookMessages;
use FireflyIII\Events\Model\Webhook\WebhookMessagesRequestSending;
use FireflyIII\Generator\Webhook\MessageGeneratorInterface;
use FireflyIII\Models\TransactionGroup;
use FireflyIII\Models\Webhook;
@@ -176,8 +176,8 @@ class ShowController extends Controller
}
// trigger event to send them:
Log::debug('send event RequestedSendWebhookMessages from ShowController::triggerTransaction()');
event(new RequestedSendWebhookMessages());
Log::debug(sprintf('send event WebhookMessagesRequestSending from %s', __METHOD__));
event(new WebhookMessagesRequestSending());
return response()->json([], 204);
}

View File

@@ -0,0 +1,42 @@
<?php
declare(strict_types=1);
/*
* TransactionGroupRequestsAuditLogEntry.php
* Copyright (c) 2026 james@firefly-iii.org
*
* This file is part of Firefly III (https://github.com/firefly-iii).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
namespace FireflyIII\Events\Model\TransactionGroup;
use FireflyIII\Events\Event;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Queue\SerializesModels;
class TransactionGroupRequestsAuditLogEntry extends Event
{
use SerializesModels;
public function __construct(
public Model $changer,
public Model $auditable,
public string $field,
public mixed $before,
public mixed $after
) {}
}

View File

@@ -1,8 +1,10 @@
<?php
/**
* RequestedReportOnJournals.php
* Copyright (c) 2019 james@firefly-iii.org
declare(strict_types=1);
/*
* TransactionGroupsRequestedReporting.php
* Copyright (c) 2026 james@firefly-iii.org
*
* This file is part of Firefly III (https://github.com/firefly-iii).
*
@@ -20,24 +22,14 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Events\Model\TransactionGroup;
namespace FireflyIII\Events;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Foundation\Events\Dispatchable;
use FireflyIII\Events\Event;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Log;
/**
* Class RequestedReportOnJournals
*/
class RequestedReportOnJournals
class TransactionGroupsRequestedReporting extends Event
{
use Dispatchable;
use InteractsWithSockets;
use SerializesModels;
/**
@@ -46,15 +38,5 @@ class RequestedReportOnJournals
public function __construct(
public int $userId,
public Collection $groups
) {
Log::debug('In event RequestedReportOnJournals.');
}
/**
* Get the channels the event should broadcast on.
*/
public function broadcastOn(): PrivateChannel
{
return new PrivateChannel('channel-name');
}
) {}
}

View File

@@ -1,8 +1,10 @@
<?php
declare(strict_types=1);
/*
* RequestedSendWebhookMessages.php
* Copyright (c) 2021 james@firefly-iii.org
* WebhookMessagesRequestSending.php
* Copyright (c) 2026 james@firefly-iii.org
*
* This file is part of Firefly III (https://github.com/firefly-iii).
*
@@ -20,16 +22,12 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Events;
namespace FireflyIII\Events\Model\Webhook;
use FireflyIII\Events\Event;
use Illuminate\Queue\SerializesModels;
/**
* Class RequestedSendWebhookMessages
*/
class RequestedSendWebhookMessages extends Event
class WebhookMessagesRequestSending extends Event
{
use SerializesModels;
}

View File

@@ -1,8 +1,10 @@
<?php
/**
* RequestedVersionCheckStatus.php
* Copyright (c) 2019 james@firefly-iii.org
declare(strict_types=1);
/*
* SystemRequestedVersionCheck.php
* Copyright (c) 2026 james@firefly-iii.org
*
* This file is part of Firefly III (https://github.com/firefly-iii).
*
@@ -20,24 +22,16 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Events;
namespace FireflyIII\Events\Security\System;
use FireflyIII\Events\Event;
use FireflyIII\User;
use Illuminate\Queue\SerializesModels;
/**
* Class RequestedVersionCheckStatus
*/
class RequestedVersionCheckStatus extends Event
class SystemRequestedVersionCheck extends Event
{
use SerializesModels;
/**
* Create a new event instance. This event is triggered when Firefly III wants to know
* what the deal is with the version checker.
*/
public function __construct(
public User $user
) {}

View File

@@ -26,7 +26,7 @@ namespace FireflyIII\Handlers\Events;
use FireflyIII\Enums\WebhookTrigger;
use FireflyIII\Events\DestroyedTransactionGroup;
use FireflyIII\Events\RequestedSendWebhookMessages;
use FireflyIII\Events\Model\Webhook\WebhookMessagesRequestSending;
use FireflyIII\Generator\Webhook\MessageGeneratorInterface;
use FireflyIII\Support\Facades\FireflyConfig;
use FireflyIII\Support\Models\AccountBalanceCalculator;
@@ -56,8 +56,8 @@ class DestroyedGroupEventHandler
$engine->setObjects(new Collection()->push($group));
$engine->setTrigger(WebhookTrigger::DESTROY_TRANSACTION);
$engine->generateMessages();
Log::debug(sprintf('send event RequestedSendWebhookMessages from %s', __METHOD__));
event(new RequestedSendWebhookMessages());
Log::debug(sprintf('send event WebhookMessagesRequestSending from %s', __METHOD__));
event(new WebhookMessagesRequestSending());
}
private function updateRunningBalance(DestroyedTransactionGroup $event): void

View File

@@ -25,7 +25,7 @@ namespace FireflyIII\Handlers\Events;
use FireflyIII\Enums\WebhookTrigger;
use FireflyIII\Events\Model\TransactionGroup\TriggeredStoredTransactionGroup;
use FireflyIII\Events\RequestedSendWebhookMessages;
use FireflyIII\Events\Model\Webhook\WebhookMessagesRequestSending;
use FireflyIII\Events\StoredTransactionGroup;
use FireflyIII\Generator\Webhook\MessageGeneratorInterface;
use FireflyIII\Models\RuleGroup;
@@ -181,7 +181,7 @@ class StoredGroupEventHandler
$engine->generateMessages();
// trigger event to send them:
Log::debug(sprintf('send event RequestedSendWebhookMessages from %s', __METHOD__));
event(new RequestedSendWebhookMessages());
Log::debug(sprintf('send event WebhookMessagesRequestSending from %s', __METHOD__));
event(new WebhookMessagesRequestSending());
}
}

View File

@@ -25,7 +25,7 @@ namespace FireflyIII\Handlers\Events;
use FireflyIII\Enums\TransactionTypeEnum;
use FireflyIII\Enums\WebhookTrigger;
use FireflyIII\Events\RequestedSendWebhookMessages;
use FireflyIII\Events\Model\Webhook\WebhookMessagesRequestSending;
use FireflyIII\Events\UpdatedTransactionGroup;
use FireflyIII\Generator\Webhook\MessageGeneratorInterface;
use FireflyIII\Models\Account;
@@ -207,8 +207,8 @@ class UpdatedGroupEventHandler
$engine->setTrigger(WebhookTrigger::UPDATE_TRANSACTION);
$engine->generateMessages();
Log::debug(sprintf('send event RequestedSendWebhookMessages from %s', __METHOD__));
event(new RequestedSendWebhookMessages());
Log::debug(sprintf('send event WebhookMessagesRequestSending from %s', __METHOD__));
event(new WebhookMessagesRequestSending());
}
private function updateRunningBalance(UpdatedTransactionGroup $event): void

View File

@@ -25,7 +25,7 @@ declare(strict_types=1);
namespace FireflyIII\Handlers\Observer;
use FireflyIII\Enums\WebhookTrigger;
use FireflyIII\Events\RequestedSendWebhookMessages;
use FireflyIII\Events\Model\Webhook\WebhookMessagesRequestSending;
use FireflyIII\Generator\Webhook\MessageGeneratorInterface;
use FireflyIII\Models\BudgetLimit;
use FireflyIII\Support\Facades\Amount;
@@ -58,8 +58,8 @@ class BudgetLimitObserver
$engine->setTrigger(WebhookTrigger::STORE_UPDATE_BUDGET_LIMIT);
$engine->generateMessages();
Log::debug(sprintf('send event RequestedSendWebhookMessages from %s', __METHOD__));
event(new RequestedSendWebhookMessages());
Log::debug(sprintf('send event WebhookMessagesRequestSending from %s', __METHOD__));
event(new WebhookMessagesRequestSending());
}
}
@@ -101,8 +101,8 @@ class BudgetLimitObserver
$engine->setTrigger(WebhookTrigger::STORE_UPDATE_BUDGET_LIMIT);
$engine->generateMessages();
Log::debug(sprintf('send event RequestedSendWebhookMessages from %s', __METHOD__));
event(new RequestedSendWebhookMessages());
Log::debug(sprintf('send event WebhookMessagesRequestSending from %s', __METHOD__));
event(new WebhookMessagesRequestSending());
}
}
}

View File

@@ -24,7 +24,7 @@ declare(strict_types=1);
namespace FireflyIII\Handlers\Observer;
use FireflyIII\Enums\WebhookTrigger;
use FireflyIII\Events\RequestedSendWebhookMessages;
use FireflyIII\Events\Model\Webhook\WebhookMessagesRequestSending;
use FireflyIII\Generator\Webhook\MessageGeneratorInterface;
use FireflyIII\Models\Attachment;
use FireflyIII\Models\Budget;
@@ -59,8 +59,8 @@ class BudgetObserver
$engine->setObjects(new Collection()->push($budget));
$engine->setTrigger(WebhookTrigger::STORE_BUDGET);
$engine->generateMessages();
Log::debug(sprintf('send event RequestedSendWebhookMessages from %s', __METHOD__));
event(new RequestedSendWebhookMessages());
Log::debug(sprintf('send event WebhookMessagesRequestSending from %s', __METHOD__));
event(new WebhookMessagesRequestSending());
}
}
@@ -80,8 +80,8 @@ class BudgetObserver
$engine->setObjects(new Collection()->push($budget));
$engine->setTrigger(WebhookTrigger::UPDATE_BUDGET);
$engine->generateMessages();
Log::debug(sprintf('send event RequestedSendWebhookMessages from %s', __METHOD__));
event(new RequestedSendWebhookMessages());
Log::debug(sprintf('send event WebhookMessagesRequestSending from %s', __METHOD__));
event(new WebhookMessagesRequestSending());
}
}
@@ -97,8 +97,8 @@ class BudgetObserver
$engine->setObjects(new Collection()->push($budget));
$engine->setTrigger(WebhookTrigger::DESTROY_BUDGET);
$engine->generateMessages();
Log::debug(sprintf('send event RequestedSendWebhookMessages from %s', __METHOD__));
event(new RequestedSendWebhookMessages());
Log::debug(sprintf('send event WebhookMessagesRequestSending from %s', __METHOD__));
event(new WebhookMessagesRequestSending());
$repository = app(AttachmentRepositoryInterface::class);
$repository->setUser($budget->user);

View File

@@ -773,30 +773,22 @@ trait MetaCollection
$this->query->whereNotNull('tag_transaction_journal.tag_id');
// Added this while fixing #10898, not sure why a post filter was ever necessary.
$this->query->whereIn('tag_transaction_journal.tag_id', $tags->pluck('id')->toArray());
// Removed again for #11473 because it breaks multiple tag filters.
// $this->query->whereIn('tag_transaction_journal.tag_id', $tags->pluck('id')->toArray());
// this method adds a "postFilter" to the collector.
$list = $tags->pluck('tag')->toArray();
$list = array_map(strtolower(...), $list);
$filter = static function (array $object) use ($list): bool {
Log::debug(sprintf('Now in setTags(%s) filter', implode(', ', $list)));
Log::debug(sprintf('Now in setTags (any) filter: %s', implode(', ', $list)));
foreach ($object['transactions'] as $transaction) {
$total = count($transaction['tags']);
$matched = 0;
foreach ($transaction['tags'] as $tag) {
Log::debug(sprintf('"%s" versus', strtolower((string) $tag['name'])), $list);
if (in_array(strtolower((string) $tag['name']), $list, true)) {
Log::debug(sprintf('Transaction has tag "%s" so return true.', $tag['name']));
++$matched;
if (1 === count($list)) {
return true;
}
}
}
if (count($list) > 1 && $total === $matched && $matched === count($list)) {
Log::debug(sprintf('All %d searched tags are present.', $total));
return true;
return true;
}
}
}
Log::debug('Transaction has no tags from the list, so return false.');

View File

@@ -433,6 +433,7 @@ class GroupCollector implements GroupCollectorInterface
*/
public function getGroups(): Collection
{
Log::debug('Now in getGroups()');
if ($this->expandGroupSearch) {
// get group ID's for the query:
$groupIds = $this->getCollectedGroupIds();
@@ -440,6 +441,8 @@ class GroupCollector implements GroupCollectorInterface
$this->query->orWhereIn('transaction_journals.transaction_group_id', $groupIds);
}
$result = $this->query->get($this->fields);
$this->dumpQueryInLogs();
Log::debug(sprintf('Count of result is %d', $result->count()));
// now to parse this into an array.
$collection = $this->parseArray($result);
@@ -758,6 +761,12 @@ class GroupCollector implements GroupCollectorInterface
count($currentCollection)
));
if (0 === $currentCollection->count()) {
Log::debug('Found nothing anyway, return empty collection.');
return $currentCollection;
}
/**
* @var Closure $function
*/
@@ -775,16 +784,25 @@ class GroupCollector implements GroupCollectorInterface
$result = $function($item);
if (false === $result) {
// skip other filters, continue to next item.
Log::debug('Result is false');
continue;
}
// if the result is a bool, use the unedited results.
if (true === $result) {
Log::debug('Result is true');
$nextCollection->push($item);
continue;
}
// if the result is an array, the filter has changed what's being returned.
if (is_array($result)) {
Log::debug('Result is array');
$nextCollection->push($result);
continue;
}
Log::debug('Result is something else!');
}
$currentCollection = $nextCollection;
Log::debug(sprintf('GroupCollector: postFilterCollection has %d transaction(s) left.', count($currentCollection)));
@@ -827,6 +845,7 @@ class GroupCollector implements GroupCollectorInterface
*/
public function getPaginatedGroups(): LengthAwarePaginator
{
Log::debug('Now in getPaginatedGroups()');
$set = $this->getGroups();
if (0 === $this->limit) {
$this->setLimit(50);

View File

@@ -23,7 +23,7 @@ declare(strict_types=1);
namespace FireflyIII\Http\Controllers;
use FireflyIII\Events\RequestedSendWebhookMessages;
use FireflyIII\Events\Model\Webhook\WebhookMessagesRequestSending;
use FireflyIII\Models\TransactionCurrency;
use FireflyIII\Support\Facades\Amount;
use FireflyIII\Support\Facades\FireflyConfig;
@@ -152,10 +152,10 @@ abstract class Controller extends BaseController
View::share('original_route_name', Route::currentRouteName());
// lottery to send any remaining webhooks:
if (7 === random_int(1, 10)) {
if (7 === random_int(1, 30)) {
// trigger event to send them:
Log::debug('send event RequestedSendWebhookMessages through lottery');
event(new RequestedSendWebhookMessages());
Log::debug(sprintf('send event WebhookMessagesRequestSending from %s', __METHOD__));
event(new WebhookMessagesRequestSending());
}
}
View::share('darkMode', $darkMode);

View File

@@ -27,7 +27,7 @@ use Carbon\Carbon;
use Carbon\Exceptions\InvalidFormatException;
use Exception;
use FireflyIII\Enums\AccountTypeEnum;
use FireflyIII\Events\RequestedVersionCheckStatus;
use FireflyIII\Events\Security\System\SystemRequestedVersionCheck;
use FireflyIII\Exceptions\FireflyException;
use FireflyIII\Helpers\Collector\GroupCollectorInterface;
use FireflyIII\Http\Middleware\Installer;
@@ -178,7 +178,7 @@ class HomeController extends Controller
/** @var User $user */
$user = auth()->user();
event(new RequestedVersionCheckStatus($user));
event(new SystemRequestedVersionCheck($user));
return view('index', [
'count' => $count,
@@ -202,7 +202,7 @@ class HomeController extends Controller
/** @var User $user */
$user = auth()->user();
event(new RequestedVersionCheckStatus($user));
event(new SystemRequestedVersionCheck($user));
return view('index', ['subTitle' => $subTitle, 'start' => $start, 'end' => $end, 'pageTitle' => $pageTitle]);
}

View File

@@ -25,7 +25,7 @@ declare(strict_types=1);
namespace FireflyIII\Jobs;
use Carbon\Carbon;
use FireflyIII\Events\RequestedReportOnJournals;
use FireflyIII\Events\Model\TransactionGroup\TransactionGroupsRequestedReporting;
use FireflyIII\Events\StoredTransactionGroup;
use FireflyIII\Exceptions\DuplicateTransactionException;
use FireflyIII\Exceptions\FireflyException;
@@ -145,7 +145,7 @@ class CreateRecurringTransactions implements ShouldQueue
Log::debug('Now running report thing.');
// will now send email to users.
foreach ($result as $userId => $journals) {
event(new RequestedReportOnJournals($userId, $journals));
event(new TransactionGroupsRequestedReporting($userId, $journals));
}
Log::debug('Done with handle()');

View File

@@ -1,8 +1,10 @@
<?php
/**
* AutomationHandler.php
* Copyright (c) 2019 james@firefly-iii.org
declare(strict_types=1);
/*
* MailsNewTransactionsReport.php
* Copyright (c) 2026 james@firefly-iii.org
*
* This file is part of Firefly III (https://github.com/firefly-iii).
*
@@ -20,13 +22,10 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Handlers\Events;
namespace FireflyIII\Listeners\Model\TransactionGroup;
use Exception;
use FireflyIII\Events\RequestedReportOnJournals;
use FireflyIII\Exceptions\FireflyException;
use FireflyIII\Events\Model\TransactionGroup\TransactionGroupsRequestedReporting;
use FireflyIII\Models\TransactionGroup;
use FireflyIII\Notifications\User\TransactionCreation;
use FireflyIII\Repositories\User\UserRepositoryInterface;
@@ -35,19 +34,11 @@ use FireflyIII\Transformers\TransactionGroupTransformer;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Notification;
/**
* Class AutomationHandler
*/
class AutomationHandler
class MailsNewTransactionsReport
{
/**
* Respond to the creation of X journals.
*
* @throws FireflyException
*/
public function reportJournals(RequestedReportOnJournals $event): void
public function handle(TransactionGroupsRequestedReporting $event): void
{
Log::debug('In reportJournals.');
Log::debug('In MailsNewTransactionsReport.');
/** @var UserRepositoryInterface $repository */
$repository = app(UserRepositoryInterface::class);

View File

@@ -1,8 +1,10 @@
<?php
declare(strict_types=1);
/*
* AuditEventHandler.php
* Copyright (c) 2022 james@firefly-iii.org
* StoresAuditLogEntry.php
* Copyright (c) 2026 james@firefly-iii.org
*
* This file is part of Firefly III (https://github.com/firefly-iii).
*
@@ -20,21 +22,16 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Handlers\Events;
namespace FireflyIII\Listeners\Model\TransactionGroup;
use Carbon\Carbon;
use FireflyIII\Events\TriggeredAuditLog;
use FireflyIII\Events\Model\TransactionGroup\TransactionGroupRequestsAuditLogEntry;
use FireflyIII\Repositories\AuditLogEntry\ALERepositoryInterface;
use Illuminate\Support\Facades\Log;
/**
* Class AuditEventHandler
*/
class AuditEventHandler
class StoresAuditLogEntry
{
public function storeAuditEvent(TriggeredAuditLog $event): void
public function handle(TransactionGroupRequestsAuditLogEntry $event): void
{
$array = [
'auditable' => $event->auditable,

View File

@@ -1,8 +1,10 @@
<?php
declare(strict_types=1);
/*
* WebhookEventHandler.php
* Copyright (c) 2021 james@firefly-iii.org
* SendsWebhookMessages.php
* Copyright (c) 2026 james@firefly-iii.org
*
* This file is part of Firefly III (https://github.com/firefly-iii).
*
@@ -20,26 +22,19 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Handlers\Events;
namespace FireflyIII\Listeners\Model\Webhook;
use FireflyIII\Events\Model\Webhook\WebhookMessagesRequestSending;
use FireflyIII\Jobs\SendWebhookMessage;
use FireflyIII\Models\WebhookMessage;
use FireflyIII\Support\Facades\FireflyConfig;
use Illuminate\Support\Facades\Log;
/**
* Class WebhookEventHandler
*/
class WebhookEventHandler
class SendsWebhookMessages
{
/**
* Will try to send at most 3 messages so the flow doesn't get broken too much.
*/
public function sendWebhookMessages(): void
public function handle(WebhookMessagesRequestSending $event): void
{
Log::debug(sprintf('Now in %s', __METHOD__));
Log::debug(sprintf('Now in %s for %s', __METHOD__, get_class($event)));
if (false === config('firefly.feature_flags.webhooks') || false === FireflyConfig::get('allow_webhooks', config('firefly.allow_webhooks'))->data) {
Log::debug('Webhook event handler is disabled, do not run sendWebhookMessages().');
@@ -69,6 +64,6 @@ class WebhookEventHandler
}
// clean up sent messages table:
WebhookMessage::where('webhook_messages.sent', true)->where('webhook_messages.created_at', '<', now()->subDays(30))->delete();
WebhookMessage::where('webhook_messages.sent', true)->where('webhook_messages.created_at', '<', now()->subDays(14))->delete();
}
}

View File

@@ -1,8 +1,10 @@
<?php
/**
* VersionCheckEventHandler.php
* Copyright (c) 2019 james@firefly-iii.org
declare(strict_types=1);
/*
* ChecksForNewVersion.php
* Copyright (c) 2026 james@firefly-iii.org
*
* This file is part of Firefly III (https://github.com/firefly-iii).
*
@@ -19,13 +21,11 @@
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Handlers\Events;
namespace FireflyIII\Listeners\Security\System;
use Carbon\Carbon;
use Deprecated;
use FireflyIII\Events\RequestedVersionCheckStatus;
use FireflyIII\Events\Security\System\SystemRequestedVersionCheck;
use FireflyIII\Exceptions\FireflyException;
use FireflyIII\Helpers\Update\UpdateTrait;
use FireflyIII\Models\Configuration;
@@ -35,24 +35,13 @@ use Illuminate\Support\Facades\Log;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\NotFoundExceptionInterface;
/**
* Class VersionCheckEventHandler
*/
class VersionCheckEventHandler
class ChecksForNewVersion
{
use UpdateTrait;
/**
* Checks with GitHub to see if there is a new version.
*
* @throws ContainerExceptionInterface
* @throws FireflyException
* @throws NotFoundExceptionInterface
*/
#[Deprecated(message: '?')]
public function checkForUpdates(RequestedVersionCheckStatus $event): void
public function handle(SystemRequestedVersionCheck $event): void
{
Log::debug('Now in checkForUpdates()');
Log::debug(sprintf('Now in %s', __METHOD__));
// should not check for updates:
$permission = FireflyConfig::get('permission_update_check', -1);
@@ -96,7 +85,7 @@ class VersionCheckEventHandler
* @throws ContainerExceptionInterface
* @throws NotFoundExceptionInterface
*/
protected function warnToCheckForUpdates(RequestedVersionCheckStatus $event): void
private function warnToCheckForUpdates(SystemRequestedVersionCheck $event): void
{
/** @var UserRepositoryInterface $repository */
$repository = app(UserRepositoryInterface::class);

View File

@@ -27,12 +27,8 @@ use FireflyIII\Events\Admin\InvitationCreated;
use FireflyIII\Events\DestroyedTransactionGroup;
use FireflyIII\Events\Model\TransactionGroup\TriggeredStoredTransactionGroup;
use FireflyIII\Events\Preferences\UserGroupChangedPrimaryCurrency;
use FireflyIII\Events\RequestedReportOnJournals;
use FireflyIII\Events\RequestedSendWebhookMessages;
use FireflyIII\Events\RequestedVersionCheckStatus;
use FireflyIII\Events\StoredAccount;
use FireflyIII\Events\StoredTransactionGroup;
use FireflyIII\Events\TriggeredAuditLog;
use FireflyIII\Events\UpdatedAccount;
use FireflyIII\Events\UpdatedTransactionGroup;
use Illuminate\Auth\Events\Login;
@@ -48,24 +44,10 @@ use Override;
class EventServiceProvider extends ServiceProvider
{
protected $listen = [
// is a User related event.
// RegisteredUser::class => [
// 'FireflyIII\Handlers\Events\UserEventHandler@createExchangeRates',
// ],
// UserAttemptedLogin::class => [
// 'FireflyIII\Handlers\Events\UserEventHandler@sendLoginAttemptNotification',
// ],
// is a User related event.
Login::class => [
'FireflyIII\Handlers\Events\UserEventHandler@checkSingleUserIsAdmin',
'FireflyIII\Handlers\Events\UserEventHandler@demoUserBackToEnglish',
],
// DetectedNewIPAddress::class => [
// 'FireflyIII\Handlers\Events\UserEventHandler@notifyNewIPAddress',
// ],
RequestedVersionCheckStatus::class => ['FireflyIII\Handlers\Events\VersionCheckEventHandler@checkForUpdates'],
RequestedReportOnJournals::class => ['FireflyIII\Handlers\Events\AutomationHandler@reportJournals'],
// is a User related event.
InvitationCreated::class => [
'FireflyIII\Handlers\Events\AdminEventHandler@sendInvitationNotification',
@@ -81,61 +63,10 @@ class EventServiceProvider extends ServiceProvider
// API related events:
AccessTokenCreated::class => ['FireflyIII\Handlers\Events\APIEventHandler@accessTokenCreated'],
// Webhook related event:
RequestedSendWebhookMessages::class => ['FireflyIII\Handlers\Events\WebhookEventHandler@sendWebhookMessages'],
// account related events:
StoredAccount::class => ['FireflyIII\Handlers\Events\StoredAccountEventHandler@recalculateCredit'],
UpdatedAccount::class => ['FireflyIII\Handlers\Events\UpdatedAccountEventHandler@recalculateCredit'],
// subscription related events:
// SubscriptionNeedsExtensionOrRenewal::class => [
// 'FireflyIII\Handlers\Events\BillEventHandler@warnAboutBill',
// ],
// WarnUserAboutOverdueSubscriptions::class => [
// 'FireflyIII\Handlers\Events\BillEventHandler@warnAboutOverdueSubscriptions',
// ],
// audit log events:
TriggeredAuditLog::class => ['FireflyIII\Handlers\Events\AuditEventHandler@storeAuditEvent'],
// piggy bank related events:
// PiggyBankAmountIsChanged::class => [
// 'FireflyIII\Handlers\Events\Model\PiggyBankEventHandler@changePiggyAmount',
// ],
// ChangedName::class => [
// 'FireflyIII\Handlers\Events\Model\PiggyBankEventHandler@changedPiggyBankName',
// ],
// rule actions
// RuleActionFailedOnArray::class => [
// 'FireflyIII\Handlers\Events\Model\RuleHandler@ruleActionFailedOnArray',
// ],
// RuleActionFailedOnObject::class => [
// 'FireflyIII\Handlers\Events\Model\RuleHandler@ruleActionFailedOnObject',
// ],
// security related
// EnabledMFA::class => [
// 'FireflyIII\Handlers\Events\Security\MFAHandler@sendMFAEnabledMail',
// ],
// DisabledMFA::class => [
// 'FireflyIII\Handlers\Events\Security\MFAHandler@sendMFADisabledMail',
// ],
// MFANewBackupCodes::class => [
// 'FireflyIII\Handlers\Events\Security\MFAHandler@sendNewMFABackupCodesMail',
// ],
// MFAUsedBackupCode::class => [
// 'FireflyIII\Handlers\Events\Security\MFAHandler@sendUsedBackupCodeMail',
// ],
// MFABackupFewLeft::class => [
// 'FireflyIII\Handlers\Events\Security\MFAHandler@sendBackupFewLeftMail',
// ],
// MFABackupNoLeft::class => [
// 'FireflyIII\Handlers\Events\Security\MFAHandler@sendBackupNoLeftMail',
// ],
// MFAManyFailedAttempts::class => [
// 'FireflyIII\Handlers\Events\Security\MFAHandler@sendMFAFailedAttemptsMail',
// ],
// preferences
UserGroupChangedPrimaryCurrency::class => ['FireflyIII\Handlers\Events\PreferencesEventHandler@resetPrimaryCurrencyAmounts'],
];

View File

@@ -24,7 +24,7 @@ declare(strict_types=1);
namespace FireflyIII\Services\Internal\Update;
use FireflyIII\Events\TriggeredAuditLog;
use FireflyIII\Events\Model\TransactionGroup\TransactionGroupRequestsAuditLogEntry;
use FireflyIII\Exceptions\DuplicateTransactionException;
use FireflyIII\Exceptions\FireflyException;
use FireflyIII\Factory\TransactionJournalFactory;
@@ -58,7 +58,7 @@ class GroupUpdateService
$oldTitle = $transactionGroup->title;
$transactionGroup->title = $data['group_title'];
$transactionGroup->save();
event(new TriggeredAuditLog($transactionGroup->user, $transactionGroup, 'update_group_title', $oldTitle, $data['group_title']));
event(new TransactionGroupRequestsAuditLogEntry($transactionGroup->user, $transactionGroup, 'update_group_title', $oldTitle, $data['group_title']));
}
if (0 === count($transactions)) {

View File

@@ -29,7 +29,7 @@ use Carbon\Exceptions\InvalidDateException;
use Carbon\Exceptions\InvalidFormatException;
use FireflyIII\Enums\AccountTypeEnum;
use FireflyIII\Enums\TransactionTypeEnum;
use FireflyIII\Events\TriggeredAuditLog;
use FireflyIII\Events\Model\TransactionGroup\TransactionGroupRequestsAuditLogEntry;
use FireflyIII\Exceptions\FireflyException;
use FireflyIII\Factory\TagFactory;
use FireflyIII\Factory\TransactionJournalMetaFactory;
@@ -508,7 +508,7 @@ class JournalUpdateService
$factory->updateOrCreate($set);
}
event(
new TriggeredAuditLog(
new TransactionGroupRequestsAuditLogEntry(
$this->transactionJournal->user,
$this->transactionJournal,
sprintf('update_%s', $fieldName),
@@ -709,7 +709,7 @@ class JournalUpdateService
// should not return in NULL but seems to do.
event(
new TriggeredAuditLog(
new TransactionGroupRequestsAuditLogEntry(
$group->user,
$group,
'update_amount',
@@ -808,7 +808,7 @@ class JournalUpdateService
// should not return in NULL but seems to do.
event(
new TriggeredAuditLog(
new TransactionGroupRequestsAuditLogEntry(
$group->user,
$group,
'update_foreign_amount',

View File

@@ -25,7 +25,7 @@ declare(strict_types=1);
namespace FireflyIII\Support\Cronjobs;
use Carbon\Carbon;
use FireflyIII\Events\RequestedSendWebhookMessages;
use FireflyIII\Events\Model\Webhook\WebhookMessagesRequestSending;
use FireflyIII\Exceptions\FireflyException;
use FireflyIII\Models\Configuration;
use FireflyIII\Support\Facades\FireflyConfig;
@@ -73,17 +73,17 @@ class WebhookCronjob extends AbstractCronjob
Log::info(sprintf('It has been %s since the webhook cron-job has fired. It will fire now!', $diffForHumans));
}
$this->fireWebhookmessages();
$this->fireWebhookMessages();
Preferences::mark();
}
private function fireWebhookmessages(): void
private function fireWebhookMessages(): void
{
Log::info(sprintf('Will now send webhook messages for date "%s".', $this->date->format('Y-m-d H:i:s')));
Log::debug('send event RequestedSendWebhookMessages through cron job.');
event(new RequestedSendWebhookMessages());
Log::debug(sprintf('send event WebhookMessagesRequestSending from %s', __METHOD__));
event(new WebhookMessagesRequestSending());
// get stuff from job:
$this->jobFired = true;

View File

@@ -72,6 +72,8 @@ class OperatorQuerySearch implements SearchInterface
private array $includeAnyTags = [];
// added to fix #8632
private array $includeTags = [];
// added to fix #11473
private array $includeAllTags = [];
private array $invalidOperators = [];
private int $limit = 25;
private readonly Collection $operators;
@@ -205,9 +207,19 @@ class OperatorQuerySearch implements SearchInterface
public function searchTransactions(): LengthAwarePaginator
{
$this->parseTagInstructions();
if (0 === count($this->getWords()) && 0 === count($this->getExcludedWords()) && 0 === count($this->getOperators())) {
if (
0 === count($this->excludeTags)
&& 0 === count($this->includeAnyTags)
&& 0 === count($this->includeAllTags)
&& 0 === count($this->getWords())
&& 0 === count($this->getExcludedWords())
&& 0 === count($this->getOperators())
) {
Log::warning('No need to search for anything');
return new LengthAwarePaginator([], 0, 5, 1);
}
Log::debug('Call getPaginatedGroups()');
return $this->collector->getPaginatedGroups();
}
@@ -395,30 +407,57 @@ class OperatorQuerySearch implements SearchInterface
$this->collector->setWithoutSpecificTags($collection);
}
// if include tags, include them:
if (count($this->includeTags) > 0) {
Log::debug(sprintf('%d include tag(s)', count($this->includeTags)));
$collection = new Collection();
foreach ($this->includeTags as $tagId) {
$tag = $this->tagRepository->find($tagId);
if (null !== $tag) {
Log::debug(sprintf('Include tag "%s"', $tag->tag));
$collection->push($tag);
// if (count($this->includeTags) > 0) {
// Log::debug(sprintf('%d include tag(s)', count($this->includeTags)));
// $collection = new Collection();
// foreach ($this->includeTags as $tagId) {
// $tag = $this->tagRepository->find($tagId);
// if (null !== $tag) {
// Log::debug(sprintf('Include tag "%s"', $tag->tag));
// $collection->push($tag);
// }
// }
// $this->collector->setAllTags($collection);
// }
// if include ALL tags, include them:
if (count($this->includeAllTags) > 0) {
Log::debug(sprintf('include ALL tag(s) in %d sets', count($this->includeAllTags)));
/** @var array|int|string $set */
foreach ($this->includeAllTags as $set) {
Log::debug('Loop set of includeAllTags');
if (!is_array($set)) {
throw new FireflyException('[a] Item is expected to be an array.');
}
$collection = new Collection();
foreach ($set as $tagId) {
$tag = $this->tagRepository->find($tagId);
if (null !== $tag) {
Log::debug(sprintf('Include tag (ALL) "%s"', $tag->tag));
$collection->push($tag);
}
$this->collector->setAllTags($collection);
}
}
$this->collector->setAllTags($collection);
}
// if include ANY tags, include them: (see #8632)
if (count($this->includeAnyTags) > 0) {
Log::debug(sprintf('%d include ANY tag(s)', count($this->includeAnyTags)));
$collection = new Collection();
foreach ($this->includeAnyTags as $tagId) {
$tag = $this->tagRepository->find($tagId);
if (null !== $tag) {
Log::debug(sprintf('Include ANY tag "%s"', $tag->tag));
$collection->push($tag);
Log::debug(sprintf('include ANY tag(s) with %d sets', count($this->includeAnyTags)));
foreach ($this->includeAnyTags as $set) {
if (!is_array($set)) {
throw new FireflyException('[b] Item is expected to be an array.');
}
Log::debug(sprintf('Set count is %d', count($set)));
$collection = new Collection();
foreach ($set as $tagId) {
$tag = $this->tagRepository->find($tagId);
if (null !== $tag) {
Log::debug(sprintf('Include tag (ANY) "%s"', $tag->tag));
$collection->push($tag);
}
}
$this->collector->setTags($collection);
}
$this->collector->setTags($collection);
}
}
@@ -2124,8 +2163,9 @@ class OperatorQuerySearch implements SearchInterface
case 'tag_is':
$result = $this->tagRepository->findByTag($value);
if (null !== $result) {
$this->includeTags[] = $result->id;
$this->includeTags = array_unique($this->includeTags);
$index = count($this->includeAllTags);
$this->includeAllTags[$index][] = $result->id;
$this->includeAllTags[$index] = array_unique($this->includeAllTags[$index] ?? []);
}
// no tags found means search must result in nothing.
if (null === $result) {
@@ -2143,10 +2183,19 @@ class OperatorQuerySearch implements SearchInterface
Log::warning(sprintf('Call to findNothing() from %s.', $operator));
$this->collector->findNothing();
}
if ($tags->count() > 0) {
if (1 === $tags->count()) {
// single tag found, must be this one.
$ids = array_values($tags->pluck('id')->toArray());
Log::debug('tag_contains: Add tags to includeAllTags', $ids);
$index = count($this->includeAllTags);
$this->includeAllTags[$index] = array_unique(array_merge($this->includeAllTags[$index] ?? [], $ids));
}
if ($tags->count() > 1) {
// changed from includeTags to includeAnyTags for #8632
$ids = array_values($tags->pluck('id')->toArray());
$this->includeAnyTags = array_unique(array_merge($this->includeAnyTags, $ids));
$ids = array_values($tags->pluck('id')->toArray());
Log::debug('tag_contains: Add tags to includeAnyTags', $ids);
$index = count($this->includeAnyTags);
$this->includeAnyTags[$index] = array_unique(array_merge($this->includeAnyTags[$index] ?? [], $ids));
}
break;
@@ -2158,10 +2207,17 @@ class OperatorQuerySearch implements SearchInterface
Log::warning(sprintf('Call to findNothing() from %s.', $operator));
$this->collector->findNothing();
}
if ($tags->count() > 0) {
if (1 === $tags->count()) {
// single tag found, must be this one.
$ids = array_values($tags->pluck('id')->toArray());
$index = count($this->includeAllTags);
$this->includeAllTags[$index] = array_unique(array_merge($this->includeAllTags[$index] ?? [], $ids));
}
if ($tags->count() > 1) {
// changed from includeTags to includeAnyTags for #8632
$ids = array_values($tags->pluck('id')->toArray());
$this->includeAnyTags = array_unique(array_merge($this->includeAnyTags, $ids));
$ids = array_values($tags->pluck('id')->toArray());
$index = count($this->includeAnyTags);
$this->includeAnyTags[$index] = array_unique(array_merge($this->includeAnyTags[$index], $ids));
}
break;
@@ -2175,7 +2231,7 @@ class OperatorQuerySearch implements SearchInterface
}
if ($tags->count() > 0) {
$ids = array_values($tags->pluck('id')->toArray());
$this->excludeTags = array_unique(array_merge($this->includeTags, $ids));
$this->excludeTags = array_unique(array_merge($this->excludeTags, $ids));
}
break;
@@ -2187,9 +2243,16 @@ class OperatorQuerySearch implements SearchInterface
Log::warning(sprintf('Call to findNothing() from %s.', $operator));
$this->collector->findNothing();
}
if (1 === $tags->count()) {
// single tag found, must be this one.
$ids = array_values($tags->pluck('id')->toArray());
$index = count($this->includeAllTags);
$this->includeAllTags[$index] = array_unique(array_merge($this->includeAllTags[$index] ?? [], $ids));
}
if ($tags->count() > 0) {
$ids = array_values($tags->pluck('id')->toArray());
$this->includeTags = array_unique(array_merge($this->includeTags, $ids));
$ids = array_values($tags->pluck('id')->toArray());
$index = count($this->includeAnyTags);
$this->includeAnyTags[$index] = array_unique(array_merge($this->includeAnyTags[$index], $ids));
}
break;
@@ -2203,7 +2266,7 @@ class OperatorQuerySearch implements SearchInterface
}
if ($tags->count() > 0) {
$ids = array_values($tags->pluck('id')->toArray());
$this->excludeTags = array_unique(array_merge($this->includeTags, $ids));
$this->excludeTags = array_unique(array_merge($this->excludeTags, $ids));
}
break;

View File

@@ -25,7 +25,7 @@ namespace FireflyIII\TransactionRules\Actions;
use FireflyIII\Enums\TransactionTypeEnum;
use FireflyIII\Events\Model\Rule\RuleActionFailedOnArray;
use FireflyIII\Events\TriggeredAuditLog;
use FireflyIII\Events\Model\TransactionGroup\TransactionGroupRequestsAuditLogEntry;
use FireflyIII\Factory\TagFactory;
use FireflyIII\Models\RuleAction;
use FireflyIII\Models\TransactionJournal;
@@ -92,7 +92,7 @@ class AddTag implements ActionInterface
$object = TransactionJournal::find($journal['transaction_journal_id']);
// event for audit log entry
event(new TriggeredAuditLog($this->action->rule, $object, 'add_tag', null, $tag->tag));
event(new TransactionGroupRequestsAuditLogEntry($this->action->rule, $object, 'add_tag', null, $tag->tag));
return true;
}

View File

@@ -23,7 +23,7 @@ declare(strict_types=1);
namespace FireflyIII\TransactionRules\Actions;
use FireflyIII\Events\TriggeredAuditLog;
use FireflyIII\Events\Model\TransactionGroup\TransactionGroupRequestsAuditLogEntry;
use FireflyIII\Models\RuleAction;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\TransactionRules\Traits\RefreshNotesTrait;
@@ -58,7 +58,7 @@ class AppendDescription implements ActionInterface
// event for audit log entry
/** @var TransactionJournal $object */
$object = TransactionJournal::where('user_id', $journal['user_id'])->find($journal['transaction_journal_id']);
event(new TriggeredAuditLog($this->action->rule, $object, 'update_description', $journal['description'], $description));
event(new TransactionGroupRequestsAuditLogEntry($this->action->rule, $object, 'update_description', $journal['description'], $description));
return true;
}

View File

@@ -25,7 +25,7 @@ declare(strict_types=1);
namespace FireflyIII\TransactionRules\Actions;
use FireflyIII\Events\Model\Rule\RuleActionFailedOnArray;
use FireflyIII\Events\TriggeredAuditLog;
use FireflyIII\Events\Model\TransactionGroup\TransactionGroupRequestsAuditLogEntry;
use FireflyIII\Models\Note;
use FireflyIII\Models\RuleAction;
use FireflyIII\Models\TransactionJournal;
@@ -75,7 +75,7 @@ class AppendDescriptionToNotes implements ActionInterface
$after = $note->text;
// event for audit log entry
event(new TriggeredAuditLog($this->action->rule, $object, 'update_notes', $before, $after));
event(new TransactionGroupRequestsAuditLogEntry($this->action->rule, $object, 'update_notes', $before, $after));
$note->save();

View File

@@ -23,7 +23,7 @@ declare(strict_types=1);
namespace FireflyIII\TransactionRules\Actions;
use FireflyIII\Events\TriggeredAuditLog;
use FireflyIII\Events\Model\TransactionGroup\TransactionGroupRequestsAuditLogEntry;
use FireflyIII\Models\Note;
use FireflyIII\Models\RuleAction;
use FireflyIII\Models\TransactionJournal;
@@ -65,7 +65,7 @@ class AppendNotes implements ActionInterface
$object = TransactionJournal::where('user_id', $journal['user_id'])->find($journal['transaction_journal_id']);
Log::debug(sprintf('RuleAction AppendNotes appended "%s" to "%s".', $append, $before));
event(new TriggeredAuditLog($this->action->rule, $object, 'update_notes', $before, $text));
event(new TransactionGroupRequestsAuditLogEntry($this->action->rule, $object, 'update_notes', $before, $text));
return true;
}

View File

@@ -25,7 +25,7 @@ declare(strict_types=1);
namespace FireflyIII\TransactionRules\Actions;
use FireflyIII\Events\Model\Rule\RuleActionFailedOnArray;
use FireflyIII\Events\TriggeredAuditLog;
use FireflyIII\Events\Model\TransactionGroup\TransactionGroupRequestsAuditLogEntry;
use FireflyIII\Models\Note;
use FireflyIII\Models\RuleAction;
use FireflyIII\Models\TransactionJournal;
@@ -76,7 +76,7 @@ class AppendNotesToDescription implements ActionInterface
$object->save();
Log::debug(sprintf('Journal description is updated to "%s".', $object->description));
event(new TriggeredAuditLog($this->action->rule, $object, 'update_description', $before, $object->description));
event(new TransactionGroupRequestsAuditLogEntry($this->action->rule, $object, 'update_description', $before, $object->description));
return true;
}

View File

@@ -24,7 +24,7 @@ declare(strict_types=1);
namespace FireflyIII\TransactionRules\Actions;
use FireflyIII\Events\Model\Rule\RuleActionFailedOnArray;
use FireflyIII\Events\TriggeredAuditLog;
use FireflyIII\Events\Model\TransactionGroup\TransactionGroupRequestsAuditLogEntry;
use FireflyIII\Models\RuleAction;
use FireflyIII\Models\TransactionJournal;
use Illuminate\Support\Facades\DB;
@@ -56,7 +56,7 @@ class ClearBudget implements ActionInterface
DB::table('budget_transaction_journal')->where('transaction_journal_id', '=', $journal['transaction_journal_id'])->delete();
event(new TriggeredAuditLog($this->action->rule, $object, 'clear_budget', $budget->name, null));
event(new TransactionGroupRequestsAuditLogEntry($this->action->rule, $object, 'clear_budget', $budget->name, null));
Log::debug(sprintf('RuleAction ClearBudget removed all budgets from journal #%d.', $journal['transaction_journal_id']));

View File

@@ -24,7 +24,7 @@ declare(strict_types=1);
namespace FireflyIII\TransactionRules\Actions;
use FireflyIII\Events\Model\Rule\RuleActionFailedOnArray;
use FireflyIII\Events\TriggeredAuditLog;
use FireflyIII\Events\Model\TransactionGroup\TransactionGroupRequestsAuditLogEntry;
use FireflyIII\Models\RuleAction;
use FireflyIII\Models\TransactionJournal;
use Illuminate\Support\Facades\DB;
@@ -56,7 +56,7 @@ class ClearCategory implements ActionInterface
DB::table('category_transaction_journal')->where('transaction_journal_id', '=', $journal['transaction_journal_id'])->delete();
event(new TriggeredAuditLog($this->action->rule, $object, 'clear_category', $category->name, null));
event(new TransactionGroupRequestsAuditLogEntry($this->action->rule, $object, 'clear_category', $category->name, null));
Log::debug(sprintf('RuleAction ClearCategory removed all categories from journal #%d.', $journal['transaction_journal_id']));

View File

@@ -24,7 +24,7 @@ declare(strict_types=1);
namespace FireflyIII\TransactionRules\Actions;
use FireflyIII\Events\Model\Rule\RuleActionFailedOnArray;
use FireflyIII\Events\TriggeredAuditLog;
use FireflyIII\Events\Model\TransactionGroup\TransactionGroupRequestsAuditLogEntry;
use FireflyIII\Models\Note;
use FireflyIII\Models\RuleAction;
use FireflyIII\Models\TransactionJournal;
@@ -65,7 +65,7 @@ class ClearNotes implements ActionInterface
;
Log::debug(sprintf('RuleAction ClearNotes removed all notes from journal #%d.', $journal['transaction_journal_id']));
event(new TriggeredAuditLog($this->action->rule, $object, 'clear_notes', $before, null));
event(new TransactionGroupRequestsAuditLogEntry($this->action->rule, $object, 'clear_notes', $before, null));
return true;
}

View File

@@ -27,7 +27,7 @@ namespace FireflyIII\TransactionRules\Actions;
use FireflyIII\Enums\AccountTypeEnum;
use FireflyIII\Enums\TransactionTypeEnum;
use FireflyIII\Events\Model\Rule\RuleActionFailedOnArray;
use FireflyIII\Events\TriggeredAuditLog;
use FireflyIII\Events\Model\TransactionGroup\TransactionGroupRequestsAuditLogEntry;
use FireflyIII\Exceptions\FireflyException;
use FireflyIII\Factory\AccountFactory;
use FireflyIII\Models\Account;
@@ -95,7 +95,7 @@ class ConvertToDeposit implements ActionInterface
}
event(
new TriggeredAuditLog(
new TransactionGroupRequestsAuditLogEntry(
$this->action->rule,
$object,
'update_transaction_type',
@@ -119,7 +119,7 @@ class ConvertToDeposit implements ActionInterface
return false;
}
event(
new TriggeredAuditLog(
new TransactionGroupRequestsAuditLogEntry(
$this->action->rule,
$object,
'update_transaction_type',

View File

@@ -27,7 +27,7 @@ namespace FireflyIII\TransactionRules\Actions;
use FireflyIII\Enums\TransactionTypeEnum;
use FireflyIII\Events\Model\Rule\RuleActionFailedOnArray;
use FireflyIII\Events\Model\Rule\RuleActionFailedOnObject;
use FireflyIII\Events\TriggeredAuditLog;
use FireflyIII\Events\Model\TransactionGroup\TransactionGroupRequestsAuditLogEntry;
use FireflyIII\Exceptions\FireflyException;
use FireflyIII\Models\Account;
use FireflyIII\Models\RuleAction;
@@ -136,7 +136,7 @@ class ConvertToTransfer implements ActionInterface
}
if ($res) {
event(
new TriggeredAuditLog(
new TransactionGroupRequestsAuditLogEntry(
$this->action->rule,
$object,
'update_transaction_type',
@@ -162,7 +162,7 @@ class ConvertToTransfer implements ActionInterface
}
if ($res) {
event(
new TriggeredAuditLog(
new TransactionGroupRequestsAuditLogEntry(
$this->action->rule,
$object,
'update_transaction_type',

View File

@@ -27,7 +27,7 @@ namespace FireflyIII\TransactionRules\Actions;
use FireflyIII\Enums\AccountTypeEnum;
use FireflyIII\Enums\TransactionTypeEnum;
use FireflyIII\Events\Model\Rule\RuleActionFailedOnArray;
use FireflyIII\Events\TriggeredAuditLog;
use FireflyIII\Events\Model\TransactionGroup\TransactionGroupRequestsAuditLogEntry;
use FireflyIII\Exceptions\FireflyException;
use FireflyIII\Factory\AccountFactory;
use FireflyIII\Models\Account;
@@ -97,7 +97,7 @@ class ConvertToWithdrawal implements ActionInterface
return false;
}
event(
new TriggeredAuditLog(
new TransactionGroupRequestsAuditLogEntry(
$this->action->rule,
$object,
'update_transaction_type',
@@ -121,7 +121,7 @@ class ConvertToWithdrawal implements ActionInterface
return false;
}
event(
new TriggeredAuditLog(
new TransactionGroupRequestsAuditLogEntry(
$this->action->rule,
$object,
'update_transaction_type',

View File

@@ -23,7 +23,7 @@ declare(strict_types=1);
namespace FireflyIII\TransactionRules\Actions;
use FireflyIII\Events\TriggeredAuditLog;
use FireflyIII\Events\Model\TransactionGroup\TransactionGroupRequestsAuditLogEntry;
use FireflyIII\Models\RuleAction;
use FireflyIII\Models\TransactionGroup;
use FireflyIII\Models\TransactionJournal;
@@ -60,7 +60,7 @@ class DeleteTransaction implements ActionInterface
$service = app(TransactionGroupDestroyService::class);
$service->destroy($group);
event(new TriggeredAuditLog($this->action->rule, $group, 'delete_group', null, null));
event(new TransactionGroupRequestsAuditLogEntry($this->action->rule, $group, 'delete_group', null, null));
return true;
}
@@ -77,7 +77,7 @@ class DeleteTransaction implements ActionInterface
/** @var JournalDestroyService $service */
$service = app(JournalDestroyService::class);
$service->destroy($object);
event(new TriggeredAuditLog($this->action->rule, $object, 'delete_journal', null, null));
event(new TransactionGroupRequestsAuditLogEntry($this->action->rule, $object, 'delete_journal', null, null));
}
return true;

View File

@@ -25,7 +25,7 @@ namespace FireflyIII\TransactionRules\Actions;
use FireflyIII\Enums\TransactionTypeEnum;
use FireflyIII\Events\Model\Rule\RuleActionFailedOnArray;
use FireflyIII\Events\TriggeredAuditLog;
use FireflyIII\Events\Model\TransactionGroup\TransactionGroupRequestsAuditLogEntry;
use FireflyIII\Models\RuleAction;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\Repositories\Bill\BillRepositoryInterface;
@@ -87,7 +87,7 @@ class LinkToBill implements ActionInterface
/** @var TransactionJournal $object */
$object = TransactionJournal::where('user_id', $journal['user_id'])->find($journal['transaction_journal_id']);
event(new TriggeredAuditLog($this->action->rule, $object, 'set_bill', null, $bill->name));
event(new TransactionGroupRequestsAuditLogEntry($this->action->rule, $object, 'set_bill', null, $bill->name));
return true;
}

View File

@@ -25,7 +25,7 @@ declare(strict_types=1);
namespace FireflyIII\TransactionRules\Actions;
use FireflyIII\Events\Model\Rule\RuleActionFailedOnArray;
use FireflyIII\Events\TriggeredAuditLog;
use FireflyIII\Events\Model\TransactionGroup\TransactionGroupRequestsAuditLogEntry;
use FireflyIII\Models\Note;
use FireflyIII\Models\RuleAction;
use FireflyIII\Models\TransactionJournal;
@@ -74,8 +74,8 @@ class MoveDescriptionToNotes implements ActionInterface
}
$after = $note->text;
event(new TriggeredAuditLog($this->action->rule, $object, 'update_description', $beforeDescription, $object->description));
event(new TriggeredAuditLog($this->action->rule, $object, 'update_notes', $before, $after));
event(new TransactionGroupRequestsAuditLogEntry($this->action->rule, $object, 'update_description', $beforeDescription, $object->description));
event(new TransactionGroupRequestsAuditLogEntry($this->action->rule, $object, 'update_notes', $before, $after));
$note->save();
$object->save();

View File

@@ -25,7 +25,7 @@ declare(strict_types=1);
namespace FireflyIII\TransactionRules\Actions;
use FireflyIII\Events\Model\Rule\RuleActionFailedOnArray;
use FireflyIII\Events\TriggeredAuditLog;
use FireflyIII\Events\Model\TransactionGroup\TransactionGroupRequestsAuditLogEntry;
use FireflyIII\Models\RuleAction;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\Support\Request\ConvertsDataTypes;
@@ -80,8 +80,8 @@ class MoveNotesToDescription implements ActionInterface
$object->save();
$note->delete();
event(new TriggeredAuditLog($this->action->rule, $object, 'update_description', $before, $object->description));
event(new TriggeredAuditLog($this->action->rule, $object, 'clear_notes', $beforeNote, null));
event(new TransactionGroupRequestsAuditLogEntry($this->action->rule, $object, 'update_description', $before, $object->description));
event(new TransactionGroupRequestsAuditLogEntry($this->action->rule, $object, 'clear_notes', $beforeNote, null));
return true;
}

View File

@@ -23,7 +23,7 @@ declare(strict_types=1);
namespace FireflyIII\TransactionRules\Actions;
use FireflyIII\Events\TriggeredAuditLog;
use FireflyIII\Events\Model\TransactionGroup\TransactionGroupRequestsAuditLogEntry;
use FireflyIII\Models\RuleAction;
use FireflyIII\Models\TransactionJournal;
use Illuminate\Support\Facades\DB;
@@ -56,7 +56,7 @@ class PrependDescription implements ActionInterface
$object = TransactionJournal::where('user_id', $journal['user_id'])->find($journal['transaction_journal_id']);
// audit log
event(new TriggeredAuditLog($this->action->rule, $object, 'update_description', $before, $after));
event(new TransactionGroupRequestsAuditLogEntry($this->action->rule, $object, 'update_description', $before, $after));
return true;
}

View File

@@ -23,7 +23,7 @@ declare(strict_types=1);
namespace FireflyIII\TransactionRules\Actions;
use FireflyIII\Events\TriggeredAuditLog;
use FireflyIII\Events\Model\TransactionGroup\TransactionGroupRequestsAuditLogEntry;
use FireflyIII\Models\Note;
use FireflyIII\Models\RuleAction;
use FireflyIII\Models\TransactionJournal;
@@ -63,7 +63,7 @@ class PrependNotes implements ActionInterface
$object = TransactionJournal::where('user_id', $journal['user_id'])->find($journal['transaction_journal_id']);
// audit log
event(new TriggeredAuditLog($this->action->rule, $object, 'update_notes', $before, $text));
event(new TransactionGroupRequestsAuditLogEntry($this->action->rule, $object, 'update_notes', $before, $text));
return true;
}

View File

@@ -24,7 +24,7 @@ declare(strict_types=1);
namespace FireflyIII\TransactionRules\Actions;
use FireflyIII\Events\Model\Rule\RuleActionFailedOnArray;
use FireflyIII\Events\TriggeredAuditLog;
use FireflyIII\Events\Model\TransactionGroup\TransactionGroupRequestsAuditLogEntry;
use FireflyIII\Models\RuleAction;
use FireflyIII\Models\TransactionJournal;
use Illuminate\Support\Facades\DB;
@@ -58,7 +58,7 @@ class RemoveAllTags implements ActionInterface
$object = TransactionJournal::where('user_id', $journal['user_id'])->find($journal['transaction_journal_id']);
// audit log
event(new TriggeredAuditLog($this->action->rule, $object, 'clear_all_tags', null, null));
event(new TransactionGroupRequestsAuditLogEntry($this->action->rule, $object, 'clear_all_tags', null, null));
return true;
}

View File

@@ -24,7 +24,7 @@ declare(strict_types=1);
namespace FireflyIII\TransactionRules\Actions;
use FireflyIII\Events\Model\Rule\RuleActionFailedOnArray;
use FireflyIII\Events\TriggeredAuditLog;
use FireflyIII\Events\Model\TransactionGroup\TransactionGroupRequestsAuditLogEntry;
use FireflyIII\Models\RuleAction;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\User;
@@ -87,7 +87,7 @@ class RemoveTag implements ActionInterface
/** @var TransactionJournal $object */
$object = TransactionJournal::where('user_id', $journal['user_id'])->find($journal['transaction_journal_id']);
event(new TriggeredAuditLog($this->action->rule, $object, 'clear_tag', $tag->tag, null));
event(new TransactionGroupRequestsAuditLogEntry($this->action->rule, $object, 'clear_tag', $tag->tag, null));
return true;
}

View File

@@ -25,7 +25,7 @@ declare(strict_types=1);
namespace FireflyIII\TransactionRules\Actions;
use FireflyIII\Events\Model\Rule\RuleActionFailedOnArray;
use FireflyIII\Events\TriggeredAuditLog;
use FireflyIII\Events\Model\TransactionGroup\TransactionGroupRequestsAuditLogEntry;
use FireflyIII\Models\RuleAction;
use FireflyIII\Models\Transaction;
use FireflyIII\Models\TransactionJournal;
@@ -79,7 +79,7 @@ class SetAmount implements ActionInterface
// event for audit log entry
if (0 !== bccomp($journal['amount'], $value)) {
event(
new TriggeredAuditLog(
new TransactionGroupRequestsAuditLogEntry(
$this->action->rule,
$object,
'update_amount',

View File

@@ -25,7 +25,7 @@ namespace FireflyIII\TransactionRules\Actions;
use FireflyIII\Enums\TransactionTypeEnum;
use FireflyIII\Events\Model\Rule\RuleActionFailedOnArray;
use FireflyIII\Events\TriggeredAuditLog;
use FireflyIII\Events\Model\TransactionGroup\TransactionGroupRequestsAuditLogEntry;
use FireflyIII\Models\RuleAction;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\User;
@@ -103,7 +103,7 @@ class SetBudget implements ActionInterface
/** @var TransactionJournal $object */
$object = TransactionJournal::where('user_id', $journal['user_id'])->find($journal['transaction_journal_id']);
event(new TriggeredAuditLog($this->action->rule, $object, 'set_budget', $oldBudgetName, $budget->name));
event(new TransactionGroupRequestsAuditLogEntry($this->action->rule, $object, 'set_budget', $oldBudgetName, $budget->name));
return true;
}

View File

@@ -24,7 +24,7 @@ declare(strict_types=1);
namespace FireflyIII\TransactionRules\Actions;
use FireflyIII\Events\Model\Rule\RuleActionFailedOnArray;
use FireflyIII\Events\TriggeredAuditLog;
use FireflyIII\Events\Model\TransactionGroup\TransactionGroupRequestsAuditLogEntry;
use FireflyIII\Factory\CategoryFactory;
use FireflyIII\Models\RuleAction;
use FireflyIII\Models\TransactionJournal;
@@ -97,7 +97,7 @@ class SetCategory implements ActionInterface
/** @var TransactionJournal $object */
$object = TransactionJournal::where('user_id', $journal['user_id'])->find($journal['transaction_journal_id']);
event(new TriggeredAuditLog($this->action->rule, $object, 'set_category', $oldCategoryName, $category->name));
event(new TransactionGroupRequestsAuditLogEntry($this->action->rule, $object, 'set_category', $oldCategoryName, $category->name));
return true;
}

View File

@@ -23,7 +23,7 @@ declare(strict_types=1);
namespace FireflyIII\TransactionRules\Actions;
use FireflyIII\Events\TriggeredAuditLog;
use FireflyIII\Events\Model\TransactionGroup\TransactionGroupRequestsAuditLogEntry;
use FireflyIII\Models\RuleAction;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\TransactionRules\Traits\RefreshNotesTrait;
@@ -70,7 +70,7 @@ class SetDescription implements ActionInterface
$after
));
$object->refresh();
event(new TriggeredAuditLog($this->action->rule, $object, 'update_description', $before, $after));
event(new TransactionGroupRequestsAuditLogEntry($this->action->rule, $object, 'update_description', $before, $after));
return true;
}

View File

@@ -25,7 +25,7 @@ namespace FireflyIII\TransactionRules\Actions;
use FireflyIII\Enums\TransactionTypeEnum;
use FireflyIII\Events\Model\Rule\RuleActionFailedOnArray;
use FireflyIII\Events\TriggeredAuditLog;
use FireflyIII\Events\Model\TransactionGroup\TransactionGroupRequestsAuditLogEntry;
use FireflyIII\Models\Account;
use FireflyIII\Models\RuleAction;
use FireflyIII\Models\Transaction;
@@ -121,7 +121,7 @@ class SetDestinationAccount implements ActionInterface
Log::debug(sprintf('New destination account is #%d ("%s").', $newAccount->id, $newAccount->name));
event(new TriggeredAuditLog($this->action->rule, $object, 'set_destination', null, $newAccount->name));
event(new TransactionGroupRequestsAuditLogEntry($this->action->rule, $object, 'set_destination', null, $newAccount->name));
// update destination transaction with new destination account:
DB::table('transactions')

View File

@@ -26,7 +26,7 @@ namespace FireflyIII\TransactionRules\Actions;
use FireflyIII\Enums\TransactionTypeEnum;
use FireflyIII\Events\Model\Rule\RuleActionFailedOnArray;
use FireflyIII\Events\TriggeredAuditLog;
use FireflyIII\Events\Model\TransactionGroup\TransactionGroupRequestsAuditLogEntry;
use FireflyIII\Models\RuleAction;
use FireflyIII\Models\Transaction;
use FireflyIII\Models\TransactionJournal;
@@ -102,7 +102,7 @@ class SetDestinationToCashAccount implements ActionInterface
return false;
}
event(new TriggeredAuditLog($this->action->rule, $object, 'set_destination', null, $cashAccount->name));
event(new TransactionGroupRequestsAuditLogEntry($this->action->rule, $object, 'set_destination', null, $cashAccount->name));
// update destination transaction with new destination account:
DB::table('transactions')

View File

@@ -23,7 +23,7 @@ declare(strict_types=1);
namespace FireflyIII\TransactionRules\Actions;
use FireflyIII\Events\TriggeredAuditLog;
use FireflyIII\Events\Model\TransactionGroup\TransactionGroupRequestsAuditLogEntry;
use FireflyIII\Models\Note;
use FireflyIII\Models\RuleAction;
use FireflyIII\Models\TransactionJournal;
@@ -65,7 +65,7 @@ class SetNotes implements ActionInterface
/** @var TransactionJournal $object */
$object = TransactionJournal::where('user_id', $journal['user_id'])->find($journal['transaction_journal_id']);
event(new TriggeredAuditLog($this->action->rule, $object, 'update_notes', $oldNotes, $newNotes));
event(new TransactionGroupRequestsAuditLogEntry($this->action->rule, $object, 'update_notes', $oldNotes, $newNotes));
return true;
}

View File

@@ -25,7 +25,7 @@ namespace FireflyIII\TransactionRules\Actions;
use FireflyIII\Enums\TransactionTypeEnum;
use FireflyIII\Events\Model\Rule\RuleActionFailedOnArray;
use FireflyIII\Events\TriggeredAuditLog;
use FireflyIII\Events\Model\TransactionGroup\TransactionGroupRequestsAuditLogEntry;
use FireflyIII\Models\Account;
use FireflyIII\Models\RuleAction;
use FireflyIII\Models\Transaction;
@@ -119,7 +119,7 @@ class SetSourceAccount implements ActionInterface
->update(['account_id' => $newAccount->id])
;
event(new TriggeredAuditLog($this->action->rule, $object, 'set_source', null, $newAccount->name));
event(new TransactionGroupRequestsAuditLogEntry($this->action->rule, $object, 'set_source', null, $newAccount->name));
Log::debug(sprintf('Updated journal #%d (group #%d) and gave it new source account ID.', $object->id, $object->transaction_group_id));

View File

@@ -26,7 +26,7 @@ namespace FireflyIII\TransactionRules\Actions;
use FireflyIII\Enums\TransactionTypeEnum;
use FireflyIII\Events\Model\Rule\RuleActionFailedOnArray;
use FireflyIII\Events\TriggeredAuditLog;
use FireflyIII\Events\Model\TransactionGroup\TransactionGroupRequestsAuditLogEntry;
use FireflyIII\Models\RuleAction;
use FireflyIII\Models\Transaction;
use FireflyIII\Models\TransactionJournal;
@@ -102,7 +102,7 @@ class SetSourceToCashAccount implements ActionInterface
return false;
}
event(new TriggeredAuditLog($this->action->rule, $object, 'set_source', null, $cashAccount->name));
event(new TransactionGroupRequestsAuditLogEntry($this->action->rule, $object, 'set_source', null, $cashAccount->name));
// update destination transaction with new destination account:
DB::table('transactions')

View File

@@ -26,7 +26,7 @@ namespace FireflyIII\TransactionRules\Actions;
use FireflyIII\Enums\TransactionTypeEnum;
use FireflyIII\Events\Model\Rule\RuleActionFailedOnArray;
use FireflyIII\Events\TriggeredAuditLog;
use FireflyIII\Events\Model\TransactionGroup\TransactionGroupRequestsAuditLogEntry;
use FireflyIII\Models\RuleAction;
use FireflyIII\Models\Transaction;
use FireflyIII\Models\TransactionJournal;
@@ -97,7 +97,7 @@ class SwitchAccounts implements ActionInterface
$sourceTransaction->save();
$destTransaction->save();
event(new TriggeredAuditLog($this->action->rule, $object, 'switch_accounts', $sourceAccountId, $destinationAccountId));
event(new TransactionGroupRequestsAuditLogEntry($this->action->rule, $object, 'switch_accounts', $sourceAccountId, $destinationAccountId));
return true;
}

View File

@@ -25,7 +25,7 @@ declare(strict_types=1);
namespace FireflyIII\TransactionRules\Actions;
use FireflyIII\Events\Model\Rule\RuleActionFailedOnArray;
use FireflyIII\Events\TriggeredAuditLog;
use FireflyIII\Events\Model\TransactionGroup\TransactionGroupRequestsAuditLogEntry;
use FireflyIII\Models\Account;
use FireflyIII\Models\PiggyBank;
use FireflyIII\Models\RuleAction;
@@ -94,7 +94,7 @@ class UpdatePiggyBank implements ActionInterface
if ($this->isConnected($piggyBank, $accounts['source']) && !$this->isConnected($piggyBank, $accounts['destination'])) {
Log::debug('Piggy bank account is linked to source, so remove amount from piggy bank.');
$this->removeAmount($piggyBank, $journal, $journalObj, $accounts['source'], $destination->amount);
event(new TriggeredAuditLog($this->action->rule, $journalObj, 'remove_from_piggy', null, [
event(new TransactionGroupRequestsAuditLogEntry($this->action->rule, $journalObj, 'remove_from_piggy', null, [
'currency_symbol' => $journalObj->transactionCurrency->symbol,
'decimal_places' => $journalObj->transactionCurrency->decimal_places,
'amount' => $destination->amount,
@@ -109,7 +109,7 @@ class UpdatePiggyBank implements ActionInterface
Log::debug('Piggy bank account is linked to source, so add amount to piggy bank.');
$this->addAmount($piggyBank, $journal, $journalObj, $accounts['destination'], $destination->amount);
event(new TriggeredAuditLog($this->action->rule, $journalObj, 'add_to_piggy', null, [
event(new TransactionGroupRequestsAuditLogEntry($this->action->rule, $journalObj, 'add_to_piggy', null, [
'currency_symbol' => $journalObj->transactionCurrency->symbol,
'decimal_places' => $journalObj->transactionCurrency->decimal_places,
'amount' => $destination->amount,

32
composer.lock generated
View File

@@ -9840,16 +9840,16 @@
},
{
"name": "twig/twig",
"version": "v3.22.2",
"version": "v3.23.0",
"source": {
"type": "git",
"url": "https://github.com/twigphp/Twig.git",
"reference": "946ddeafa3c9f4ce279d1f34051af041db0e16f2"
"reference": "a64dc5d2cc7d6cafb9347f6cd802d0d06d0351c9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/946ddeafa3c9f4ce279d1f34051af041db0e16f2",
"reference": "946ddeafa3c9f4ce279d1f34051af041db0e16f2",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/a64dc5d2cc7d6cafb9347f6cd802d0d06d0351c9",
"reference": "a64dc5d2cc7d6cafb9347f6cd802d0d06d0351c9",
"shasum": ""
},
"require": {
@@ -9903,7 +9903,7 @@
],
"support": {
"issues": "https://github.com/twigphp/Twig/issues",
"source": "https://github.com/twigphp/Twig/tree/v3.22.2"
"source": "https://github.com/twigphp/Twig/tree/v3.23.0"
},
"funding": [
{
@@ -9915,7 +9915,7 @@
"type": "tidelift"
}
],
"time": "2025-12-14T11:28:47+00:00"
"time": "2026-01-23T21:00:41+00:00"
},
{
"name": "vlucas/phpdotenv",
@@ -11303,11 +11303,11 @@
},
{
"name": "phpstan/phpstan",
"version": "2.1.36",
"version": "2.1.37",
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/2132e5e2361d11d40af4c17faa16f043269a4cf3",
"reference": "2132e5e2361d11d40af4c17faa16f043269a4cf3",
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/28cd424c5ea984128c95cfa7ea658808e8954e49",
"reference": "28cd424c5ea984128c95cfa7ea658808e8954e49",
"shasum": ""
},
"require": {
@@ -11352,7 +11352,7 @@
"type": "github"
}
],
"time": "2026-01-21T13:58:26+00:00"
"time": "2026-01-24T08:21:55+00:00"
},
{
"name": "phpstan/phpstan-deprecation-rules",
@@ -12019,16 +12019,16 @@
},
{
"name": "sebastian/comparator",
"version": "7.1.3",
"version": "7.1.4",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/comparator.git",
"reference": "dc904b4bb3ab070865fa4068cd84f3da8b945148"
"reference": "6a7de5df2e094f9a80b40a522391a7e6022df5f6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/dc904b4bb3ab070865fa4068cd84f3da8b945148",
"reference": "dc904b4bb3ab070865fa4068cd84f3da8b945148",
"url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/6a7de5df2e094f9a80b40a522391a7e6022df5f6",
"reference": "6a7de5df2e094f9a80b40a522391a7e6022df5f6",
"shasum": ""
},
"require": {
@@ -12087,7 +12087,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/comparator/issues",
"security": "https://github.com/sebastianbergmann/comparator/security/policy",
"source": "https://github.com/sebastianbergmann/comparator/tree/7.1.3"
"source": "https://github.com/sebastianbergmann/comparator/tree/7.1.4"
},
"funding": [
{
@@ -12107,7 +12107,7 @@
"type": "tidelift"
}
],
"time": "2025-08-20T11:27:00+00:00"
"time": "2026-01-24T09:28:48+00:00"
},
{
"name": "sebastian/complexity",

View File

@@ -78,8 +78,8 @@ return [
'running_balance_column' => (bool)envNonEmpty('USE_RUNNING_BALANCE', true), // this is only the default value, is not used.
// see cer.php for exchange rates feature flag.
],
'version' => 'develop/2026-01-23',
'build_time' => 1769198887,
'version' => 'develop/2026-01-24',
'build_time' => 1769259315,
'api_version' => '2.1.0', // field is no longer used.
'db_version' => 28, // field is no longer used.