mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-10-14 00:04:24 +00:00
🤖 Auto commit for release 'develop' on 2025-08-09
This commit is contained in:
@@ -5,7 +5,6 @@ declare(strict_types=1);
|
|||||||
namespace FireflyIII\Events\Model\Bill;
|
namespace FireflyIII\Events\Model\Bill;
|
||||||
|
|
||||||
use FireflyIII\Events\Event;
|
use FireflyIII\Events\Event;
|
||||||
use FireflyIII\Models\Bill;
|
|
||||||
use FireflyIII\User;
|
use FireflyIII\User;
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
|
@@ -43,17 +43,18 @@ class BillEventHandler
|
|||||||
{
|
{
|
||||||
Log::debug(sprintf('Now in %s', __METHOD__));
|
Log::debug(sprintf('Now in %s', __METHOD__));
|
||||||
// make sure user does not get the warning twice.
|
// make sure user does not get the warning twice.
|
||||||
$overdue = $event->overdue;
|
$overdue = $event->overdue;
|
||||||
$user = $event->user;
|
$user = $event->user;
|
||||||
$toBeWarned = [];
|
$toBeWarned = [];
|
||||||
Log::debug(sprintf('%d bills to warn about.', count($overdue)));
|
Log::debug(sprintf('%d bills to warn about.', count($overdue)));
|
||||||
foreach ($overdue as $item) {
|
foreach ($overdue as $item) {
|
||||||
/** @var Bill $bill */
|
/** @var Bill $bill */
|
||||||
$bill = $item['bill'];
|
$bill = $item['bill'];
|
||||||
$key = sprintf('bill_overdue_%s_%s', $bill->id, substr(hash('sha256', json_encode($item['dates']['pay_dates'], JSON_THROW_ON_ERROR)), 0, 10));
|
$key = sprintf('bill_overdue_%s_%s', $bill->id, substr(hash('sha256', json_encode($item['dates']['pay_dates'], JSON_THROW_ON_ERROR)), 0, 10));
|
||||||
$pref = Preferences::getForUser($bill->user, $key, false);
|
$pref = Preferences::getForUser($bill->user, $key, false);
|
||||||
if (true === $pref->data) {
|
if (true === $pref->data) {
|
||||||
Log::debug(sprintf('User #%d has already been warned about overdue subscription #%d.', $bill->user->id, $bill->id));
|
Log::debug(sprintf('User #%d has already been warned about overdue subscription #%d.', $bill->user->id, $bill->id));
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
$toBeWarned[] = $item;
|
$toBeWarned[] = $item;
|
||||||
@@ -65,11 +66,13 @@ class BillEventHandler
|
|||||||
$sendNotification = Preferences::getForUser($user, 'notification_bill_reminder', true)->data;
|
$sendNotification = Preferences::getForUser($user, 'notification_bill_reminder', true)->data;
|
||||||
if (false === $sendNotification) {
|
if (false === $sendNotification) {
|
||||||
Log::debug('User has disabled bill reminders.');
|
Log::debug('User has disabled bill reminders.');
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Log::debug(sprintf('Will warning about %d overdue subscription(s).', count($toBeWarned)));
|
Log::debug(sprintf('Will warning about %d overdue subscription(s).', count($toBeWarned)));
|
||||||
if (0 === count($toBeWarned)) {
|
if (0 === count($toBeWarned)) {
|
||||||
Log::debug('No overdue subscriptions to warn about.');
|
Log::debug('No overdue subscriptions to warn about.');
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
foreach ($toBeWarned as $item) {
|
foreach ($toBeWarned as $item) {
|
||||||
@@ -79,6 +82,7 @@ class BillEventHandler
|
|||||||
Preferences::setForUser($bill->user, $key, true);
|
Preferences::setForUser($bill->user, $key, true);
|
||||||
}
|
}
|
||||||
Log::warning('should hit this ONCE');
|
Log::warning('should hit this ONCE');
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Notification::send($user, new SubscriptionsOverdueReminder($overdue));
|
Notification::send($user, new SubscriptionsOverdueReminder($overdue));
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
|
@@ -56,12 +56,12 @@ class WarnAboutBills implements ShouldQueue
|
|||||||
*/
|
*/
|
||||||
public function __construct(?Carbon $date)
|
public function __construct(?Carbon $date)
|
||||||
{
|
{
|
||||||
$newDate = new Carbon();
|
$newDate = new Carbon();
|
||||||
$newDate->startOfDay();
|
$newDate->startOfDay();
|
||||||
$this->date = $newDate;
|
$this->date = $newDate;
|
||||||
|
|
||||||
if ($date instanceof Carbon) {
|
if ($date instanceof Carbon) {
|
||||||
$newDate = clone $date;
|
$newDate = clone $date;
|
||||||
$newDate->startOfDay();
|
$newDate->startOfDay();
|
||||||
$this->date = $newDate;
|
$this->date = $newDate;
|
||||||
}
|
}
|
||||||
@@ -80,6 +80,7 @@ class WarnAboutBills implements ShouldQueue
|
|||||||
foreach (User::all() as $user) {
|
foreach (User::all() as $user) {
|
||||||
$bills = $user->bills()->where('active', true)->get();
|
$bills = $user->bills()->where('active', true)->get();
|
||||||
$overdue = [];
|
$overdue = [];
|
||||||
|
|
||||||
/** @var Bill $bill */
|
/** @var Bill $bill */
|
||||||
foreach ($bills as $bill) {
|
foreach ($bills as $bill) {
|
||||||
Log::debug(sprintf('Now checking bill #%d ("%s")', $bill->id, $bill->name));
|
Log::debug(sprintf('Now checking bill #%d ("%s")', $bill->id, $bill->name));
|
||||||
@@ -150,7 +151,7 @@ class WarnAboutBills implements ShouldQueue
|
|||||||
|
|
||||||
public function setDate(Carbon $date): void
|
public function setDate(Carbon $date): void
|
||||||
{
|
{
|
||||||
$newDate = clone $date;
|
$newDate = clone $date;
|
||||||
$newDate->startOfDay();
|
$newDate->startOfDay();
|
||||||
$this->date = $newDate;
|
$this->date = $newDate;
|
||||||
}
|
}
|
||||||
@@ -170,7 +171,7 @@ class WarnAboutBills implements ShouldQueue
|
|||||||
$enrichment->setUser($bill->user);
|
$enrichment->setUser($bill->user);
|
||||||
$enrichment->setStart($start);
|
$enrichment->setStart($start);
|
||||||
$enrichment->setEnd($end);
|
$enrichment->setEnd($end);
|
||||||
$single = $enrichment->enrichSingle($bill);
|
$single = $enrichment->enrichSingle($bill);
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'pay_dates' => $single->meta['pay_dates'] ?? [],
|
'pay_dates' => $single->meta['pay_dates'] ?? [],
|
||||||
@@ -180,7 +181,7 @@ class WarnAboutBills implements ShouldQueue
|
|||||||
|
|
||||||
private function needsOverdueAlert(array $dates): bool
|
private function needsOverdueAlert(array $dates): bool
|
||||||
{
|
{
|
||||||
$count = count($dates['pay_dates']) - count($dates['paid_dates']);
|
$count = count($dates['pay_dates']) - count($dates['paid_dates']);
|
||||||
if (0 === $count || 0 === count($dates['pay_dates'])) {
|
if (0 === $count || 0 === count($dates['pay_dates'])) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -188,7 +189,7 @@ class WarnAboutBills implements ShouldQueue
|
|||||||
$earliest = new Carbon($dates['pay_dates'][0]);
|
$earliest = new Carbon($dates['pay_dates'][0]);
|
||||||
$earliest->startOfDay();
|
$earliest->startOfDay();
|
||||||
Log::debug(sprintf('Earliest expected pay date is %s', $earliest->toAtomString()));
|
Log::debug(sprintf('Earliest expected pay date is %s', $earliest->toAtomString()));
|
||||||
$diff = $earliest->diffInDays($this->date);
|
$diff = $earliest->diffInDays($this->date);
|
||||||
Log::debug(sprintf('Difference in days is %s', $diff));
|
Log::debug(sprintf('Difference in days is %s', $diff));
|
||||||
if ($diff < 2) {
|
if ($diff < 2) {
|
||||||
return false;
|
return false;
|
||||||
|
@@ -18,9 +18,7 @@ class SubscriptionsOverdueReminder extends Notification
|
|||||||
{
|
{
|
||||||
use Queueable;
|
use Queueable;
|
||||||
|
|
||||||
public function __construct(private array $overdue)
|
public function __construct(private array $overdue) {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @SuppressWarnings("PHPMD.UnusedFormalParameter")
|
* @SuppressWarnings("PHPMD.UnusedFormalParameter")
|
||||||
@@ -37,7 +35,7 @@ class SubscriptionsOverdueReminder extends Notification
|
|||||||
public function toMail(User $notifiable): MailMessage
|
public function toMail(User $notifiable): MailMessage
|
||||||
{
|
{
|
||||||
// format the data
|
// format the data
|
||||||
$info = [];
|
$info = [];
|
||||||
$count = 0;
|
$count = 0;
|
||||||
foreach ($this->overdue as $item) {
|
foreach ($this->overdue as $item) {
|
||||||
$current = [
|
$current = [
|
||||||
@@ -46,13 +44,17 @@ class SubscriptionsOverdueReminder extends Notification
|
|||||||
$current['pay_dates'] = array_map(
|
$current['pay_dates'] = array_map(
|
||||||
static function (string $date): string {
|
static function (string $date): string {
|
||||||
return new Carbon($date)->isoFormat((string)trans('config.month_and_day_moment_js'));
|
return new Carbon($date)->isoFormat((string)trans('config.month_and_day_moment_js'));
|
||||||
}, $item['dates']['pay_dates']);
|
},
|
||||||
|
$item['dates']['pay_dates']
|
||||||
|
);
|
||||||
$info[] = $current;
|
$info[] = $current;
|
||||||
$count++;
|
++$count;
|
||||||
}
|
}
|
||||||
|
|
||||||
return new MailMessage()
|
return new MailMessage()
|
||||||
->markdown('emails.subscriptions-overdue-warning', ['info' => $info,'count' => $count])
|
->markdown('emails.subscriptions-overdue-warning', ['info' => $info, 'count' => $count])
|
||||||
->subject($this->getSubject());
|
->subject($this->getSubject())
|
||||||
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function getSubject(): string
|
private function getSubject(): string
|
||||||
@@ -60,6 +62,7 @@ class SubscriptionsOverdueReminder extends Notification
|
|||||||
if (count($this->overdue) > 1) {
|
if (count($this->overdue) > 1) {
|
||||||
return (string)trans('email.subscriptions_overdue_subject_multi', ['count' => count($this->overdue)]);
|
return (string)trans('email.subscriptions_overdue_subject_multi', ['count' => count($this->overdue)]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (string)trans('email.subscriptions_overdue_subject_single');
|
return (string)trans('email.subscriptions_overdue_subject_single');
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -80,7 +83,8 @@ class SubscriptionsOverdueReminder extends Notification
|
|||||||
public function toPushover(User $notifiable): PushoverMessage
|
public function toPushover(User $notifiable): PushoverMessage
|
||||||
{
|
{
|
||||||
return PushoverMessage::create((string)trans('email.bill_warning_please_action'))
|
return PushoverMessage::create((string)trans('email.bill_warning_please_action'))
|
||||||
->title($this->getSubject());
|
->title($this->getSubject())
|
||||||
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -96,7 +100,8 @@ class SubscriptionsOverdueReminder extends Notification
|
|||||||
->attachment(static function ($attachment) use ($bill, $url): void {
|
->attachment(static function ($attachment) use ($bill, $url): void {
|
||||||
$attachment->title((string)trans('firefly.visit_bill', ['name' => $bill->name]), $url);
|
$attachment->title((string)trans('firefly.visit_bill', ['name' => $bill->name]), $url);
|
||||||
})
|
})
|
||||||
->content($this->getSubject());
|
->content($this->getSubject())
|
||||||
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -115,92 +115,92 @@ class EventServiceProvider extends ServiceProvider
|
|||||||
protected $listen
|
protected $listen
|
||||||
= [
|
= [
|
||||||
// is a User related event.
|
// is a User related event.
|
||||||
RegisteredUser::class => [
|
RegisteredUser::class => [
|
||||||
'FireflyIII\Handlers\Events\UserEventHandler@sendRegistrationMail',
|
'FireflyIII\Handlers\Events\UserEventHandler@sendRegistrationMail',
|
||||||
'FireflyIII\Handlers\Events\UserEventHandler@sendAdminRegistrationNotification',
|
'FireflyIII\Handlers\Events\UserEventHandler@sendAdminRegistrationNotification',
|
||||||
'FireflyIII\Handlers\Events\UserEventHandler@attachUserRole',
|
'FireflyIII\Handlers\Events\UserEventHandler@attachUserRole',
|
||||||
'FireflyIII\Handlers\Events\UserEventHandler@createGroupMembership',
|
'FireflyIII\Handlers\Events\UserEventHandler@createGroupMembership',
|
||||||
'FireflyIII\Handlers\Events\UserEventHandler@createExchangeRates',
|
'FireflyIII\Handlers\Events\UserEventHandler@createExchangeRates',
|
||||||
],
|
],
|
||||||
UserAttemptedLogin::class => [
|
UserAttemptedLogin::class => [
|
||||||
'FireflyIII\Handlers\Events\UserEventHandler@sendLoginAttemptNotification',
|
'FireflyIII\Handlers\Events\UserEventHandler@sendLoginAttemptNotification',
|
||||||
],
|
],
|
||||||
// is a User related event.
|
// is a User related event.
|
||||||
Login::class => [
|
Login::class => [
|
||||||
'FireflyIII\Handlers\Events\UserEventHandler@checkSingleUserIsAdmin',
|
'FireflyIII\Handlers\Events\UserEventHandler@checkSingleUserIsAdmin',
|
||||||
'FireflyIII\Handlers\Events\UserEventHandler@demoUserBackToEnglish',
|
'FireflyIII\Handlers\Events\UserEventHandler@demoUserBackToEnglish',
|
||||||
],
|
],
|
||||||
ActuallyLoggedIn::class => [
|
ActuallyLoggedIn::class => [
|
||||||
'FireflyIII\Handlers\Events\UserEventHandler@storeUserIPAddress',
|
'FireflyIII\Handlers\Events\UserEventHandler@storeUserIPAddress',
|
||||||
],
|
],
|
||||||
DetectedNewIPAddress::class => [
|
DetectedNewIPAddress::class => [
|
||||||
'FireflyIII\Handlers\Events\UserEventHandler@notifyNewIPAddress',
|
'FireflyIII\Handlers\Events\UserEventHandler@notifyNewIPAddress',
|
||||||
],
|
],
|
||||||
RequestedVersionCheckStatus::class => [
|
RequestedVersionCheckStatus::class => [
|
||||||
'FireflyIII\Handlers\Events\VersionCheckEventHandler@checkForUpdates',
|
'FireflyIII\Handlers\Events\VersionCheckEventHandler@checkForUpdates',
|
||||||
],
|
],
|
||||||
RequestedReportOnJournals::class => [
|
RequestedReportOnJournals::class => [
|
||||||
'FireflyIII\Handlers\Events\AutomationHandler@reportJournals',
|
'FireflyIII\Handlers\Events\AutomationHandler@reportJournals',
|
||||||
],
|
],
|
||||||
|
|
||||||
// is a User related event.
|
// is a User related event.
|
||||||
RequestedNewPassword::class => [
|
RequestedNewPassword::class => [
|
||||||
'FireflyIII\Handlers\Events\UserEventHandler@sendNewPassword',
|
'FireflyIII\Handlers\Events\UserEventHandler@sendNewPassword',
|
||||||
],
|
],
|
||||||
UserTestNotificationChannel::class => [
|
UserTestNotificationChannel::class => [
|
||||||
'FireflyIII\Handlers\Events\UserEventHandler@sendTestNotification',
|
'FireflyIII\Handlers\Events\UserEventHandler@sendTestNotification',
|
||||||
],
|
],
|
||||||
// is a User related event.
|
// is a User related event.
|
||||||
UserChangedEmail::class => [
|
UserChangedEmail::class => [
|
||||||
'FireflyIII\Handlers\Events\UserEventHandler@sendEmailChangeConfirmMail',
|
'FireflyIII\Handlers\Events\UserEventHandler@sendEmailChangeConfirmMail',
|
||||||
'FireflyIII\Handlers\Events\UserEventHandler@sendEmailChangeUndoMail',
|
'FireflyIII\Handlers\Events\UserEventHandler@sendEmailChangeUndoMail',
|
||||||
],
|
],
|
||||||
// admin related
|
// admin related
|
||||||
OwnerTestNotificationChannel::class => [
|
OwnerTestNotificationChannel::class => [
|
||||||
'FireflyIII\Handlers\Events\AdminEventHandler@sendTestNotification',
|
'FireflyIII\Handlers\Events\AdminEventHandler@sendTestNotification',
|
||||||
],
|
],
|
||||||
NewVersionAvailable::class => [
|
NewVersionAvailable::class => [
|
||||||
'FireflyIII\Handlers\Events\AdminEventHandler@sendNewVersion',
|
'FireflyIII\Handlers\Events\AdminEventHandler@sendNewVersion',
|
||||||
],
|
],
|
||||||
InvitationCreated::class => [
|
InvitationCreated::class => [
|
||||||
'FireflyIII\Handlers\Events\AdminEventHandler@sendInvitationNotification',
|
'FireflyIII\Handlers\Events\AdminEventHandler@sendInvitationNotification',
|
||||||
'FireflyIII\Handlers\Events\UserEventHandler@sendRegistrationInvite',
|
'FireflyIII\Handlers\Events\UserEventHandler@sendRegistrationInvite',
|
||||||
],
|
],
|
||||||
UnknownUserAttemptedLogin::class => [
|
UnknownUserAttemptedLogin::class => [
|
||||||
'FireflyIII\Handlers\Events\AdminEventHandler@sendLoginAttemptNotification',
|
'FireflyIII\Handlers\Events\AdminEventHandler@sendLoginAttemptNotification',
|
||||||
],
|
],
|
||||||
|
|
||||||
// is a Transaction Journal related event.
|
// is a Transaction Journal related event.
|
||||||
StoredTransactionGroup::class => [
|
StoredTransactionGroup::class => [
|
||||||
'FireflyIII\Handlers\Events\StoredGroupEventHandler@runAllHandlers',
|
'FireflyIII\Handlers\Events\StoredGroupEventHandler@runAllHandlers',
|
||||||
],
|
],
|
||||||
// is a Transaction Journal related event.
|
// is a Transaction Journal related event.
|
||||||
UpdatedTransactionGroup::class => [
|
UpdatedTransactionGroup::class => [
|
||||||
'FireflyIII\Handlers\Events\UpdatedGroupEventHandler@runAllHandlers',
|
'FireflyIII\Handlers\Events\UpdatedGroupEventHandler@runAllHandlers',
|
||||||
],
|
],
|
||||||
DestroyedTransactionGroup::class => [
|
DestroyedTransactionGroup::class => [
|
||||||
'FireflyIII\Handlers\Events\DestroyedGroupEventHandler@runAllHandlers',
|
'FireflyIII\Handlers\Events\DestroyedGroupEventHandler@runAllHandlers',
|
||||||
],
|
],
|
||||||
// API related events:
|
// API related events:
|
||||||
AccessTokenCreated::class => [
|
AccessTokenCreated::class => [
|
||||||
'FireflyIII\Handlers\Events\APIEventHandler@accessTokenCreated',
|
'FireflyIII\Handlers\Events\APIEventHandler@accessTokenCreated',
|
||||||
],
|
],
|
||||||
|
|
||||||
// Webhook related event:
|
// Webhook related event:
|
||||||
RequestedSendWebhookMessages::class => [
|
RequestedSendWebhookMessages::class => [
|
||||||
'FireflyIII\Handlers\Events\WebhookEventHandler@sendWebhookMessages',
|
'FireflyIII\Handlers\Events\WebhookEventHandler@sendWebhookMessages',
|
||||||
],
|
],
|
||||||
|
|
||||||
// account related events:
|
// account related events:
|
||||||
StoredAccount::class => [
|
StoredAccount::class => [
|
||||||
'FireflyIII\Handlers\Events\StoredAccountEventHandler@recalculateCredit',
|
'FireflyIII\Handlers\Events\StoredAccountEventHandler@recalculateCredit',
|
||||||
],
|
],
|
||||||
UpdatedAccount::class => [
|
UpdatedAccount::class => [
|
||||||
'FireflyIII\Handlers\Events\UpdatedAccountEventHandler@recalculateCredit',
|
'FireflyIII\Handlers\Events\UpdatedAccountEventHandler@recalculateCredit',
|
||||||
],
|
],
|
||||||
|
|
||||||
// bill related events:
|
// bill related events:
|
||||||
WarnUserAboutBill::class => [
|
WarnUserAboutBill::class => [
|
||||||
'FireflyIII\Handlers\Events\BillEventHandler@warnAboutBill',
|
'FireflyIII\Handlers\Events\BillEventHandler@warnAboutBill',
|
||||||
],
|
],
|
||||||
WarnUserAboutOverdueSubscriptions::class => [
|
WarnUserAboutOverdueSubscriptions::class => [
|
||||||
@@ -208,60 +208,60 @@ class EventServiceProvider extends ServiceProvider
|
|||||||
],
|
],
|
||||||
|
|
||||||
// audit log events:
|
// audit log events:
|
||||||
TriggeredAuditLog::class => [
|
TriggeredAuditLog::class => [
|
||||||
'FireflyIII\Handlers\Events\AuditEventHandler@storeAuditEvent',
|
'FireflyIII\Handlers\Events\AuditEventHandler@storeAuditEvent',
|
||||||
],
|
],
|
||||||
// piggy bank related events:
|
// piggy bank related events:
|
||||||
ChangedAmount::class => [
|
ChangedAmount::class => [
|
||||||
'FireflyIII\Handlers\Events\Model\PiggyBankEventHandler@changePiggyAmount',
|
'FireflyIII\Handlers\Events\Model\PiggyBankEventHandler@changePiggyAmount',
|
||||||
],
|
],
|
||||||
ChangedName::class => [
|
ChangedName::class => [
|
||||||
'FireflyIII\Handlers\Events\Model\PiggyBankEventHandler@changedPiggyBankName',
|
'FireflyIII\Handlers\Events\Model\PiggyBankEventHandler@changedPiggyBankName',
|
||||||
],
|
],
|
||||||
|
|
||||||
// budget related events: CRUD budget limit
|
// budget related events: CRUD budget limit
|
||||||
Created::class => [
|
Created::class => [
|
||||||
'FireflyIII\Handlers\Events\Model\BudgetLimitHandler@created',
|
'FireflyIII\Handlers\Events\Model\BudgetLimitHandler@created',
|
||||||
],
|
],
|
||||||
Updated::class => [
|
Updated::class => [
|
||||||
'FireflyIII\Handlers\Events\Model\BudgetLimitHandler@updated',
|
'FireflyIII\Handlers\Events\Model\BudgetLimitHandler@updated',
|
||||||
],
|
],
|
||||||
Deleted::class => [
|
Deleted::class => [
|
||||||
'FireflyIII\Handlers\Events\Model\BudgetLimitHandler@deleted',
|
'FireflyIII\Handlers\Events\Model\BudgetLimitHandler@deleted',
|
||||||
],
|
],
|
||||||
|
|
||||||
// rule actions
|
// rule actions
|
||||||
RuleActionFailedOnArray::class => [
|
RuleActionFailedOnArray::class => [
|
||||||
'FireflyIII\Handlers\Events\Model\RuleHandler@ruleActionFailedOnArray',
|
'FireflyIII\Handlers\Events\Model\RuleHandler@ruleActionFailedOnArray',
|
||||||
],
|
],
|
||||||
RuleActionFailedOnObject::class => [
|
RuleActionFailedOnObject::class => [
|
||||||
'FireflyIII\Handlers\Events\Model\RuleHandler@ruleActionFailedOnObject',
|
'FireflyIII\Handlers\Events\Model\RuleHandler@ruleActionFailedOnObject',
|
||||||
],
|
],
|
||||||
|
|
||||||
// security related
|
// security related
|
||||||
EnabledMFA::class => [
|
EnabledMFA::class => [
|
||||||
'FireflyIII\Handlers\Events\Security\MFAHandler@sendMFAEnabledMail',
|
'FireflyIII\Handlers\Events\Security\MFAHandler@sendMFAEnabledMail',
|
||||||
],
|
],
|
||||||
DisabledMFA::class => [
|
DisabledMFA::class => [
|
||||||
'FireflyIII\Handlers\Events\Security\MFAHandler@sendMFADisabledMail',
|
'FireflyIII\Handlers\Events\Security\MFAHandler@sendMFADisabledMail',
|
||||||
],
|
],
|
||||||
MFANewBackupCodes::class => [
|
MFANewBackupCodes::class => [
|
||||||
'FireflyIII\Handlers\Events\Security\MFAHandler@sendNewMFABackupCodesMail',
|
'FireflyIII\Handlers\Events\Security\MFAHandler@sendNewMFABackupCodesMail',
|
||||||
],
|
],
|
||||||
MFAUsedBackupCode::class => [
|
MFAUsedBackupCode::class => [
|
||||||
'FireflyIII\Handlers\Events\Security\MFAHandler@sendUsedBackupCodeMail',
|
'FireflyIII\Handlers\Events\Security\MFAHandler@sendUsedBackupCodeMail',
|
||||||
],
|
],
|
||||||
MFABackupFewLeft::class => [
|
MFABackupFewLeft::class => [
|
||||||
'FireflyIII\Handlers\Events\Security\MFAHandler@sendBackupFewLeftMail',
|
'FireflyIII\Handlers\Events\Security\MFAHandler@sendBackupFewLeftMail',
|
||||||
],
|
],
|
||||||
MFABackupNoLeft::class => [
|
MFABackupNoLeft::class => [
|
||||||
'FireflyIII\Handlers\Events\Security\MFAHandler@sendBackupNoLeftMail',
|
'FireflyIII\Handlers\Events\Security\MFAHandler@sendBackupNoLeftMail',
|
||||||
],
|
],
|
||||||
MFAManyFailedAttempts::class => [
|
MFAManyFailedAttempts::class => [
|
||||||
'FireflyIII\Handlers\Events\Security\MFAHandler@sendMFAFailedAttemptsMail',
|
'FireflyIII\Handlers\Events\Security\MFAHandler@sendMFAFailedAttemptsMail',
|
||||||
],
|
],
|
||||||
// preferences
|
// preferences
|
||||||
UserGroupChangedPrimaryCurrency::class => [
|
UserGroupChangedPrimaryCurrency::class => [
|
||||||
'FireflyIII\Handlers\Events\PreferencesEventHandler@resetPrimaryCurrencyAmounts',
|
'FireflyIII\Handlers\Events\PreferencesEventHandler@resetPrimaryCurrencyAmounts',
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
@@ -79,7 +79,7 @@ return [
|
|||||||
// see cer.php for exchange rates feature flag.
|
// see cer.php for exchange rates feature flag.
|
||||||
],
|
],
|
||||||
'version' => 'develop/2025-08-09',
|
'version' => 'develop/2025-08-09',
|
||||||
'build_time' => 1754719342,
|
'build_time' => 1754721409,
|
||||||
'api_version' => '2.1.0', // field is no longer used.
|
'api_version' => '2.1.0', // field is no longer used.
|
||||||
'db_version' => 26,
|
'db_version' => 26,
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user