diff --git a/.ci/phpstan.sh b/.ci/phpstan.sh
index a513bd9254..84ff119226 100755
--- a/.ci/phpstan.sh
+++ b/.ci/phpstan.sh
@@ -33,7 +33,7 @@ if [[ $GITHUB_ACTIONS = "" ]]
then
./vendor/bin/phpstan analyse -c .ci/phpstan.neon --error-format=table > phpstan-report.txt
EXIT_CODE=$?
- echo 'The PHPstan report can be found in phpstan-report.txt'
+ echo "The PHPstan report can be found in phpstan-report.txt. Exit code is $EXIT_CODE."
fi
if [[ $GITHUB_ACTIONS = "true" ]]
@@ -42,7 +42,7 @@ then
EXIT_CODE=$?
# temporary exit code 0
- EXIT_CODE=0
+ # EXIT_CODE=0
fi
exit $EXIT_CODE
diff --git a/.ci/phpunit.sh b/.ci/phpunit.sh
deleted file mode 100755
index 58b307c329..0000000000
--- a/.ci/phpunit.sh
+++ /dev/null
@@ -1,63 +0,0 @@
-#!/usr/bin/env bash
-
-#
-# phpunit.sh
-# Copyright (c) 2021 james@firefly-iii.org
-#
-# This file is part of Firefly III (https://github.com/firefly-iii).
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see .
-#
-SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
-# enable test .env file.
-cp $SCRIPT_DIR/../.env $SCRIPT_DIR/../.env.backup
-cp $SCRIPT_DIR/.env.ci $SCRIPT_DIR/../.env
-
-COVERAGE=false
-RESET=false
-FILE=storage/database/database.sqlite
-
-while getopts "cr" o; do
- case "${o}" in
- c) COVERAGE=true;;
- r) RESET=true;;
- esac
-done
-
-# reset if necessary.
-if [ $RESET = "true" ] ; then
- rm -f $FILE
-fi
-
-# download test database
-if [ -f "$FILE" ]; then
- echo 'DB exists, will use it'
-else
- echo 'Download new DB'
- wget --quiet https://github.com/firefly-iii/test-fixtures/raw/main/test-database.sqlite -O $FILE
-fi
-
-# run phpunit
-if [ $COVERAGE = "true" ] ; then
- echo 'Run with coverage'
- XDEBUG_MODE=coverage ./vendor/bin/phpunit --configuration phpunit.xml --coverage-html $SCRIPT_DIR/coverage
-else
- echo 'Run without coverage'
- ./vendor/bin/phpunit --configuration phpunit.xml
-fi
-
-# restore .env file
-mv $SCRIPT_DIR/../.env.backup $SCRIPT_DIR/../.env
-
-cd $SCRIPT_DIR/..
diff --git a/app/Console/Commands/Tools/Cron.php b/app/Console/Commands/Tools/Cron.php
index 30aec19add..b30a67ef37 100644
--- a/app/Console/Commands/Tools/Cron.php
+++ b/app/Console/Commands/Tools/Cron.php
@@ -74,7 +74,7 @@ class Cron extends Command
} catch (InvalidArgumentException $e) {
$this->friendlyError(sprintf('"%s" is not a valid date', $this->option('date')));
}
- $force = (bool) $this->option('force');
+ $force = (bool) $this->option('force'); // @phpstan-ignore-line
/*
* Fire exchange rates cron job.
diff --git a/app/Console/Commands/Upgrade/DecryptDatabase.php b/app/Console/Commands/Upgrade/DecryptDatabase.php
index e0285dd954..fce88405a1 100644
--- a/app/Console/Commands/Upgrade/DecryptDatabase.php
+++ b/app/Console/Commands/Upgrade/DecryptDatabase.php
@@ -213,7 +213,7 @@ class DecryptDatabase extends Command
}
/** @var Preference $object */
- $object = Preference::find((int)$id);
+ $object = Preference::find($id);
if (null !== $object) {
$object->data = $newValue;
$object->save();
diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php
index 0154ecc54b..62acf1b180 100644
--- a/app/Exceptions/Handler.php
+++ b/app/Exceptions/Handler.php
@@ -26,6 +26,7 @@ namespace FireflyIII\Exceptions;
use ErrorException;
use FireflyIII\Jobs\MailError;
+use FireflyIII\Models\ObjectGroup;
use Illuminate\Auth\AuthenticationException;
use Illuminate\Contracts\Foundation\Application;
use Illuminate\Database\QueryException;
@@ -124,7 +125,7 @@ class Handler extends ExceptionHandler
$errorCode = 500;
$errorCode = $e instanceof MethodNotAllowedHttpException ? 405 : $errorCode;
- $isDebug = config('app.debug', false);
+ $isDebug = (bool) config('app.debug', false);
if ($isDebug) {
app('log')->debug(sprintf('Return JSON %s with debug.', get_class($e)));
return response()->json(
@@ -183,7 +184,7 @@ class Handler extends ExceptionHandler
*/
public function report(Throwable $e)
{
- $doMailError = config('firefly.send_error_message');
+ $doMailError = (bool) config('firefly.send_error_message');
if ($this->shouldntReportLocal($e) || !$doMailError) {
parent::report($e);
diff --git a/app/Factory/TransactionCurrencyFactory.php b/app/Factory/TransactionCurrencyFactory.php
index b97cb813b8..946f3f63b5 100644
--- a/app/Factory/TransactionCurrencyFactory.php
+++ b/app/Factory/TransactionCurrencyFactory.php
@@ -82,7 +82,7 @@ class TransactionCurrencyFactory
*/
public function find(?int $currencyId, ?string $currencyCode): ?TransactionCurrency
{
- $currencyCode = (string)e($currencyCode);
+ $currencyCode = e($currencyCode);
$currencyId = (int)$currencyId;
if ('' === $currencyCode && 0 === $currencyId) {
diff --git a/app/Factory/TransactionJournalFactory.php b/app/Factory/TransactionJournalFactory.php
index 61c46a0260..d7fae5f385 100644
--- a/app/Factory/TransactionJournalFactory.php
+++ b/app/Factory/TransactionJournalFactory.php
@@ -368,10 +368,10 @@ class TransactionJournalFactory
// validate source account.
$array = [
- 'id' => $data['source_id'] ? (int)$data['source_id'] : null,
- 'name' => $data['source_name'] ? (string)$data['source_name'] : null,
- 'iban' => $data['source_iban'] ? (string)$data['source_iban'] : null,
- 'number' => $data['source_number'] ? (string)$data['source_number'] : null,
+ 'id' => null !== $data['source_id'] ? (int)$data['source_id'] : null,
+ 'name' => null !== $data['source_name'] ? (string)$data['source_name'] : null,
+ 'iban' => null !== $data['source_iban'] ? (string)$data['source_iban'] : null,
+ 'number' => null !== $data['source_number'] ? (string)$data['source_number'] : null,
];
$validSource = $this->accountValidator->validateSource($array);
@@ -383,10 +383,10 @@ class TransactionJournalFactory
// validate destination account
$array = [
- 'id' => $data['destination_id'] ? (int)$data['destination_id'] : null,
- 'name' => $data['destination_name'] ? (string)$data['destination_name'] : null,
- 'iban' => $data['destination_iban'] ? (string)$data['destination_iban'] : null,
- 'number' => $data['destination_number'] ? (string)$data['destination_number'] : null,
+ 'id' => null !== $data['destination_id'] ? (int)$data['destination_id'] : null,
+ 'name' => null !== $data['destination_name'] ? (string)$data['destination_name'] : null,
+ 'iban' => null !== $data['destination_iban'] ? (string)$data['destination_iban'] : null,
+ 'number' => null !== $data['destination_number'] ? (string)$data['destination_number'] : null,
];
$validDestination = $this->accountValidator->validateDestination($array);
diff --git a/app/Handlers/Events/UserEventHandler.php b/app/Handlers/Events/UserEventHandler.php
index 26f39e2c22..a7980f6862 100644
--- a/app/Handlers/Events/UserEventHandler.php
+++ b/app/Handlers/Events/UserEventHandler.php
@@ -228,7 +228,7 @@ class UserEventHandler
*/
public function sendAdminRegistrationNotification(RegisteredUser $event): void
{
- $sendMail = app('fireflyconfig')->get('notification_admin_new_reg', true)->data;
+ $sendMail = (bool) app('fireflyconfig')->get('notification_admin_new_reg', true)->data;
if ($sendMail) {
/** @var UserRepositoryInterface $repository */
$repository = app(UserRepositoryInterface::class);
@@ -358,7 +358,7 @@ class UserEventHandler
*/
public function sendRegistrationMail(RegisteredUser $event): void
{
- $sendMail = app('fireflyconfig')->get('notification_user_new_reg', true)->data;
+ $sendMail = (bool) app('fireflyconfig')->get('notification_user_new_reg', true)->data;
if ($sendMail) {
try {
Notification::send($event->user, new UserRegistrationNotification());
diff --git a/app/Http/Controllers/Admin/UserController.php b/app/Http/Controllers/Admin/UserController.php
index e2e641a16d..cfe87cca85 100644
--- a/app/Http/Controllers/Admin/UserController.php
+++ b/app/Http/Controllers/Admin/UserController.php
@@ -170,7 +170,7 @@ class UserController extends Controller
$subTitle = (string)trans('firefly.user_administration');
$subTitleIcon = 'fa-users';
$users = $this->repository->all();
- $singleUserMode = app('fireflyconfig')->get('single_user_mode', config('firefly.configuration.single_user_mode'))->data;
+ $singleUserMode = (bool) app('fireflyconfig')->get('single_user_mode', config('firefly.configuration.single_user_mode'))->data;
$allowInvites = false;
if (!$this->externalIdentity && $singleUserMode) {
// also registration enabled.
diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php
index c98294122e..4c5e82533d 100644
--- a/app/Http/Controllers/Auth/LoginController.php
+++ b/app/Http/Controllers/Auth/LoginController.php
@@ -191,9 +191,7 @@ class LoginController extends Controller
$request->session()->regenerateToken();
- if ($response = $this->loggedOut($request)) {
- return $response;
- }
+ $this->loggedOut($request);
return $request->wantsJson()
? new Response('', 204)
diff --git a/app/Http/Controllers/Bill/ShowController.php b/app/Http/Controllers/Bill/ShowController.php
index 327c84c5f9..29861be314 100644
--- a/app/Http/Controllers/Bill/ShowController.php
+++ b/app/Http/Controllers/Bill/ShowController.php
@@ -112,7 +112,7 @@ class ShowController extends Controller
// file the rule(s)
$ruleEngine->fire();
- $request->session()->flash('success', (string)trans_choice('firefly.rescanned_bill', $total));
+ $request->session()->flash('success', trans_choice('firefly.rescanned_bill', $total));
app('preferences')->mark();
return redirect(route('bills.show', [$bill->id]));
diff --git a/app/Http/Controllers/Chart/ExpenseReportController.php b/app/Http/Controllers/Chart/ExpenseReportController.php
index f6fb7e81ca..310b6174d9 100644
--- a/app/Http/Controllers/Chart/ExpenseReportController.php
+++ b/app/Http/Controllers/Chart/ExpenseReportController.php
@@ -147,7 +147,7 @@ class ExpenseReportController extends Controller
while ($currentStart < $end) {
$currentEnd = clone $currentStart;
- $currentEnd = $currentEnd->$function();
+ $currentEnd = $currentEnd->$function(); // @phpstan-ignore-line
// get expenses grouped by opposing name:
$expenses = $this->groupByName($this->getExpensesForOpposing($accounts, $all, $currentStart, $currentEnd));
diff --git a/app/Http/Controllers/Report/CategoryController.php b/app/Http/Controllers/Report/CategoryController.php
index c7842af5a2..e57b5ed18f 100644
--- a/app/Http/Controllers/Report/CategoryController.php
+++ b/app/Http/Controllers/Report/CategoryController.php
@@ -674,7 +674,7 @@ class CategoryController extends Controller
try {
- $result = (string)view('reports.partials.categories', compact('report'))->render();
+ $result = view('reports.partials.categories', compact('report'))->render();
$cache->store($result);
} catch (Throwable $e) {
app('log')->error(sprintf('Could not render category::expenses: %s', $e->getMessage()));
diff --git a/app/Http/Controllers/Rule/IndexController.php b/app/Http/Controllers/Rule/IndexController.php
index f4dec56a96..d83e726877 100644
--- a/app/Http/Controllers/Rule/IndexController.php
+++ b/app/Http/Controllers/Rule/IndexController.php
@@ -89,7 +89,7 @@ class IndexController extends Controller
public function moveRule(Request $request, Rule $rule, RuleGroup $ruleGroup): JsonResponse
{
$order = (int)$request->get('order');
- $this->ruleRepos->moveRule($rule, $ruleGroup, (int)$order);
+ $this->ruleRepos->moveRule($rule, $ruleGroup, $order);
return response()->json([]);
}
diff --git a/app/Http/Controllers/Rule/SelectController.php b/app/Http/Controllers/Rule/SelectController.php
index 11d68f5b36..ff5983b7c8 100644
--- a/app/Http/Controllers/Rule/SelectController.php
+++ b/app/Http/Controllers/Rule/SelectController.php
@@ -97,7 +97,7 @@ class SelectController extends Controller
$newRuleEngine->fire();
$resultCount = $newRuleEngine->getResults();
- session()->flash('success', (string)trans_choice('firefly.applied_rule_selection', $resultCount, ['title' => $rule->title]));
+ session()->flash('success', trans_choice('firefly.applied_rule_selection', $resultCount, ['title' => $rule->title]));
return redirect()->route('rules.index');
}
diff --git a/app/Http/Controllers/System/InstallController.php b/app/Http/Controllers/System/InstallController.php
index 61f3b8ef9f..14bc3d2445 100644
--- a/app/Http/Controllers/System/InstallController.php
+++ b/app/Http/Controllers/System/InstallController.php
@@ -56,6 +56,7 @@ class InstallController extends Controller
*/
public function __construct()
{
+ parent::__construct();
// empty on purpose.
$this->upgradeCommands = [
// there are 5 initial commands
diff --git a/app/Http/Controllers/TagController.php b/app/Http/Controllers/TagController.php
index 322929bc3d..c5a320e5d4 100644
--- a/app/Http/Controllers/TagController.php
+++ b/app/Http/Controllers/TagController.php
@@ -201,7 +201,7 @@ class TagController extends Controller
$count++;
}
}
- session()->flash('success', (string)trans_choice('firefly.deleted_x_tags', $count));
+ session()->flash('success', trans_choice('firefly.deleted_x_tags', $count));
return redirect(route('tags.index'));
}
diff --git a/app/Http/Controllers/Transaction/BulkController.php b/app/Http/Controllers/Transaction/BulkController.php
index 9f732af36e..58f889bcb2 100644
--- a/app/Http/Controllers/Transaction/BulkController.php
+++ b/app/Http/Controllers/Transaction/BulkController.php
@@ -127,7 +127,7 @@ class BulkController extends Controller
}
app('preferences')->mark();
- $request->session()->flash('success', (string)trans_choice('firefly.mass_edited_transactions_success', $count));
+ $request->session()->flash('success', trans_choice('firefly.mass_edited_transactions_success', $count));
// redirect to previous URL:
return redirect($this->getPreviousUrl('transactions.bulk-edit.url'));
diff --git a/app/Http/Controllers/Transaction/DeleteController.php b/app/Http/Controllers/Transaction/DeleteController.php
index 7d0c3e85e5..374272acd8 100644
--- a/app/Http/Controllers/Transaction/DeleteController.php
+++ b/app/Http/Controllers/Transaction/DeleteController.php
@@ -117,10 +117,10 @@ class DeleteController extends Controller
// grab asset account(s) from group:
$accounts = [];
- /** @var TransactionJournal $journal */
- foreach ($group->transactionJournals as $journal) {
+ /** @var TransactionJournal $currentJournal */
+ foreach ($group->transactionJournals as $currentJournal) {
/** @var Transaction $transaction */
- foreach ($journal->transactions as $transaction) {
+ foreach ($currentJournal->transactions as $transaction) {
$type = $transaction->account->accountType->type;
// if is valid liability, trigger event!
if (in_array($type, config('firefly.valid_liabilities'), true)) {
diff --git a/app/Http/Controllers/Transaction/MassController.php b/app/Http/Controllers/Transaction/MassController.php
index a7e3b61b8c..f641ee33a7 100644
--- a/app/Http/Controllers/Transaction/MassController.php
+++ b/app/Http/Controllers/Transaction/MassController.php
@@ -118,7 +118,7 @@ class MassController extends Controller
}
}
app('preferences')->mark();
- session()->flash('success', (string)trans_choice('firefly.mass_deleted_transactions_success', $count));
+ session()->flash('success', trans_choice('firefly.mass_deleted_transactions_success', $count));
// redirect to previous URL:
return redirect($this->getPreviousUrl('transactions.mass-delete.url'));
@@ -190,7 +190,7 @@ class MassController extends Controller
}
app('preferences')->mark();
- session()->flash('success', (string)trans_choice('firefly.mass_edited_transactions_success', $count));
+ session()->flash('success', trans_choice('firefly.mass_edited_transactions_success', $count));
// redirect to previous URL:
return redirect($this->getPreviousUrl('transactions.mass-edit.url'));
diff --git a/app/Mail/ReportNewJournalsMail.php b/app/Mail/ReportNewJournalsMail.php
index 62e6a12cd4..24820ab5b7 100644
--- a/app/Mail/ReportNewJournalsMail.php
+++ b/app/Mail/ReportNewJournalsMail.php
@@ -67,7 +67,7 @@ class ReportNewJournalsMail extends Mailable
return $this
->markdown('emails.report-new-journals')
- ->subject((string)trans_choice('email.new_journals_subject', $this->groups->count()));
+ ->subject(trans_choice('email.new_journals_subject', $this->groups->count()));
}
/**
diff --git a/app/Models/Account.php b/app/Models/Account.php
index b9fdde9f25..85bf92b8c1 100644
--- a/app/Models/Account.php
+++ b/app/Models/Account.php
@@ -49,7 +49,7 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
* @property int|string $user_id
* @property int|string $account_type_id
* @property string $name
- * @property string|null $virtual_balance
+ * @property string|float|null $virtual_balance
* @property string|null $iban
* @property bool $active
* @property bool $encrypted
diff --git a/app/Models/RuleAction.php b/app/Models/RuleAction.php
index b3b40a646a..dc563b66f5 100644
--- a/app/Models/RuleAction.php
+++ b/app/Models/RuleAction.php
@@ -36,9 +36,9 @@ use Carbon\Carbon;
* @property Carbon|null $created_at
* @property Carbon|null $updated_at
* @property int|string $rule_id
- * @property string $action_type
- * @property string $action_value
- * @property int $order
+ * @property string|null $action_type
+ * @property string|null $action_value
+ * @property int|string $order
* @property bool $active
* @property bool $stop_processing
* @property-read Rule $rule
diff --git a/app/Models/RuleGroup.php b/app/Models/RuleGroup.php
index 35d7faeecb..5b49769cf4 100644
--- a/app/Models/RuleGroup.php
+++ b/app/Models/RuleGroup.php
@@ -44,7 +44,7 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
* @property int|string $user_id
* @property string|null $title
* @property string|null $description
- * @property int $order
+ * @property int|string $order
* @property bool $active
* @property bool $stop_processing
* @property Collection|Rule[] $rules
diff --git a/app/Models/RuleTrigger.php b/app/Models/RuleTrigger.php
index 31975de3fd..ef8fb5c329 100644
--- a/app/Models/RuleTrigger.php
+++ b/app/Models/RuleTrigger.php
@@ -38,7 +38,7 @@ use Carbon\Carbon;
* @property int|string $rule_id
* @property string|null $trigger_type
* @property string|null $trigger_value
- * @property int $order
+ * @property int|string $order
* @property bool $active
* @property bool $stop_processing
* @property-read Rule $rule
diff --git a/app/Models/Transaction.php b/app/Models/Transaction.php
index c889ad19fe..f5a92e44f0 100644
--- a/app/Models/Transaction.php
+++ b/app/Models/Transaction.php
@@ -46,8 +46,8 @@ use Illuminate\Database\Eloquent\SoftDeletes;
* @property int|string $transaction_journal_id
* @property string|null $description
* @property int|null $transaction_currency_id
- * @property string $modified
- * @property string $modified_foreign
+ * @property string|null $modified
+ * @property string|null $modified_foreign
* @property string $date
* @property string $max_date
* @property string|float $amount
diff --git a/app/Models/TransactionJournal.php b/app/Models/TransactionJournal.php
index e199c39ea4..8c89d52ddb 100644
--- a/app/Models/TransactionJournal.php
+++ b/app/Models/TransactionJournal.php
@@ -41,16 +41,16 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
/**
* FireflyIII\Models\TransactionJournal
*
- * @property int|string $id
+ * @property int|string $id
* @property Carbon|null $created_at
* @property Carbon|null $updated_at
* @property Carbon|null $deleted_at
- * @property int|string $user_id
- * @property int |string $transaction_type_id
- * @property int|null $transaction_group_id
- * @property int|null $bill_id
- * @property int|null $transaction_currency_id
- * @property string $description
+ * @property int|string $user_id
+ * @property int |string $transaction_type_id
+ * @property int|string|null $transaction_group_id
+ * @property int|string|null $bill_id
+ * @property int|string|null $transaction_currency_id
+ * @property string|null $description
* @property Carbon $date
* @property Carbon|null $interest_date
* @property Carbon|null $book_date
@@ -114,7 +114,7 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
* @method static \Illuminate\Database\Query\Builder|TransactionJournal withoutTrashed()
* @property-read Collection|Location[] $locations
* @property-read int|null $locations_count
- * @property int $the_count
+ * @property int|string $the_count
* @property int|null $user_group_id
* @method static EloquentBuilder|TransactionJournal whereUserGroupId($value)
* @property-read Collection $auditLogEntries
diff --git a/app/Notifications/User/TransactionCreation.php b/app/Notifications/User/TransactionCreation.php
index ee41ce8e72..ecd51b6825 100644
--- a/app/Notifications/User/TransactionCreation.php
+++ b/app/Notifications/User/TransactionCreation.php
@@ -72,7 +72,7 @@ class TransactionCreation extends Notification
{
return (new MailMessage())
->markdown('emails.report-new-journals', ['transformed' => $this->collection])
- ->subject((string)trans_choice('email.new_journals_subject', count($this->collection)));
+ ->subject(trans_choice('email.new_journals_subject', count($this->collection)));
}
/**
diff --git a/app/Repositories/Account/OperationsRepository.php b/app/Repositories/Account/OperationsRepository.php
index a6e44b860e..680d482416 100644
--- a/app/Repositories/Account/OperationsRepository.php
+++ b/app/Repositories/Account/OperationsRepository.php
@@ -111,7 +111,7 @@ class OperationsRepository implements OperationsRepositoryInterface
];
$array[$currencyId]['transaction_journals'][$journalId] = [
- 'amount' => app('steam')->$direction((string)$journal['amount']),
+ 'amount' => app('steam')->$direction((string)$journal['amount']), // @phpstan-ignore-line
'date' => $journal['date'],
'transaction_journal_id' => $journalId,
'budget_name' => $journal['budget_name'],
@@ -268,7 +268,7 @@ class OperationsRepository implements OperationsRepositoryInterface
'currency_code' => $journal['currency_code'],
'currency_decimal_places' => $journal['currency_decimal_places'],
];
- $array[$currencyId]['sum'] = bcadd($array[$currencyId]['sum'], app('steam')->$direction($journal['amount']));
+ $array[$currencyId]['sum'] = bcadd($array[$currencyId]['sum'], app('steam')->$direction($journal['amount']));// @phpstan-ignore-line
// also do foreign amount:
$foreignId = (int)$journal['foreign_currency_id'];
@@ -281,7 +281,7 @@ class OperationsRepository implements OperationsRepositoryInterface
'currency_code' => $journal['foreign_currency_code'],
'currency_decimal_places' => $journal['foreign_currency_decimal_places'],
];
- $array[$foreignId]['sum'] = bcadd($array[$foreignId]['sum'], app('steam')->$direction($journal['foreign_amount']));
+ $array[$foreignId]['sum'] = bcadd($array[$foreignId]['sum'], app('steam')->$direction($journal['foreign_amount']));// @phpstan-ignore-line
}
}
@@ -328,7 +328,7 @@ class OperationsRepository implements OperationsRepositoryInterface
'currency_code' => $journal['currency_code'],
'currency_decimal_places' => $journal['currency_decimal_places'],
];
- $array[$key]['sum'] = bcadd($array[$key]['sum'], app('steam')->$method((string)$journal['amount']));
+ $array[$key]['sum'] = bcadd($array[$key]['sum'], app('steam')->$method((string)$journal['amount']));// @phpstan-ignore-line
// also do foreign amount:
if (0 !== (int)$journal['foreign_currency_id']) {
@@ -343,7 +343,7 @@ class OperationsRepository implements OperationsRepositoryInterface
'currency_code' => $journal['foreign_currency_code'],
'currency_decimal_places' => $journal['foreign_currency_decimal_places'],
];
- $array[$key]['sum'] = bcadd($array[$key]['sum'], app('steam')->$method((string)$journal['foreign_amount']));
+ $array[$key]['sum'] = bcadd($array[$key]['sum'], app('steam')->$method((string)$journal['foreign_amount']));// @phpstan-ignore-line
}
}
diff --git a/app/Repositories/Bill/BillRepository.php b/app/Repositories/Bill/BillRepository.php
index 786fa6cb58..df765dd005 100644
--- a/app/Repositories/Bill/BillRepository.php
+++ b/app/Repositories/Bill/BillRepository.php
@@ -137,7 +137,7 @@ class BillRepository implements BillRepositoryInterface
public function findBill(?int $billId, ?string $billName): ?Bill
{
if (null !== $billId) {
- $searchResult = $this->find((int)$billId);
+ $searchResult = $this->find($billId);
if (null !== $searchResult) {
app('log')->debug(sprintf('Found bill based on #%d, will return it.', $billId));
@@ -145,7 +145,7 @@ class BillRepository implements BillRepositoryInterface
}
}
if (null !== $billName) {
- $searchResult = $this->findByName((string)$billName);
+ $searchResult = $this->findByName($billName);
if (null !== $searchResult) {
app('log')->debug(sprintf('Found bill based on "%s", will return it.', $billName));
diff --git a/app/Repositories/Budget/BudgetRepository.php b/app/Repositories/Budget/BudgetRepository.php
index 4cef859d8d..a99b8769f7 100644
--- a/app/Repositories/Budget/BudgetRepository.php
+++ b/app/Repositories/Budget/BudgetRepository.php
@@ -530,7 +530,7 @@ class BudgetRepository implements BudgetRepositoryInterface
$result = $this->find((int)$budgetId);
if (null === $result && null !== $budgetName && '' !== $budgetName) {
app('log')->debug(sprintf('Searching for budget with name %s...', $budgetName));
- $result = $this->findByName((string)$budgetName);
+ $result = $this->findByName($budgetName);
}
if (null !== $result) {
app('log')->debug(sprintf('Found budget #%d: %s', $result->id, $result->name));
diff --git a/app/Repositories/LinkType/LinkTypeRepository.php b/app/Repositories/LinkType/LinkTypeRepository.php
index 98b0f05fcc..729dc4709b 100644
--- a/app/Repositories/LinkType/LinkTypeRepository.php
+++ b/app/Repositories/LinkType/LinkTypeRepository.php
@@ -382,8 +382,8 @@ class LinkTypeRepository implements LinkTypeRepositoryInterface
*/
public function updateLink(TransactionJournalLink $journalLink, array $data): TransactionJournalLink
{
- $journalLink->source_id = $data['inward_id'] ?: $journalLink->source_id;
- $journalLink->destination_id = $data['outward_id'] ?: $journalLink->destination_id;
+ $journalLink->source_id = null === $data['inward_id'] ? $journalLink->source_id : $data['inward_id'];
+ $journalLink->destination_id = null === $data['outward_id'] ? $journalLink->destination_id : $data['outward_id'];
$journalLink->save();
if (array_key_exists('link_type_name', $data)) {
$linkType = LinkType::whereName($data['link_type_name'])->first();
@@ -394,7 +394,7 @@ class LinkTypeRepository implements LinkTypeRepositoryInterface
$journalLink->refresh();
}
- $journalLink->link_type_id = $data['link_type_id'] ?: $journalLink->link_type_id;
+ $journalLink->link_type_id = null === $data['link_type_id'] ? $journalLink->link_type_id : $data['link_type_id'];
$journalLink->save();
if (array_key_exists('notes', $data) && null !== $data['notes']) {
$this->setNoteText($journalLink, $data['notes']);
diff --git a/app/Repositories/PiggyBank/PiggyBankRepository.php b/app/Repositories/PiggyBank/PiggyBankRepository.php
index 32c2bcd55f..7f8e943f06 100644
--- a/app/Repositories/PiggyBank/PiggyBankRepository.php
+++ b/app/Repositories/PiggyBank/PiggyBankRepository.php
@@ -68,7 +68,7 @@ class PiggyBankRepository implements PiggyBankRepositoryInterface
app('log')->debug('Searching for piggy information.');
if (null !== $piggyBankId) {
- $searchResult = $this->find((int)$piggyBankId);
+ $searchResult = $this->find($piggyBankId);
if (null !== $searchResult) {
app('log')->debug(sprintf('Found piggy based on #%d, will return it.', $piggyBankId));
@@ -76,7 +76,7 @@ class PiggyBankRepository implements PiggyBankRepositoryInterface
}
}
if (null !== $piggyBankName) {
- $searchResult = $this->findByName((string)$piggyBankName);
+ $searchResult = $this->findByName($piggyBankName);
if (null !== $searchResult) {
app('log')->debug(sprintf('Found piggy based on "%s", will return it.', $piggyBankName));
@@ -227,11 +227,11 @@ class PiggyBankRepository implements PiggyBankRepositoryInterface
$amount = null;
if ((int)$source->transaction_currency_id === (int)$currency->id) {
app('log')->debug('Use normal amount');
- $amount = app('steam')->$operator($source->amount);
+ $amount = app('steam')->$operator($source->amount); // @phpstan-ignore-line
}
if ((int)$source->foreign_currency_id === (int)$currency->id) {
app('log')->debug('Use foreign amount');
- $amount = app('steam')->$operator($source->foreign_amount);
+ $amount = app('steam')->$operator($source->foreign_amount); // @phpstan-ignore-line
}
if (null === $amount) {
app('log')->debug('No match on currency, so amount remains null, return "0".');
diff --git a/app/Repositories/UserGroup/UserGroupRepository.php b/app/Repositories/UserGroup/UserGroupRepository.php
index 3a3faa6e5f..818a857b4a 100644
--- a/app/Repositories/UserGroup/UserGroupRepository.php
+++ b/app/Repositories/UserGroup/UserGroupRepository.php
@@ -85,7 +85,7 @@ class UserGroupRepository implements UserGroupRepositoryInterface
'recurrences', 'rules', 'ruleGroups', 'tags', 'transactionGroups', 'transactionJournals', 'piggyBanks', 'accounts', 'webhooks',
];
foreach ($objects as $object) {
- foreach ($userGroup->$object()->get() as $item) {
+ foreach ($userGroup->$object()->get() as $item) { // @phpstan-ignore-line
$item->delete();
}
}
@@ -135,7 +135,7 @@ class UserGroupRepository implements UserGroupRepositoryInterface
}
if (null !== $existingGroup) {
// group already exists
- $groupName = sprintf('%s-%s', $user->email, substr(sha1((string)(rand(1000, 9999) . microtime())), 0, 4));
+ $groupName = sprintf('%s-%s', $user->email, substr(sha1((rand(1000, 9999) . microtime())), 0, 4));
}
$loop++;
}
diff --git a/app/Rules/BelongsUser.php b/app/Rules/BelongsUser.php
index 5e2251f250..40eb1c625b 100644
--- a/app/Rules/BelongsUser.php
+++ b/app/Rules/BelongsUser.php
@@ -49,7 +49,6 @@ class BelongsUser implements ValidationRule
$fail('validation.belongs_user')->translate();
return;
}
- $attribute = (string)$attribute;
app('log')->debug(sprintf('Going to validate %s', $attribute));
$result = match ($attribute) {
@@ -135,7 +134,7 @@ class BelongsUser implements ValidationRule
}
$count = 0;
foreach ($objects as $object) {
- $objectValue = trim((string)$object->$field);
+ $objectValue = trim((string)$object->$field); // @phpstan-ignore-line
app('log')->debug(sprintf('Comparing object "%s" with value "%s"', $objectValue, $value));
if ($objectValue === $value) {
$count++;
diff --git a/app/Rules/BelongsUserGroup.php b/app/Rules/BelongsUserGroup.php
index 8ea2a19dd5..e74194bf6a 100644
--- a/app/Rules/BelongsUserGroup.php
+++ b/app/Rules/BelongsUserGroup.php
@@ -64,7 +64,6 @@ class BelongsUserGroup implements ValidationRule
$fail('validation.belongs_user_or_user_group')->translate();
return;
}
- $attribute = (string)$attribute;
app('log')->debug(sprintf('Group: Going to validate "%s"', $attribute));
$result = match ($attribute) {
@@ -150,7 +149,7 @@ class BelongsUserGroup implements ValidationRule
}
$count = 0;
foreach ($objects as $object) {
- $objectValue = trim((string)$object->$field);
+ $objectValue = trim((string)$object->$field); // @phpstan-ignore-line
app('log')->debug(sprintf('Comparing object "%s" with value "%s"', $objectValue, $value));
if ($objectValue === $value) {
$count++;
diff --git a/app/Rules/IsValidAttachmentModel.php b/app/Rules/IsValidAttachmentModel.php
index b5ca4bcdbd..9b6c548897 100644
--- a/app/Rules/IsValidAttachmentModel.php
+++ b/app/Rules/IsValidAttachmentModel.php
@@ -107,7 +107,7 @@ class IsValidAttachmentModel implements ValidationRule
}
$method = $methods[$this->model];
- $result = $this->$method((int)$value);
+ $result = $this->$method((int)$value); // @phpstan-ignore-line
if(false === $result) {
$fail('validation.model_id_invalid')->translate();
}
@@ -221,6 +221,6 @@ class IsValidAttachmentModel implements ValidationRule
$repository = app(JournalAPIRepositoryInterface::class);
$repository->setUser(auth()->user());
- return null !== $repository->findTransaction((int)$value);
+ return null !== $repository->findTransaction($value);
}
}
diff --git a/app/Services/Internal/Support/RecurringTransactionTrait.php b/app/Services/Internal/Support/RecurringTransactionTrait.php
index 02c04d9494..6c66716c01 100644
--- a/app/Services/Internal/Support/RecurringTransactionTrait.php
+++ b/app/Services/Internal/Support/RecurringTransactionTrait.php
@@ -196,7 +196,7 @@ trait RecurringTransactionTrait
$repository->setUser($this->user);
// if user has submitted an account ID, search for it.
- $result = $repository->find((int)$accountId);
+ $result = $repository->find($accountId);
if (null !== $result) {
return $result;
}
diff --git a/app/Services/Internal/Update/CurrencyUpdateService.php b/app/Services/Internal/Update/CurrencyUpdateService.php
index 9271b13981..02faa86a1f 100644
--- a/app/Services/Internal/Update/CurrencyUpdateService.php
+++ b/app/Services/Internal/Update/CurrencyUpdateService.php
@@ -55,7 +55,7 @@ class CurrencyUpdateService
$currency->enabled = false;
if (array_key_exists('decimal_places', $data) && is_int($data['decimal_places'])) {
- $currency->decimal_places = (int)$data['decimal_places'];
+ $currency->decimal_places = $data['decimal_places'];
}
$currency->userEnabled = null;
$currency->userDefault = null;
diff --git a/app/Services/Internal/Update/JournalUpdateService.php b/app/Services/Internal/Update/JournalUpdateService.php
index a314b79a13..ce2e0984cb 100644
--- a/app/Services/Internal/Update/JournalUpdateService.php
+++ b/app/Services/Internal/Update/JournalUpdateService.php
@@ -536,12 +536,12 @@ class JournalUpdateService
$this->transactionJournal->user,
$this->transactionJournal,
sprintf('update_%s', $fieldName),
- $this->transactionJournal->$fieldName,
+ $this->transactionJournal->$fieldName, // @phpstan-ignore-line
$value
)
);
- $this->transactionJournal->$fieldName = $value;
+ $this->transactionJournal->$fieldName = $value;// @phpstan-ignore-line
app('log')->debug(sprintf('Updated %s', $fieldName));
}
}
diff --git a/app/Support/Binder/CLIToken.php b/app/Support/Binder/CLIToken.php
index 156f440c62..6863b1e362 100644
--- a/app/Support/Binder/CLIToken.php
+++ b/app/Support/Binder/CLIToken.php
@@ -47,7 +47,7 @@ class CLIToken implements BinderInterface
$users = $repository->all();
// check for static token
- if ($value === config('firefly.static_cron_token') && 32 === strlen((string)config('firefly.static_cron_token'))) {
+ if ($value === config('firefly.static_cron_token') && 32 === strlen(config('firefly.static_cron_token'))) {
return $value;
}
diff --git a/app/Support/Http/Controllers/ModelInformation.php b/app/Support/Http/Controllers/ModelInformation.php
index 2b6e06c796..9b0e92ab6d 100644
--- a/app/Support/Http/Controllers/ModelInformation.php
+++ b/app/Support/Http/Controllers/ModelInformation.php
@@ -249,7 +249,7 @@ trait ModelInformation
$values[$index] = $notes->text;
}
- foreach ($journalTriggers as $index => $trigger) {
+ foreach ($journalTriggers as $ii => $trigger) {
try {
$string = view(
'rules.partials.trigger',
@@ -257,14 +257,13 @@ trait ModelInformation
'oldTrigger' => $trigger,
'oldValue' => $values[$index],
'oldChecked' => false,
- 'count' => $index + 1,
+ 'count' => $ii + 1,
'triggers' => $triggers,
]
)->render();
} catch (Throwable $e) {
app('log')->debug(sprintf('Throwable was thrown in getTriggersForJournal(): %s', $e->getMessage()));
app('log')->debug($e->getTraceAsString());
- $string = '';
throw new FireflyException('Could not render trigger', 0, $e);
}
if ('' !== $string) {
diff --git a/app/Support/Navigation.php b/app/Support/Navigation.php
index 4f39d5f5aa..70a32130b2 100644
--- a/app/Support/Navigation.php
+++ b/app/Support/Navigation.php
@@ -46,7 +46,7 @@ class Navigation
*/
public function __construct(Calculator $calculator = null)
{
- $this->calculator = ($calculator instanceof Calculator) ?: new Calculator();
+ $this->calculator = $calculator instanceof Calculator ? $calculator : new Calculator();
}
/**
@@ -213,7 +213,7 @@ class Navigation
];
if (array_key_exists($repeatFreq, $functionMap)) {
$function = $functionMap[$repeatFreq];
- $date->$function();
+ $date->$function(); // @phpstan-ignore-line
return $date;
}
@@ -325,7 +325,7 @@ class Navigation
$function = $functionMap[$repeatFreq];
if (array_key_exists($repeatFreq, $modifierMap)) {
- $currentEnd->$function($modifierMap[$repeatFreq]);
+ $currentEnd->$function($modifierMap[$repeatFreq]); // @phpstan-ignore-line
if (in_array($repeatFreq, $subDay, true)) {
$currentEnd->subDay();
}
@@ -333,7 +333,7 @@ class Navigation
return $currentEnd;
}
- $currentEnd->$function();
+ $currentEnd->$function(); // @phpstan-ignore-line
$currentEnd->endOfDay();
if (in_array($repeatFreq, $subDay, true)) {
$currentEnd->subDay();
@@ -372,7 +372,7 @@ class Navigation
}
$func = $map[$period];
// first do the diff
- $floatDiff = $beginning->$func($end);
+ $floatDiff = $beginning->$func($end); // @phpstan-ignore-line
// then correct for quarterly or half-year
@@ -434,7 +434,7 @@ class Navigation
if (array_key_exists($repeatFreq, $functionMap)) {
$function = $functionMap[$repeatFreq];
- $currentEnd->$function();
+ $currentEnd->$function(); // @phpstan-ignore-line
}
if (null !== $maxDate && $currentEnd > $maxDate) {
@@ -508,7 +508,7 @@ class Navigation
$formatted = $begin->format($format);
$displayed = $begin->isoFormat($displayFormat);
$entries[$formatted] = $displayed;
- $begin->$increment();
+ $begin->$increment(); // @phpstan-ignore-line
}
return $entries;
@@ -563,7 +563,7 @@ class Navigation
];
if (array_key_exists($repeatFrequency, $formatMap)) {
- return $date->isoFormat((string)$formatMap[$repeatFrequency]);
+ return $date->isoFormat($formatMap[$repeatFrequency]);
}
if ('3M' === $repeatFrequency || 'quarter' === $repeatFrequency) {
$quarter = ceil($theDate->month / 3);
@@ -726,7 +726,7 @@ class Navigation
];
if (array_key_exists($repeatFreq, $functionMap)) {
$function = $functionMap[$repeatFreq];
- $date->$function($subtract);
+ $date->$function($subtract); // @phpstan-ignore-line
return $date;
}
@@ -801,7 +801,7 @@ class Navigation
if (array_key_exists($range, $functionMap)) {
$function = $functionMap[$range];
- $end->$function();
+ $end->$function(); // @phpstan-ignore-line
return $end;
}
@@ -862,7 +862,7 @@ class Navigation
];
if (array_key_exists($range, $functionMap)) {
$function = $functionMap[$range];
- $start->$function();
+ $start->$function(); // @phpstan-ignore-line
return $start;
}
diff --git a/app/Support/ParseDateString.php b/app/Support/ParseDateString.php
index 4c310a03eb..f70d35df9c 100644
--- a/app/Support/ParseDateString.php
+++ b/app/Support/ParseDateString.php
@@ -201,7 +201,7 @@ class ParseDateString
}
$func = $functions[$direction][$period];
app('log')->debug(sprintf('Will now do %s(%d) on %s', $func, $number, $today->format('Y-m-d')));
- $today->$func($number);
+ $today->$func($number); // @phpstan-ignore-line
app('log')->debug(sprintf('Resulting date is %s', $today->format('Y-m-d')));
}
diff --git a/app/Support/Request/AppendsLocationData.php b/app/Support/Request/AppendsLocationData.php
index f999f781d6..0157c03fb7 100644
--- a/app/Support/Request/AppendsLocationData.php
+++ b/app/Support/Request/AppendsLocationData.php
@@ -117,9 +117,9 @@ trait AppendsLocationData
*
* @return bool
*/
- private function isValidPOST(?string $prefix): bool
+ private function isValidPost(?string $prefix): bool
{
- app('log')->debug('Now in isValidPOST()');
+ app('log')->debug('Now in isValidPost()');
$longitudeKey = $this->getLocationKey($prefix, 'longitude');
$latitudeKey = $this->getLocationKey($prefix, 'latitude');
$zoomLevelKey = $this->getLocationKey($prefix, 'zoom_level');
diff --git a/app/Support/Request/ConvertsDataTypes.php b/app/Support/Request/ConvertsDataTypes.php
index 5b6b36f11f..f94d25124f 100644
--- a/app/Support/Request/ConvertsDataTypes.php
+++ b/app/Support/Request/ConvertsDataTypes.php
@@ -353,7 +353,7 @@ trait ConvertsDataTypes
{
$return = [];
foreach ($fields as $field => $info) {
- if ($this->has($info[0])) {
+ if (true === $this->has($info[0])) {
$method = $info[1];
$return[$field] = $this->$method($info[0]); // @phpstan-ignore-line
}
@@ -422,7 +422,7 @@ trait ConvertsDataTypes
*/
protected function nullableInteger(string $field): ?int
{
- if (!$this->has($field)) {
+ if (false === $this->has($field)) {
return null;
}
diff --git a/app/Support/Search/OperatorQuerySearch.php b/app/Support/Search/OperatorQuerySearch.php
index 0435d30b88..46a839247f 100644
--- a/app/Support/Search/OperatorQuerySearch.php
+++ b/app/Support/Search/OperatorQuerySearch.php
@@ -60,7 +60,8 @@ use TypeError;
/**
* Class OperatorQuerySearch
*/
-class OperatorQuerySearch implements SearchInterface
+class
+OperatorQuerySearch implements SearchInterface
{
protected Carbon $date;
private AccountRepositoryInterface $accountRepository;
@@ -1422,7 +1423,7 @@ class OperatorQuerySearch implements SearchInterface
return;
}
app('log')->debug(sprintf('Left with %d, set as %s().', $filtered->count(), $collectorMethod));
- $this->collector->$collectorMethod($filtered);
+ $this->collector->$collectorMethod($filtered); // @phpstan-ignore-line
}
/**
@@ -1512,7 +1513,7 @@ class OperatorQuerySearch implements SearchInterface
return;
}
app('log')->debug(sprintf('Left with %d, set as %s().', $filtered->count(), $collectorMethod));
- $this->collector->$collectorMethod($filtered);
+ $this->collector->$collectorMethod($filtered);// @phpstan-ignore-line
}
/**
diff --git a/app/Support/Steam.php b/app/Support/Steam.php
index d200dd681a..6461055fbb 100644
--- a/app/Support/Steam.php
+++ b/app/Support/Steam.php
@@ -164,8 +164,8 @@ class Steam
/** @var Transaction $entry */
foreach ($set as $entry) {
// normal amount and foreign amount
- $modified = null === $entry->modified ? '0' : (string)$entry->modified;
- $foreignModified = null === $entry->modified_foreign ? '0' : (string)$entry->modified_foreign;
+ $modified = null === $entry->modified ? '0' : $entry->modified;
+ $foreignModified = null === $entry->modified_foreign ? '0' :$entry->modified_foreign;
$amount = '0';
if ($currencyId === (int)$entry->transaction_currency_id || 0 === $currencyId) {
// use normal amount: