Fix various phpstan issues.

This commit is contained in:
James Cole 2023-11-28 05:05:42 +01:00
parent 14e9d73768
commit cbecacd652
No known key found for this signature in database
GPG Key ID: B49A324B7EAD6D80
13 changed files with 83 additions and 25 deletions

View File

@ -74,8 +74,8 @@ class Range
}
$today = today(config('app.timezone'));
$start = app('navigation')->updateStartDate($viewRange, $today);
$end = app('navigation')->updateEndDate($viewRange, $start);
$start = app('navigation')->updateStartDate((string) $viewRange, $today);
$end = app('navigation')->updateEndDate((string) $viewRange, $start);
app('session')->put('start', $start);
app('session')->put('end', $end);

View File

@ -25,12 +25,13 @@ namespace FireflyIII\Models;
use Carbon\Carbon;
use Eloquent;
use FireflyIII\Support\Models\ReturnsIntegerIdTrait;
use Illuminate\Database\Eloquent\Casts\Attribute;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Database\Query\Builder;
use FireflyIII\Support\Models\ReturnsIntegerIdTrait;
/**
* FireflyIII\Models\RecurrenceRepetition
*
@ -38,11 +39,11 @@ use FireflyIII\Support\Models\ReturnsIntegerIdTrait;
* @property Carbon|null $created_at
* @property Carbon|null $updated_at
* @property Carbon|null $deleted_at
* @property int $recurrence_id
* @property int $recurrence_id
* @property string $repetition_type
* @property string $repetition_moment
* @property int|string $repetition_skip
* @property int|string $weekend
* @property int $repetition_skip
* @property int $weekend
* @property-read Recurrence $recurrence
* @method static \Illuminate\Database\Eloquent\Builder|RecurrenceRepetition newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|RecurrenceRepetition newQuery()
@ -104,4 +105,24 @@ class RecurrenceRepetition extends Model
get: static fn($value) => (int)$value,
);
}
/**
* @return Attribute
*/
protected function repetitionSkip(): Attribute
{
return Attribute::make(
get: static fn($value) => (int)$value,
);
}
/**
* @return Attribute
*/
protected function weekend(): Attribute
{
return Attribute::make(
get: static fn($value) => (int)$value,
);
}
}

View File

@ -95,7 +95,7 @@ class TransactionJournalMeta extends Model
{
$data = json_encode($value);
$this->attributes['data'] = $data;
$this->attributes['hash'] = (string) hash('sha256', $data);
$this->attributes['hash'] = hash('sha256',(string) $data);
}
/**

View File

@ -653,7 +653,7 @@ class BillRepository implements BillRepositoryInterface
return $this->user->bills()
->where('active', true)
->orderBy('bills.name', 'ASC')
->get(['bills.*', DB::raw('((bills.amount_min + bills.amount_max) / 2) AS expectedAmount'),]);
->get(['bills.*', DB::raw('((bills.amount_min + bills.amount_max) / 2) AS expectedAmount'),]); // @phpstan-ignore-line
}
/**

View File

@ -201,7 +201,7 @@ class JournalCLIRepository implements JournalCLIRepositoryInterface
{
$query = TransactionJournal::leftJoin('transactions', 'transaction_journals.id', '=', 'transactions.transaction_journal_id')
->groupBy('transaction_journals.id');
$result = $query->get(['transaction_journals.id as id', DB::raw('count(transactions.id) as transaction_count')]);
$result = $query->get(['transaction_journals.id as id', DB::raw('count(transactions.id) as transaction_count')]); // @phpstan-ignore-line
$journalIds = [];
/** @var stdClass $row */
foreach ($result as $row) {

View File

@ -69,9 +69,9 @@ class RecurringRepository implements RecurringRepositoryInterface
// if not, loop set and try to read the recurrence_date. If it matches start or end, return it as well.
$set
= TransactionJournalMeta::where(static function (Builder $q1) use ($recurrence) {
$q1->where('name', 'recurrence_id');
$q1->where('data', json_encode((string)$recurrence->id));
})->get(['journal_meta.transaction_journal_id']);
$q1->where('name', 'recurrence_id');
$q1->where('data', json_encode((string)$recurrence->id));
})->get(['journal_meta.transaction_journal_id']);
// there are X journals made for this recurrence. Any of them meant for today?
foreach ($set as $journalMeta) {
@ -495,6 +495,10 @@ class RecurringRepository implements RecurringRepositoryInterface
/** @var Preference $pref */
$pref = app('preferences')->getForUser($this->user, 'language', config('firefly.default_language', 'en_US'));
$language = $pref->data;
if (is_array($language)) {
$language = 'en_US';
}
$language = (string)$language;
if ('daily' === $repetition->repetition_type) {
return (string)trans('firefly.recurring_daily', [], $language);
}
@ -532,6 +536,9 @@ class RecurringRepository implements RecurringRepositoryInterface
//
$today = today(config('app.timezone'))->endOfYear();
$repDate = Carbon::createFromFormat('Y-m-d', $repetition->repetition_moment);
if(false === $repDate) {
$repDate = clone $today;
}
$diffInYears = $today->diffInYears($repDate);
$repDate->addYears($diffInYears); // technically not necessary.
$string = $repDate->isoFormat((string)trans('config.month_and_day_no_year_js'));

View File

@ -206,12 +206,15 @@ class UserGroupRepository implements UserGroupRepositoryInterface
{
$owner = UserRole::whereTitle(UserRoleEnum::OWNER)->first();
app('log')->debug('in update membership');
/** @var User|null $user */
$user = null;
if (array_key_exists('id', $data)) {
/** @var User|null $user */
$user = User::find($data['id']);
app('log')->debug('Found user by ID');
}
if (array_key_exists('email', $data) && '' !== (string)$data['email']) {
/** @var User|null $user */
$user = User::whereEmail($data['email'])->first();
app('log')->debug('Found user by email');
}

View File

@ -123,10 +123,15 @@ class UpdateRequest implements UpdateRequestInterface
}
// parse response a bit. No message yet.
$response = $json['firefly_iii'][$channel];
$response = $json['firefly_iii'][$channel];
$date = Carbon::createFromFormat('Y-m-d', $response['date']);
if (false === $date) {
$date = today(config('app.timezone'));
}
$return['version'] = $response['version'];
$return['level'] = 'success';
$return['date'] = Carbon::createFromFormat('Y-m-d', $response['date'])->startOfDay();
$return['date'] = $date->startOfDay();
app('log')->info('Response from update server', $response);
return $return;

View File

@ -118,7 +118,7 @@ class AccountDestroyService
$collection = Transaction::groupBy('transaction_journal_id', 'account_id')
->where('account_id', $moveTo->id)
->get(['transaction_journal_id', 'account_id', DB::raw('count(*) as the_count')]);
->get(['transaction_journal_id', 'account_id', DB::raw('count(*) as the_count')]); // @phpstan-ignore-line
if (0 === $collection->count()) {
return;
}

View File

@ -224,7 +224,11 @@ trait AccountServiceTrait
protected function createOBGroup(Account $account, array $data): TransactionGroup
{
app('log')->debug('Now going to create an OB group.');
$language = app('preferences')->getForUser($account->user, 'language', 'en_US')->data;
$language = app('preferences')->getForUser($account->user, 'language', 'en_US')->data;
if (is_array($language)) {
$language = 'en_US';
}
$language = (string)$language;
$sourceId = null;
$sourceName = null;
$destId = null;
@ -478,6 +482,10 @@ trait AccountServiceTrait
}
$language = app('preferences')->getForUser($account->user, 'language', 'en_US')->data;
if (is_array($language)) {
$language = 'en_US';
}
$language = (string)$language;
// set source and/or destination based on whether the amount is positive or negative.
// first, assume the amount is positive and go from there:
@ -686,6 +694,10 @@ trait AccountServiceTrait
{
app('log')->debug('Now going to create an OB group.');
$language = app('preferences')->getForUser($account->user, 'language', 'en_US')->data;
if (is_array($language)) {
$language = 'en_US';
}
$language= (string)$language;
$sourceId = null;
$sourceName = null;
$destId = null;

View File

@ -338,6 +338,9 @@ class AccountUpdateService
return;
}
$array = $preference->data;
if(!is_array($array)) {
$array = [$array];
}
app('log')->debug('Old array is: ', $array);
app('log')->debug(sprintf('Must remove : %d', $account->id));
$removeAccountId = $account->id;

View File

@ -77,7 +77,7 @@ class Amount
$fmt->setSymbol(NumberFormatter::CURRENCY_SYMBOL, $symbol);
$fmt->setAttribute(NumberFormatter::MIN_FRACTION_DIGITS, $decimalPlaces);
$fmt->setAttribute(NumberFormatter::MAX_FRACTION_DIGITS, $decimalPlaces);
$result = $fmt->format((float)$rounded); // intentional float
$result = (string) $fmt->format((float)$rounded); // intentional float
if (true === $coloured) {
if (1 === bccomp($rounded, '0')) {

View File

@ -55,7 +55,7 @@ trait RequestInformation
$url = url()->to('/');
$parts = parse_url($url);
return $parts['host'];
return $parts['host'] ?? '';
}
/**
@ -129,7 +129,9 @@ trait RequestInformation
*/
final protected function getSpecificPageName(): string // get request info
{
return null === RouteFacade::current()->parameter('objectType') ? '' : '_' . RouteFacade::current()->parameter('objectType');
/** @var string|null $param */
$param = RouteFacade::current()->parameter('objectType');
return null === $param ? '' : sprintf('_%s', $param);
}
/**
@ -170,20 +172,25 @@ trait RequestInformation
$attributes['location'] = $attributes['location'] ?? '';
$attributes['accounts'] = AccountList::routeBinder($attributes['accounts'] ?? '', new Route('get', '', []));
try {
$attributes['startDate'] = Carbon::createFromFormat('Ymd', $attributes['startDate'])->startOfDay();
$date = Carbon::createFromFormat('Ymd', $attributes['startDate']);
} catch (InvalidArgumentException $e) {
app('log')->debug(sprintf('Not important error message: %s', $e->getMessage()));
$date = today(config('app.timezone'))->startOfMonth();
$attributes['startDate'] = $date;
$date = today(config('app.timezone'));
}
$date->startOfMonth();
$attributes['startDate'] = $date;
unset($date);
try {
$attributes['endDate'] = Carbon::createFromFormat('Ymd', $attributes['endDate'])->endOfDay();
$date2 = Carbon::createFromFormat('Ymd', $attributes['endDate']);
} catch (InvalidArgumentException $e) {
app('log')->debug(sprintf('Not important error message: %s', $e->getMessage()));
$date = today(config('app.timezone'))->startOfMonth();
$attributes['endDate'] = $date;
$date2 = today(config('app.timezone'));
}
$date2->endOfDay();
$attributes['endDate'] = $date2;
return $attributes;
}