From abd123b1c8b6c22044489c858ee3de56ce22abb4 Mon Sep 17 00:00:00 2001 From: James Cole Date: Sat, 9 Dec 2023 20:12:34 +0100 Subject: [PATCH] Fix a few null pointers. --- app/Helpers/Report/NetWorth.php | 3 +++ app/Support/ParseDateString.php | 11 +++++++++-- app/Transformers/BillTransformer.php | 20 ++++++++++++-------- readme.md | 2 +- 4 files changed, 25 insertions(+), 11 deletions(-) diff --git a/app/Helpers/Report/NetWorth.php b/app/Helpers/Report/NetWorth.php index 4961d15ecb..8884430773 100644 --- a/app/Helpers/Report/NetWorth.php +++ b/app/Helpers/Report/NetWorth.php @@ -103,6 +103,9 @@ class NetWorth implements NetWorthInterface foreach ($accounts as $account) { app('log')->debug(sprintf('Now at account #%d ("%s")', $account->id, $account->name)); $currency = $this->getRepository()->getAccountCurrency($account); + if(null === $currency) { + $currency = app('amount')->getDefaultCurrency(); + } $currencyId = $currency->id; $balance = '0'; $nativeBalance = '0'; diff --git a/app/Support/ParseDateString.php b/app/Support/ParseDateString.php index 0fac8df511..892d80e8c7 100644 --- a/app/Support/ParseDateString.php +++ b/app/Support/ParseDateString.php @@ -25,7 +25,9 @@ declare(strict_types=1); namespace FireflyIII\Support; use Carbon\Carbon; +use Carbon\Exceptions\InvalidFormatException; use FireflyIII\Exceptions\FireflyException; +use Illuminate\Support\Facades\Log; /** * Class ParseDateString @@ -151,8 +153,13 @@ class ParseDateString */ protected function parseDefaultDate(string $date): Carbon { - $result = Carbon::createFromFormat('Y-m-d', $date); - if(false === $result) { + $result = false; + try { + $result = Carbon::createFromFormat('Y-m-d', $date); + } catch (InvalidFormatException $e) { + Log::error(sprintf('parseDefaultDate("%s") ran into an error, but dont mind: %s', $date, $e->getMessage())); + } + if (false === $result) { $result = today(config('app.timezone'))->startOfDay(); } return $result; diff --git a/app/Transformers/BillTransformer.php b/app/Transformers/BillTransformer.php index fabae93f2e..34d33f4097 100644 --- a/app/Transformers/BillTransformer.php +++ b/app/Transformers/BillTransformer.php @@ -62,10 +62,14 @@ class BillTransformer extends AbstractTransformer { $paidData = $this->paidData($bill); $lastPaidDate = $this->getLastPaidDate($paidData); - $payDates = $this->calculator->getPayDates($this->parameters->get('start'), $this->parameters->get('end'), $bill->date, $bill->repeat_freq, $bill->skip, $lastPaidDate); - $currency = $bill->transactionCurrency; - $notes = $this->repository->getNoteText($bill); - $notes = '' === $notes ? null : $notes; + + // both params can be NULL, so just in case they are, add some wide margins: + $start = $this->parameters->get('start') ?? today()->subYears(10); + $end = $this->parameters->get('end') ?? today()->addYears(10); + $payDates = $this->calculator->getPayDates($start, $end, $bill->date, $bill->repeat_freq, $bill->skip, $lastPaidDate); + $currency = $bill->transactionCurrency; + $notes = $this->repository->getNoteText($bill); + $notes = '' === $notes ? null : $notes; $this->repository->setUser($bill->user); $objectGroupId = null; @@ -105,10 +109,10 @@ class BillTransformer extends AbstractTransformer if (null !== $firstPayDate) { $nemDate = Carbon::createFromFormat('!Y-m-d', $firstPayDate, config('app.timezone')); - if(false === $nemDate) { + if (false === $nemDate) { $nemDate = today(config('app.timezone')); } - $nem = $nemDate->toAtomString(); + $nem = $nemDate->toAtomString(); // nullify again when it's outside the current view range. if ($nemDate->lt($this->parameters->get('start')) || $nemDate->gt($this->parameters->get('end'))) { @@ -126,8 +130,8 @@ class BillTransformer extends AbstractTransformer $current = $payDatesFormatted[0] ?? null; if (null !== $current && !$nemDate->isToday()) { - $temp2 = Carbon::createFromFormat('Y-m-d\TH:i:sP', $current); - if(false === $temp2) { + $temp2 = Carbon::createFromFormat('Y-m-d\TH:i:sP', $current); + if (false === $temp2) { $temp2 = today(config('app.timezone')); } $nemDiff = trans('firefly.bill_expected_date', ['date' => $temp2->diffForHumans(today(config('app.timezone')), CarbonInterface::DIFF_RELATIVE_TO_NOW)]); diff --git a/readme.md b/readme.md index 0fa1aba944..ec46ee3603 100644 --- a/readme.md +++ b/readme.md @@ -170,7 +170,7 @@ You can contact me at [james@firefly-iii.org](mailto:james@firefly-iii.org), you - [GitHub Discussions for questions and support](https://github.com/firefly-iii/firefly-iii/discussions/) - [Gitter.im for a good chat and a quick answer](https://gitter.im/firefly-iii/firefly-iii) - [GitHub Issues for bugs and issues](https://github.com/firefly-iii/firefly-iii/issues) -- [Follow me around for news and updates on Twitter](https://twitter.com/Firefly_iii) +- [Follow me around for news and updates on Mastodon](https://fosstodon.org/@ff3) ## Acknowledgements