Clean up code, remove unused methods.

This commit is contained in:
James Cole
2018-07-22 16:35:46 +02:00
parent dbbf0ff5e4
commit a722dc4235
43 changed files with 210 additions and 566 deletions

View File

@@ -22,6 +22,7 @@ declare(strict_types=1);
namespace FireflyIII\Models;
use Carbon\Carbon;
use Crypt;
use FireflyIII\Exceptions\FireflyException;
use FireflyIII\User;
@@ -31,7 +32,7 @@ use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Database\Query\JoinClause;
use Illuminate\Support\Collection;
use Log;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
@@ -45,12 +46,14 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
* @property bool $active
* @property string $virtual_balance
* @property User $user
* @property mixed|null startBalance
* @property mixed|null endBalance
* @property string startBalance
* @property string endBalance
* @property string difference
* @property mixed|null endBalance
* @property mixed|null startBalance
* @property mixed|null lastActivityDate
* @property Carbon lastActivityDate
* @property Collection accountMeta
* @property bool encrypted
*
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
*/
class Account extends Model
{
@@ -76,48 +79,6 @@ class Account extends Model
/** @var bool */
private $joinedAccountTypes;
/**
* @param array $fields
*
* @return Account
*
* @deprecated
*
* @throws FireflyException
*/
public static function firstOrCreateEncrypted(array $fields)
{
if (!isset($fields['user_id'])) {
throw new FireflyException('Missing required field "user_id".');
}
// everything but the name:
$query = self::orderBy('id');
$search = $fields;
unset($search['name'], $search['iban']);
foreach ($search as $name => $value) {
$query->where($name, $value);
}
$set = $query->get(['accounts.*']);
// account must have a name. If not set, use IBAN.
if (!isset($fields['name'])) {
$fields['name'] = $fields['iban'];
}
/** @var Account $account */
foreach ($set as $account) {
if ($account->name === $fields['name']) {
return $account;
}
}
// create it!
$account = self::create($fields);
return $account;
}
/**
* @param string $value
*
@@ -128,7 +89,10 @@ class Account extends Model
{
if (auth()->check()) {
$accountId = (int)$value;
$account = auth()->user()->accounts()->find($accountId);
/** @var User $user */
$user = auth()->user();
/** @var Account $account */
$account = $user->accounts()->find($accountId);
if (null !== $account) {
return $account;
}
@@ -178,7 +142,7 @@ class Account extends Model
*/
public function getIbanAttribute($value): string
{
if (null === $value || '' === (string)$value) {
if ('' === (string)$value) {
return '';
}
try {
@@ -195,25 +159,6 @@ class Account extends Model
return $result;
}
/**
* @codeCoverageIgnore
*
* @param string $fieldName
*
* @deprecated
* @return string
*/
public function getMeta(string $fieldName): string
{
foreach ($this->accountMeta as $meta) {
if ($meta->name === $fieldName) {
return (string)$meta->data;
}
}
return '';
}
/**
* @codeCoverageIgnore
*
@@ -273,7 +218,7 @@ class Account extends Model
* @param EloquentBuilder $query
* @param array $types
*/
public function scopeAccountTypeIn(EloquentBuilder $query, array $types)
public function scopeAccountTypeIn(EloquentBuilder $query, array $types): void
{
if (null === $this->joinedAccountTypes) {
$query->leftJoin('account_types', 'account_types.id', '=', 'accounts.account_type_id');
@@ -283,35 +228,12 @@ class Account extends Model
}
/**
* @codeCoverageIgnore
* @deprecated
*
* @param EloquentBuilder $query
* @param string $name
* @param string $value
*
*/
public function scopeHasMetaValue(EloquentBuilder $query, $name, $value)
{
$joinName = str_replace('.', '_', $name);
$query->leftJoin(
'account_meta as ' . $joinName,
function (JoinClause $join) use ($joinName, $name) {
$join->on($joinName . '.account_id', '=', 'accounts.id')->where($joinName . '.name', '=', $name);
}
);
$query->where($joinName . '.data', json_encode($value));
}
/**
* @codeCoverageIgnore
*
* @param $value
*
* @codeCoverageIgnore
* @throws \Illuminate\Contracts\Encryption\EncryptException
*/
public function setIbanAttribute($value)
public function setIbanAttribute($value): void
{
$this->attributes['iban'] = Crypt::encrypt($value);
}
@@ -323,7 +245,7 @@ class Account extends Model
*
* @throws \Illuminate\Contracts\Encryption\EncryptException
*/
public function setNameAttribute($value)
public function setNameAttribute($value): void
{
$encrypt = config('firefly.encryption');
$this->attributes['name'] = $encrypt ? Crypt::encrypt($value) : $value;
@@ -337,7 +259,7 @@ class Account extends Model
*
* @codeCoverageIgnore
*/
public function setVirtualBalanceAttribute($value)
public function setVirtualBalanceAttribute($value): void
{
$this->attributes['virtual_balance'] = (string)$value;
}

View File

@@ -76,7 +76,7 @@ class AccountMeta extends Model
*
* @codeCoverageIgnore
*/
public function setDataAttribute($value)
public function setDataAttribute($value): void
{
$this->attributes['data'] = json_encode($value);
}

View File

@@ -78,7 +78,10 @@ class Attachment extends Model
{
if (auth()->check()) {
$attachmentId = (int)$value;
$attachment = auth()->user()->attachments()->find($attachmentId);
/** @var User $user */
$user = auth()->user();
/** @var Attachment $attachment */
$attachment = $user->attachments()->find($attachmentId);
if (null !== $attachment) {
return $attachment;
}

View File

@@ -71,7 +71,10 @@ class AvailableBudget extends Model
{
if (auth()->check()) {
$availableBudgetId = (int)$value;
$availableBudget = auth()->user()->availableBudgets()->find($availableBudgetId);
/** @var User $user */
$user = auth()->user();
/** @var AvailableBudget $availableBudget */
$availableBudget = $user->availableBudgets()->find($availableBudgetId);
if (null !== $availableBudget) {
return $availableBudget;
}

View File

@@ -51,6 +51,10 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
* @property bool $automatch
* @property User $user
* @property string $match
* @property bool match_encrypted
* @property bool name_encrypted
*
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
*/
class Bill extends Model
{
@@ -93,7 +97,10 @@ class Bill extends Model
{
if (auth()->check()) {
$billId = (int)$value;
$bill = auth()->user()->bills()->find($billId);
/** @var User $user */
$user = auth()->user();
/** @var Bill $bill */
$bill = $user->bills()->find($billId);
if (null !== $bill) {
return $bill;
}
@@ -105,7 +112,7 @@ class Bill extends Model
* @codeCoverageIgnore
* @return \Illuminate\Database\Eloquent\Relations\MorphMany
*/
public function attachments()
public function attachments(): \Illuminate\Database\Eloquent\Relations\MorphMany
{
return $this->morphMany(Attachment::class, 'attachable');
}
@@ -118,7 +125,7 @@ class Bill extends Model
* @return string
* @throws \Illuminate\Contracts\Encryption\DecryptException
*/
public function getMatchAttribute($value)
public function getMatchAttribute($value): string
{
if (1 === (int)$this->match_encrypted) {
return Crypt::decrypt($value);
@@ -135,7 +142,7 @@ class Bill extends Model
* @return string
* @throws \Illuminate\Contracts\Encryption\DecryptException
*/
public function getNameAttribute($value)
public function getNameAttribute($value): string
{
if (1 === (int)$this->name_encrypted) {
return Crypt::decrypt($value);
@@ -158,7 +165,7 @@ class Bill extends Model
*
* @param $value
*/
public function setAmountMaxAttribute($value)
public function setAmountMaxAttribute($value): void
{
$this->attributes['amount_max'] = (string)$value;
}
@@ -168,7 +175,7 @@ class Bill extends Model
*
* @codeCoverageIgnore
*/
public function setAmountMinAttribute($value)
public function setAmountMinAttribute($value): void
{
$this->attributes['amount_min'] = (string)$value;
}
@@ -179,7 +186,7 @@ class Bill extends Model
* @codeCoverageIgnore
* @throws \Illuminate\Contracts\Encryption\EncryptException
*/
public function setMatchAttribute($value)
public function setMatchAttribute($value): void
{
$encrypt = config('firefly.encryption');
$this->attributes['match'] = $encrypt ? Crypt::encrypt($value) : $value;
@@ -192,7 +199,7 @@ class Bill extends Model
* @codeCoverageIgnore
* @throws \Illuminate\Contracts\Encryption\EncryptException
*/
public function setNameAttribute($value)
public function setNameAttribute($value): void
{
$encrypt = config('firefly.encryption');
$this->attributes['name'] = $encrypt ? Crypt::encrypt($value) : $value;

View File

@@ -37,6 +37,7 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
* @property bool $active
* @property int $user_id
* @property-read string $email
* @property bool encrypted
*/
class Budget extends Model
{
@@ -60,34 +61,6 @@ class Budget extends Model
/** @var array */
protected $hidden = ['encrypted'];
/**
* @param array $fields
*
* @deprecated
* @return Budget
*/
public static function firstOrCreateEncrypted(array $fields)
{
// everything but the name:
$query = self::orderBy('id');
$search = $fields;
unset($search['name']);
foreach ($search as $name => $value) {
$query->where($name, $value);
}
$set = $query->get(['budgets.*']);
/** @var Budget $budget */
foreach ($set as $budget) {
if ($budget->name === $fields['name']) {
return $budget;
}
}
// create it!
$budget = self::create($fields);
return $budget;
}
/**
* @param string $value
*
@@ -98,7 +71,10 @@ class Budget extends Model
{
if (auth()->check()) {
$budgetId = (int)$value;
$budget = auth()->user()->budgets()->find($budgetId);
/** @var User $user */
$user = auth()->user();
/** @var Budget $budget */
$budget = $user->budgets()->find($budgetId);
if (null !== $budget) {
return $budget;
}
@@ -110,7 +86,7 @@ class Budget extends Model
* @codeCoverageIgnore
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function budgetlimits()
public function budgetlimits(): \Illuminate\Database\Eloquent\Relations\HasMany
{
return $this->hasMany(BudgetLimit::class);
}
@@ -123,7 +99,7 @@ class Budget extends Model
* @return string
* @throws \Illuminate\Contracts\Encryption\DecryptException
*/
public function getNameAttribute($value)
public function getNameAttribute($value): string
{
if ($this->encrypted) {
return Crypt::decrypt($value);
@@ -139,7 +115,7 @@ class Budget extends Model
*
* @throws \Illuminate\Contracts\Encryption\EncryptException
*/
public function setNameAttribute($value)
public function setNameAttribute($value): void
{
$encrypt = config('firefly.encryption');
$this->attributes['name'] = $encrypt ? Crypt::encrypt($value) : $value;
@@ -150,7 +126,7 @@ class Budget extends Model
* @codeCoverageIgnore
* @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
*/
public function transactionJournals()
public function transactionJournals(): \Illuminate\Database\Eloquent\Relations\BelongsToMany
{
return $this->belongsToMany(TransactionJournal::class, 'budget_transaction_journal', 'budget_id');
}
@@ -159,7 +135,7 @@ class Budget extends Model
* @codeCoverageIgnore
* @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
*/
public function transactions()
public function transactions(): \Illuminate\Database\Eloquent\Relations\BelongsToMany
{
return $this->belongsToMany(Transaction::class, 'budget_transaction', 'budget_id');
}

View File

@@ -36,6 +36,7 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
* @property int $id
* @property float $spent // used in category reports
* @property Carbon|null lastActivity
* @property bool encrypted
*/
class Category extends Model
{
@@ -58,34 +59,6 @@ class Category extends Model
/** @var array */
protected $hidden = ['encrypted'];
/**
* @param array $fields
*
* @deprecated
* @return Category
*/
public static function firstOrCreateEncrypted(array $fields)
{
// everything but the name:
$query = self::orderBy('id');
$search = $fields;
unset($search['name']);
foreach ($search as $name => $value) {
$query->where($name, $value);
}
$set = $query->get(['categories.*']);
/** @var Category $category */
foreach ($set as $category) {
if ($category->name === $fields['name']) {
return $category;
}
}
// create it!
$category = self::create($fields);
return $category;
}
/**
* @param string $value
*
@@ -96,7 +69,10 @@ class Category extends Model
{
if (auth()->check()) {
$categoryId = (int)$value;
$category = auth()->user()->categories()->find($categoryId);
/** @var User $user */
$user = auth()->user();
/** @var Category $category */
$category = $user->categories()->find($categoryId);
if (null !== $category) {
return $category;
}
@@ -112,7 +88,7 @@ class Category extends Model
* @return string
* @throws \Illuminate\Contracts\Encryption\DecryptException
*/
public function getNameAttribute($value)
public function getNameAttribute($value): string
{
if ($this->encrypted) {
return Crypt::decrypt($value);
@@ -128,7 +104,7 @@ class Category extends Model
*
* @throws \Illuminate\Contracts\Encryption\EncryptException
*/
public function setNameAttribute($value)
public function setNameAttribute($value): void
{
$encrypt = config('firefly.encryption');
$this->attributes['name'] = $encrypt ? Crypt::encrypt($value) : $value;
@@ -139,7 +115,7 @@ class Category extends Model
* @codeCoverageIgnore
* @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
*/
public function transactionJournals()
public function transactionJournals(): \Illuminate\Database\Eloquent\Relations\BelongsToMany
{
return $this->belongsToMany(TransactionJournal::class, 'category_transaction_journal', 'category_id');
}
@@ -148,7 +124,7 @@ class Category extends Model
* @codeCoverageIgnore
* @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
*/
public function transactions()
public function transactions(): \Illuminate\Database\Eloquent\Relations\BelongsToMany
{
return $this->belongsToMany(Transaction::class, 'category_transaction', 'category_id');
}

View File

@@ -67,7 +67,7 @@ class Configuration extends Model
*
* @param $value
*/
public function setDataAttribute($value)
public function setDataAttribute($value): void
{
$this->attributes['data'] = json_encode($value);
}

View File

@@ -54,7 +54,10 @@ class ExportJob extends Model
{
if (auth()->check()) {
$key = trim($value);
$exportJob = auth()->user()->exportJobs()->where('key', $key)->first();
/** @var User $user */
$user = auth()->user();
/** @var ExportJob $exportJob */
$exportJob = $user->exportJobs()->where('key', $key)->first();
if (null !== $exportJob) {
return $exportJob;
}
@@ -67,7 +70,7 @@ class ExportJob extends Model
*
* @param $status
*/
public function change($status)
public function change($status): void
{
$this->status = $status;
$this->save();
@@ -77,7 +80,7 @@ class ExportJob extends Model
* @codeCoverageIgnore
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function user()
public function user(): \Illuminate\Database\Eloquent\Relations\BelongsTo
{
return $this->belongsTo(User::class);
}

View File

@@ -73,7 +73,10 @@ class ImportJob extends Model
{
if (auth()->check()) {
$key = trim($value);
$importJob = auth()->user()->importJobs()->where('key', $key)->first();
/** @var User $user */
$user = auth()->user();
/** @var ImportJob $importJob */
$importJob = $user->importJobs()->where('key', $key)->first();
if (null !== $importJob) {
return $importJob;
}
@@ -85,7 +88,7 @@ class ImportJob extends Model
* @codeCoverageIgnore
* @return \Illuminate\Database\Eloquent\Relations\MorphMany
*/
public function attachments()
public function attachments(): \Illuminate\Database\Eloquent\Relations\MorphMany
{
return $this->morphMany(Attachment::class, 'attachable');
}
@@ -94,7 +97,7 @@ class ImportJob extends Model
* @codeCoverageIgnore
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function tag()
public function tag(): \Illuminate\Database\Eloquent\Relations\BelongsTo
{
return $this->belongsTo(Tag::class);
}
@@ -103,7 +106,7 @@ class ImportJob extends Model
* @codeCoverageIgnore
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function user()
public function user(): \Illuminate\Database\Eloquent\Relations\BelongsTo
{
return $this->belongsTo(User::class);
}

View File

@@ -81,7 +81,7 @@ class LinkType extends Model
* @codeCoverageIgnore
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function transactionJournalLinks()
public function transactionJournalLinks(): \Illuminate\Database\Eloquent\Relations\HasMany
{
return $this->hasMany(TransactionJournalLink::class);
}

View File

@@ -66,7 +66,7 @@ class Note extends Model
/**
* @param $value
*/
public function setTextAttribute($value)
public function setTextAttribute($value): void
{
$this->attributes['text'] = e($value);
}

View File

@@ -43,6 +43,7 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
* @property int $order
* @property bool $active
* @property int $account_id
* @property bool encrypted
*
*/
class PiggyBank extends Model
@@ -101,28 +102,6 @@ class PiggyBank extends Model
return $this->belongsTo(Account::class);
}
/**
* Grabs the PiggyBankRepetition that's currently relevant / active.
*
* @deprecated
* @returns PiggyBankRepetition
*/
public function currentRelevantRep(): PiggyBankRepetition
{
if (null !== $this->currentRep) {
return $this->currentRep;
}
// repeating piggy banks are no longer supported.
/** @var PiggyBankRepetition $rep */
$rep = $this->piggyBankRepetitions()->first(['piggy_bank_repetitions.*']);
if (null === $rep) {
return new PiggyBankRepetition();
}
$this->currentRep = $rep;
return $rep;
}
/**
* @codeCoverageIgnore
*
@@ -131,7 +110,7 @@ class PiggyBank extends Model
* @return string
* @throws \Illuminate\Contracts\Encryption\DecryptException
*/
public function getNameAttribute($value)
public function getNameAttribute($value): string
{
if ($this->encrypted) {
return Crypt::decrypt($value);
@@ -140,25 +119,6 @@ class PiggyBank extends Model
return $value;
}
/**
* @param Carbon $date
*
* @deprecated
* @return string
*/
public function leftOnAccount(Carbon $date): string
{
$balance = app('steam')->balanceIgnoreVirtual($this->account, $date);
/** @var PiggyBank $piggyBank */
foreach ($this->account->piggyBanks as $piggyBank) {
$currentAmount = $piggyBank->currentRelevantRep()->currentamount ?? '0';
$balance = bcsub($balance, $currentAmount);
}
return $balance;
}
/**
* @codeCoverageIgnore
* Get all of the piggy bank's notes.
@@ -172,7 +132,7 @@ class PiggyBank extends Model
* @codeCoverageIgnore
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function piggyBankEvents()
public function piggyBankEvents(): \Illuminate\Database\Eloquent\Relations\HasMany
{
return $this->hasMany(PiggyBankEvent::class);
}
@@ -181,7 +141,7 @@ class PiggyBank extends Model
* @codeCoverageIgnore
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function piggyBankRepetitions()
public function piggyBankRepetitions(): \Illuminate\Database\Eloquent\Relations\HasMany
{
return $this->hasMany(PiggyBankRepetition::class);
}
@@ -193,7 +153,7 @@ class PiggyBank extends Model
*
* @throws \Illuminate\Contracts\Encryption\EncryptException
*/
public function setNameAttribute($value)
public function setNameAttribute($value): void
{
$encrypt = config('firefly.encryption');
$this->attributes['name'] = $encrypt ? Crypt::encrypt($value) : $value;
@@ -205,7 +165,7 @@ class PiggyBank extends Model
*
* @param $value
*/
public function setTargetamountAttribute($value)
public function setTargetamountAttribute($value): void
{
$this->attributes['targetamount'] = (string)$value;
}

View File

@@ -61,7 +61,7 @@ class PiggyBankEvent extends Model
* @codeCoverageIgnore
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function piggyBank()
public function piggyBank(): \Illuminate\Database\Eloquent\Relations\BelongsTo
{
return $this->belongsTo(PiggyBank::class);
}
@@ -71,7 +71,7 @@ class PiggyBankEvent extends Model
*
* @param $value
*/
public function setAmountAttribute($value)
public function setAmountAttribute($value): void
{
$this->attributes['amount'] = (string)$value;
}
@@ -80,7 +80,7 @@ class PiggyBankEvent extends Model
* @codeCoverageIgnore
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function transactionJournal()
public function transactionJournal(): \Illuminate\Database\Eloquent\Relations\BelongsTo
{
return $this->belongsTo(TransactionJournal::class);
}

View File

@@ -57,7 +57,7 @@ class PiggyBankRepetition extends Model
* @codeCoverageIgnore
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function piggyBank()
public function piggyBank(): \Illuminate\Database\Eloquent\Relations\BelongsTo
{
return $this->belongsTo(PiggyBank::class);
}
@@ -71,7 +71,7 @@ class PiggyBankRepetition extends Model
*
* @return EloquentBuilder
*/
public function scopeOnDates(EloquentBuilder $query, Carbon $start, Carbon $target)
public function scopeOnDates(EloquentBuilder $query, Carbon $start, Carbon $target): EloquentBuilder
{
return $query->where('startdate', $start->format('Y-m-d'))->where('targetdate', $target->format('Y-m-d'));
}
@@ -105,7 +105,7 @@ class PiggyBankRepetition extends Model
*
* @param $value
*/
public function setCurrentamountAttribute($value)
public function setCurrentamountAttribute($value): void
{
$this->attributes['currentamount'] = (string)$value;
}

View File

@@ -40,8 +40,7 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
* @property Carbon $updated_at
* @property Carbon $created_at
* @property int $id
* @property mixed user
* @property mixed user
* @property User user
*/
class Preference extends Model
{
@@ -62,14 +61,17 @@ class Preference extends Model
/**
* @param string $value
*
* @return Account
* @return Preference
* @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException
*/
public static function routeBinder(string $value): Preference
{
if (auth()->check()) {
$preferenceId = (int)$value;
$preference = auth()->user()->preferences()->find($preferenceId);
/** @var User $user */
$user = auth()->user();
/** @var Preference $preference */
$preference = $user->preferences()->find($preferenceId);
if (null !== $preference) {
return $preference;
}
@@ -84,6 +86,7 @@ class Preference extends Model
* @return mixed
*
* @throws FireflyException
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
*/
public function getDataAttribute($value)
{
@@ -91,7 +94,7 @@ class Preference extends Model
try {
$data = Crypt::decrypt($value);
} catch (DecryptException $e) {
Log::error('Could not decrypt preference.', ['id' => $this->id, 'name' => $this->name, 'data' => $value]);
Log::error(sprintf('Could not decrypt preference: %s', $e->getMessage()), ['id' => $this->id, 'name' => $this->name, 'data' => $value]);
throw new FireflyException(
sprintf('Could not decrypt preference #%d. If this error persists, please run "php artisan cache:clear" on the command line.', $this->id)
);
@@ -119,7 +122,7 @@ class Preference extends Model
*
* @throws \Illuminate\Contracts\Encryption\EncryptException
*/
public function setDataAttribute($value)
public function setDataAttribute($value): void
{
$this->attributes['data'] = Crypt::encrypt(json_encode($value));
}
@@ -128,7 +131,7 @@ class Preference extends Model
* @codeCoverageIgnore
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function user()
public function user(): \Illuminate\Database\Eloquent\Relations\BelongsTo
{
return $this->belongsTo(User::class);
}

View File

@@ -97,7 +97,10 @@ class Recurrence extends Model
{
if (auth()->check()) {
$recurrenceId = (int)$value;
$recurrence = auth()->user()->recurrences()->find($recurrenceId);
/** @var User $user */
$user = auth()->user();
/** @var Recurrence $recurrence */
$recurrence = $user->recurrences()->find($recurrenceId);
if (null !== $recurrence) {
return $recurrence;
}

View File

@@ -83,7 +83,10 @@ class Rule extends Model
{
if (auth()->check()) {
$ruleId = (int)$value;
$rule = auth()->user()->rules()->find($ruleId);
/** @var User $user */
$user = auth()->user();
/** @var Rule $rule */
$rule = $user->rules()->find($ruleId);
if (null !== $rule) {
return $rule;
}

View File

@@ -61,7 +61,7 @@ class RuleAction extends Model
* @codeCoverageIgnore
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function rule()
public function rule(): \Illuminate\Database\Eloquent\Relations\BelongsTo
{
return $this->belongsTo(Rule::class);
}

View File

@@ -74,7 +74,10 @@ class RuleGroup extends Model
{
if (auth()->check()) {
$ruleGroupId = (int)$value;
$ruleGroup = auth()->user()->ruleGroups()->find($ruleGroupId);
/** @var User $user */
$user = auth()->user();
/** @var RuleGroup $ruleGroup */
$ruleGroup = $user->ruleGroups()->find($ruleGroupId);
if (null !== $ruleGroup) {
return $ruleGroup;
}
@@ -86,7 +89,7 @@ class RuleGroup extends Model
* @codeCoverageIgnore
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function rules()
public function rules(): \Illuminate\Database\Eloquent\Relations\HasMany
{
return $this->hasMany(Rule::class);
}
@@ -95,7 +98,7 @@ class RuleGroup extends Model
* @codeCoverageIgnore
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function user()
public function user(): \Illuminate\Database\Eloquent\Relations\BelongsTo
{
return $this->belongsTo(User::class);
}

View File

@@ -60,7 +60,7 @@ class RuleTrigger extends Model
* @codeCoverageIgnore
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function rule()
public function rule(): \Illuminate\Database\Eloquent\Relations\BelongsTo
{
return $this->belongsTo(Rule::class);
}

View File

@@ -59,38 +59,6 @@ class Tag extends Model
/** @var array */
protected $fillable = ['user_id', 'tag', 'date', 'description', 'longitude', 'latitude', 'zoomLevel', 'tagMode'];
/**
* @param array $fields
*
* @deprecated
* @return Tag|null
*/
public static function firstOrCreateEncrypted(array $fields)
{
// everything but the tag:
unset($fields['tagMode']);
$search = $fields;
unset($search['tag']);
$query = self::orderBy('id');
foreach ($search as $name => $value) {
$query->where($name, $value);
}
$set = $query->get(['tags.*']);
/** @var Tag $tag */
foreach ($set as $tag) {
if ($tag->tag === $fields['tag']) {
return $tag;
}
}
// create it!
$fields['tagMode'] = 'nothing';
$fields['description'] = $fields['description'] ?? '';
$tag = self::create($fields);
return $tag;
}
/**
* @param string $value
*
@@ -101,7 +69,10 @@ class Tag extends Model
{
if (auth()->check()) {
$tagId = (int)$value;
$tag = auth()->user()->tags()->find($tagId);
/** @var User $user */
$user = auth()->user();
/** @var Tag $tag */
$tag = $user->tags()->find($tagId);
if (null !== $tag) {
return $tag;
}
@@ -117,7 +88,7 @@ class Tag extends Model
* @return string
* @throws \Illuminate\Contracts\Encryption\DecryptException
*/
public function getDescriptionAttribute($value)
public function getDescriptionAttribute($value): string
{
if (null === $value) {
return $value;
@@ -131,10 +102,10 @@ class Tag extends Model
*
* @param $value
*
* @return string
* @return string|null
* @throws \Illuminate\Contracts\Encryption\DecryptException
*/
public function getTagAttribute($value)
public function getTagAttribute($value): ?string
{
if (null === $value) {
return null;
@@ -150,7 +121,7 @@ class Tag extends Model
*
* @throws \Illuminate\Contracts\Encryption\EncryptException
*/
public function setDescriptionAttribute($value)
public function setDescriptionAttribute($value): void
{
$this->attributes['description'] = Crypt::encrypt($value);
}
@@ -162,7 +133,7 @@ class Tag extends Model
*
* @throws \Illuminate\Contracts\Encryption\EncryptException
*/
public function setTagAttribute($value)
public function setTagAttribute($value): void
{
$this->attributes['tag'] = Crypt::encrypt($value);
}
@@ -171,7 +142,7 @@ class Tag extends Model
* @codeCoverageIgnore
* @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
*/
public function transactionJournals()
public function transactionJournals(): \Illuminate\Database\Eloquent\Relations\BelongsToMany
{
return $this->belongsToMany(TransactionJournal::class);
}
@@ -180,7 +151,7 @@ class Tag extends Model
* @codeCoverageIgnore
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function user()
public function user(): \Illuminate\Database\Eloquent\Relations\BelongsTo
{
return $this->belongsTo(User::class);
}

View File

@@ -23,6 +23,7 @@ declare(strict_types=1);
namespace FireflyIII\Models;
use Carbon\Carbon;
use FireflyIII\User;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
@@ -88,6 +89,7 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
* @property string $after // used in audit reports.
* @property int $opposing_id // ID of the opposing transaction, used in collector
* @property bool $encrypted // is the journal encrypted
* @SuppressWarnings(PHPMD.TooManyPublicMethods)
*/
class Transaction extends Model
{
@@ -150,8 +152,10 @@ class Transaction extends Model
{
if (auth()->check()) {
$transactionId = (int)$value;
$transaction = auth()->user()->transactions()->where('transactions.id', $transactionId)
->first(['transactions.*']);
/** @var User $user */
$user = auth()->user();
/** @var Transaction $transaction */
$transaction = $user->transactions()->where('transactions.id', $transactionId)->first(['transactions.*']);
if (null !== $transaction) {
return $transaction;
}
@@ -166,7 +170,7 @@ class Transaction extends Model
* @codeCoverageIgnore
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function account()
public function account(): BelongsTo
{
return $this->belongsTo(Account::class);
}
@@ -175,7 +179,7 @@ class Transaction extends Model
* @codeCoverageIgnore
* @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
*/
public function budgets()
public function budgets(): \Illuminate\Database\Eloquent\Relations\BelongsToMany
{
return $this->belongsToMany(Budget::class);
}
@@ -184,7 +188,7 @@ class Transaction extends Model
* @codeCoverageIgnore
* @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
*/
public function categories()
public function categories(): \Illuminate\Database\Eloquent\Relations\BelongsToMany
{
return $this->belongsToMany(Category::class);
}
@@ -193,30 +197,18 @@ class Transaction extends Model
* @codeCoverageIgnore
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function foreignCurrency()
public function foreignCurrency(): BelongsTo
{
return $this->belongsTo(TransactionCurrency::class, 'foreign_currency_id');
}
/**
* @codeCoverageIgnore
*
* @param $value
*
* @return float|int
*/
public function getAmountAttribute($value)
{
return $value;
}
/**
* @codeCoverageIgnore
*
* @param Builder $query
* @param Carbon $date
*/
public function scopeAfter(Builder $query, Carbon $date)
public function scopeAfter(Builder $query, Carbon $date): void
{
if (!self::isJoined($query, 'transaction_journals')) {
$query->leftJoin('transaction_journals', 'transaction_journals.id', '=', 'transactions.transaction_journal_id');
@@ -230,7 +222,7 @@ class Transaction extends Model
* @param Builder $query
* @param Carbon $date
*/
public function scopeBefore(Builder $query, Carbon $date)
public function scopeBefore(Builder $query, Carbon $date): void
{
if (!self::isJoined($query, 'transaction_journals')) {
$query->leftJoin('transaction_journals', 'transaction_journals.id', '=', 'transactions.transaction_journal_id');
@@ -244,7 +236,7 @@ class Transaction extends Model
* @param Builder $query
* @param array $types
*/
public function scopeTransactionTypes(Builder $query, array $types)
public function scopeTransactionTypes(Builder $query, array $types): void
{
if (!self::isJoined($query, 'transaction_journals')) {
$query->leftJoin('transaction_journals', 'transaction_journals.id', '=', 'transactions.transaction_journal_id');
@@ -261,7 +253,7 @@ class Transaction extends Model
*
* @param $value
*/
public function setAmountAttribute($value)
public function setAmountAttribute($value): void
{
$this->attributes['amount'] = (string)$value;
}

View File

@@ -33,14 +33,7 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
* @property string $symbol
* @property int $decimal_places
* @property int $id
* @property mixed name
* @property mixed name
* @property mixed name
* @property mixed name
* @property mixed name
* @property mixed name
* @property mixed name
* @property mixed name
* @property string name
*
*/
class TransactionCurrency extends Model
@@ -86,7 +79,7 @@ class TransactionCurrency extends Model
* @codeCoverageIgnore
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function transactionJournals()
public function transactionJournals(): \Illuminate\Database\Eloquent\Relations\HasMany
{
return $this->hasMany(TransactionJournal::class);
}

View File

@@ -24,7 +24,6 @@ namespace FireflyIII\Models;
use Carbon\Carbon;
use Crypt;
use FireflyIII\Support\CacheProperties;
use FireflyIII\Support\Models\TransactionJournalTrait;
use FireflyIII\User;
use Illuminate\Database\Eloquent\Builder as EloquentBuilder;
@@ -33,7 +32,6 @@ use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Support\Collection;
use Log;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
/**
@@ -54,6 +52,10 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
* @property Carbon interest_date
* @property Carbon book_date
* @property Carbon process_date
* @property bool encrypted
*
* @SuppressWarnings(PHPMD.TooManyPublicMethods)
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
*/
class TransactionJournal extends Model
{
@@ -97,8 +99,11 @@ class TransactionJournal extends Model
{
if (auth()->check()) {
$journalId = (int)$value;
$journal = auth()->user()->transactionJournals()->where('transaction_journals.id', $journalId)
->first(['transaction_journals.*']);
/** @var User $user */
$user = auth()->user();
/** @var TransactionJournal $journal */
$journal = $user->transactionJournals()->where('transaction_journals.id', $journalId)
->first(['transaction_journals.*']);
if (null !== $journal) {
return $journal;
}
@@ -111,7 +116,7 @@ class TransactionJournal extends Model
* @codeCoverageIgnore
* @return \Illuminate\Database\Eloquent\Relations\MorphMany
*/
public function attachments()
public function attachments(): \Illuminate\Database\Eloquent\Relations\MorphMany
{
return $this->morphMany(Attachment::class, 'attachable');
}
@@ -120,7 +125,7 @@ class TransactionJournal extends Model
* @codeCoverageIgnore
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function bill()
public function bill(): \Illuminate\Database\Eloquent\Relations\BelongsTo
{
return $this->belongsTo(Bill::class);
}
@@ -143,31 +148,6 @@ class TransactionJournal extends Model
return $this->belongsToMany(Category::class);
}
/**
* @codeCoverageIgnore
* @deprecated
*
* @param string $name
*
* @return bool
*/
public function deleteMeta(string $name): bool
{
$this->transactionJournalMeta()->where('name', $name)->delete();
return true;
}
/**
* @codeCoverageIgnore
*
* @return HasMany
*/
public function destinationJournalLinks(): HasMany
{
return $this->hasMany(TransactionJournalLink::class, 'destination_id');
}
/**
* @codeCoverageIgnore
*
@@ -176,7 +156,7 @@ class TransactionJournal extends Model
* @return string
* @throws \Illuminate\Contracts\Encryption\DecryptException
*/
public function getDescriptionAttribute($value)
public function getDescriptionAttribute($value): string
{
if ($this->encrypted) {
return Crypt::decrypt($value);
@@ -185,56 +165,6 @@ class TransactionJournal extends Model
return $value;
}
/**
*
* @param string $name
*
* @deprecated
* @return string
*/
public function getMeta(string $name)
{
$value = null;
$cache = new CacheProperties;
$cache->addProperty('journal-meta');
$cache->addProperty($this->id);
$cache->addProperty($name);
if ($cache->has()) {
return $cache->get(); // @codeCoverageIgnore
}
Log::debug(sprintf('Looking for journal #%d meta field "%s".', $this->id, $name));
$entry = $this->transactionJournalMeta()->where('name', $name)->first();
if (null !== $entry) {
$value = $entry->data;
// cache:
$cache->store($value);
}
// convert to Carbon if name is _date
if (null !== $value && '_date' === substr($name, -5)) {
$value = new Carbon($value);
// cache:
$cache->store($value);
}
return $value;
}
/**
* @codeCoverageIgnore
*
* @param string $name
*
* @deprecated
* @return bool
*/
public function hasMeta(string $name): bool
{
return null !== $this->getMeta($name);
}
/**
* @codeCoverageIgnore
* @return bool
@@ -313,7 +243,7 @@ class TransactionJournal extends Model
*
* @return EloquentBuilder
*/
public function scopeAfter(EloquentBuilder $query, Carbon $date)
public function scopeAfter(EloquentBuilder $query, Carbon $date): EloquentBuilder
{
return $query->where('transaction_journals.date', '>=', $date->format('Y-m-d 00:00:00'));
}
@@ -326,7 +256,7 @@ class TransactionJournal extends Model
*
* @return EloquentBuilder
*/
public function scopeBefore(EloquentBuilder $query, Carbon $date)
public function scopeBefore(EloquentBuilder $query, Carbon $date): EloquentBuilder
{
return $query->where('transaction_journals.date', '<=', $date->format('Y-m-d 00:00:00'));
}
@@ -337,7 +267,7 @@ class TransactionJournal extends Model
* @param EloquentBuilder $query
* @param array $types
*/
public function scopeTransactionTypes(EloquentBuilder $query, array $types)
public function scopeTransactionTypes(EloquentBuilder $query, array $types): void
{
if (!self::isJoined($query, 'transaction_types')) {
$query->leftJoin('transaction_types', 'transaction_types.id', '=', 'transaction_journals.transaction_type_id');
@@ -354,52 +284,13 @@ class TransactionJournal extends Model
*
* @throws \Illuminate\Contracts\Encryption\EncryptException
*/
public function setDescriptionAttribute($value)
public function setDescriptionAttribute($value): void
{
$encrypt = config('firefly.encryption');
$this->attributes['description'] = $encrypt ? Crypt::encrypt($value) : $value;
$this->attributes['encrypted'] = $encrypt;
}
/**
* @deprecated
*
* @param string $name
* @param $value
*
* @return TransactionJournalMeta
*/
public function setMeta(string $name, $value): TransactionJournalMeta
{
if (null === $value) {
$this->deleteMeta($name);
return new TransactionJournalMeta();
}
if (\is_string($value) && 0 === \strlen($value)) {
$this->deleteMeta($name);
return new TransactionJournalMeta();
}
if ($value instanceof Carbon) {
$value = $value->toW3cString();
}
Log::debug(sprintf('Going to set "%s" with value "%s"', $name, json_encode($value)));
$entry = $this->transactionJournalMeta()->where('name', $name)->first();
if (null === $entry) {
$entry = new TransactionJournalMeta();
$entry->transactionJournal()->associate($this);
$entry->name = $name;
}
$entry->data = $value;
$entry->save();
app('preferences')->mark();
return $entry;
}
/**
* @codeCoverageIgnore
* @return HasMany
@@ -413,7 +304,7 @@ class TransactionJournal extends Model
* @codeCoverageIgnore
* @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
*/
public function tags()
public function tags(): BelongsToMany
{
return $this->belongsToMany(Tag::class);
}
@@ -422,7 +313,7 @@ class TransactionJournal extends Model
* @codeCoverageIgnore
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function transactionCurrency()
public function transactionCurrency(): \Illuminate\Database\Eloquent\Relations\BelongsTo
{
return $this->belongsTo(TransactionCurrency::class);
}
@@ -440,7 +331,7 @@ class TransactionJournal extends Model
* @codeCoverageIgnore
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function transactionType()
public function transactionType(): \Illuminate\Database\Eloquent\Relations\BelongsTo
{
return $this->belongsTo(TransactionType::class);
}
@@ -458,7 +349,7 @@ class TransactionJournal extends Model
* @codeCoverageIgnore
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function user()
public function user(): \Illuminate\Database\Eloquent\Relations\BelongsTo
{
return $this->belongsTo(User::class);
}

View File

@@ -77,7 +77,7 @@ class TransactionJournalLink extends Model
* @codeCoverageIgnore
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function destination()
public function destination(): BelongsTo
{
return $this->belongsTo(TransactionJournal::class, 'destination_id');
}
@@ -137,7 +137,7 @@ class TransactionJournalLink extends Model
* @codeCoverageIgnore
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function source()
public function source(): BelongsTo
{
return $this->belongsTo(TransactionJournal::class, 'source_id');
}

View File

@@ -71,7 +71,7 @@ class TransactionJournalMeta extends Model
*
* @param $value
*/
public function setDataAttribute($value)
public function setDataAttribute($value): void
{
$data = json_encode($value);
$this->attributes['data'] = $data;

View File

@@ -128,7 +128,7 @@ class TransactionType extends Model
* @codeCoverageIgnore
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function transactionJournals()
public function transactionJournals(): \Illuminate\Database\Eloquent\Relations\HasMany
{
return $this->hasMany(TransactionJournal::class);
}