diff --git a/.ci/php-cs-fixer/composer.lock b/.ci/php-cs-fixer/composer.lock index e9289156e6..20ac498e11 100644 --- a/.ci/php-cs-fixer/composer.lock +++ b/.ci/php-cs-fixer/composer.lock @@ -468,16 +468,16 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.95.11", + "version": "v3.95.12", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "35f98e1293283397824d7f349ce5afb8747c3cd5" + "reference": "b1b9055997a98dce3c2338e884626e718a25a923" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/35f98e1293283397824d7f349ce5afb8747c3cd5", - "reference": "35f98e1293283397824d7f349ce5afb8747c3cd5", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/b1b9055997a98dce3c2338e884626e718a25a923", + "reference": "b1b9055997a98dce3c2338e884626e718a25a923", "shasum": "" }, "require": { @@ -517,7 +517,7 @@ "php-coveralls/php-coveralls": "^2.9.1", "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.8", "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.8", - "phpunit/phpunit": "^9.6.34 || ^10.5.63 || ^11.5.55", + "phpunit/phpunit": "^9.6.35 || ^10.5.64 || ^11.5.56", "symfony/polyfill-php85": "^1.38", "symfony/var-dumper": "^5.4.48 || ^6.4.36 || ^7.4.8 || ^8.1.0", "symfony/yaml": "^5.4.53 || ^6.4.41 || ^7.4.13 || ^8.1.0" @@ -561,7 +561,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.95.11" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.95.12" }, "funding": [ { @@ -569,7 +569,7 @@ "type": "github" } ], - "time": "2026-06-25T14:17:04+00:00" + "time": "2026-07-07T13:29:36+00:00" }, { "name": "psr/container", diff --git a/app/Api/V1/Controllers/Insight/Income/TagController.php b/app/Api/V1/Controllers/Insight/Income/TagController.php index df99eef909..94be2ae461 100644 --- a/app/Api/V1/Controllers/Insight/Income/TagController.php +++ b/app/Api/V1/Controllers/Insight/Income/TagController.php @@ -158,7 +158,10 @@ final class TagController extends Controller 'currency_id' => (string) $foreignCurrencyId, 'currency_code' => $journal['foreign_currency_code'], ]; - $response[$foreignKey]['difference'] = bcadd((string) $response[$foreignKey]['difference'], Steam::positive($journal['foreign_amount'])); + $response[$foreignKey]['difference'] = bcadd( + (string) $response[$foreignKey]['difference'], + Steam::positive($journal['foreign_amount']) + ); $response[$foreignKey]['difference_float'] = (float) $response[$foreignKey]['difference']; } } diff --git a/app/Api/V1/Controllers/Insight/Transfer/TagController.php b/app/Api/V1/Controllers/Insight/Transfer/TagController.php index f92a7aa9f0..b7b85fd376 100644 --- a/app/Api/V1/Controllers/Insight/Transfer/TagController.php +++ b/app/Api/V1/Controllers/Insight/Transfer/TagController.php @@ -155,7 +155,10 @@ final class TagController extends Controller 'currency_id' => (string) $foreignCurrencyId, 'currency_code' => $journal['foreign_currency_code'], ]; - $response[$foreignKey]['difference'] = bcadd((string) $response[$foreignKey]['difference'], Steam::positive($journal['foreign_amount'])); + $response[$foreignKey]['difference'] = bcadd( + (string) $response[$foreignKey]['difference'], + Steam::positive($journal['foreign_amount']) + ); $response[$foreignKey]['difference_float'] = (float) $response[$foreignKey]['difference']; // intentional float } } diff --git a/app/Helpers/Functions/helpers.php b/app/Helpers/Functions/helpers.php index 05940cea92..fad0941f9c 100644 --- a/app/Helpers/Functions/helpers.php +++ b/app/Helpers/Functions/helpers.php @@ -42,6 +42,7 @@ use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Route; use League\CommonMark\GithubFlavoredMarkdownConverter; + use function Safe\json_decode; use function Safe\mb_ord; use function Safe\preg_match; @@ -51,7 +52,7 @@ if (!function_exists('env_default_when_empty')) { /** * @return null|mixed */ - function env_default_when_empty(mixed $value, bool | int | string | null $default = null): mixed + function env_default_when_empty(mixed $value, bool|int|string|null $default = null): mixed { if (null === $value) { return $default; @@ -65,7 +66,6 @@ if (!function_exists('env_default_when_empty')) { } if (!function_exists('sign_amount')) { - function sign_amount(string $amount, string $transactionType, string $sourceType): string { // withdrawals stay negative @@ -89,7 +89,7 @@ if (!function_exists('sign_amount')) { if (!function_exists('normal_journal_object_amount')) { function normal_journal_object_amount(TransactionJournal $journal): string { - $type = $journal->transactionType->type; + $type = $journal->transactionType->type; /** @var Transaction $first */ $first = $journal->transactions()->where('amount', '<', 0)->first(); @@ -98,12 +98,12 @@ if (!function_exists('normal_journal_object_amount')) { $colored = true; $sourceType = $first->account->accountType()->first()->type; - $amount = sign_amount($amount, $type, $sourceType); + $amount = sign_amount($amount, $type, $sourceType); if (TransactionTypeEnum::TRANSFER->value === $type) { $colored = false; } - $result = Amount::formatFlat($currency->symbol, $currency->decimal_places, $amount, $colored); + $result = Amount::formatFlat($currency->symbol, $currency->decimal_places, $amount, $colored); if (TransactionTypeEnum::TRANSFER->value === $type) { return sprintf('%s', $result); } @@ -123,10 +123,9 @@ if (!function_exists('journal_object_has_foreign')) { } if (function_exists('foreign_journal_object_amount')) { - function foreign_journal_object_amount(TransactionJournal $journal): string { - $type = $journal->transactionType->type; + $type = $journal->transactionType->type; /** @var Transaction $first */ $first = $journal->transactions()->where('amount', '<', 0)->first(); @@ -135,12 +134,12 @@ if (function_exists('foreign_journal_object_amount')) { $colored = true; $sourceType = $first->account->accountType()->first()->type; - $amount = sign_amount($amount, $type, $sourceType); + $amount = sign_amount($amount, $type, $sourceType); if (TransactionTypeEnum::TRANSFER->value === $type) { $colored = false; } - $result = Amount::formatFlat($currency->symbol, $currency->decimal_places, $amount, $colored); + $result = Amount::formatFlat($currency->symbol, $currency->decimal_places, $amount, $colored); if (TransactionTypeEnum::TRANSFER->value === $type) { return sprintf('%s', $result); } @@ -168,10 +167,11 @@ if (!function_exists('journal_link_translation')) { function journal_link_translation(string $direction, string $original): string { $key = sprintf('firefly.%s_%s', $original, $direction); - $translation = (string)trans($key); + $translation = (string) trans($key); if ($key === $translation) { return $original; } + return $translation; } } @@ -180,9 +180,9 @@ if (!function_exists('all_journal_triggers')) { function all_journal_triggers(): array { return [ - 'store-journal' => (string)trans('firefly.rule_trigger_store_journal'), - 'update-journal' => (string)trans('firefly.rule_trigger_update_journal'), - 'manual-activation' => (string)trans('firefly.rule_trigger_manual'), + 'store-journal' => (string) trans('firefly.rule_trigger_store_journal'), + 'update-journal' => (string) trans('firefly.rule_trigger_update_journal'), + 'manual-activation' => (string) trans('firefly.rule_trigger_manual'), ]; } } @@ -194,10 +194,11 @@ if (!function_exists('all_rule_actions')) { $ruleActions = array_keys(config('firefly.rule-actions')); $possibleActions = []; foreach ($ruleActions as $key) { - $possibleActions[$key] = (string)trans('firefly.rule_action_' . $key . '_choice'); + $possibleActions[$key] = (string) trans('firefly.rule_action_'.$key.'_choice'); } unset($ruleActions); asort($possibleActions); + return $possibleActions; } } @@ -206,9 +207,9 @@ if (!function_exists('all_journal_triggers')) { function all_journal_triggers(): array { return [ - 'store-journal' => (string)trans('firefly.rule_trigger_store_journal'), - 'update-journal' => (string)trans('firefly.rule_trigger_update_journal'), - 'manual-activation' => (string)trans('firefly.rule_trigger_manual'), + 'store-journal' => (string) trans('firefly.rule_trigger_store_journal'), + 'update-journal' => (string) trans('firefly.rule_trigger_update_journal'), + 'manual-activation' => (string) trans('firefly.rule_trigger_manual'), ]; } } @@ -217,14 +218,14 @@ if (!function_exists('mime_icon')) { function mime_icon(string $file): string { return match ($file) { - 'application/pdf' => 'bi-file-earmark-pdf', + 'application/pdf' => 'bi-file-earmark-pdf', 'image/webp', 'image/png', 'image/jpeg', 'image/svg+xml', 'image/heic', 'image/heic-sequence', - 'application/vnd.oasis.opendocument.image' => 'bi-file-earmark-image', + 'application/vnd.oasis.opendocument.image' => 'bi-file-earmark-image', 'application/msword', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/vnd.openxmlformats-officedocument.wordprocessingml.template', @@ -237,7 +238,7 @@ if (!function_exists('mime_icon')) { 'application/vnd.oasis.opendocument.text', 'application/vnd.oasis.opendocument.text-template', 'application/vnd.oasis.opendocument.text-web', - 'application/vnd.oasis.opendocument.text-master' => 'bi-file-earmark-word', + 'application/vnd.oasis.opendocument.text-master' => 'bi-file-earmark-word', 'application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/vnd.openxmlformats-officedocument.spreadsheetml.template', @@ -245,7 +246,7 @@ if (!function_exists('mime_icon')) { 'application/vnd.sun.xml.calc.template', 'application/vnd.stardivision.calc', 'application/vnd.oasis.opendocument.spreadsheet', - 'application/vnd.oasis.opendocument.spreadsheet-template' => 'bi-file-earmark-excel', + 'application/vnd.oasis.opendocument.spreadsheet-template' => 'bi-file-earmark-excel', 'application/vnd.ms-powerpoint', 'application/vnd.openxmlformats-officedocument.presentationml.presentation', 'application/vnd.openxmlformats-officedocument.presentationml.template', @@ -254,18 +255,18 @@ if (!function_exists('mime_icon')) { 'application/vnd.sun.xml.impress.template', 'application/vnd.stardivision.impress', 'application/vnd.oasis.opendocument.presentation', - 'application/vnd.oasis.opendocument.presentation-template' => 'bi-file-earmark-slides', + 'application/vnd.oasis.opendocument.presentation-template' => 'bi-file-earmark-slides', 'application/vnd.sun.xml.draw', 'application/vnd.sun.xml.draw.template', 'application/vnd.stardivision.draw', - 'application/vnd.oasis.opendocument.chart' => 'bi-file-earmark-easel', + 'application/vnd.oasis.opendocument.chart' => 'bi-file-earmark-easel', 'application/vnd.oasis.opendocument.graphics', 'application/vnd.oasis.opendocument.graphics-template', 'application/vnd.sun.xml.math', 'application/vnd.stardivision.math', 'application/vnd.oasis.opendocument.formula', - 'application/vnd.oasis.opendocument.database' => 'bi-file-earmark-rules', - default => 'bi-file-earmark' + 'application/vnd.oasis.opendocument.database' => 'bi-file-earmark-rules', + default => 'bi-file-earmark' }; } } @@ -275,7 +276,7 @@ if (!function_exists('parse_markdown')) { { $converter = new GithubFlavoredMarkdownConverter(['allow_unsafe_links' => false, 'max_nesting_level' => 5, 'html_input' => 'escape']); - return (string)$converter->convert($string); + return (string) $converter->convert($string); } } @@ -369,11 +370,11 @@ if (!function_exists('account_balance')) { function account_balance(Account $account): string { /** @var Carbon $date */ - $date = now(); + $date = now(); // get the date from the current session. If it's in the future, keep `now()`. /** @var Carbon $session */ - $session = clone session('end', today(config('app.timezone'))->endOfMonth()); + $session = clone session('end', today(config('app.timezone'))->endOfMonth()); if ($session->lt($date)) { $date = $session->copy(); $date->endOfDay(); @@ -381,13 +382,13 @@ if (!function_exists('account_balance')) { Log::debug(sprintf('twig balance: Call finalAccountBalance with date/time "%s"', $date->toIso8601String())); // 2025-10-08 replace finalAccountBalance with accountsBalancesOptimized. - $info = Steam::accountsBalancesOptimized(new Collection()->push($account), $date)[$account->id]; + $info = Steam::accountsBalancesOptimized(new Collection()->push($account), $date)[$account->id]; // $info = Steam::finalAccountBalance($account, $date); $currency = Steam::getAccountCurrency($account); $primary = Amount::getPrimaryCurrency(); $convertToPrimary = Amount::convertToPrimary(); $usePrimary = $convertToPrimary && $primary->id !== $currency->id; - $currency ??= $primary; + $currency ??= $primary; $strings = []; foreach ($info as $key => $balance) { if ('balance' === $key) { @@ -454,15 +455,15 @@ if (!function_exists('print_nice_filesize')) { { // less than one GB, more than one MB if ($size < (1024 * 1024 * 2014) && $size >= (1024 * 1024)) { - return round($size / (1024 * 1024), 2) . ' MB'; + return round($size / (1024 * 1024), 2).' MB'; } // less than one MB if ($size < (1024 * 1024)) { - return round($size / 1024, 2) . ' KB'; + return round($size / 1024, 2).' KB'; } - return $size . ' bytes'; + return $size.' bytes'; } } @@ -483,11 +484,11 @@ if (!function_exists('journal_get_meta_field')) { return ''; } - return json_decode((string)$entry->data, true); + return json_decode((string) $entry->data, true); } } if (!function_exists('journal_get_meta_date')) { - function journal_get_meta_date(int $journalId, string $metaField): Carbon | CarbonInterface + function journal_get_meta_date(int $journalId, string $metaField): Carbon|CarbonInterface { /** @var null|TransactionJournalMeta $entry */ $entry = DB::table('journal_meta')->where('name', $metaField)->where('transaction_journal_id', $journalId)->whereNull('deleted_at')->first(); @@ -495,7 +496,7 @@ if (!function_exists('journal_get_meta_date')) { return today(config('app.timezone')); } - return new Carbon(json_decode((string)$entry->data, false)); + return new Carbon(json_decode((string) $entry->data, false)); } } @@ -524,14 +525,14 @@ if (!function_exists('blade_escape_js')) { return preg_replace_callback( '#[^a-zA-Z0-9,\._]#Su', static function ($matches) { - $char = $matches[0]; + $char = $matches[0]; /* * A few characters have short escape sequences in JSON and JavaScript. * Escape sequences supported only by JavaScript, not JSON, are omitted. * \" is also supported but omitted, because the resulting string is not HTML safe. */ - $short = match ($char) { + $short = match ($char) { '\\' => '\\\\', '/' => '\/', "\x08" => '\b', @@ -553,9 +554,9 @@ if (!function_exists('blade_escape_js')) { // Split characters outside the BMP into surrogate pairs // https://tools.ietf.org/html/rfc2781.html#section-2.1 - $u = $codepoint - 0x10_000; - $high = 0xD800 | ($u >> 10); - $low = 0xDC00 | ($u & 0x3FF); + $u = $codepoint - 0x10_000; + $high = 0xD800 | ($u >> 10); + $low = 0xDC00 | ($u & 0x3FF); return \sprintf('\u%04X\u%04X', $high, $low); }, diff --git a/app/Http/Controllers/Account/IndexController.php b/app/Http/Controllers/Account/IndexController.php index cc50471ef0..64dd998ebf 100644 --- a/app/Http/Controllers/Account/IndexController.php +++ b/app/Http/Controllers/Account/IndexController.php @@ -80,7 +80,7 @@ final class IndexController extends Controller $collection = $this->repository->getInactiveAccountsByType($types); $total = $collection->count(); $page = 0 === (int) $request->input('page') ? 1 : (int) $request->input('page'); - $page = min(max(1, $page), 2 ** 16); + $page = min(max(1, $page), 2 ** 16); $pageSize = (int) Preferences::get('listPageSize', 50)->data; $accounts = $collection->slice(($page - 1) * $pageSize, $pageSize); $inactiveCount = $this->repository->getInactiveAccountsByType($types)->count(); @@ -147,7 +147,7 @@ final class IndexController extends Controller $collection = $this->repository->getActiveAccountsByType($types); $total = $collection->count(); $page = 0 === (int) $request->input('page') ? 1 : (int) $request->input('page'); - $page = min(max(1, $page), 2 ** 16); + $page = min(max(1, $page), 2 ** 16); $pageSize = (int) Preferences::get('listPageSize', 50)->data; $accounts = $collection->slice(($page - 1) * $pageSize, $pageSize); $inactiveCount = $this->repository->getInactiveAccountsByType($types)->count(); diff --git a/app/Http/Controllers/Account/ShowController.php b/app/Http/Controllers/Account/ShowController.php index bd52caa976..586a03c109 100644 --- a/app/Http/Controllers/Account/ShowController.php +++ b/app/Http/Controllers/Account/ShowController.php @@ -121,7 +121,7 @@ final class ShowController extends Controller $currency = $accountCurrency ?? $this->primaryCurrency; $fStart = $start->isoFormat($this->monthAndDayFormat); $fEnd = $end->isoFormat($this->monthAndDayFormat); - $isLiability = $this->repository->isLiability($account); + $isLiability = $this->repository->isLiability($account); $subTitle = (string) trans('firefly.journals_in_period_for_account', ['name' => $account->name, 'start' => $fStart, 'end' => $fEnd]); $chartUrl = route('chart.account.period', [$account->id, $start->format('Y-m-d'), $end->format('Y-m-d')]); $firstTransaction = $this->repository->oldestJournalDate($account) ?? $start; @@ -179,7 +179,7 @@ final class ShowController extends Controller 'currency' => $currency, 'today' => $today, 'periods' => $periods, - 'isLiability' => $isLiability, + 'isLiability' => $isLiability, 'subTitleIcon' => $subTitleIcon, 'groups' => $groups, 'attachments' => $attachments, @@ -215,7 +215,7 @@ final class ShowController extends Controller $start = $this->repository->oldestJournalDate($account) ?? today(config('app.timezone'))->startOfMonth(); $subTitleIcon = config('firefly.subIconsByIdentifier.'.$account->accountType->type); $page = (int) $request->input('page'); - $page = min(max(1, $page), 2 ** 16); + $page = min(max(1, $page), 2 ** 16); $pageSize = (int) Preferences::get('listPageSize', 50)->data; $currency = $this->repository->getAccountCurrency($account) ?? $this->primaryCurrency; $subTitle = (string) trans('firefly.all_journals_for_account', ['name' => $account->name]); diff --git a/app/Http/Controllers/Bill/IndexController.php b/app/Http/Controllers/Bill/IndexController.php index 110ea3d5bd..d4478425b2 100644 --- a/app/Http/Controllers/Bill/IndexController.php +++ b/app/Http/Controllers/Bill/IndexController.php @@ -255,7 +255,10 @@ final class IndexController extends Controller if (count($bill['paid_dates']) < count($bill['pay_dates'])) { $count = count($bill['pay_dates']) - count($bill['paid_dates']); if ($count > 0) { - $avg = bcdiv(bcadd((string) $bill['amount_min'], (string) $bill['amount_max']), '2'); + $avg = bcdiv( + bcadd((string) $bill['amount_min'], (string) $bill['amount_max']), + '2' + ); $avg = bcmul($avg, (string) $count); $sums[$groupOrder][$currencyId]['total_left_to_pay'] = bcadd($sums[$groupOrder][$currencyId]['total_left_to_pay'], $avg); Log::debug( diff --git a/app/Http/Controllers/Bill/ShowController.php b/app/Http/Controllers/Bill/ShowController.php index 0c93f487f0..eb59fcda43 100644 --- a/app/Http/Controllers/Bill/ShowController.php +++ b/app/Http/Controllers/Bill/ShowController.php @@ -130,7 +130,7 @@ final class ShowController extends Controller $end = session('end'); $year = $start->year; $page = (int) $request->input('page'); - $page = min(max(1, $page), 2 ** 16); + $page = min(max(1, $page), 2 ** 16); $pageSize = (int) Preferences::get('listPageSize', 50)->data; $yearAverage = $this->repository->getYearAverage($bill, $start); $overallAverage = $this->repository->getOverallAverage($bill); diff --git a/app/Http/Controllers/Budget/BudgetLimitController.php b/app/Http/Controllers/Budget/BudgetLimitController.php index de7337738f..04d75cd738 100644 --- a/app/Http/Controllers/Budget/BudgetLimitController.php +++ b/app/Http/Controllers/Budget/BudgetLimitController.php @@ -198,7 +198,13 @@ final class BudgetLimitController extends Controller if ($request->expectsJson()) { $array = $limit->toArray(); // add some extra metadata: - $spentArr = $this->opsRepository->sumExpenses($limit->start_date, $limit->end_date, null, new Collection()->push($budget), $currency); + $spentArr = $this->opsRepository->sumExpenses( + $limit->start_date, + $limit->end_date, + null, + new Collection()->push($budget), + $currency + ); $array['spent'] = $spentArr[$currency->id]['sum'] ?? '0'; $array['left_formatted'] = Amount::formatAnything($limit->transactionCurrency, bcadd($array['spent'], (string) $array['amount'])); $array['amount_formatted'] = Amount::formatAnything($limit->transactionCurrency, $limit['amount']); diff --git a/app/Http/Controllers/Budget/IndexController.php b/app/Http/Controllers/Budget/IndexController.php index 215ebbd484..d40d4432a3 100644 --- a/app/Http/Controllers/Budget/IndexController.php +++ b/app/Http/Controllers/Budget/IndexController.php @@ -284,7 +284,10 @@ final class IndexController extends Controller if (array_key_exists($currency->id, $spentArr) && array_key_exists('sum', $spentArr[$currency->id])) { $array['spent'][$currency->id]['spent'] = $spentArr[$currency->id]['sum']; - $array['spent'][$currency->id]['spent_outside'] = Steam::negative(bcsub($spentInLimits[$currency->id], $spentArr[$currency->id]['sum'])); + $array['spent'][$currency->id]['spent_outside'] = Steam::negative(bcsub( + $spentInLimits[$currency->id], + $spentArr[$currency->id]['sum'] + )); $array['spent'][$currency->id]['currency_id'] = $currency->id; $array['spent'][$currency->id]['currency_symbol'] = $currency->symbol; $array['spent'][$currency->id]['currency_decimal_places'] = $currency->decimal_places; diff --git a/app/Http/Controllers/Budget/ShowController.php b/app/Http/Controllers/Budget/ShowController.php index 62db3e127d..1b7e090cf4 100644 --- a/app/Http/Controllers/Budget/ShowController.php +++ b/app/Http/Controllers/Budget/ShowController.php @@ -97,7 +97,7 @@ final class ShowController extends Controller $firstDate = $first instanceof TransactionJournal ? $first->date : $start; $periods = $this->getNoModelPeriodOverview('budget', $firstDate, $end); $page = (int) $request->input('page'); - $page = min(max(1, $page), 2 ** 16); + $page = min(max(1, $page), 2 ** 16); $pageSize = (int) Preferences::get('listPageSize', 50)->data; /** @var GroupCollectorInterface $collector */ @@ -132,7 +132,7 @@ final class ShowController extends Controller $start = $first instanceof TransactionJournal ? $first->date : new Carbon(); $end = today(config('app.timezone')); $page = (int) $request->input('page'); - $page = min(max(1, $page), 2 ** 16); + $page = min(max(1, $page), 2 ** 16); $pageSize = (int) Preferences::get('listPageSize', 50)->data; /** @var GroupCollectorInterface $collector */ @@ -166,7 +166,7 @@ final class ShowController extends Controller $allStart = session('first', today(config('app.timezone'))->startOfYear()); $allEnd = today(); $page = (int) $request->input('page'); - $page = min(max(1, $page), 2 ** 16); + $page = min(max(1, $page), 2 ** 16); $pageSize = (int) Preferences::get('listPageSize', 50)->data; $limits = $this->getLimits($budget, $allStart, $allEnd); $repetition = null; @@ -216,7 +216,7 @@ final class ShowController extends Controller $currencySymbol = $budgetLimit->transactionCurrency->symbol; $page = (int) $request->input('page'); - $page = min(max(1, $page), 2 ** 16); + $page = min(max(1, $page), 2 ** 16); $pageSize = (int) Preferences::get('listPageSize', 50)->data; $subTitle = trans('firefly.budget_in_period', [ 'name' => $budget->name, diff --git a/app/Http/Controllers/Category/IndexController.php b/app/Http/Controllers/Category/IndexController.php index 6e7ecf9f15..3382848bed 100644 --- a/app/Http/Controllers/Category/IndexController.php +++ b/app/Http/Controllers/Category/IndexController.php @@ -71,7 +71,7 @@ final class IndexController extends Controller public function index(Request $request): Factory|\Illuminate\Contracts\View\View { $page = 0 === (int) $request->input('page') ? 1 : (int) $request->input('page'); - $page = min(max(1, $page), 2 ** 16); + $page = min(max(1, $page), 2 ** 16); $pageSize = (int) Preferences::get('listPageSize', 50)->data; $collection = $this->repository->getCategories(); $total = $collection->count(); diff --git a/app/Http/Controllers/Category/NoCategoryController.php b/app/Http/Controllers/Category/NoCategoryController.php index 0146ee30f1..9ade0705c6 100644 --- a/app/Http/Controllers/Category/NoCategoryController.php +++ b/app/Http/Controllers/Category/NoCategoryController.php @@ -85,7 +85,7 @@ final class NoCategoryController extends Controller /** @var Carbon $start */ /** @var Carbon $end */ $page = (int) $request->input('page'); - $page = min(max(1, $page), 2 ** 16); + $page = min(max(1, $page), 2 ** 16); $pageSize = (int) Preferences::get('listPageSize', 50)->data; $subTitle = trans('firefly.without_category_between', [ 'start' => $start->isoFormat($this->monthAndDayFormat), @@ -135,7 +135,7 @@ final class NoCategoryController extends Controller $end = null; $periods = new Collection(); $page = (int) $request->input('page'); - $page = min(max(1, $page), 2 ** 16); + $page = min(max(1, $page), 2 ** 16); $pageSize = (int) Preferences::get('listPageSize', 50)->data; Log::debug('Start of noCategory()'); $subTitle = (string) trans('firefly.all_journals_without_category'); diff --git a/app/Http/Controllers/Category/ShowController.php b/app/Http/Controllers/Category/ShowController.php index c9e3b0ecfa..1275e96224 100644 --- a/app/Http/Controllers/Category/ShowController.php +++ b/app/Http/Controllers/Category/ShowController.php @@ -84,7 +84,7 @@ final class ShowController extends Controller /** @var Carbon $end */ $subTitleIcon = 'bi-bookmark'; $page = (int) $request->input('page'); - $page = min(max(1, $page), 2 ** 16); + $page = min(max(1, $page), 2 ** 16); $attachments = $this->repository->getAttachments($category); $pageSize = (int) Preferences::get('listPageSize', 50)->data; $oldest = $this->repository->firstUseDate($category) ?? today(config('app.timezone'))->startOfYear(); @@ -136,7 +136,7 @@ final class ShowController extends Controller // default values: $subTitleIcon = 'bi-bookmark'; $page = (int) $request->input('page'); - $page = min(max(1, $page), 2 ** 16); + $page = min(max(1, $page), 2 ** 16); $pageSize = (int) Preferences::get('listPageSize', 50)->data; $start = null; $end = null; diff --git a/app/Http/Controllers/Chart/BudgetController.php b/app/Http/Controllers/Chart/BudgetController.php index ad724137dc..f4b32fe5c5 100644 --- a/app/Http/Controllers/Chart/BudgetController.php +++ b/app/Http/Controllers/Chart/BudgetController.php @@ -539,7 +539,13 @@ final class BudgetController extends Controller } // get spent amount in this period for this currency. - $sum = $this->opsRepository->sumExpenses($currentStart, $currentEnd, $accounts, new Collection()->push($budget), $currency); + $sum = $this->opsRepository->sumExpenses( + $currentStart, + $currentEnd, + $accounts, + new Collection()->push($budget), + $currency + ); $amount = Steam::positive($sum[$currency->id]['sum'] ?? '0'); $chartData[0]['entries'][$title] = Steam::bcround($amount, $currency->decimal_places); diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php index 9fe629642b..cf55743477 100644 --- a/app/Http/Controllers/Controller.php +++ b/app/Http/Controllers/Controller.php @@ -74,13 +74,14 @@ abstract class Controller extends BaseController { // is site a demo site? try { - $isDemoSiteConfig = AppConfiguration::get('is_demo_site', config('firefly.configuration.is_demo_site', false)); - } catch(FireflyException $e) { + $isDemoSiteConfig = AppConfiguration::get('is_demo_site', config('firefly.configuration.is_demo_site', false)); + } catch (FireflyException $e) { // if this breaks, just stop right here. Log::error($e->getMessage()); + return; } - $isDemoSite = (bool) $isDemoSiteConfig->data; + $isDemoSite = (bool) $isDemoSiteConfig->data; View::share('IS_DEMO_SITE', $isDemoSite); View::share('DEMO_USERNAME', config('firefly.demo_username')); View::share('DEMO_PASSWORD', config('firefly.demo_password')); @@ -88,21 +89,24 @@ abstract class Controller extends BaseController View::share('FF_BUILD_TIME', config('firefly.build_time')); // this breaks when running < PHP 8.5 and is totally intentional. - $input = ' James is cool'; - $output = $input + $input = ' James is cool'; + $output = $input |> trim(...) |> (fn (string $string) => str_replace(' ', '-', $string)) |> (fn (string $string) => str_replace(['.', '/', '…'], '', $string)) |> strtolower(...); // is webhooks enabled? - View::share('featuringWebhooks', true === config('firefly.feature_flags.webhooks') && true === AppConfiguration::get('allow_webhooks', config('firefly.allow_webhooks'))->data); + View::share( + 'featuringWebhooks', + true === config('firefly.feature_flags.webhooks') && true === AppConfiguration::get('allow_webhooks', config('firefly.allow_webhooks'))->data + ); // is currency exchange enabled? View::share('featuringCer', true === AppConfiguration::get('enable_exchange_rates', config('cer.enabled'))->data); // share custom auth guard info. - $authGuard = config('firefly.authentication_guard'); - $logoutUrl = config('firefly.custom_logout_url'); + $authGuard = config('firefly.authentication_guard'); + $logoutUrl = config('firefly.custom_logout_url'); // overrule v2 layout back to v1. @@ -116,15 +120,15 @@ abstract class Controller extends BaseController View::share('logoutUrl', $logoutUrl); // upload size - $maxFileSize = Steam::phpBytes(ini_get('upload_max_filesize')); - $maxPostSize = Steam::phpBytes(ini_get('post_max_size')); - $uploadSize = min($maxFileSize, $maxPostSize); + $maxFileSize = Steam::phpBytes(ini_get('upload_max_filesize')); + $maxPostSize = Steam::phpBytes(ini_get('post_max_size')); + $uploadSize = min($maxFileSize, $maxPostSize); View::share('uploadSize', $uploadSize); // share is alpha, is beta - $isAlpha = false; - $isBeta = false; - $isDevelop = false; + $isAlpha = false; + $isBeta = false; + $isDevelop = false; if (str_contains((string) config('firefly.version'), 'alpha')) { $isAlpha = true; } diff --git a/app/Http/Controllers/Json/RuleController.php b/app/Http/Controllers/Json/RuleController.php index ac4c160633..df6d67b946 100644 --- a/app/Http/Controllers/Json/RuleController.php +++ b/app/Http/Controllers/Json/RuleController.php @@ -51,7 +51,13 @@ final class RuleController extends Controller } try { - $view = view('rules.partials.action', ['actions' => $actions, 'count' => $count,'oldAction' => null, 'oldValue' => null,'oldChecked' => null])->render(); + $view = view('rules.partials.action', [ + 'actions' => $actions, + 'count' => $count, + 'oldAction' => null, + 'oldValue' => null, + 'oldChecked' => null, + ])->render(); } catch (Throwable $e) { Log::error(sprintf('Cannot render rules.partials.action: %s', $e->getMessage())); Log::error($e->getTraceAsString()); @@ -81,7 +87,14 @@ final class RuleController extends Controller asort($triggers); try { - $view = view('rules.partials.trigger', ['triggers' => $triggers, 'count' => $count,'oldTrigger' => null, 'oldProhibited' => null,'oldValue' => null,'oldChecked' =>null])->render(); + $view = view('rules.partials.trigger', [ + 'triggers' => $triggers, + 'count' => $count, + 'oldTrigger' => null, + 'oldProhibited' => null, + 'oldValue' => null, + 'oldChecked' => null, + ])->render(); } catch (Throwable $e) { Log::error(sprintf('Cannot render rules.partials.trigger: %s', $e->getMessage())); Log::error($e->getTraceAsString()); diff --git a/app/Http/Controllers/PreferencesController.php b/app/Http/Controllers/PreferencesController.php index e968e43c1f..dc94b02336 100644 --- a/app/Http/Controllers/PreferencesController.php +++ b/app/Http/Controllers/PreferencesController.php @@ -128,9 +128,8 @@ final class PreferencesController extends Controller // missing fields will give an error unless set, so: $tjOptionalFields['external_url'] ??= false; - $tjOptionalFields['location'] ??= false; - $tjOptionalFields['links'] ??= false; - + $tjOptionalFields['location'] ??= false; + $tjOptionalFields['links'] ??= false; $availableDarkModes = config('firefly.available_dark_modes'); diff --git a/app/Http/Controllers/Recurring/IndexController.php b/app/Http/Controllers/Recurring/IndexController.php index 8d77470286..aa3cd963ac 100644 --- a/app/Http/Controllers/Recurring/IndexController.php +++ b/app/Http/Controllers/Recurring/IndexController.php @@ -81,7 +81,7 @@ final class IndexController extends Controller public function index(Request $request): Factory|\Illuminate\Contracts\View\View { $page = 0 === (int) $request->input('page') ? 1 : (int) $request->input('page'); - $page = min(max(1, $page), 2 ** 16); + $page = min(max(1, $page), 2 ** 16); $pageSize = (int) Preferences::get('listPageSize', 50)->data; $collection = $this->repository->get(); $today = today(config('app.timezone')); diff --git a/app/Http/Controllers/Report/BalanceController.php b/app/Http/Controllers/Report/BalanceController.php index 286d1e0622..ad7afe761e 100644 --- a/app/Http/Controllers/Report/BalanceController.php +++ b/app/Http/Controllers/Report/BalanceController.php @@ -134,8 +134,9 @@ final class BalanceController extends Controller // get transactions in budget } -// echo '
';
-// print_r($report);exit;
+
+ // echo '';
+ // print_r($report);exit;
try {
$result = view('reports.partials.balance', ['report' => $report])->render();
} catch (Throwable $e) {
diff --git a/app/Http/Controllers/Report/BudgetController.php b/app/Http/Controllers/Report/BudgetController.php
index 766cbb14f6..42b38a814b 100644
--- a/app/Http/Controllers/Report/BudgetController.php
+++ b/app/Http/Controllers/Report/BudgetController.php
@@ -353,9 +353,9 @@ final class BudgetController extends Controller
*/
public function topExpenses(Collection $accounts, Collection $budgets, Carbon $start, Carbon $end)
{
- $spent = $this->opsRepository->listExpenses($start, $end, $accounts, $budgets);
+ $spent = $this->opsRepository->listExpenses($start, $end, $accounts, $budgets);
$incomeTopLength = 0;
- $result = [];
+ $result = [];
foreach ($spent as $currency) {
foreach ($currency['budgets'] as $budget) {
foreach ($budget['transaction_journals'] as $journal) {
@@ -376,16 +376,16 @@ final class BudgetController extends Controller
'budget_name' => $budget['name'],
];
}
- $incomeTopLength++;
+ ++$incomeTopLength;
}
}
// sort by amount_float
// sort temp array by amount.
- $amounts = array_column($result, 'amount_float');
+ $amounts = array_column($result, 'amount_float');
array_multisort($amounts, SORT_ASC, $result);
try {
- $result = view('reports.budget.partials.top-expenses', ['result' => $result, 'incomeTopLength'=>$incomeTopLength])->render();
+ $result = view('reports.budget.partials.top-expenses', ['result' => $result, 'incomeTopLength' => $incomeTopLength])->render();
} catch (Throwable $e) {
Log::error(sprintf('Could not render reports.partials.budget-period: %s', $e->getMessage()));
$result = sprintf('Could not render view: %s', $e->getMessage());
diff --git a/app/Http/Controllers/Report/CategoryController.php b/app/Http/Controllers/Report/CategoryController.php
index 834473d94b..e0466f00cc 100644
--- a/app/Http/Controllers/Report/CategoryController.php
+++ b/app/Http/Controllers/Report/CategoryController.php
@@ -604,7 +604,7 @@ final class CategoryController extends Controller
{
$incomeTopLength = 0;
// chart properties for cache:
- $cache = new CacheProperties();
+ $cache = new CacheProperties();
$cache->addProperty($start);
$cache->addProperty($end);
$cache->addProperty('category-report');
@@ -614,15 +614,15 @@ final class CategoryController extends Controller
}
/** @var CategoryReportGenerator $generator */
- $generator = app(CategoryReportGenerator::class);
+ $generator = app(CategoryReportGenerator::class);
$generator->setAccounts($accounts);
$generator->setStart($start);
$generator->setEnd($end);
$generator->operations();
- $report = $generator->getReport();
+ $report = $generator->getReport();
try {
- $result = view('reports.partials.categories', ['report' => $report,'incomeTopLength' => $incomeTopLength])->render();
+ $result = view('reports.partials.categories', ['report' => $report, 'incomeTopLength' => $incomeTopLength])->render();
$cache->store($result);
} catch (Throwable $e) {
Log::error(sprintf('Could not render category::expenses: %s', $e->getMessage()));
@@ -641,12 +641,12 @@ final class CategoryController extends Controller
*/
public function topExpenses(Collection $accounts, Collection $categories, Carbon $start, Carbon $end)
{
- $spent = $this->opsRepository->listExpenses($start, $end, $accounts, $categories);
+ $spent = $this->opsRepository->listExpenses($start, $end, $accounts, $categories);
$incomeTopLength = 0;
- $result = [];
+ $result = [];
foreach ($spent as $currency) {
foreach ($currency['categories'] as $category) {
- $incomeTopLength++;
+ ++$incomeTopLength;
foreach ($category['transaction_journals'] as $journal) {
$result[] = [
'description' => $journal['description'],
@@ -669,7 +669,7 @@ final class CategoryController extends Controller
}
// sort by amount_float
// sort temp array by amount.
- $amounts = array_column($result, 'amount_float');
+ $amounts = array_column($result, 'amount_float');
array_multisort($amounts, SORT_ASC, $result);
try {
diff --git a/app/Http/Controllers/Report/OperationsController.php b/app/Http/Controllers/Report/OperationsController.php
index 8a4b7692eb..04c70b0c3e 100644
--- a/app/Http/Controllers/Report/OperationsController.php
+++ b/app/Http/Controllers/Report/OperationsController.php
@@ -65,7 +65,7 @@ final class OperationsController extends Controller
public function expenses(Collection $accounts, Carbon $start, Carbon $end)
{
// chart properties for cache:
- $cache = new CacheProperties();
+ $cache = new CacheProperties();
$cache->addProperty($start);
$cache->addProperty($end);
$cache->addProperty('expense-report');
@@ -73,9 +73,9 @@ final class OperationsController extends Controller
if ($cache->has()) {
return $cache->get();
}
- $report = $this->tasker->getExpenseReport($start, $end, $accounts);
- $type = 'expense-entry';
- $incomeTopLength= count($report['accounts']);
+ $report = $this->tasker->getExpenseReport($start, $end, $accounts);
+ $type = 'expense-entry';
+ $incomeTopLength = count($report['accounts']);
try {
$result = view('reports.partials.income-expenses', ['report' => $report, 'type' => $type, 'incomeTopLength' => $incomeTopLength])->render();
diff --git a/app/Http/Controllers/Report/TagController.php b/app/Http/Controllers/Report/TagController.php
index d6e63739cd..9b9aec606b 100644
--- a/app/Http/Controllers/Report/TagController.php
+++ b/app/Http/Controllers/Report/TagController.php
@@ -446,12 +446,12 @@ final class TagController extends Controller
*/
public function topExpenses(Collection $accounts, Collection $tags, Carbon $start, Carbon $end)
{
- $spent = $this->opsRepository->listExpenses($start, $end, $accounts, $tags);
- $result = [];
+ $spent = $this->opsRepository->listExpenses($start, $end, $accounts, $tags);
+ $result = [];
$incomeTopLength = 0;
foreach ($spent as $currency) {
foreach ($currency['tags'] as $tag) {
- $incomeTopLength++;
+ ++$incomeTopLength;
foreach ($tag['transaction_journals'] as $journal) {
$result[] = [
'description' => $journal['description'],
@@ -474,7 +474,7 @@ final class TagController extends Controller
}
// sort by amount_float
// sort temp array by amount.
- $amounts = array_column($result, 'amount_float');
+ $amounts = array_column($result, 'amount_float');
array_multisort($amounts, SORT_ASC, $result);
try {
diff --git a/app/Http/Controllers/SearchController.php b/app/Http/Controllers/SearchController.php
index cec1b553dc..ec80c215a7 100644
--- a/app/Http/Controllers/SearchController.php
+++ b/app/Http/Controllers/SearchController.php
@@ -67,7 +67,7 @@ final class SearchController extends Controller
}
$fullQuery = (string) $fullQuery;
$page = 0 === (int) $request->input('page') ? 1 : (int) $request->input('page');
- $page = min(max(1, $page), 2 ** 16);
+ $page = min(max(1, $page), 2 ** 16);
$ruleId = (int) $request->input('rule');
$ruleChanged = false;
@@ -117,7 +117,7 @@ final class SearchController extends Controller
}
$fullQuery = (string) $entry;
$page = 0 === (int) $request->input('page') ? 1 : (int) $request->input('page');
- $page = min(max(1, $page), 2 ** 16);
+ $page = min(max(1, $page), 2 ** 16);
$searcher->parseQuery($fullQuery);
diff --git a/app/Http/Controllers/System/InstallController.php b/app/Http/Controllers/System/InstallController.php
index 6f705715ac..13085f71f6 100644
--- a/app/Http/Controllers/System/InstallController.php
+++ b/app/Http/Controllers/System/InstallController.php
@@ -41,6 +41,7 @@ use Illuminate\Support\Facades\Log;
use Illuminate\View\View;
use Laravel\Passport\Passport;
use phpseclib3\Crypt\RSA;
+
use function Safe\file_put_contents;
/**
@@ -55,37 +56,37 @@ final class InstallController extends Controller
public const string FORBIDDEN_ERROR = 'Internal PHP function "proc_close" is disabled for your installation. Auto-migration is not possible.';
public const string OTHER_ERROR = 'An unknown error prevented Firefly III from executing the upgrade commands. Sorry.';
- private string $lastError = '';
+ private string $lastError = '';
// empty on purpose.
- private array $upgradeCommands
- = [
- // there are 5 initial commands
- // Check 4 places: InstallController, Docker image, UpgradeDatabase, composer.json
- 'firefly-iii:create-database' => [],
- 'migrate' => ['--seed' => true, '--force' => true],
- 'generate-keys' => [], // an exception :(
- 'firefly-iii:upgrade-database' => [],
- 'firefly-iii:set-latest-version' => ['--james-is-cool' => true],
- 'firefly-iii:verify-security-alerts' => [],
- ];
+ private array $upgradeCommands = [
+ // there are 5 initial commands
+ // Check 4 places: InstallController, Docker image, UpgradeDatabase, composer.json
+ 'firefly-iii:create-database' => [],
+ 'migrate' => ['--seed' => true, '--force' => true],
+ 'generate-keys' => [], // an exception :(
+ 'firefly-iii:upgrade-database' => [],
+ 'firefly-iii:set-latest-version' => ['--james-is-cool' => true],
+ 'firefly-iii:verify-security-alerts' => [],
+ ];
/**
* Show index.
*
* @return Factory|View
*/
- public function index(): Factory | \Illuminate\Contracts\View\View
+ public function index(): Factory|\Illuminate\Contracts\View\View
{
if ($this->hasNoTables() || $this->isOldVersionInstalled()) {
app('view')->share('FF_VERSION', config('firefly.version'));
// index will set FF3 version.
try {
- AppConfiguration::set('ff3_version', (string)config('firefly.version'));
- AppConfiguration::set('ff3_build_time', (int)config('firefly.build_time'));
+ AppConfiguration::set('ff3_version', (string) config('firefly.version'));
+ AppConfiguration::set('ff3_build_time', (int) config('firefly.build_time'));
} catch (FireflyException $e) {
Log::warning($e->getMessage());
}
+
return view('install.index');
}
@@ -98,7 +99,7 @@ final class InstallController extends Controller
public function keys(): void
{
if ($this->hasNoTables() || $this->isOldVersionInstalled()) {
- $key = RSA::createKey(4096);
+ $key = RSA::createKey(4096);
[$publicKey, $privateKey] = [Passport::keyPath('oauth-public.key'), Passport::keyPath('oauth-private.key')];
@@ -106,7 +107,7 @@ final class InstallController extends Controller
return;
}
- file_put_contents($publicKey, (string)$key->getPublicKey());
+ file_put_contents($publicKey, (string) $key->getPublicKey());
file_put_contents($privateKey, $key->toString('PKCS1'));
}
}
@@ -114,14 +115,14 @@ final class InstallController extends Controller
public function runCommand(Request $request): JsonResponse
{
if ($this->hasNoTables() || $this->isOldVersionInstalled()) {
- $requestIndex = (int)$request->input('index');
+ $requestIndex = (int) $request->input('index');
$response = ['hasNextCommand' => false, 'done' => true, 'previous' => null, 'error' => false, 'errorMessage' => null];
Log::debug(sprintf('Will now run commands. Request index is %d', $requestIndex));
- $indexes = array_keys($this->upgradeCommands);
+ $indexes = array_keys($this->upgradeCommands);
if (array_key_exists($requestIndex, $indexes)) {
- $command = $indexes[$requestIndex];
- $parameters = $this->upgradeCommands[$command];
+ $command = $indexes[$requestIndex];
+ $parameters = $this->upgradeCommands[$command];
Log::debug(sprintf('Will now execute command "%s" with parameters', $command), $parameters);
try {
diff --git a/app/Http/Controllers/TagController.php b/app/Http/Controllers/TagController.php
index b3c9ae946c..a6a780259f 100644
--- a/app/Http/Controllers/TagController.php
+++ b/app/Http/Controllers/TagController.php
@@ -298,7 +298,7 @@ final class TagController extends Controller
// default values:
$subTitleIcon = 'bi-tag';
$page = (int) $request->input('page');
- $page = min(max(1, $page), 2 ** 16);
+ $page = min(max(1, $page), 2 ** 16);
$pageSize = (int) Preferences::get('listPageSize', 50)->data;
$periods = [];
$subTitle = (string) trans('firefly.all_journals_for_tag', ['tag' => $tag->tag]);
diff --git a/app/Http/Controllers/Transaction/IndexController.php b/app/Http/Controllers/Transaction/IndexController.php
index b1bea92fe1..763f729843 100644
--- a/app/Http/Controllers/Transaction/IndexController.php
+++ b/app/Http/Controllers/Transaction/IndexController.php
@@ -152,7 +152,7 @@ final class IndexController extends Controller
$subTitleIcon = config('firefly.transactionIconsByType.'.$objectType);
$types = config('firefly.transactionTypesByType.'.$objectType);
$page = (int) $request->input('page');
- $page = min(max(1, $page), 2 ** 16);
+ $page = min(max(1, $page), 2 ** 16);
$pageSize = (int) Preferences::get('listPageSize', 50)->data;
$path = route('transactions.index.all', [$objectType]);
$first = $this->repository->firstNull();
diff --git a/app/Http/Controllers/Transaction/ShowController.php b/app/Http/Controllers/Transaction/ShowController.php
index 6f4d1c3f17..d7b3b18ffd 100644
--- a/app/Http/Controllers/Transaction/ShowController.php
+++ b/app/Http/Controllers/Transaction/ShowController.php
@@ -37,7 +37,6 @@ use FireflyIII\User;
use Illuminate\Contracts\View\Factory;
use Illuminate\Http\JsonResponse;
use Illuminate\View\View;
-
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
/**
diff --git a/app/Http/Controllers/TransactionCurrency/IndexController.php b/app/Http/Controllers/TransactionCurrency/IndexController.php
index 1f10dbd174..7bb316c38f 100644
--- a/app/Http/Controllers/TransactionCurrency/IndexController.php
+++ b/app/Http/Controllers/TransactionCurrency/IndexController.php
@@ -72,7 +72,7 @@ final class IndexController extends Controller
/** @var User $user */
$user = auth()->user();
$page = 0 === (int) $request->input('page') ? 1 : (int) $request->input('page');
- $page = min(max(1, $page), 2 ** 16);
+ $page = min(max(1, $page), 2 ** 16);
$pageSize = (int) Preferences::get('listPageSize', 50)->data;
$collection = $this->repository->getAll();
diff --git a/app/Http/Middleware/Installer.php b/app/Http/Middleware/Installer.php
index 31f1dc579a..39507685a5 100644
--- a/app/Http/Middleware/Installer.php
+++ b/app/Http/Middleware/Installer.php
@@ -74,6 +74,4 @@ class Installer
// update firefly version
return $next($request);
}
-
-
}
diff --git a/app/Jobs/CreateAutoBudgetLimits.php b/app/Jobs/CreateAutoBudgetLimits.php
index 93cf5e9364..d61661dd50 100644
--- a/app/Jobs/CreateAutoBudgetLimits.php
+++ b/app/Jobs/CreateAutoBudgetLimits.php
@@ -122,7 +122,13 @@ class CreateAutoBudgetLimits implements ShouldQueue
// if has one, calculate expenses and use that as a base.
$repository = app(OperationsRepositoryInterface::class);
$repository->setUser($autoBudget->budget->user);
- $spent = $repository->sumExpenses($previousStart, $previousEnd, null, new Collection()->push($autoBudget->budget), $autoBudget->transactionCurrency);
+ $spent = $repository->sumExpenses(
+ $previousStart,
+ $previousEnd,
+ null,
+ new Collection()->push($autoBudget->budget),
+ $autoBudget->transactionCurrency
+ );
$currencyId = $autoBudget->transaction_currency_id;
$spentAmount = $spent[$currencyId]['sum'] ?? '0';
Log::debug(sprintf('Spent in previous budget period (%s-%s) is %s', $previousStart->format('Y-m-d'), $previousEnd->format('Y-m-d'), $spentAmount));
@@ -212,7 +218,13 @@ class CreateAutoBudgetLimits implements ShouldQueue
// if has one, calculate expenses and use that as a base.
$repository = app(OperationsRepositoryInterface::class);
$repository->setUser($autoBudget->budget->user);
- $spent = $repository->sumExpenses($previousStart, $previousEnd, null, new Collection()->push($autoBudget->budget), $autoBudget->transactionCurrency);
+ $spent = $repository->sumExpenses(
+ $previousStart,
+ $previousEnd,
+ null,
+ new Collection()->push($autoBudget->budget),
+ $autoBudget->transactionCurrency
+ );
$currencyId = $autoBudget->transaction_currency_id;
$spentAmount = $spent[$currencyId]['sum'] ?? '0';
Log::debug(sprintf('Spent in previous budget period (%s-%s) is %s', $previousStart->format('Y-m-d'), $previousEnd->format('Y-m-d'), $spentAmount));
diff --git a/app/Support/AppConfiguration.php b/app/Support/AppConfiguration.php
index 6345872719..9ccf721331 100644
--- a/app/Support/AppConfiguration.php
+++ b/app/Support/AppConfiguration.php
@@ -61,7 +61,7 @@ class AppConfiguration
try {
/** @var null|Configuration $config */
$config = Configuration::query()->where('name', $name)->first(['id', 'name', 'data']);
- } catch (Exception|QueryException|FireflyException $e) {
+ } catch (Exception|FireflyException|QueryException $e) {
throw new FireflyException(sprintf('Could not poll the database: %s', $e->getMessage()), 0, $e);
}
diff --git a/app/Support/ExpandedForm.php b/app/Support/ExpandedForm.php
index d1ef179f69..79227827ca 100644
--- a/app/Support/ExpandedForm.php
+++ b/app/Support/ExpandedForm.php
@@ -100,15 +100,14 @@ class ExpandedForm
try {
$html = view('form.checkbox', [
- 'classes' => $classes,
- 'name' => $name,
- 'label' => $label,
- 'value' => $value,
- 'options' => $options,
+ 'classes' => $classes,
+ 'name' => $name,
+ 'label' => $label,
+ 'value' => $value,
+ 'options' => $options,
'inputClasses' => $inputClasses,
])->render();
} catch (Throwable $e) {
-
Log::debug(sprintf('Could not render checkbox(): %s', $e->getMessage()));
$html = 'Could not render checkbox.';
@@ -165,6 +164,23 @@ class ExpandedForm
return $html;
}
+ /**
+ * @throws FireflyException
+ */
+ public function hidden(string $name, mixed $value): string
+ {
+ try {
+ $html = view('form.hidden', ['name' => $name, 'value' => $value])->render();
+ } catch (Throwable $e) {
+ Log::debug(sprintf('Could not render hidden(): %s', $e->getMessage()));
+ $html = sprintf('Could not render hidden: %s', $e->getMessage());
+
+ throw new FireflyException($html, 0, $e);
+ }
+
+ return $html;
+ }
+
/**
* @param mixed $value
*
@@ -325,23 +341,6 @@ class ExpandedForm
return $html;
}
- /**
- * @throws FireflyException
- */
- public function hidden(string $name, mixed $value): string
- {
- try {
- $html = view('form.hidden', ['name' => $name, 'value' => $value])->render();
- } catch (Throwable $e) {
- Log::debug(sprintf('Could not render hidden(): %s', $e->getMessage()));
- $html = sprintf('Could not render hidden: %s', $e->getMessage());
-
- throw new FireflyException($html, 0, $e);
- }
-
- return $html;
- }
-
/**
* @throws FireflyException
*/
diff --git a/app/Support/Export/ExportDataGenerator.php b/app/Support/Export/ExportDataGenerator.php
index f361cf8c12..ce7a2d0d8d 100644
--- a/app/Support/Export/ExportDataGenerator.php
+++ b/app/Support/Export/ExportDataGenerator.php
@@ -286,7 +286,7 @@ class ExportDataGenerator
// load the CSV document from a string
$csv = Writer::fromString();
- $escaper = new EscapeFormula();
+ $escaper = new EscapeFormula();
$csv->addFormatter($escaper->escapeRecord(...));
// insert the header
@@ -357,7 +357,7 @@ class ExportDataGenerator
// load the CSV document from a string
$csv = Writer::fromString();
- $escaper = new EscapeFormula();
+ $escaper = new EscapeFormula();
$csv->addFormatter($escaper->escapeRecord(...));
// insert the header
@@ -418,7 +418,7 @@ class ExportDataGenerator
// load the CSV document from a string
$csv = Writer::fromString();
- $escaper = new EscapeFormula();
+ $escaper = new EscapeFormula();
$csv->addFormatter($escaper->escapeRecord(...));
// insert the header
@@ -465,7 +465,7 @@ class ExportDataGenerator
// load the CSV document from a string
$csv = Writer::fromString();
- $escaper = new EscapeFormula();
+ $escaper = new EscapeFormula();
$csv->addFormatter($escaper->escapeRecord(...));
// insert the header
@@ -547,7 +547,7 @@ class ExportDataGenerator
// load the CSV document from a string
$csv = Writer::fromString();
- $escaper = new EscapeFormula();
+ $escaper = new EscapeFormula();
$csv->addFormatter($escaper->escapeRecord(...));
// insert the header
@@ -716,7 +716,7 @@ class ExportDataGenerator
}
// load the CSV document from a string
$csv = Writer::fromString();
- $escaper = new EscapeFormula();
+ $escaper = new EscapeFormula();
$csv->addFormatter($escaper->escapeRecord(...));
// insert the header
@@ -865,7 +865,7 @@ class ExportDataGenerator
// load the CSV document from a string
$csv = Writer::fromString();
- $escaper = new EscapeFormula();
+ $escaper = new EscapeFormula();
$csv->addFormatter($escaper->escapeRecord(...));
// insert the header
@@ -923,7 +923,7 @@ class ExportDataGenerator
// load the CSV document from a string
$csv = Writer::fromString();
- $escaper = new EscapeFormula();
+ $escaper = new EscapeFormula();
$csv->addFormatter($escaper->escapeRecord(...));
// insert the header
@@ -1121,7 +1121,7 @@ class ExportDataGenerator
// load the CSV document from a string
$csv = Writer::fromString();
- $escaper = new EscapeFormula();
+ $escaper = new EscapeFormula();
$csv->addFormatter($escaper->escapeRecord(...));
// insert the header
diff --git a/app/Support/Form/FormSupport.php b/app/Support/Form/FormSupport.php
index 916a72f746..181d2c38b8 100644
--- a/app/Support/Form/FormSupport.php
+++ b/app/Support/Form/FormSupport.php
@@ -139,19 +139,6 @@ trait FormSupport
return today(config('app.timezone'));
}
- protected function getHolderClasses(string $name): string
- {
- // Get errors from session:
- /** @var null|MessageBag $errors */
- $errors = session('errors');
-
- if (null !== $errors && $errors->has($name)) {
- return 'has-error has-feedback';
- }
-
- return 'has-error has-feedback';
- }
-
protected function getErrorClassesForCheckbox(string $name): string
{
// Get errors from session:
@@ -165,6 +152,19 @@ trait FormSupport
return 'form-check-input';
}
+ protected function getHolderClasses(string $name): string
+ {
+ // Get errors from session:
+ /** @var null|MessageBag $errors */
+ $errors = session('errors');
+
+ if (null !== $errors && $errors->has($name)) {
+ return 'has-error has-feedback';
+ }
+
+ return 'has-error has-feedback';
+ }
+
protected function label(string $name, ?array $options = null): string
{
$options ??= [];
diff --git a/app/Support/Http/Controllers/AugumentData.php b/app/Support/Http/Controllers/AugumentData.php
index a3a940b1ba..a507156873 100644
--- a/app/Support/Http/Controllers/AugumentData.php
+++ b/app/Support/Http/Controllers/AugumentData.php
@@ -222,7 +222,14 @@ trait AugumentData
$currentEnd->addMonth();
}
// primary currency amount.
- $expenses = $opsRepository->sumExpenses($currentStart, $currentEnd, null, $budgetCollection, $entry->transactionCurrency, $this->convertToPrimary);
+ $expenses = $opsRepository->sumExpenses(
+ $currentStart,
+ $currentEnd,
+ null,
+ $budgetCollection,
+ $entry->transactionCurrency,
+ $this->convertToPrimary
+ );
$spent = $expenses[$currency->id]['sum'] ?? '0';
$entry->pc_spent = $spent;
diff --git a/app/Support/JsonApi/Enrichments/RecurringEnrichment.php b/app/Support/JsonApi/Enrichments/RecurringEnrichment.php
index d0c09bf027..2428353cb0 100644
--- a/app/Support/JsonApi/Enrichments/RecurringEnrichment.php
+++ b/app/Support/JsonApi/Enrichments/RecurringEnrichment.php
@@ -354,7 +354,11 @@ class RecurringEnrichment implements EnrichmentInterface
/** @var RecurrenceRepetition $repetition */
foreach ($set as $repetition) {
- $recurrence = $this->collection->filter(static fn (Recurrence $item): bool => (int) $item->id === (int) $repetition->recurrence_id)->first();
+ $recurrence = $this->collection->filter(
+ static fn (Recurrence $item): bool => (int) $item->id === (int) $repetition->recurrence_id
+ )
+ ->first()
+ ;
$fromDate = clone ($recurrence->latest_date ?? $recurrence->first_date);
$recurrenceId = (int) $repetition->recurrence_id;
$repId = (int) $repetition->id;
diff --git a/app/Support/System/IsOldVersion.php b/app/Support/System/IsOldVersion.php
index d83816574e..dd60451d3e 100644
--- a/app/Support/System/IsOldVersion.php
+++ b/app/Support/System/IsOldVersion.php
@@ -47,8 +47,8 @@ trait IsOldVersion
return 0;
}
- $currentDate = Carbon::createFromFormat('!Y-m-d', $currentParts[1]);
- $latestDate = Carbon::createFromFormat('!Y-m-d', $latestParts[1]);
+ $currentDate = Carbon::createFromFormat('!Y-m-d', $currentParts[1]);
+ $latestDate = Carbon::createFromFormat('!Y-m-d', $latestParts[1]);
if ($currentDate->lt($latestDate)) {
Log::debug(sprintf('This current version is older, current = %s, latest version %s.', $current, $latest));
@@ -71,16 +71,16 @@ trait IsOldVersion
protected function isOldVersionInstalled(): bool
{
// version compare thing.
- $configBuildTime = (int)config('firefly.build_time');
- $dbBuildTime = (int)AppConfiguration::getFresh('ff3_build_time', 123)->data;
+ $configBuildTime = (int) config('firefly.build_time');
+ $dbBuildTime = (int) AppConfiguration::getFresh('ff3_build_time', 123)->data;
$configTime = Carbon::createFromTimestamp($configBuildTime, config('app.timezone'));
$dbTime = Carbon::createFromTimestamp($dbBuildTime, config('app.timezone'));
if ($dbBuildTime < $configBuildTime) {
Log::warning(sprintf(
- 'Your database was last managed by an older version of Firefly III (I see %s, I expect %s). Redirect to migrate routine.',
- $dbTime->format('Y-m-d H:i:s'),
- $configTime->format('Y-m-d H:i:s')
- ));
+ 'Your database was last managed by an older version of Firefly III (I see %s, I expect %s). Redirect to migrate routine.',
+ $dbTime->format('Y-m-d H:i:s'),
+ $configTime->format('Y-m-d H:i:s')
+ ));
return true;
}
diff --git a/app/Support/Twig/General.php b/app/Support/Twig/General.php
index 1eb64898d8..e7b0ba8fff 100644
--- a/app/Support/Twig/General.php
+++ b/app/Support/Twig/General.php
@@ -39,6 +39,7 @@ use Override;
use Twig\Extension\AbstractExtension;
use Twig\TwigFilter;
use Twig\TwigFunction;
+
use function Safe\parse_url;
/**
@@ -103,9 +104,9 @@ class General extends AbstractExtension
'activeRoutePartialObjectType',
static function (array $context): string {
[, $route, $objectType] = func_get_args();
- $activeObjectType = $context['objectType'] ?? false;
+ $activeObjectType = $context['objectType'] ?? false;
- if ($objectType === $activeObjectType && false !== stripos((string)Route::getCurrentRoute()->getName(), (string)$route)) {
+ if ($objectType === $activeObjectType && false !== stripos((string) Route::getCurrentRoute()->getName(), (string) $route)) {
return 'active';
}
@@ -144,11 +145,11 @@ class General extends AbstractExtension
}
/** @var Carbon $date */
- $date = now();
+ $date = now();
// get the date from the current session. If it's in the future, keep `now()`.
/** @var Carbon $session */
- $session = clone session('end', today(config('app.timezone'))->endOfMonth());
+ $session = clone session('end', today(config('app.timezone'))->endOfMonth());
if ($session->lt($date)) {
$date = $session->copy();
$date->endOfDay();
@@ -156,13 +157,13 @@ class General extends AbstractExtension
Log::debug(sprintf('twig balance: Call finalAccountBalance with date/time "%s"', $date->toIso8601String()));
// 2025-10-08 replace finalAccountBalance with accountsBalancesOptimized.
- $info = Steam::accountsBalancesOptimized(new Collection()->push($account), $date)[$account->id];
+ $info = Steam::accountsBalancesOptimized(new Collection()->push($account), $date)[$account->id];
// $info = Steam::finalAccountBalance($account, $date);
$currency = Steam::getAccountCurrency($account);
$primary = Amount::getPrimaryCurrency();
$convertToPrimary = Amount::convertToPrimary();
$usePrimary = $convertToPrimary && $primary->id !== $currency->id;
- $currency ??= $primary;
+ $currency ??= $primary;
$strings = [];
foreach ($info as $key => $balance) {
if ('balance' === $key) {
@@ -202,7 +203,7 @@ class General extends AbstractExtension
protected function carbonize(): TwigFunction
{
- return new TwigFunction('carbonize', static fn(string $date): Carbon => new Carbon($date, config('app.timezone')));
+ return new TwigFunction('carbonize', static fn (string $date): Carbon => new Carbon($date, config('app.timezone')));
}
/**
@@ -225,15 +226,15 @@ class General extends AbstractExtension
return new TwigFilter('filesize', static function (int $size): string {
// less than one GB, more than one MB
if ($size < (1024 * 1024 * 2014) && $size >= (1024 * 1024)) {
- return round($size / (1024 * 1024), 2) . ' MB';
+ return round($size / (1024 * 1024), 2).' MB';
}
// less than one MB
if ($size < (1024 * 1024)) {
- return round($size / 1024, 2) . ' KB';
+ return round($size / 1024, 2).' KB';
}
- return $size . ' bytes';
+ return $size.' bytes';
});
}
@@ -282,7 +283,7 @@ class General extends AbstractExtension
static function (string $text): string {
$converter = new GithubFlavoredMarkdownConverter(['allow_unsafe_links' => false, 'max_nesting_level' => 5, 'html_input' => 'escape']);
- return (string)$converter->convert($text);
+ return (string) $converter->convert($text);
},
['is_safe' => ['html']]
);
@@ -315,15 +316,15 @@ class General extends AbstractExtension
{
return new TwigFilter(
'mimeIcon',
- static fn(string $string): string => match ($string) {
- 'application/pdf' => 'fa-file-pdf-o',
+ static fn (string $string): string => match ($string) {
+ 'application/pdf' => 'fa-file-pdf-o',
'image/webp',
'image/png',
'image/jpeg',
'image/svg+xml',
'image/heic',
'image/heic-sequence',
- 'application/vnd.oasis.opendocument.image' => 'fa-file-image-o',
+ 'application/vnd.oasis.opendocument.image' => 'fa-file-image-o',
'application/msword',
'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
'application/vnd.openxmlformats-officedocument.wordprocessingml.template',
@@ -336,7 +337,7 @@ class General extends AbstractExtension
'application/vnd.oasis.opendocument.text',
'application/vnd.oasis.opendocument.text-template',
'application/vnd.oasis.opendocument.text-web',
- 'application/vnd.oasis.opendocument.text-master' => 'fa-file-word-o',
+ 'application/vnd.oasis.opendocument.text-master' => 'fa-file-word-o',
'application/vnd.ms-excel',
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
'application/vnd.openxmlformats-officedocument.spreadsheetml.template',
@@ -344,7 +345,7 @@ class General extends AbstractExtension
'application/vnd.sun.xml.calc.template',
'application/vnd.stardivision.calc',
'application/vnd.oasis.opendocument.spreadsheet',
- 'application/vnd.oasis.opendocument.spreadsheet-template' => 'fa-file-excel-o',
+ 'application/vnd.oasis.opendocument.spreadsheet-template' => 'fa-file-excel-o',
'application/vnd.ms-powerpoint',
'application/vnd.openxmlformats-officedocument.presentationml.presentation',
'application/vnd.openxmlformats-officedocument.presentationml.template',
@@ -353,18 +354,18 @@ class General extends AbstractExtension
'application/vnd.sun.xml.impress.template',
'application/vnd.stardivision.impress',
'application/vnd.oasis.opendocument.presentation',
- 'application/vnd.oasis.opendocument.presentation-template' => 'fa-file-powerpoint-o',
+ 'application/vnd.oasis.opendocument.presentation-template' => 'fa-file-powerpoint-o',
'application/vnd.sun.xml.draw',
'application/vnd.sun.xml.draw.template',
'application/vnd.stardivision.draw',
- 'application/vnd.oasis.opendocument.chart' => 'bi-paint-bucket',
+ 'application/vnd.oasis.opendocument.chart' => 'bi-paint-bucket',
'application/vnd.oasis.opendocument.graphics',
'application/vnd.oasis.opendocument.graphics-template',
'application/vnd.sun.xml.math',
'application/vnd.stardivision.math',
'application/vnd.oasis.opendocument.formula',
- 'application/vnd.oasis.opendocument.database' => 'fa-calculator',
- default => 'fa-file-o'
+ 'application/vnd.oasis.opendocument.database' => 'fa-calculator',
+ default => 'fa-file-o'
},
['is_safe' => ['html']]
);
@@ -399,6 +400,6 @@ class General extends AbstractExtension
private function fireflyIIIConfig(): TwigFunction
{
- return new TwigFunction('fireflyiiiconfig', static fn(string $string, mixed $default): mixed => AppConfiguration::get($string, $default)->data);
+ return new TwigFunction('fireflyiiiconfig', static fn (string $string, mixed $default): mixed => AppConfiguration::get($string, $default)->data);
}
}
diff --git a/app/View/Components/Elements/TransactionAmount.php b/app/View/Components/Elements/TransactionAmount.php
index fbda9a5ce8..7bb2a968c8 100644
--- a/app/View/Components/Elements/TransactionAmount.php
+++ b/app/View/Components/Elements/TransactionAmount.php
@@ -23,11 +23,11 @@ class TransactionAmount extends Component
*/
public function __construct(string $type, array $amount, array $foreign, array $sourceAccount, ?string $pcAmount, ?Account $account)
{
- $this->type = $type;
- $this->amount = $amount;
- $this->foreign = $foreign;
- $this->account = $account;
- $this->pcAmount = $pcAmount;
+ $this->type = $type;
+ $this->amount = $amount;
+ $this->foreign = $foreign;
+ $this->account = $account;
+ $this->pcAmount = $pcAmount;
$this->sourceAccount = $sourceAccount;
}
diff --git a/app/View/Components/Form/Alpine/Checkbox.php b/app/View/Components/Form/Alpine/Checkbox.php
index d40e6ef0ec..c474ba9215 100644
--- a/app/View/Components/Form/Alpine/Checkbox.php
+++ b/app/View/Components/Form/Alpine/Checkbox.php
@@ -2,7 +2,6 @@
declare(strict_types=1);
-
namespace FireflyIII\View\Components\Form\Alpine;
use Closure;
@@ -14,20 +13,21 @@ class Checkbox extends Component
public string $id;
public string $value;
public string $title;
+
/**
* Create a new component instance.
*/
public function __construct(string $id, string $value, string $title)
{
- $this->id = $id;
- $this->value= $value;
+ $this->id = $id;
+ $this->value = $value;
$this->title = $title;
}
/**
* Get the view / contents that represent the component.
*/
- public function render(): View|Closure|string
+ public function render(): Closure|string|View
{
return view('components.form.alpine.checkbox');
}
diff --git a/app/View/Components/Form/Alpine/Deliveries.php b/app/View/Components/Form/Alpine/Deliveries.php
index 0bd7e26f0a..946aa67cc8 100644
--- a/app/View/Components/Form/Alpine/Deliveries.php
+++ b/app/View/Components/Form/Alpine/Deliveries.php
@@ -2,7 +2,6 @@
declare(strict_types=1);
-
namespace FireflyIII\View\Components\Form\Alpine;
use Closure;
@@ -12,18 +11,19 @@ use Illuminate\View\Component;
class Deliveries extends Component
{
public string $value;
+
/**
* Create a new component instance.
*/
public function __construct(string $value)
{
- $this->value= $value;
+ $this->value = $value;
}
/**
* Get the view / contents that represent the component.
*/
- public function render(): View|Closure|string
+ public function render(): Closure|string|View
{
return view('components.form.alpine.deliveries');
}
diff --git a/app/View/Components/Form/Alpine/Responses.php b/app/View/Components/Form/Alpine/Responses.php
index 6c93f66d80..a0ab30ff71 100644
--- a/app/View/Components/Form/Alpine/Responses.php
+++ b/app/View/Components/Form/Alpine/Responses.php
@@ -2,7 +2,6 @@
declare(strict_types=1);
-
namespace FireflyIII\View\Components\Form\Alpine;
use Closure;
@@ -12,18 +11,19 @@ use Illuminate\View\Component;
class Responses extends Component
{
public string $value;
+
/**
* Create a new component instance.
*/
public function __construct(string $value)
{
- $this->value= $value;
+ $this->value = $value;
}
/**
* Get the view / contents that represent the component.
*/
- public function render(): View|Closure|string
+ public function render(): Closure|string|View
{
return view('components.form.alpine.responses');
}
diff --git a/app/View/Components/Form/Alpine/Title.php b/app/View/Components/Form/Alpine/Title.php
index b5f5bcd41d..1b576d8c84 100644
--- a/app/View/Components/Form/Alpine/Title.php
+++ b/app/View/Components/Form/Alpine/Title.php
@@ -2,7 +2,6 @@
declare(strict_types=1);
-
namespace FireflyIII\View\Components\Form\Alpine;
use Closure;
@@ -12,18 +11,19 @@ use Illuminate\View\Component;
class Title extends Component
{
public string $value;
+
/**
* Create a new component instance.
*/
public function __construct(string $value)
{
- $this->value= $value;
+ $this->value = $value;
}
/**
* Get the view / contents that represent the component.
*/
- public function render(): View|Closure|string
+ public function render(): Closure|string|View
{
return view('components.form.alpine.title');
}
diff --git a/app/View/Components/Form/Alpine/Triggers.php b/app/View/Components/Form/Alpine/Triggers.php
index f240e510dd..e4c86e8cc2 100644
--- a/app/View/Components/Form/Alpine/Triggers.php
+++ b/app/View/Components/Form/Alpine/Triggers.php
@@ -2,7 +2,6 @@
declare(strict_types=1);
-
namespace FireflyIII\View\Components\Form\Alpine;
use Closure;
@@ -13,19 +12,20 @@ class Triggers extends Component
{
public string $value;
public string $multiple = '';
+
/**
* Create a new component instance.
*/
public function __construct(string $value, string $multiple = '')
{
- $this->value= $value;
+ $this->value = $value;
$this->multiple = $multiple;
}
/**
* Get the view / contents that represent the component.
*/
- public function render(): View|Closure|string
+ public function render(): Closure|string|View
{
return view('components.form.alpine.triggers');
}
diff --git a/app/View/Components/Form/Alpine/Url.php b/app/View/Components/Form/Alpine/Url.php
index f65243f119..d6d3a877a7 100644
--- a/app/View/Components/Form/Alpine/Url.php
+++ b/app/View/Components/Form/Alpine/Url.php
@@ -2,7 +2,6 @@
declare(strict_types=1);
-
namespace FireflyIII\View\Components\Form\Alpine;
use Closure;
@@ -12,18 +11,19 @@ use Illuminate\View\Component;
class Url extends Component
{
public string $value;
+
/**
* Create a new component instance.
*/
public function __construct(string $value)
{
- $this->value= $value;
+ $this->value = $value;
}
/**
* Get the view / contents that represent the component.
*/
- public function render(): View|Closure|string
+ public function render(): Closure|string|View
{
return view('components.form.alpine.url');
}
diff --git a/app/View/Components/Lists/Ale.php b/app/View/Components/Lists/Ale.php
index 6d34632832..b00b6e2276 100644
--- a/app/View/Components/Lists/Ale.php
+++ b/app/View/Components/Lists/Ale.php
@@ -2,7 +2,6 @@
declare(strict_types=1);
-
namespace FireflyIII\View\Components\Lists;
use Closure;
@@ -13,6 +12,7 @@ use Illuminate\View\Component;
class Ale extends Component
{
public array|Collection $logEntries;
+
/**
* Create a new component instance.
*/
@@ -24,7 +24,7 @@ class Ale extends Component
/**
* Get the view / contents that represent the component.
*/
- public function render(): View|Closure|string
+ public function render(): Closure|string|View
{
return view('components.lists.ale');
}
diff --git a/app/View/Components/Lists/Attachments.php b/app/View/Components/Lists/Attachments.php
index c8bdecdd8a..82791d9e88 100644
--- a/app/View/Components/Lists/Attachments.php
+++ b/app/View/Components/Lists/Attachments.php
@@ -2,7 +2,6 @@
declare(strict_types=1);
-
namespace FireflyIII\View\Components\Lists;
use Closure;
@@ -12,11 +11,12 @@ use Illuminate\View\Component;
class Attachments extends Component
{
- public Collection|array $attachments;
+ public array|Collection $attachments;
+
/**
* Create a new component instance.
*/
- public function __construct(Collection|array $attachments)
+ public function __construct(array|Collection $attachments)
{
$this->attachments = $attachments;
}
@@ -24,7 +24,7 @@ class Attachments extends Component
/**
* Get the view / contents that represent the component.
*/
- public function render(): View|Closure|string
+ public function render(): Closure|string|View
{
return view('components.lists.attachments');
}
diff --git a/app/View/Components/Lists/Categories.php b/app/View/Components/Lists/Categories.php
index cdda40809e..912b720033 100644
--- a/app/View/Components/Lists/Categories.php
+++ b/app/View/Components/Lists/Categories.php
@@ -2,7 +2,6 @@
declare(strict_types=1);
-
namespace FireflyIII\View\Components\Lists;
use Closure;
@@ -13,6 +12,7 @@ use Illuminate\View\Component;
class Categories extends Component
{
public LengthAwarePaginator $categories;
+
/**
* Create a new component instance.
*/
@@ -24,7 +24,7 @@ class Categories extends Component
/**
* Get the view / contents that represent the component.
*/
- public function render(): View|Closure|string
+ public function render(): Closure|string|View
{
return view('components.lists.categories');
}
diff --git a/app/View/Components/Lists/GroupsLarge.php b/app/View/Components/Lists/GroupsLarge.php
index c7defdfbe1..899d88ed94 100644
--- a/app/View/Components/Lists/GroupsLarge.php
+++ b/app/View/Components/Lists/GroupsLarge.php
@@ -13,26 +13,26 @@ use Illuminate\View\Component;
class GroupsLarge extends Component
{
- public LengthAwarePaginator|Collection $groups;
- public ?Account $account;
- public bool $showCategory;
- public bool $showBudget;
+ public Collection|LengthAwarePaginator $groups;
+ public ?Account $account;
+ public bool $showCategory;
+ public bool $showBudget;
/**
* Create a new component instance.
*/
- public function __construct(LengthAwarePaginator| Collection $groups, ?bool $showCategory, ?bool $showBudget, ?Account $account = null)
+ public function __construct(Collection|LengthAwarePaginator $groups, ?bool $showCategory, ?bool $showBudget, ?Account $account = null)
{
$this->groups = $groups;
$this->account = $account;
- $this->showCategory = $showCategory ??false;
+ $this->showCategory = $showCategory ?? false;
$this->showBudget = $showBudget ?? false;
}
/**
* Get the view / contents that represent the component.
*/
- public function render(): Closure | string | View
+ public function render(): Closure|string|View
{
return view('components.lists.groups-large');
}
diff --git a/app/View/Components/Lists/PiggyBankEvents.php b/app/View/Components/Lists/PiggyBankEvents.php
index aa422c1b04..3e34a6c46c 100644
--- a/app/View/Components/Lists/PiggyBankEvents.php
+++ b/app/View/Components/Lists/PiggyBankEvents.php
@@ -2,7 +2,6 @@
declare(strict_types=1);
-
namespace FireflyIII\View\Components\Lists;
use Closure;
@@ -14,19 +13,20 @@ class PiggyBankEvents extends Component
{
public Collection $events;
public bool $showPiggyBank;
+
/**
* Create a new component instance.
*/
public function __construct(Collection $events, bool $showPiggyBank)
{
- $this->events = $events;
+ $this->events = $events;
$this->showPiggyBank = $showPiggyBank;
}
/**
* Get the view / contents that represent the component.
*/
- public function render(): View|Closure|string
+ public function render(): Closure|string|View
{
return view('components.lists.piggy-bank-events');
}
diff --git a/app/View/Components/Report/Partial/JournalsAudit.php b/app/View/Components/Report/Partial/JournalsAudit.php
index 7aead03671..153c33ab7b 100644
--- a/app/View/Components/Report/Partial/JournalsAudit.php
+++ b/app/View/Components/Report/Partial/JournalsAudit.php
@@ -2,7 +2,6 @@
declare(strict_types=1);
-
namespace FireflyIII\View\Components\Report\Partial;
use Closure;
@@ -15,12 +14,13 @@ class JournalsAudit extends Component
public array $journals;
public array $auditData;
public Account $account;
+
/**
* Create a new component instance.
*/
- public function __construct(array $journals,array $auditData, Account $account)
+ public function __construct(array $journals, array $auditData, Account $account)
{
- $this->journals = $journals;
+ $this->journals = $journals;
$this->auditData = $auditData;
$this->account = $account;
}
@@ -28,7 +28,7 @@ class JournalsAudit extends Component
/**
* Get the view / contents that represent the component.
*/
- public function render(): View|Closure|string
+ public function render(): Closure|string|View
{
return view('components.report.partial.journals-audit');
}
diff --git a/composer.lock b/composer.lock
index 81925b66e9..65315f1fe2 100644
--- a/composer.lock
+++ b/composer.lock
@@ -1246,22 +1246,22 @@
},
{
"name": "guzzlehttp/guzzle",
- "version": "7.13.2",
+ "version": "7.14.0",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle.git",
- "reference": "bcd989ad36c92d42a3715379af91f2defee5b8dd"
+ "reference": "aef242412e13128b5049864867bb49fc37dd39de"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/guzzle/zipball/bcd989ad36c92d42a3715379af91f2defee5b8dd",
- "reference": "bcd989ad36c92d42a3715379af91f2defee5b8dd",
+ "url": "https://api.github.com/repos/guzzle/guzzle/zipball/aef242412e13128b5049864867bb49fc37dd39de",
+ "reference": "aef242412e13128b5049864867bb49fc37dd39de",
"shasum": ""
},
"require": {
"ext-json": "*",
- "guzzlehttp/promises": "^2.5",
- "guzzlehttp/psr7": "^2.12.3",
+ "guzzlehttp/promises": "^2.5.1",
+ "guzzlehttp/psr7": "^2.12.4",
"php": "^7.2.5 || ^8.0",
"psr/http-client": "^1.0",
"symfony/deprecation-contracts": "^2.5 || ^3.0",
@@ -1354,7 +1354,7 @@
],
"support": {
"issues": "https://github.com/guzzle/guzzle/issues",
- "source": "https://github.com/guzzle/guzzle/tree/7.13.2"
+ "source": "https://github.com/guzzle/guzzle/tree/7.14.0"
},
"funding": [
{
@@ -1370,20 +1370,20 @@
"type": "tidelift"
}
],
- "time": "2026-07-05T19:00:11+00:00"
+ "time": "2026-07-08T22:54:09+00:00"
},
{
"name": "guzzlehttp/promises",
- "version": "2.5.0",
+ "version": "2.5.1",
"source": {
"type": "git",
"url": "https://github.com/guzzle/promises.git",
- "reference": "4360e982f87f5f258bf872d094647791db2f4c8e"
+ "reference": "9ad1e4fc607446a055b95870c7f668e93b5cff29"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/promises/zipball/4360e982f87f5f258bf872d094647791db2f4c8e",
- "reference": "4360e982f87f5f258bf872d094647791db2f4c8e",
+ "url": "https://api.github.com/repos/guzzle/promises/zipball/9ad1e4fc607446a055b95870c7f668e93b5cff29",
+ "reference": "9ad1e4fc607446a055b95870c7f668e93b5cff29",
"shasum": ""
},
"require": {
@@ -1438,7 +1438,7 @@
],
"support": {
"issues": "https://github.com/guzzle/promises/issues",
- "source": "https://github.com/guzzle/promises/tree/2.5.0"
+ "source": "https://github.com/guzzle/promises/tree/2.5.1"
},
"funding": [
{
@@ -1454,20 +1454,20 @@
"type": "tidelift"
}
],
- "time": "2026-06-02T12:23:43+00:00"
+ "time": "2026-07-08T15:48:39+00:00"
},
{
"name": "guzzlehttp/psr7",
- "version": "2.12.3",
+ "version": "2.12.4",
"source": {
"type": "git",
"url": "https://github.com/guzzle/psr7.git",
- "reference": "7ec62dc3f44aa218487dbed81a9bf9bc647be55d"
+ "reference": "51e27f9e2b332ab3e72f4520d5ff4f3c68c3577c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/psr7/zipball/7ec62dc3f44aa218487dbed81a9bf9bc647be55d",
- "reference": "7ec62dc3f44aa218487dbed81a9bf9bc647be55d",
+ "url": "https://api.github.com/repos/guzzle/psr7/zipball/51e27f9e2b332ab3e72f4520d5ff4f3c68c3577c",
+ "reference": "51e27f9e2b332ab3e72f4520d5ff4f3c68c3577c",
"shasum": ""
},
"require": {
@@ -1557,7 +1557,7 @@
],
"support": {
"issues": "https://github.com/guzzle/psr7/issues",
- "source": "https://github.com/guzzle/psr7/tree/2.12.3"
+ "source": "https://github.com/guzzle/psr7/tree/2.12.4"
},
"funding": [
{
@@ -1573,20 +1573,20 @@
"type": "tidelift"
}
],
- "time": "2026-06-23T15:21:08+00:00"
+ "time": "2026-07-08T15:56:20+00:00"
},
{
"name": "guzzlehttp/uri-template",
- "version": "v1.0.8",
+ "version": "v1.0.9",
"source": {
"type": "git",
"url": "https://github.com/guzzle/uri-template.git",
- "reference": "9c19128923b05a5d7355e5d2318d7808b7e33bbd"
+ "reference": "d7580af6d3f8384325d9cd3e99b21c3ed1848176"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/uri-template/zipball/9c19128923b05a5d7355e5d2318d7808b7e33bbd",
- "reference": "9c19128923b05a5d7355e5d2318d7808b7e33bbd",
+ "url": "https://api.github.com/repos/guzzle/uri-template/zipball/d7580af6d3f8384325d9cd3e99b21c3ed1848176",
+ "reference": "d7580af6d3f8384325d9cd3e99b21c3ed1848176",
"shasum": ""
},
"require": {
@@ -1643,7 +1643,7 @@
],
"support": {
"issues": "https://github.com/guzzle/uri-template/issues",
- "source": "https://github.com/guzzle/uri-template/tree/v1.0.8"
+ "source": "https://github.com/guzzle/uri-template/tree/v1.0.9"
},
"funding": [
{
@@ -1659,7 +1659,7 @@
"type": "tidelift"
}
],
- "time": "2026-06-23T13:02:23+00:00"
+ "time": "2026-07-08T16:19:22+00:00"
},
{
"name": "jc5/google2fa-laravel",
@@ -1885,16 +1885,16 @@
},
{
"name": "laravel/framework",
- "version": "v13.18.1",
+ "version": "v13.19.0",
"source": {
"type": "git",
"url": "https://github.com/laravel/framework.git",
- "reference": "7d66044819e269f05924793a6800022dc181d850"
+ "reference": "514502b38e11bd676ecf83b271c9452cc7500f16"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/framework/zipball/7d66044819e269f05924793a6800022dc181d850",
- "reference": "7d66044819e269f05924793a6800022dc181d850",
+ "url": "https://api.github.com/repos/laravel/framework/zipball/514502b38e11bd676ecf83b271c9452cc7500f16",
+ "reference": "514502b38e11bd676ecf83b271c9452cc7500f16",
"shasum": ""
},
"require": {
@@ -2105,7 +2105,7 @@
"issues": "https://github.com/laravel/framework/issues",
"source": "https://github.com/laravel/framework"
},
- "time": "2026-07-02T18:35:20+00:00"
+ "time": "2026-07-07T14:13:33+00:00"
},
{
"name": "laravel/passport",
@@ -2844,16 +2844,16 @@
},
{
"name": "league/flysystem",
- "version": "3.35.1",
+ "version": "3.35.2",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/flysystem.git",
- "reference": "f23af6c5aafd958a7593029a271d77baf5ed793c"
+ "reference": "b277b5dc3d56650b68904117124e79c851e12376"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/f23af6c5aafd958a7593029a271d77baf5ed793c",
- "reference": "f23af6c5aafd958a7593029a271d77baf5ed793c",
+ "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/b277b5dc3d56650b68904117124e79c851e12376",
+ "reference": "b277b5dc3d56650b68904117124e79c851e12376",
"shasum": ""
},
"require": {
@@ -2921,9 +2921,9 @@
],
"support": {
"issues": "https://github.com/thephpleague/flysystem/issues",
- "source": "https://github.com/thephpleague/flysystem/tree/3.35.1"
+ "source": "https://github.com/thephpleague/flysystem/tree/3.35.2"
},
- "time": "2026-06-25T06:52:23+00:00"
+ "time": "2026-07-06T14:42:07+00:00"
},
{
"name": "league/flysystem-local",
@@ -3046,16 +3046,16 @@
},
{
"name": "league/mime-type-detection",
- "version": "1.16.0",
+ "version": "1.17.0",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/mime-type-detection.git",
- "reference": "2d6702ff215bf922936ccc1ad31007edc76451b9"
+ "reference": "f5f47eff7c48ed1003069a2ca67f316fb4021c76"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/2d6702ff215bf922936ccc1ad31007edc76451b9",
- "reference": "2d6702ff215bf922936ccc1ad31007edc76451b9",
+ "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/f5f47eff7c48ed1003069a2ca67f316fb4021c76",
+ "reference": "f5f47eff7c48ed1003069a2ca67f316fb4021c76",
"shasum": ""
},
"require": {
@@ -3065,7 +3065,7 @@
"require-dev": {
"friendsofphp/php-cs-fixer": "^3.2",
"phpstan/phpstan": "^0.12.68",
- "phpunit/phpunit": "^8.5.8 || ^9.3 || ^10.0"
+ "phpunit/phpunit": "^8.5.8 || ^9.3 || ^10.0 || ^11.0 || ^12.0"
},
"type": "library",
"autoload": {
@@ -3086,7 +3086,7 @@
"description": "Mime-type detection for Flysystem",
"support": {
"issues": "https://github.com/thephpleague/mime-type-detection/issues",
- "source": "https://github.com/thephpleague/mime-type-detection/tree/1.16.0"
+ "source": "https://github.com/thephpleague/mime-type-detection/tree/1.17.0"
},
"funding": [
{
@@ -3098,7 +3098,7 @@
"type": "tidelift"
}
],
- "time": "2024-09-21T08:32:55+00:00"
+ "time": "2026-07-09T11:49:27+00:00"
},
{
"name": "league/oauth2-server",
@@ -9936,16 +9936,16 @@
},
{
"name": "vlucas/phpdotenv",
- "version": "v5.6.3",
+ "version": "v5.6.4",
"source": {
"type": "git",
"url": "https://github.com/vlucas/phpdotenv.git",
- "reference": "955e7815d677a3eaa7075231212f2110983adecc"
+ "reference": "416df702837983f8d5ff48c9c3fee4f5f57b980b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/955e7815d677a3eaa7075231212f2110983adecc",
- "reference": "955e7815d677a3eaa7075231212f2110983adecc",
+ "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/416df702837983f8d5ff48c9c3fee4f5f57b980b",
+ "reference": "416df702837983f8d5ff48c9c3fee4f5f57b980b",
"shasum": ""
},
"require": {
@@ -10004,7 +10004,7 @@
],
"support": {
"issues": "https://github.com/vlucas/phpdotenv/issues",
- "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.3"
+ "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.4"
},
"funding": [
{
@@ -10016,7 +10016,7 @@
"type": "tidelift"
}
],
- "time": "2025-12-27T19:49:13+00:00"
+ "time": "2026-07-06T19:11:50+00:00"
},
{
"name": "voku/portable-ascii",
@@ -11798,16 +11798,16 @@
},
{
"name": "phpunit/php-code-coverage",
- "version": "14.2.2",
+ "version": "14.2.3",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "10d7da3628a99289cdf4c662dd7f0d73f1baec83"
+ "reference": "82f6e49ff224e2cde923d74425e583a883910783"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/10d7da3628a99289cdf4c662dd7f0d73f1baec83",
- "reference": "10d7da3628a99289cdf4c662dd7f0d73f1baec83",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/82f6e49ff224e2cde923d74425e583a883910783",
+ "reference": "82f6e49ff224e2cde923d74425e583a883910783",
"shasum": ""
},
"require": {
@@ -11815,7 +11815,7 @@
"ext-libxml": "*",
"ext-mbstring": "*",
"ext-xmlwriter": "*",
- "nikic/php-parser": "^5.7.0",
+ "nikic/php-parser": "^5.8.0",
"php": ">=8.4",
"phpunit/php-text-template": "^6.0",
"sebastian/complexity": "^6.0",
@@ -11826,7 +11826,7 @@
"theseer/tokenizer": "^2.0.1"
},
"require-dev": {
- "phpunit/phpunit": "^13.2.0"
+ "phpunit/phpunit": "^13.2.2"
},
"suggest": {
"ext-pcov": "PHP extension that provides line coverage",
@@ -11864,7 +11864,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
"security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy",
- "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/14.2.2"
+ "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/14.2.3"
},
"funding": [
{
@@ -11884,7 +11884,7 @@
"type": "tidelift"
}
],
- "time": "2026-06-08T11:50:38+00:00"
+ "time": "2026-07-06T15:04:02+00:00"
},
{
"name": "phpunit/php-file-iterator",
@@ -12181,30 +12181,30 @@
},
{
"name": "phpunit/phpunit",
- "version": "13.2.2",
+ "version": "13.2.4",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "492c067e618de7b3c76105082c90f9d2833401b7"
+ "reference": "8f5180f4627fc1978be2f61d8d9979dbe37e0c10"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/492c067e618de7b3c76105082c90f9d2833401b7",
- "reference": "492c067e618de7b3c76105082c90f9d2833401b7",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/8f5180f4627fc1978be2f61d8d9979dbe37e0c10",
+ "reference": "8f5180f4627fc1978be2f61d8d9979dbe37e0c10",
"shasum": ""
},
"require": {
"ext-dom": "*",
+ "ext-filter": "*",
"ext-json": "*",
"ext-libxml": "*",
"ext-mbstring": "*",
- "ext-xml": "*",
"ext-xmlwriter": "*",
"myclabs/deep-copy": "^1.13.4",
"phar-io/manifest": "^2.0.4",
"phar-io/version": "^3.2.1",
"php": ">=8.4.1",
- "phpunit/php-code-coverage": "^14.2.2",
+ "phpunit/php-code-coverage": "^14.2.3",
"phpunit/php-file-iterator": "^7.0.0",
"phpunit/php-invoker": "^7.0.0",
"phpunit/php-text-template": "^6.0.0",
@@ -12261,7 +12261,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
"security": "https://github.com/sebastianbergmann/phpunit/security/policy",
- "source": "https://github.com/sebastianbergmann/phpunit/tree/13.2.2"
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/13.2.4"
},
"funding": [
{
@@ -12269,20 +12269,20 @@
"type": "other"
}
],
- "time": "2026-06-29T13:36:29+00:00"
+ "time": "2026-07-08T08:36:51+00:00"
},
{
"name": "rector/rector",
- "version": "2.5.3",
+ "version": "2.5.5",
"source": {
"type": "git",
"url": "https://github.com/rectorphp/rector.git",
- "reference": "3d3577ad88d70d9f8dccd0a4c2f75bf13d6268e6"
+ "reference": "9718a72e7f1aacacbdcb6eeed07a47147bce802e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/rectorphp/rector/zipball/3d3577ad88d70d9f8dccd0a4c2f75bf13d6268e6",
- "reference": "3d3577ad88d70d9f8dccd0a4c2f75bf13d6268e6",
+ "url": "https://api.github.com/repos/rectorphp/rector/zipball/9718a72e7f1aacacbdcb6eeed07a47147bce802e",
+ "reference": "9718a72e7f1aacacbdcb6eeed07a47147bce802e",
"shasum": ""
},
"require": {
@@ -12321,7 +12321,7 @@
],
"support": {
"issues": "https://github.com/rectorphp/rector/issues",
- "source": "https://github.com/rectorphp/rector/tree/2.5.3"
+ "source": "https://github.com/rectorphp/rector/tree/2.5.5"
},
"funding": [
{
@@ -12329,7 +12329,7 @@
"type": "github"
}
],
- "time": "2026-07-05T01:32:08+00:00"
+ "time": "2026-07-09T09:48:44+00:00"
},
{
"name": "sebastian/cli-parser",
@@ -13021,24 +13021,24 @@
},
{
"name": "sebastian/lines-of-code",
- "version": "5.0.1",
+ "version": "5.0.2",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/lines-of-code.git",
- "reference": "d2cff273a90c79b0eb590baa682d4b5c318bdbb7"
+ "reference": "d1b6f8fce682505dbd048977f1abedf1b8ad3ff8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/d2cff273a90c79b0eb590baa682d4b5c318bdbb7",
- "reference": "d2cff273a90c79b0eb590baa682d4b5c318bdbb7",
+ "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/d1b6f8fce682505dbd048977f1abedf1b8ad3ff8",
+ "reference": "d1b6f8fce682505dbd048977f1abedf1b8ad3ff8",
"shasum": ""
},
"require": {
- "nikic/php-parser": "^5.7.0",
+ "nikic/php-parser": "^5.8.0",
"php": ">=8.4"
},
"require-dev": {
- "phpunit/phpunit": "^13.1.10"
+ "phpunit/phpunit": "^13.2.4"
},
"type": "library",
"extra": {
@@ -13067,7 +13067,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/lines-of-code/issues",
"security": "https://github.com/sebastianbergmann/lines-of-code/security/policy",
- "source": "https://github.com/sebastianbergmann/lines-of-code/tree/5.0.1"
+ "source": "https://github.com/sebastianbergmann/lines-of-code/tree/5.0.2"
},
"funding": [
{
@@ -13087,7 +13087,7 @@
"type": "tidelift"
}
],
- "time": "2026-05-19T16:23:37+00:00"
+ "time": "2026-07-09T08:42:34+00:00"
},
{
"name": "sebastian/object-enumerator",
diff --git a/config/firefly.php b/config/firefly.php
index 1e596dbcaf..1cda5e08ce 100644
--- a/config/firefly.php
+++ b/config/firefly.php
@@ -78,8 +78,8 @@ return [
'running_balance_column' => (bool)env_default_when_empty(env('USE_RUNNING_BALANCE'), true), // this is only the default value, is not used.
// see cer.php for exchange rates feature flag.
],
-'version' => 'develop/2026-07-06',
-'build_time' => 1783312383,
+'version' => 'develop/2026-07-09',
+'build_time' => 1783619838,
'api_version' => '2.1.0', // field is no longer used.
'db_version' => 28, // field is no longer used.
@@ -390,7 +390,7 @@ return [
AccountTypeEnum::MORTGAGE->value => AccountTypeEnum::MORTGAGE->value,
],
'transactionTypesByType' => [
- 'all' => [TransactionTypeEnum::WITHDRAWAL->value, TransactionTypeEnum::DEPOSIT->value, TransactionTypeEnum::TRANSFER->value],
+ 'all' => [TransactionTypeEnum::WITHDRAWAL->value, TransactionTypeEnum::DEPOSIT->value, TransactionTypeEnum::TRANSFER->value],
'expenses' => ['Withdrawal'],
'withdrawal' => ['Withdrawal'],
'revenue' => ['Deposit'],
diff --git a/config/translations.php b/config/translations.php
index 8f093b604f..b8b7e3dd4e 100644
--- a/config/translations.php
+++ b/config/translations.php
@@ -39,7 +39,7 @@ return [
'date',
'rate',
'triggers',
- 'help_rate_form'
+ 'help_rate_form',
],
'list' => [
'drag_and_drop',
@@ -143,7 +143,7 @@ return [
'webhook_trigger_STORE_TRANSACTION',
'webhook_trigger_UPDATE_TRANSACTION',
'webhook_response_RELEVANT',
- 'webhook_delivery_JSON'
+ 'webhook_delivery_JSON',
// 'account_column_opt_drag_and_drop',
// 'account_column_opt_active',
// 'account_column_opt_name',
diff --git a/package-lock.json b/package-lock.json
index adcf80fcd1..d4b68b64d2 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -97,9 +97,9 @@
}
},
"node_modules/@oxc-project/types": {
- "version": "0.138.0",
- "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.138.0.tgz",
- "integrity": "sha512-1a7ZKmrRTCoN1XMZ4L0PyyqrMnrNlLyPuOkdSX2MZg7IiIGRUyurNhAm73ptDOraoBcIordsIGKNPKUzy3ZmfA==",
+ "version": "0.139.0",
+ "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.139.0.tgz",
+ "integrity": "sha512-r9gHphtCs+1M7J0pw6Sn/hh/Wpa/iQrOOkrNAlVLF/gHq+/CJmHIWKKUUhdWjcD6CIa8idarspCsASiXCXvFUw==",
"dev": true,
"license": "MIT",
"funding": {
@@ -235,9 +235,6 @@
"arm"
],
"dev": true,
- "libc": [
- "glibc"
- ],
"license": "MIT",
"optional": true,
"os": [
@@ -259,9 +256,6 @@
"arm"
],
"dev": true,
- "libc": [
- "musl"
- ],
"license": "MIT",
"optional": true,
"os": [
@@ -283,9 +277,6 @@
"arm64"
],
"dev": true,
- "libc": [
- "glibc"
- ],
"license": "MIT",
"optional": true,
"os": [
@@ -307,9 +298,6 @@
"arm64"
],
"dev": true,
- "libc": [
- "musl"
- ],
"license": "MIT",
"optional": true,
"os": [
@@ -331,9 +319,6 @@
"x64"
],
"dev": true,
- "libc": [
- "glibc"
- ],
"license": "MIT",
"optional": true,
"os": [
@@ -355,9 +340,6 @@
"x64"
],
"dev": true,
- "libc": [
- "musl"
- ],
"license": "MIT",
"optional": true,
"os": [
@@ -459,9 +441,9 @@
}
},
"node_modules/@rolldown/binding-android-arm64": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.1.4.tgz",
- "integrity": "sha512-EZLpf/8y7GXkkra90ML47kzik/GMP3EMcE9bPyHmRfxLC6z9+aW5A8poCsoxjrT5GfEcNAAvWwUHjvP1pUQkfw==",
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.1.5.tgz",
+ "integrity": "sha512-lZg8fqIv2v7FF237bwMgzGZEJvGL79/s5knJ/i6FmsGF4XXlzccZ4jb+TrFIxtSSxFtIpdsgrPZeMk1I9AFcyQ==",
"cpu": [
"arm64"
],
@@ -476,9 +458,9 @@
}
},
"node_modules/@rolldown/binding-darwin-arm64": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.1.4.tgz",
- "integrity": "sha512-aUi+HBvmYb7j8krl1+qJgkG8C17fO79gk3c+jPw4S8glRFc1DTija9S3EyaTSQUm5GJXYKDAsugBEhFHH2vYiQ==",
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.1.5.tgz",
+ "integrity": "sha512-51Bnx9pNiMRKSUNtBfySkNJ9vMU9Hh3I1ozDd6gyPPYzaXCfnptUcEZxXGYFn+ul2dtcMUiqGR1Yai2K10uoTw==",
"cpu": [
"arm64"
],
@@ -493,9 +475,9 @@
}
},
"node_modules/@rolldown/binding-darwin-x64": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.1.4.tgz",
- "integrity": "sha512-F7hHC3gwY11+vByKPRWqwGbeXWVgKmL+pTGCinaEhdihzBV2aQ0fvZOch9cXYUOKuKKq429HeYXOqQLc7wFCEg==",
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.1.5.tgz",
+ "integrity": "sha512-Tm+gbfC0aHu1tBA/JvKQh32S0K6YgCHkiAF4/W6xX0K0RmNuc94VeK419dJoE65R5aRxmo+noZQSWrAMF6yb6g==",
"cpu": [
"x64"
],
@@ -510,9 +492,9 @@
}
},
"node_modules/@rolldown/binding-freebsd-x64": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.1.4.tgz",
- "integrity": "sha512-sI5yw+7s92SK6odiEhD5lKCBlWcpjHS5qyqpVQbZAJ0fIzEUXrmbl3DH2ybR3PZogulNJF+COLtmA8hUfvkCCQ==",
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.1.5.tgz",
+ "integrity": "sha512-JMzDKCCXq93YccG5gz3hvOs1oXRKAf0XYpfOS88e+wZrC8Iugj6j68867vrYZkvpDDpKn/KoKORThmchMpF6TA==",
"cpu": [
"x64"
],
@@ -527,9 +509,9 @@
}
},
"node_modules/@rolldown/binding-linux-arm-gnueabihf": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.1.4.tgz",
- "integrity": "sha512-mCi0OKgEieFircrtVYmQAFGszRtMnZ6fpZAXrxanXAu7lqZcsK1E1RAaZNG0uKAnxox3B1f4EyQNnoyMfN1vAA==",
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.1.5.tgz",
+ "integrity": "sha512-uML21j2K5TfPGutKxub+M+nLjZIrWjXQ5Grx4lCe/nimTj9B4L63zHpjXLl4y0L3mcm2htEQIb06oCG/szerNw==",
"cpu": [
"arm"
],
@@ -544,16 +526,13 @@
}
},
"node_modules/@rolldown/binding-linux-arm64-gnu": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.1.4.tgz",
- "integrity": "sha512-B9Ial3Kv5sh0SHnB1g/QWcUQCEvCF6QKGAl4zXypYj65mVI+B4AhFBwPtSN7pDrJeIx8Z7zdy4ntx+wQABom7w==",
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.1.5.tgz",
+ "integrity": "sha512-navSiuTMogvnQoZoM/v+l3ZWo50/NTwSHSzheABx/RCnmUPaKwq9qSo4Br2OYRs21+Fz8uFqITZM3H4opOB0/Q==",
"cpu": [
"arm64"
],
"dev": true,
- "libc": [
- "glibc"
- ],
"license": "MIT",
"optional": true,
"os": [
@@ -564,16 +543,13 @@
}
},
"node_modules/@rolldown/binding-linux-arm64-musl": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.1.4.tgz",
- "integrity": "sha512-lZVym0PuHE1KZ22gmFTC15lAkrg9iTszR617oYRB/iPY1A56ywoJzVKOJBKaot5RiikCObmur6pogpse3gRcng==",
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.1.5.tgz",
+ "integrity": "sha512-lAryqH7IteztmCXQXk0etKj4wBQ7Gx5S6LjKhsgp9zb8I5bsuvU/2llH1hDQcjsFeqIsovMVN339/8pUDDBXxA==",
"cpu": [
"arm64"
],
"dev": true,
- "libc": [
- "musl"
- ],
"license": "MIT",
"optional": true,
"os": [
@@ -584,16 +560,13 @@
}
},
"node_modules/@rolldown/binding-linux-ppc64-gnu": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.1.4.tgz",
- "integrity": "sha512-t2DNiLJWNTbnEHyUzTumldML6ET4/g16467LZoDDJ3tSxGvguL5/NyC2lCsNKuyRycg9XeDQF5SSv+TNOhQEXg==",
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.1.5.tgz",
+ "integrity": "sha512-fsK/sNBnxzBlL4O1JNrZakVQxPspqpED5dLtNsZS9oOKmtSpdNIzxH2kkol5HYTWJN47sE20ztMJPxfZ89qGOg==",
"cpu": [
"ppc64"
],
"dev": true,
- "libc": [
- "glibc"
- ],
"license": "MIT",
"optional": true,
"os": [
@@ -604,16 +577,13 @@
}
},
"node_modules/@rolldown/binding-linux-s390x-gnu": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.1.4.tgz",
- "integrity": "sha512-0WIRnL1Uw4BvTZRLQt+PVgo6ZKTJadlC2btP+/EOXv2f/DWbY0rEgl+y834mIVwP1FkTlWVTrGGJXf12lru7EQ==",
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.1.5.tgz",
+ "integrity": "sha512-gLYb4BIadlfTOYT5gO503n8zQjXflgzpD0FcyKh0Mzx3rqCZKnHoJWV9xe1KXUJ5lx2JfcSHr/mhzS0PC/McAA==",
"cpu": [
"s390x"
],
"dev": true,
- "libc": [
- "glibc"
- ],
"license": "MIT",
"optional": true,
"os": [
@@ -624,16 +594,13 @@
}
},
"node_modules/@rolldown/binding-linux-x64-gnu": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.1.4.tgz",
- "integrity": "sha512-JWtGshGfX+oENAKonoNkqEJX+7hC8yfhi9GUyPX1VX4mdh1y5r+ZiJLR5XzAB0aoP6s/PcILsGjKq8O0mm24bw==",
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.1.5.tgz",
+ "integrity": "sha512-FjcpEKUyJygHgs1o50VYNvkt5+7Le/VEdYt0AkRpkL33MnyQfwr8l5mXwMmfmTbyMPr5vJLC+8/Gd9gXnwU1QQ==",
"cpu": [
"x64"
],
"dev": true,
- "libc": [
- "glibc"
- ],
"license": "MIT",
"optional": true,
"os": [
@@ -644,16 +611,13 @@
}
},
"node_modules/@rolldown/binding-linux-x64-musl": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.1.4.tgz",
- "integrity": "sha512-rT6yQcxUuXs4CnbofqwHRRV0iem349rLMYpTjkgQGLjrY4ado/eDzwPZPTCgTOlF6Nkp8NEv70yLMTn6qkWxsQ==",
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.1.5.tgz",
+ "integrity": "sha512-Me+PfPI2TMeOQk0gYWfLQZtTktrmzbr8cDboqX83XKc7UrgAi55gF+2dUkWdxd19n55Essp2yeca+O9N5rBxHg==",
"cpu": [
"x64"
],
"dev": true,
- "libc": [
- "musl"
- ],
"license": "MIT",
"optional": true,
"os": [
@@ -664,9 +628,9 @@
}
},
"node_modules/@rolldown/binding-openharmony-arm64": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.1.4.tgz",
- "integrity": "sha512-KXMGoboq5cyaCQjDA4GLuRiOwBQ0EyFnJoVViLeZ45/3rFItRODEr+NdsBcVpll40hhNArlm/speWGRvj08LzA==",
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.1.5.tgz",
+ "integrity": "sha512-yc5WrLzXks6zCQfn9Oxr8pORKyl/pF+QjHmW/Qx3qu0oyrrNC+y2JLTU1E2rcWYAmzlnqngWXHQjy51VzW70Vw==",
"cpu": [
"arm64"
],
@@ -681,9 +645,9 @@
}
},
"node_modules/@rolldown/binding-wasm32-wasi": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.1.4.tgz",
- "integrity": "sha512-5K83rb36oJiY7BCyE9zLZtGcPV4g5wvq+xwdO0XPIwDVZI8cyB/AUjkNXGb92/rnmezEkjMOpgY61rtwjQtFwg==",
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.1.5.tgz",
+ "integrity": "sha512-VbQGPX2b4r48TAMIM2cjgluIM1HYutm4pcTEJsle7iEP7sB1dFqtPLBVbdLAZCxy1txCcPxf4QFf4v8uvltPqA==",
"cpu": [
"wasm32"
],
@@ -700,9 +664,9 @@
}
},
"node_modules/@rolldown/binding-win32-arm64-msvc": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.1.4.tgz",
- "integrity": "sha512-PnWBtw3TV5KOg69HQQDR0mnQuyCmSGR2pAB4DC1rPF808fgKeTUMj2EOEyKATpgiuxuR5APQmiDO7PDgEjTFSA==",
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.1.5.tgz",
+ "integrity": "sha512-gHv82k63z4qpV5+Q1y/12KrK0ltWBukVDI8nZcbT7Tt/ZlOIVwppazneq0F93oDxTo3IgAMEDIoQh3E2n6mVsw==",
"cpu": [
"arm64"
],
@@ -717,9 +681,9 @@
}
},
"node_modules/@rolldown/binding-win32-x64-msvc": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.1.4.tgz",
- "integrity": "sha512-M1lpniBePobTfsa7Ks9a199e1akxsXn+GYBUKsEzv3YFzOm1HJAMNwKI3qr0Zq+mxwx9gOZoTdP1yXRYsZUocQ==",
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.1.5.tgz",
+ "integrity": "sha512-tTZuDBPw85tEN5PQi1pnEBzDy0Z49HtScLAbD5t6hyeU92A95pRWaSMw1GZZi/RwgSgUIl0xrSlXIT/9QzvYSA==",
"cpu": [
"x64"
],
@@ -1494,9 +1458,9 @@
}
},
"node_modules/i18next": {
- "version": "26.3.4",
- "resolved": "https://registry.npmjs.org/i18next/-/i18next-26.3.4.tgz",
- "integrity": "sha512-pa7m0d7pBDqGHZxljT+WPFeyFgQ7P7SciPPo1tTqYuO0z4sqADYhwnBESmmGp/wEof1inwdls/k8ZgTg8rxFHA==",
+ "version": "26.3.6",
+ "resolved": "https://registry.npmjs.org/i18next/-/i18next-26.3.6.tgz",
+ "integrity": "sha512-Bu5Z2nAXgfVyM8xvW3jk9EKRIuX37PudsrBViThNFx7CR7aaYTpP01cxNB/E4c4UUzTDiAZRstEhsRfPOL/8xA==",
"funding": [
{
"type": "individual",
@@ -1513,7 +1477,7 @@
],
"license": "MIT",
"peerDependencies": {
- "typescript": "^5 || ^6"
+ "typescript": "^5 || ^6 || ^7"
},
"peerDependenciesMeta": {
"typescript": {
@@ -1857,9 +1821,6 @@
"arm64"
],
"dev": true,
- "libc": [
- "glibc"
- ],
"license": "MPL-2.0",
"optional": true,
"os": [
@@ -1881,9 +1842,6 @@
"arm64"
],
"dev": true,
- "libc": [
- "musl"
- ],
"license": "MPL-2.0",
"optional": true,
"os": [
@@ -1905,9 +1863,6 @@
"x64"
],
"dev": true,
- "libc": [
- "glibc"
- ],
"license": "MPL-2.0",
"optional": true,
"os": [
@@ -1929,9 +1884,6 @@
"x64"
],
"dev": true,
- "libc": [
- "musl"
- ],
"license": "MPL-2.0",
"optional": true,
"os": [
@@ -2217,13 +2169,13 @@
}
},
"node_modules/rolldown": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.1.4.tgz",
- "integrity": "sha512-IjZYiLxZwpnhwhdBH2ugdTGVSdhCQUmLxLoqyjiL0JxYjyRst+5a0P3xfrTxJ5F638j4Mvvw5FAX5XE6eHpXbA==",
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.1.5.tgz",
+ "integrity": "sha512-t9z29cJjXf/vxQ8dyhCSpt6H6aSwHTk8cT5I3iy6SMXuFpk5mB6PL6XfC8PCwrPTx93udwKUm9HRteAlTGBLiA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@oxc-project/types": "=0.138.0",
+ "@oxc-project/types": "=0.139.0",
"@rolldown/pluginutils": "^1.0.0"
},
"bin": {
@@ -2233,21 +2185,21 @@
"node": "^20.19.0 || >=22.12.0"
},
"optionalDependencies": {
- "@rolldown/binding-android-arm64": "1.1.4",
- "@rolldown/binding-darwin-arm64": "1.1.4",
- "@rolldown/binding-darwin-x64": "1.1.4",
- "@rolldown/binding-freebsd-x64": "1.1.4",
- "@rolldown/binding-linux-arm-gnueabihf": "1.1.4",
- "@rolldown/binding-linux-arm64-gnu": "1.1.4",
- "@rolldown/binding-linux-arm64-musl": "1.1.4",
- "@rolldown/binding-linux-ppc64-gnu": "1.1.4",
- "@rolldown/binding-linux-s390x-gnu": "1.1.4",
- "@rolldown/binding-linux-x64-gnu": "1.1.4",
- "@rolldown/binding-linux-x64-musl": "1.1.4",
- "@rolldown/binding-openharmony-arm64": "1.1.4",
- "@rolldown/binding-wasm32-wasi": "1.1.4",
- "@rolldown/binding-win32-arm64-msvc": "1.1.4",
- "@rolldown/binding-win32-x64-msvc": "1.1.4"
+ "@rolldown/binding-android-arm64": "1.1.5",
+ "@rolldown/binding-darwin-arm64": "1.1.5",
+ "@rolldown/binding-darwin-x64": "1.1.5",
+ "@rolldown/binding-freebsd-x64": "1.1.5",
+ "@rolldown/binding-linux-arm-gnueabihf": "1.1.5",
+ "@rolldown/binding-linux-arm64-gnu": "1.1.5",
+ "@rolldown/binding-linux-arm64-musl": "1.1.5",
+ "@rolldown/binding-linux-ppc64-gnu": "1.1.5",
+ "@rolldown/binding-linux-s390x-gnu": "1.1.5",
+ "@rolldown/binding-linux-x64-gnu": "1.1.5",
+ "@rolldown/binding-linux-x64-musl": "1.1.5",
+ "@rolldown/binding-openharmony-arm64": "1.1.5",
+ "@rolldown/binding-wasm32-wasi": "1.1.5",
+ "@rolldown/binding-win32-arm64-msvc": "1.1.5",
+ "@rolldown/binding-win32-x64-msvc": "1.1.5"
}
},
"node_modules/rxjs": {
@@ -2536,16 +2488,16 @@
"link": true
},
"node_modules/vite": {
- "version": "8.1.3",
- "resolved": "https://registry.npmjs.org/vite/-/vite-8.1.3.tgz",
- "integrity": "sha512-Ds+gBRbj0lwRO2Y5hwnUBdxSwlAve9LeRyU4sNnAr0ewW0gWF0n5bgXgUzbgZ49MV9BVUAQUFYVcDUcilUExMA==",
+ "version": "8.1.4",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-8.1.4.tgz",
+ "integrity": "sha512-bTT9PsdWO+MQMNG9ZXIP/qM9wGh37DFxTV/sPq9cFpHr3w4jkgef032PkAL9jAqhk3Nz8NQw3O8n6/xFkqO4QQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"lightningcss": "^1.32.0",
- "picomatch": "^4.0.4",
+ "picomatch": "^4.0.5",
"postcss": "^8.5.16",
- "rolldown": "~1.1.3",
+ "rolldown": "~1.1.4",
"tinyglobby": "^0.2.17"
},
"bin": {
diff --git a/resources/lang/en_US/breadcrumbs.php b/resources/lang/en_US/breadcrumbs.php
index 201ba295fb..cbe22a6be6 100644
--- a/resources/lang/en_US/breadcrumbs.php
+++ b/resources/lang/en_US/breadcrumbs.php
@@ -49,7 +49,7 @@ return [
'reports' => 'Reports',
'search_result' => 'Search results for ":query"',
'withdrawal_list' => 'Expenses',
- 'all_list' => 'All transactions',
+ 'all_list' => 'All transactions',
'Withdrawal_list' => 'Expenses',
'deposit_list' => 'Revenue, income and deposits',
'transfer_list' => 'Transfers',
diff --git a/resources/lang/en_US/firefly.php b/resources/lang/en_US/firefly.php
index 942bb9609c..a6ff27d2ac 100644
--- a/resources/lang/en_US/firefly.php
+++ b/resources/lang/en_US/firefly.php
@@ -186,7 +186,7 @@ return [
'all_withdrawal' => 'All expenses',
'all_transactions' => 'All transactions',
'title_withdrawal_between' => 'All expenses between :start and :end',
- 'title_all_between' => 'All transactions between :start and :end',
+ 'title_all_between' => 'All transactions between :start and :end',
'all_deposit' => 'All revenue',
'title_deposit_between' => 'All revenue between :start and :end',
'all_transfers' => 'All transfers',
@@ -249,7 +249,7 @@ return [
'webhooks' => 'Webhooks',
'webhooks_breadcrumb' => 'Webhooks',
'webhooks_menu_disabled' => 'disabled',
- 'cer_menu_disabled' => 'disabled',
+ 'cer_menu_disabled' => 'disabled',
'no_webhook_messages' => 'There are no webhook messages',
'webhook_trigger_ANY' => 'After any event',
'webhook_trigger_STORE_TRANSACTION' => 'After transaction creation',
@@ -295,7 +295,7 @@ return [
'reset_webhook_secret' => 'Reset webhook secret',
'webhook_stored_link' => 'Webhook #{ID} ("{title}") has been stored.',
'webhook_updated_link' => 'Webhook #{ID} ("{title}") has been updated.',
- 'no_webhooks' => 'You have no webhooks. Please create one. Webhooks can be used to make external systems respond to Firefly III events, like newly created transactions or updated budgets.',
+ 'no_webhooks' => 'You have no webhooks. Please create one. Webhooks can be used to make external systems respond to Firefly III events, like newly created transactions or updated budgets.',
// API access
'authorization_request' => 'Firefly III v:version Authorization Request',
@@ -1963,8 +1963,8 @@ return [
'extension_date_is' => 'Extension date is {date}',
// accounts:
- 'disabled_split_account_dest' => 'This field is disabled. You can only change the destination account from the first split, and it will be applied to all splits.',
- 'disabled_split_account_src' => 'This field is disabled. You can only change the source account from the first split, and it will be applied to all splits.',
+ 'disabled_split_account_dest' => 'This field is disabled. You can only change the destination account from the first split, and it will be applied to all splits.',
+ 'disabled_split_account_src' => 'This field is disabled. You can only change the source account from the first split, and it will be applied to all splits.',
'account_locked_currency' => 'The currency of this account must remain :name as long as piggy banks are linked to it.',
'i_am_owed_amount' => 'I am owed amount',
'i_owe_amount' => 'I owe amount',
@@ -2071,7 +2071,7 @@ return [
'reconcile_this_account' => 'Reconcile this account',
'reconcile' => 'Reconcile',
'show' => 'Show',
- 'hide' => 'Hide',
+ 'hide' => 'Hide',
'confirm_reconciliation' => 'Confirm reconciliation',
'submitted_start_balance' => 'Submitted start balance',
'selected_transactions' => 'Selected transactions (:count)',
@@ -2148,7 +2148,7 @@ return [
'deleted_reconciliation' => 'Successfully deleted reconciliation transaction ":description"',
'stored_journal' => 'Successfully created new transaction ":description"',
'stored_journal_js' => 'Successfully created new transaction "{{description}}"',
- 'updated_journal_js' => 'Successfully updated transaction "{{description}}"',
+ 'updated_journal_js' => 'Successfully updated transaction "{{description}}"',
'stored_journal_no_descr' => 'Successfully created your new transaction',
'updated_journal_no_descr' => 'Successfully updated your transaction',
'select_transactions' => 'Select transactions',
@@ -2801,9 +2801,9 @@ return [
'no_categories_intro_default' => 'You have no categories yet. Categories are used to fine tune your transactions and label them with their designated category.',
'no_categories_imperative_default' => 'Categories are created automatically when you create transactions, but you can create one manually too. Let\'s create one now:',
'no_categories_create_default' => 'Create a category',
- 'no_object-groups_title_default' => 'Object groups',
- 'no_object-groups_intro_default' => 'Some things in Firefly III can be divided into groups. Piggy banks for example, feature a "Group" field in the edit and create screens. When you set this field, you can edit the names and the order of the groups on this page.',
- 'no_object-groups_imperative_default' => 'For more information, check out the help-pages in the top right corner, under the (?)-icon. ',
+ 'no_object-groups_title_default' => 'Object groups',
+ 'no_object-groups_intro_default' => 'Some things in Firefly III can be divided into groups. Piggy banks for example, feature a "Group" field in the edit and create screens. When you set this field, you can edit the names and the order of the groups on this page.',
+ 'no_object-groups_imperative_default' => 'For more information, check out the help-pages in the top right corner, under the (?)-icon. ',
'no_tags_title_default' => 'Let\'s create a tag!',
'no_tags_intro_default' => 'You have no tags yet. Tags are used to fine tune your transactions and label them with specific keywords.',
'no_tags_imperative_default' => 'Tags are created automatically when you create transactions, but you can create one manually too. Let\'s create one now:',
diff --git a/resources/lang/en_US/form.php b/resources/lang/en_US/form.php
index d483c680ea..e8e16b2dcb 100644
--- a/resources/lang/en_US/form.php
+++ b/resources/lang/en_US/form.php
@@ -136,7 +136,7 @@ return [
'mime' => 'Mime type',
'size' => 'Size',
'trigger' => 'Trigger',
- 'triggers' => 'Triggers',
+ 'triggers' => 'Triggers',
'stop_processing' => 'Stop processing',
'end_date' => 'End date',
'enddate' => 'End date',
@@ -269,9 +269,9 @@ return [
'key' => 'Key',
'value' => 'Content of record',
'webhook_delivery' => 'Delivery',
- 'deliveries' => 'Deliveries',
+ 'deliveries' => 'Deliveries',
'webhook_response' => 'Response',
- 'responses' => 'Responses',
+ 'responses' => 'Responses',
'webhook_trigger' => 'Trigger',
'pushover_app_token' => 'Pushover app token',
'pushover_user_token' => 'Pushover user token',
diff --git a/resources/lang/en_US/list.php b/resources/lang/en_US/list.php
index 600ccb54cf..80a1b56875 100644
--- a/resources/lang/en_US/list.php
+++ b/resources/lang/en_US/list.php
@@ -27,8 +27,8 @@ return [
'icon' => 'Icon',
'id' => 'ID',
'create_date' => 'Created at',
- 'responds_when' => 'Responds when',
- 'responds_with' => 'Responds with',
+ 'responds_when' => 'Responds when',
+ 'responds_with' => 'Responds with',
'primary_currency' => 'Primary currency',
'update_date' => 'Updated at',
'updated_at' => 'Updated at',