diff --git a/app/Api/V1/Controllers/AboutController.php b/app/Api/V1/Controllers/AboutController.php index d9b0c174f1..721ec068fe 100644 --- a/app/Api/V1/Controllers/AboutController.php +++ b/app/Api/V1/Controllers/AboutController.php @@ -53,7 +53,7 @@ class AboutController extends Controller $search = ['~', '#']; $replace = ['\~', '# ']; $phpVersion = str_replace($search, $replace, PHP_VERSION); - $phpOs = str_replace($search, $replace, php_uname()); + $phpOs = str_replace($search, $replace, PHP_OS); $currentDriver = DB::getDriverName(); $data = [ diff --git a/app/Api/V1/Controllers/Controller.php b/app/Api/V1/Controllers/Controller.php index 3b79b6a678..68f0d0c91d 100644 --- a/app/Api/V1/Controllers/Controller.php +++ b/app/Api/V1/Controllers/Controller.php @@ -30,6 +30,7 @@ use Illuminate\Foundation\Auth\Access\AuthorizesRequests; use Illuminate\Foundation\Bus\DispatchesJobs; use Illuminate\Foundation\Validation\ValidatesRequests; use Illuminate\Routing\Controller as BaseController; +use Log; use Symfony\Component\HttpFoundation\ParameterBag; /** @@ -111,6 +112,7 @@ class Controller extends BaseController $obj = new Carbon($date); } catch (InvalidDateException $e) { // don't care + Log::error(sprintf('Invalid date exception in API controller: %s', $e->getMessage())); } } $bag->set($field, $obj); diff --git a/app/Api/V1/Controllers/UserController.php b/app/Api/V1/Controllers/UserController.php index ddc30c04d3..4af7e7b7d8 100644 --- a/app/Api/V1/Controllers/UserController.php +++ b/app/Api/V1/Controllers/UserController.php @@ -70,6 +70,7 @@ class UserController extends Controller * @param \FireflyIII\User $user * * @return \Illuminate\Http\Response + * @throws \Symfony\Component\HttpFoundation\File\Exception\AccessDeniedException */ public function delete(User $user) { diff --git a/app/Api/V1/Requests/AccountRequest.php b/app/Api/V1/Requests/AccountRequest.php index e115c07dc9..44977d41e2 100644 --- a/app/Api/V1/Requests/AccountRequest.php +++ b/app/Api/V1/Requests/AccountRequest.php @@ -70,9 +70,9 @@ class AccountRequest extends Request */ public function rules(): array { - $accountRoles = join(',', config('firefly.accountRoles')); - $types = join(',', array_keys(config('firefly.subTitlesByIdentifier'))); - $ccPaymentTypes = join(',', array_keys(config('firefly.ccTypes'))); + $accountRoles = implode(',', config('firefly.accountRoles')); + $types = implode(',', array_keys(config('firefly.subTitlesByIdentifier'))); + $ccPaymentTypes = implode(',', array_keys(config('firefly.ccTypes'))); $rules = [ 'name' => 'required|min:1|uniqueAccountForUser', 'opening_balance' => 'numeric|required_with:opening_balance_date|nullable', diff --git a/app/Api/V1/Requests/TransactionRequest.php b/app/Api/V1/Requests/TransactionRequest.php index efef5a3658..9d94981a85 100644 --- a/app/Api/V1/Requests/TransactionRequest.php +++ b/app/Api/V1/Requests/TransactionRequest.php @@ -168,6 +168,7 @@ class TransactionRequest extends Request * @param Validator $validator * * @return void + * @throws \FireflyIII\Exceptions\FireflyException */ public function withValidator(Validator $validator): void { @@ -438,10 +439,8 @@ class TransactionRequest extends Request } // add some errors in case of same account submitted: - if (!is_null($sourceAccount) && !is_null($destinationAccount)) { - if ($sourceAccount->id === $destinationAccount->id) { - $validator->errors()->add($idField, trans('validation.source_equals_destination')); - } + if (!is_null($sourceAccount) && !is_null($destinationAccount) && $sourceAccount->id === $destinationAccount->id) { + $validator->errors()->add($idField, trans('validation.source_equals_destination')); } } } @@ -506,8 +505,6 @@ class TransactionRequest extends Request ); // @codeCoverageIgnoreEnd } - - return; } } diff --git a/app/Http/Controllers/Transaction/BulkController.php b/app/Http/Controllers/Transaction/BulkController.php index 4ed21079dc..3c98c177a3 100644 --- a/app/Http/Controllers/Transaction/BulkController.php +++ b/app/Http/Controllers/Transaction/BulkController.php @@ -70,6 +70,7 @@ class BulkController extends Controller * @param Collection $journals * * @return View + * @throws \RuntimeException */ public function edit(Request $request, Collection $journals) { @@ -139,6 +140,7 @@ class BulkController extends Controller * @param JournalRepositoryInterface $repository * * @return mixed + * @throws \RuntimeException */ public function update(BulkEditJournalRequest $request, JournalRepositoryInterface $repository) { diff --git a/app/Http/Controllers/Transaction/LinkController.php b/app/Http/Controllers/Transaction/LinkController.php index 5bd8c3ae20..86d6618e18 100644 --- a/app/Http/Controllers/Transaction/LinkController.php +++ b/app/Http/Controllers/Transaction/LinkController.php @@ -110,6 +110,13 @@ class LinkController extends Controller } $other = $this->journalRepository->find($linkInfo['transaction_journal_id']); $alreadyLinked = $this->repository->findLink($journal, $other); + + if($other->id === $journal->id) { + Session::flash('error', trans('firefly.journals_link_to_self')); + + return redirect(route('transactions.show', [$journal->id])); + } + if ($alreadyLinked) { Session::flash('error', trans('firefly.journals_error_linked')); diff --git a/app/Http/Controllers/Transaction/SingleController.php b/app/Http/Controllers/Transaction/SingleController.php index 287da2d212..b9dcc296a6 100644 --- a/app/Http/Controllers/Transaction/SingleController.php +++ b/app/Http/Controllers/Transaction/SingleController.php @@ -102,7 +102,7 @@ class SingleController extends Controller $budgetId = $this->repository->getJournalBudgetId($journal); $categoryName = $this->repository->getJournalCategoryName($journal); - $tags = join(',', $this->repository->getTags($journal)); + $tags = implode(',', $this->repository->getTags($journal)); /** @var Transaction $transaction */ $transaction = $journal->transactions()->first(); $amount = app('steam')->positive($transaction->amount); @@ -280,7 +280,7 @@ class SingleController extends Controller 'process_date' => $repository->getJournalDate($journal, 'process_date'), 'category' => $repository->getJournalCategoryName($journal), 'budget_id' => $repository->getJournalBudgetId($journal), - 'tags' => join(',', $repository->getTags($journal)), + 'tags' => implode(',', $repository->getTags($journal)), 'source_account_id' => $sourceAccounts->first()->id, 'source_account_name' => $sourceAccounts->first()->edit_name, 'destination_account_id' => $destinationAccounts->first()->id, @@ -441,10 +441,6 @@ class SingleController extends Controller { $count = $this->repository->countTransactions($journal); - if ($count > 2) { - return true; // @codeCoverageIgnore - } - - return false; + return $count > 2; } } diff --git a/app/Http/Controllers/Transaction/SplitController.php b/app/Http/Controllers/Transaction/SplitController.php index a22d913b1d..be620809ce 100644 --- a/app/Http/Controllers/Transaction/SplitController.php +++ b/app/Http/Controllers/Transaction/SplitController.php @@ -125,7 +125,7 @@ class SplitController extends Controller return view( 'transactions.split.edit', compact( - 'subTitleIcon', 'currencies', 'optionalFields', 'preFilled', 'subTitle', 'uploadSize', 'assetAccounts', 'budgets', + 'subTitleIcon', 'currencies', 'optionalFields', 'preFilled', 'subTitle', 'uploadSize', 'budgets', 'journal', 'accountArray', 'previous' ) @@ -197,7 +197,7 @@ class SplitController extends Controller 'destinationAccounts' => $destinationAccounts, 'what' => strtolower($this->repository->getTransactionType($journal)), 'date' => $request->old('date', $this->repository->getJournalDate($journal, null)), - 'tags' => join(',', $journal->tags->pluck('tag')->toArray()), + 'tags' => implode(',', $journal->tags->pluck('tag')->toArray()), // all custom fields: 'interest_date' => $request->old('interest_date', $this->repository->getMetaField($journal, 'interest_date')), diff --git a/app/User.php b/app/User.php index d01ef2daae..2d7f793027 100644 --- a/app/User.php +++ b/app/User.php @@ -76,6 +76,7 @@ class User extends Authenticatable * @param string $value * * @return User + * @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException */ public static function routeBinder(string $value): User { diff --git a/resources/lang/en_US/firefly.php b/resources/lang/en_US/firefly.php index a6a61fb5d1..5080e9f348 100644 --- a/resources/lang/en_US/firefly.php +++ b/resources/lang/en_US/firefly.php @@ -1086,6 +1086,7 @@ return [ 'invalid_link_selection' => 'Cannot link these transactions', 'journals_linked' => 'Transactions are linked.', 'journals_error_linked' => 'These transactions are already linked.', + 'journals_link_to_self' => 'You cannot link a transaction to itself', 'journal_links' => 'Transaction links', 'this_withdrawal' => 'This withdrawal', 'this_deposit' => 'This deposit',