diff --git a/app/Console/Commands/Correction/FixPostgresSequences.php b/app/Console/Commands/Correction/FixPostgresSequences.php new file mode 100644 index 0000000000..2ac42466c9 --- /dev/null +++ b/app/Console/Commands/Correction/FixPostgresSequences.php @@ -0,0 +1,132 @@ +getName() !== 'pgsql') { + $this->info('Command executed successfully.'); + + return 0; + } + $this->line('Going to verify PostgreSQL table sequences.'); + $tablesToCheck = [ + '2fa_tokens', + 'account_meta', + 'account_types', + 'accounts', + 'attachments', + 'auto_budgets', + 'available_budgets', + 'bills', + 'budget_limits', + 'budget_transaction', + 'budget_transaction_journal', + 'budgets', + 'categories', + 'category_transaction', + 'category_transaction_journal', + 'configuration', + 'currency_exchange_rates', + 'export_jobs', + 'failed_jobs', + 'group_journals', + 'import_jobs', + 'jobs', + 'journal_links', + 'journal_meta', + 'limit_repetitions', + 'link_types', + 'locations', + 'migrations', + 'notes', + 'oauth_clients', + 'oauth_personal_access_clients', + 'object_groups', + 'permissions', + 'piggy_bank_events', + 'piggy_bank_repetitions', + 'piggy_banks', + 'preferences', + 'recurrences', + 'recurrences_meta', + 'recurrences_repetitions', + 'recurrences_transactions', + 'roles', + 'rt_meta', + 'rule_actions', + 'rule_groups', + 'rule_triggers', + 'rules', + 'tag_transaction_journal', + 'tags', + 'telemetry', + 'transaction_currencies', + 'transaction_groups', + 'transaction_journals', + 'transaction_types', + 'transactions', + 'users', + 'webhook_attempts', + 'webhook_messages', + 'webhooks', + ]; + + foreach ($tablesToCheck as $tableToCheck) { + $this->info(sprintf('Checking the next id sequence for table "%s".', $tableToCheck)); + + $highestId = DB::table($tableToCheck)->select(DB::raw('MAX(id)'))->first(); + $nextId = DB::table($tableToCheck)->select(DB::raw(sprintf('nextval(\'%s_id_seq\')', $tableToCheck)))->first(); + if(null === $nextId) { + $this->line(sprintf('nextval is NULL for table "%s", go to next table.', $tableToCheck)); + continue; + } + + if ($nextId->nextval < $highestId->max) { + DB::select(sprintf('SELECT setval(\'%s_id_seq\', %d)', $tableToCheck, $highestId->max)); + $highestId = DB::table($tableToCheck)->select(DB::raw('MAX(id)'))->first(); + $nextId = DB::table($tableToCheck)->select(DB::raw(sprintf('nextval(\'%s_id_seq\')', $tableToCheck)))->first(); + if ($nextId->nextval > $highestId->max) { + $this->info(sprintf('Table "%s" autoincrement corrected.', $tableToCheck)); + } + if ($nextId->nextval <= $highestId->max) { + $this->warn(sprintf('Arff! The nextval sequence is still all screwed up on table "%s".', $tableToCheck)); + } + } + if ($nextId->nextval >= $highestId->max) { + $this->info(sprintf('Table "%s" autoincrement is correct.', $tableToCheck)); + } + } + + + return 0; + } +} diff --git a/app/Console/Commands/Upgrade/UpgradeDatabase.php b/app/Console/Commands/Upgrade/UpgradeDatabase.php index 8b8a813844..9f0055a5fe 100644 --- a/app/Console/Commands/Upgrade/UpgradeDatabase.php +++ b/app/Console/Commands/Upgrade/UpgradeDatabase.php @@ -130,6 +130,11 @@ class UpgradeDatabase extends Command $result = Artisan::output(); echo $result; + $this->line('Fix PostgreSQL sequences.'); + Artisan::call('firefly-iii:fix-pgsql-sequences'); + $result = Artisan::output(); + echo $result; + $this->line('Now decrypting the database (if necessary)...'); Artisan::call('firefly-iii:decrypt-all'); $result = Artisan::output(); diff --git a/app/Generator/Webhook/StandardMessageGenerator.php b/app/Generator/Webhook/StandardMessageGenerator.php index aeb6ee9660..f48404cfde 100644 --- a/app/Generator/Webhook/StandardMessageGenerator.php +++ b/app/Generator/Webhook/StandardMessageGenerator.php @@ -101,7 +101,7 @@ class StandardMessageGenerator implements MessageGeneratorInterface */ private function getWebhooks(): Collection { - return $this->user->webhooks()->where('active', 1)->where('trigger', $this->trigger)->get(['webhooks.*']); + return $this->user->webhooks()->where('active', true)->where('trigger', $this->trigger)->get(['webhooks.*']); } /** diff --git a/app/Helpers/Collector/GroupCollector.php b/app/Helpers/Collector/GroupCollector.php index 961781e091..2d04f8f34e 100644 --- a/app/Helpers/Collector/GroupCollector.php +++ b/app/Helpers/Collector/GroupCollector.php @@ -497,7 +497,7 @@ class GroupCollector implements GroupCollectorInterface ->where( static function (EloquentBuilder $q1) { $q1->where('attachments.attachable_type', TransactionJournal::class); - $q1->where('attachments.uploaded', 1); + $q1->where('attachments.uploaded', true); $q1->orWhereNull('attachments.attachable_type'); } ); diff --git a/app/Http/Controllers/ProfileController.php b/app/Http/Controllers/ProfileController.php index 5163730398..7d3f9ecbf8 100644 --- a/app/Http/Controllers/ProfileController.php +++ b/app/Http/Controllers/ProfileController.php @@ -354,7 +354,7 @@ class ProfileController extends Controller $user = auth()->user(); $isInternalAuth = $this->internalAuth; $isInternalIdentity = $this->internalIdentity; - $count = DB::table('oauth_clients')->where('personal_access_client', 1)->whereNull('user_id')->count(); + $count = DB::table('oauth_clients')->where('personal_access_client', true)->whereNull('user_id')->count(); $subTitle = $user->email; $userId = $user->id; $enabled2FA = null !== $user->mfa_secret; diff --git a/app/Http/Controllers/Rule/SelectController.php b/app/Http/Controllers/Rule/SelectController.php index e6f1f86893..040860406c 100644 --- a/app/Http/Controllers/Rule/SelectController.php +++ b/app/Http/Controllers/Rule/SelectController.php @@ -158,6 +158,7 @@ class SelectController extends Controller $rule->ruleTriggers = $triggers; // create new rule engine: + /** @var RuleEngineInterface $newRuleEngine */ $newRuleEngine = app(RuleEngineInterface::class); // set rules: diff --git a/app/Http/Controllers/System/InstallController.php b/app/Http/Controllers/System/InstallController.php index f74120e1c0..d041c061f9 100644 --- a/app/Http/Controllers/System/InstallController.php +++ b/app/Http/Controllers/System/InstallController.php @@ -64,6 +64,7 @@ class InstallController extends Controller $this->upgradeCommands = [ // there are 3 initial commands 'migrate' => ['--seed' => true, '--force' => true], + 'firefly-iii:fix-pgsql-sequences' => [], 'firefly-iii:decrypt-all' => [], 'firefly-iii:restore-oauth-keys' => [], 'generate-keys' => [], // an exception :( diff --git a/app/Http/Controllers/Transaction/IndexController.php b/app/Http/Controllers/Transaction/IndexController.php index fcec1abf82..ebb2c94618 100644 --- a/app/Http/Controllers/Transaction/IndexController.php +++ b/app/Http/Controllers/Transaction/IndexController.php @@ -77,6 +77,10 @@ class IndexController extends Controller */ public function index(Request $request, string $objectType, Carbon $start = null, Carbon $end = null) { + if('transfers' === $objectType) { + $objectType = 'transfer'; + } + $subTitleIcon = config('firefly.transactionIconsByType.' . $objectType); $types = config('firefly.transactionTypesByType.' . $objectType); $page = (int)$request->get('page'); diff --git a/app/Repositories/Account/AccountRepository.php b/app/Repositories/Account/AccountRepository.php index fe1a0284fa..a35794052b 100644 --- a/app/Repositories/Account/AccountRepository.php +++ b/app/Repositories/Account/AccountRepository.php @@ -269,7 +269,7 @@ class AccountRepository implements AccountRepositoryInterface if (0 !== count($types)) { $query->accountTypeIn($types); } - $query->where('active', 1); + $query->where('active', true); $query->orderBy('accounts.account_type_id', 'ASC'); $query->orderBy('accounts.order', 'ASC'); $query->orderBy('accounts.name', 'ASC'); @@ -650,7 +650,7 @@ class AccountRepository implements AccountRepositoryInterface public function searchAccount(string $query, array $types, int $limit): Collection { $dbQuery = $this->user->accounts() - ->where('active', 1) + ->where('active', true) ->orderBy('accounts.order', 'ASC') ->orderBy('accounts.account_type_id', 'ASC') ->orderBy('accounts.name', 'ASC') @@ -678,8 +678,8 @@ class AccountRepository implements AccountRepositoryInterface public function searchAccountNr(string $query, array $types, int $limit): Collection { $dbQuery = $this->user->accounts()->distinct() - ->leftJoin('account_meta', 'accounts.id', 'account_meta.account_id') - ->where('accounts.active', 1) + ->leftJoin('account_meta', 'accounts.id', '=', 'account_meta.account_id') + ->where('accounts.active', true) ->orderBy('accounts.order', 'ASC') ->orderBy('accounts.account_type_id', 'ASC') ->orderBy('accounts.name', 'ASC') diff --git a/app/Repositories/Bill/BillRepository.php b/app/Repositories/Bill/BillRepository.php index 1a9897d53a..bae560b7c9 100644 --- a/app/Repositories/Bill/BillRepository.php +++ b/app/Repositories/Bill/BillRepository.php @@ -166,7 +166,7 @@ class BillRepository implements BillRepositoryInterface public function getActiveBills(): Collection { return $this->user->bills() - ->where('active', 1) + ->where('active', true) ->orderBy('bills.name', 'ASC') ->get(['bills.*', DB::raw('((bills.amount_min + bills.amount_max) / 2) AS expectedAmount'),]); } diff --git a/app/Repositories/Budget/BudgetRepository.php b/app/Repositories/Budget/BudgetRepository.php index b296995edd..416e59dff9 100644 --- a/app/Repositories/Budget/BudgetRepository.php +++ b/app/Repositories/Budget/BudgetRepository.php @@ -197,7 +197,7 @@ class BudgetRepository implements BudgetRepositoryInterface */ public function getActiveBudgets(): Collection { - return $this->user->budgets()->where('active', 1) + return $this->user->budgets()->where('active', true) ->orderBy('order', 'ASC') ->orderBy('name', 'ASC') ->get(); @@ -282,7 +282,7 @@ class BudgetRepository implements BudgetRepositoryInterface $search->where('name', 'LIKE', sprintf('%%%s%%', $query)); } $search->orderBy('order', 'ASC') - ->orderBy('name', 'ASC')->where('active', 1); + ->orderBy('name', 'ASC')->where('active', true); return $search->take($limit)->get(); } diff --git a/app/Repositories/Currency/CurrencyRepository.php b/app/Repositories/Currency/CurrencyRepository.php index d96e2aad6c..c2249e6bbe 100644 --- a/app/Repositories/Currency/CurrencyRepository.php +++ b/app/Repositories/Currency/CurrencyRepository.php @@ -448,7 +448,7 @@ class CurrencyRepository implements CurrencyRepositoryInterface */ public function searchCurrency(string $search, int $limit): Collection { - $query = TransactionCurrency::where('enabled', 1); + $query = TransactionCurrency::where('enabled', true); if ('' !== $search) { $query->where('name', 'LIKE', sprintf('%%%s%%', $search)); } diff --git a/app/Repositories/Rule/RuleRepository.php b/app/Repositories/Rule/RuleRepository.php index 68130393cd..dd75f8d930 100644 --- a/app/Repositories/Rule/RuleRepository.php +++ b/app/Repositories/Rule/RuleRepository.php @@ -211,8 +211,8 @@ class RuleRepository implements RuleRepositoryInterface { $collection = $this->user->rules() ->leftJoin('rule_groups', 'rule_groups.id', '=', 'rules.rule_group_id') - ->where('rules.active', 1) - ->where('rule_groups.active', 1) + ->where('rules.active', true) + ->where('rule_groups.active', true) ->orderBy('rule_groups.order', 'ASC') ->orderBy('rules.order', 'ASC') ->orderBy('rules.id', 'ASC') @@ -238,8 +238,8 @@ class RuleRepository implements RuleRepositoryInterface { $collection = $this->user->rules() ->leftJoin('rule_groups', 'rule_groups.id', '=', 'rules.rule_group_id') - ->where('rules.active', 1) - ->where('rule_groups.active', 1) + ->where('rules.active', true) + ->where('rule_groups.active', true) ->orderBy('rule_groups.order', 'ASC') ->orderBy('rules.order', 'ASC') ->orderBy('rules.id', 'ASC') diff --git a/app/Repositories/RuleGroup/RuleGroupRepository.php b/app/Repositories/RuleGroup/RuleGroupRepository.php index f1fad15cef..bdc2c5bb74 100644 --- a/app/Repositories/RuleGroup/RuleGroupRepository.php +++ b/app/Repositories/RuleGroup/RuleGroupRepository.php @@ -150,7 +150,7 @@ class RuleGroupRepository implements RuleGroupRepositoryInterface */ public function getActiveGroups(): Collection { - return $this->user->ruleGroups()->with(['rules'])->where('rule_groups.active', 1)->orderBy('order', 'ASC')->get(['rule_groups.*']); + return $this->user->ruleGroups()->with(['rules'])->where('rule_groups.active', true)->orderBy('order', 'ASC')->get(['rule_groups.*']); } /** @@ -161,7 +161,7 @@ class RuleGroupRepository implements RuleGroupRepositoryInterface public function getActiveRules(RuleGroup $group): Collection { return $group->rules() - ->where('rules.active', 1) + ->where('rules.active', true) ->get(['rules.*']); } @@ -176,7 +176,7 @@ class RuleGroupRepository implements RuleGroupRepositoryInterface ->leftJoin('rule_triggers', 'rules.id', '=', 'rule_triggers.rule_id') ->where('rule_triggers.trigger_type', 'user_action') ->where('rule_triggers.trigger_value', 'store-journal') - ->where('rules.active', 1) + ->where('rules.active', true) ->get(['rules.*']); } @@ -191,7 +191,7 @@ class RuleGroupRepository implements RuleGroupRepositoryInterface ->leftJoin('rule_triggers', 'rules.id', '=', 'rule_triggers.rule_id') ->where('rule_triggers.trigger_type', 'user_action') ->where('rule_triggers.trigger_value', 'update-journal') - ->where('rules.active', 1) + ->where('rules.active', true) ->get(['rules.*']); } @@ -326,7 +326,7 @@ class RuleGroupRepository implements RuleGroupRepositoryInterface */ public function maxOrder(): int { - return (int)$this->user->ruleGroups()->where('active', 1)->max('order'); + return (int)$this->user->ruleGroups()->where('active', true)->max('order'); } /** @@ -337,7 +337,7 @@ class RuleGroupRepository implements RuleGroupRepositoryInterface $this->user->ruleGroups()->where('active', false)->update(['order' => 0]); $set = $this->user ->ruleGroups() - ->where('active', 1) + ->where('active', true) ->whereNull('deleted_at') ->orderBy('order', 'ASC') ->orderBy('title', 'DESC') diff --git a/app/Repositories/TransactionGroup/TransactionGroupRepository.php b/app/Repositories/TransactionGroup/TransactionGroupRepository.php index a0581d398e..71d568e00f 100644 --- a/app/Repositories/TransactionGroup/TransactionGroupRepository.php +++ b/app/Repositories/TransactionGroup/TransactionGroupRepository.php @@ -102,7 +102,7 @@ class TransactionGroupRepository implements TransactionGroupRepositoryInterface $journals = $group->transactionJournals->pluck('id')->toArray(); $set = Attachment::whereIn('attachable_id', $journals) ->where('attachable_type', TransactionJournal::class) - ->where('uploaded', 1) + ->where('uploaded', true) ->whereNull('deleted_at')->get(); $result = []; diff --git a/app/Services/Internal/Support/JournalServiceTrait.php b/app/Services/Internal/Support/JournalServiceTrait.php index bdbdf9ab44..4427665776 100644 --- a/app/Services/Internal/Support/JournalServiceTrait.php +++ b/app/Services/Internal/Support/JournalServiceTrait.php @@ -96,7 +96,7 @@ trait JournalServiceTrait $search = null; // first attempt, find by ID. if (null !== $data['id']) { - $search = $this->accountRepository->findNull($data['id']); + $search = $this->accountRepository->findNull((int) $data['id']); if (null !== $search && in_array($search->accountType->type, $types, true)) { Log::debug( sprintf('Found "account_id" object: #%d, "%s" of type %s', $search->id, $search->name, $search->accountType->type) diff --git a/app/Support/Binder/BudgetList.php b/app/Support/Binder/BudgetList.php index ba4daf89f2..134f17233d 100644 --- a/app/Support/Binder/BudgetList.php +++ b/app/Support/Binder/BudgetList.php @@ -46,7 +46,7 @@ class BudgetList implements BinderInterface if (auth()->check()) { if ('allBudgets' === $value) { - return auth()->user()->budgets()->where('active', 1) + return auth()->user()->budgets()->where('active', true) ->orderBy('order', 'ASC') ->orderBy('name', 'ASC') ->get(); @@ -63,7 +63,7 @@ class BudgetList implements BinderInterface /** @var Collection $collection */ $collection = auth()->user()->budgets() - ->where('active', 1) + ->where('active', true) ->whereIn('id', $list) ->get(); diff --git a/app/Support/Http/Controllers/RuleManagement.php b/app/Support/Http/Controllers/RuleManagement.php index c9e2d6f4fd..09141fa90b 100644 --- a/app/Support/Http/Controllers/RuleManagement.php +++ b/app/Support/Http/Controllers/RuleManagement.php @@ -61,7 +61,7 @@ trait RuleManagement ], [ 'type' => 'from_account_is', - 'value' => (string)trans('firefly.default_rule_trigger_from_account'), + 'value' => (string)trans('firefly.default_rule_trigger_source_account'), 'stop_processing' => false, ], diff --git a/app/TransactionRules/Engine/SearchRuleEngine.php b/app/TransactionRules/Engine/SearchRuleEngine.php index 56a4e6db21..71327d2b6b 100644 --- a/app/TransactionRules/Engine/SearchRuleEngine.php +++ b/app/TransactionRules/Engine/SearchRuleEngine.php @@ -145,6 +145,7 @@ class SearchRuleEngine implements RuleEngineInterface */ public function setRules(Collection $rules): void { + Log::debug(__METHOD__); foreach ($rules as $rule) { if ($rule instanceof Rule) { @@ -227,8 +228,16 @@ class SearchRuleEngine implements RuleEngineInterface { Log::debug(sprintf('Now in findStrictRule(#%d)', $rule->id ?? 0)); $searchArray = []; + + /** @var Collection $triggers */ + $triggers = $rule->ruleTriggers; + /** @var RuleTrigger $ruleTrigger */ - foreach ($rule->ruleTriggers()->where('active', 1)->get() as $ruleTrigger) { + foreach ($triggers as $ruleTrigger) { + if (false === $ruleTrigger->active) { + continue; + } + // if needs no context, value is different: $needsContext = config(sprintf('firefly.search.operators.%s.needs_context', $ruleTrigger->trigger_type)) ?? true; if (false === $needsContext) { @@ -241,6 +250,7 @@ class SearchRuleEngine implements RuleEngineInterface } } + // add local operators: foreach ($this->operators as $operator) { Log::debug(sprintf('SearchRuleEngine:: add local added operator: %s:"%s"', $operator['type'], $operator['value'])); @@ -373,7 +383,7 @@ class SearchRuleEngine implements RuleEngineInterface { Log::debug(sprintf('SearchRuleEngine:: Will now execute actions on transaction journal #%d', $transaction['transaction_journal_id'])); /** @var RuleAction $ruleAction */ - foreach ($rule->ruleActions()->where('active', 1)->get() as $ruleAction) { + foreach ($rule->ruleActions()->where('active', true)->get() as $ruleAction) { $break = $this->processRuleAction($ruleAction, $transaction); if (true === $break) { break; @@ -448,8 +458,15 @@ class SearchRuleEngine implements RuleEngineInterface // start a search query for individual each trigger: $total = new Collection; $count = 0; + + /** @var Collection $triggers */ + $triggers = $rule->ruleTriggers; + /** @var RuleTrigger $ruleTrigger */ - foreach ($rule->ruleTriggers()->where('active', 1)->get() as $ruleTrigger) { + foreach ($triggers as $ruleTrigger) { + if (false === $ruleTrigger->active) { + continue; + } if ('user_action' === $ruleTrigger->trigger_type) { Log::debug('Skip trigger type.'); continue; diff --git a/changelog.md b/changelog.md index 87d8c1ab45..74c253ce23 100644 --- a/changelog.md +++ b/changelog.md @@ -2,6 +2,18 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). + +## 5.5.10 - 2021-05-01 + +### Changed +- [Issue 4708](https://github.com/firefly-iii/firefly-iii/issues/4708) When searching for the external ID, Firefly III will now only return the exact match. + +### Fixed +- [Issue 4545](https://github.com/firefly-iii/firefly-iii/issues/4545) Rare but annoying issue with PostgreSQL increments will be repaired during image boot time. Thanks @jaylenw! +- [Issue 4710](https://github.com/firefly-iii/firefly-iii/issues/4710) Some rule actions could not handle liabilities. +- [Issue 4715](https://github.com/firefly-iii/firefly-iii/issues/4715) Fixed some titles. +- [Issue 4720](https://github.com/firefly-iii/firefly-iii/issues/4720) Could not remove a split in the new layout. + ## 5.5.9 (API 1.5.2) 2021-04-24 This update fixes some of the more annoying issues in the new experimental v2 layout (see also [GitHub](https://github.com/firefly-iii/firefly-iii/issues/4618)), but some minor other issues as well. diff --git a/composer.json b/composer.json index a18d293aca..44dadefe2c 100644 --- a/composer.json +++ b/composer.json @@ -154,6 +154,7 @@ ], "post-update-cmd": [ "@php artisan cache:clear", + "@php artisan firefly-iii:fix-pgsql-sequences", "@php artisan firefly-iii:decrypt-all", "@php artisan firefly-iii:transaction-identifiers", diff --git a/composer.lock b/composer.lock index 1b55d3eb35..d0239efc90 100644 --- a/composer.lock +++ b/composer.lock @@ -1683,16 +1683,16 @@ }, { "name": "laravel/framework", - "version": "v8.38.0", + "version": "v8.40.0", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "26a73532c54d2c090692bf2e3e64e449669053ba" + "reference": "a654897ad7f97aea9d7ef292803939798c4a02a4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/26a73532c54d2c090692bf2e3e64e449669053ba", - "reference": "26a73532c54d2c090692bf2e3e64e449669053ba", + "url": "https://api.github.com/repos/laravel/framework/zipball/a654897ad7f97aea9d7ef292803939798c4a02a4", + "reference": "a654897ad7f97aea9d7ef292803939798c4a02a4", "shasum": "" }, "require": { @@ -1847,7 +1847,7 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2021-04-20T13:50:21+00:00" + "time": "2021-04-28T14:38:56+00:00" }, { "name": "laravel/passport", @@ -1928,16 +1928,16 @@ }, { "name": "laravel/ui", - "version": "v3.2.0", + "version": "v3.2.1", "source": { "type": "git", "url": "https://github.com/laravel/ui.git", - "reference": "a1f82c6283c8373ea1958b8a27c3d5c98cade351" + "reference": "e2478cd0342a92ec1c8c77422553bda8ee004fd0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/ui/zipball/a1f82c6283c8373ea1958b8a27c3d5c98cade351", - "reference": "a1f82c6283c8373ea1958b8a27c3d5c98cade351", + "url": "https://api.github.com/repos/laravel/ui/zipball/e2478cd0342a92ec1c8c77422553bda8ee004fd0", + "reference": "e2478cd0342a92ec1c8c77422553bda8ee004fd0", "shasum": "" }, "require": { @@ -1979,10 +1979,9 @@ "ui" ], "support": { - "issues": "https://github.com/laravel/ui/issues", - "source": "https://github.com/laravel/ui/tree/v3.2.0" + "source": "https://github.com/laravel/ui/tree/v3.2.1" }, - "time": "2021-01-06T19:20:22+00:00" + "time": "2021-04-27T18:17:41+00:00" }, { "name": "laravelcollective/html", @@ -7354,20 +7353,21 @@ }, { "name": "composer/composer", - "version": "2.0.12", + "version": "2.0.13", "source": { "type": "git", "url": "https://github.com/composer/composer.git", - "reference": "6c12ce263da71641903e399c3ce8ecb08fd375fb" + "reference": "986e8b86b7b570632ad0a905c3726c33dd4c0efb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/6c12ce263da71641903e399c3ce8ecb08fd375fb", - "reference": "6c12ce263da71641903e399c3ce8ecb08fd375fb", + "url": "https://api.github.com/repos/composer/composer/zipball/986e8b86b7b570632ad0a905c3726c33dd4c0efb", + "reference": "986e8b86b7b570632ad0a905c3726c33dd4c0efb", "shasum": "" }, "require": { "composer/ca-bundle": "^1.0", + "composer/metadata-minifier": "^1.0", "composer/semver": "^3.0", "composer/spdx-licenses": "^1.2", "composer/xdebug-handler": "^1.1", @@ -7431,7 +7431,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/composer/issues", - "source": "https://github.com/composer/composer/tree/2.0.12" + "source": "https://github.com/composer/composer/tree/2.0.13" }, "funding": [ { @@ -7447,7 +7447,76 @@ "type": "tidelift" } ], - "time": "2021-04-01T08:14:59+00:00" + "time": "2021-04-27T11:11:08+00:00" + }, + { + "name": "composer/metadata-minifier", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/composer/metadata-minifier.git", + "reference": "c549d23829536f0d0e984aaabbf02af91f443207" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/metadata-minifier/zipball/c549d23829536f0d0e984aaabbf02af91f443207", + "reference": "c549d23829536f0d0e984aaabbf02af91f443207", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "composer/composer": "^2", + "phpstan/phpstan": "^0.12.55", + "symfony/phpunit-bridge": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\MetadataMinifier\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Small utility library that handles metadata minification and expansion.", + "keywords": [ + "composer", + "compression" + ], + "support": { + "issues": "https://github.com/composer/metadata-minifier/issues", + "source": "https://github.com/composer/metadata-minifier/tree/1.0.0" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2021-04-07T13:37:33+00:00" }, { "name": "composer/semver", @@ -8329,16 +8398,16 @@ }, { "name": "nunomaduro/larastan", - "version": "v0.7.4", + "version": "v0.7.5", "source": { "type": "git", "url": "https://github.com/nunomaduro/larastan.git", - "reference": "0ceef2a39b45be9d7f7dd96192a1721ba5112278" + "reference": "ba865c6683552608bc2360a459925abeda45a4cc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/larastan/zipball/0ceef2a39b45be9d7f7dd96192a1721ba5112278", - "reference": "0ceef2a39b45be9d7f7dd96192a1721ba5112278", + "url": "https://api.github.com/repos/nunomaduro/larastan/zipball/ba865c6683552608bc2360a459925abeda45a4cc", + "reference": "ba865c6683552608bc2360a459925abeda45a4cc", "shasum": "" }, "require": { @@ -8402,7 +8471,7 @@ ], "support": { "issues": "https://github.com/nunomaduro/larastan/issues", - "source": "https://github.com/nunomaduro/larastan/tree/v0.7.4" + "source": "https://github.com/nunomaduro/larastan/tree/v0.7.5" }, "funding": [ { @@ -8422,7 +8491,7 @@ "type": "patreon" } ], - "time": "2021-04-16T08:25:31+00:00" + "time": "2021-04-29T14:43:35+00:00" }, { "name": "phar-io/manifest", @@ -8762,16 +8831,16 @@ }, { "name": "phpstan/phpstan", - "version": "0.12.84", + "version": "0.12.85", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "9c43f15da8798c8f30a4b099e6a94530a558cfd5" + "reference": "20e6333c0067875ad7697cd8acdf245c6ef69d03" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/9c43f15da8798c8f30a4b099e6a94530a558cfd5", - "reference": "9c43f15da8798c8f30a4b099e6a94530a558cfd5", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/20e6333c0067875ad7697cd8acdf245c6ef69d03", + "reference": "20e6333c0067875ad7697cd8acdf245c6ef69d03", "shasum": "" }, "require": { @@ -8802,7 +8871,7 @@ "description": "PHPStan - PHP Static Analysis Tool", "support": { "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/0.12.84" + "source": "https://github.com/phpstan/phpstan/tree/0.12.85" }, "funding": [ { @@ -8818,7 +8887,7 @@ "type": "tidelift" } ], - "time": "2021-04-19T17:10:54+00:00" + "time": "2021-04-27T14:13:16+00:00" }, { "name": "phpstan/phpstan-deprecation-rules", @@ -9348,12 +9417,12 @@ "source": { "type": "git", "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "3c97c13698c448fdbbda20acb871884a2d8f45b1" + "reference": "2da463d475b13cf8c519d862f1a6423ab7a515e3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/3c97c13698c448fdbbda20acb871884a2d8f45b1", - "reference": "3c97c13698c448fdbbda20acb871884a2d8f45b1", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/2da463d475b13cf8c519d862f1a6423ab7a515e3", + "reference": "2da463d475b13cf8c519d862f1a6423ab7a515e3", "shasum": "" }, "conflict": { @@ -9370,6 +9439,7 @@ "barrelstrength/sprout-base-email": "<1.2.7", "barrelstrength/sprout-forms": "<3.9", "baserproject/basercms": ">=4,<=4.3.6|>=4.4,<4.4.1", + "bk2k/bootstrap-package": ">=7.1,<7.1.2|>=8,<8.0.8|>=9,<9.0.4|>=9.1,<9.1.3|>=10,<10.0.10|>=11,<11.0.3", "bolt/bolt": "<3.7.1", "bolt/core": "<4.1.13", "brightlocal/phpwhois": "<=4.2.5", @@ -9381,7 +9451,7 @@ "centreon/centreon": "<18.10.8|>=19,<19.4.5", "cesnet/simplesamlphp-module-proxystatistics": "<3.1", "codeigniter/framework": "<=3.0.6", - "composer/composer": "<=1-alpha.11", + "composer/composer": "<1.10.22|>=2-alpha.1,<2.0.13", "contao-components/mediaelement": ">=2.14.2,<2.21.1", "contao/core": ">=2,<3.5.39", "contao/core-bundle": ">=4,<4.4.52|>=4.5,<4.9.6|= 4.10.0", @@ -9433,7 +9503,7 @@ "friendsoftypo3/mediace": ">=7.6.2,<7.6.5", "fuel/core": "<1.8.1", "getgrav/grav": "<1.7.11", - "getkirby/cms": ">=3,<3.4.5", + "getkirby/cms": "<3.5.4", "getkirby/panel": "<2.5.14", "gos/web-socket-bundle": "<1.10.4|>=2,<2.6.1|>=3,<3.3", "gree/jose": "<=2.2", @@ -9441,7 +9511,7 @@ "guzzlehttp/guzzle": ">=4-rc.2,<4.2.4|>=5,<5.3.1|>=6,<6.2.1", "illuminate/auth": ">=4,<4.0.99|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.10", "illuminate/cookie": ">=4,<=4.0.11|>=4.1,<=4.1.99999|>=4.2,<=4.2.99999|>=5,<=5.0.99999|>=5.1,<=5.1.99999|>=5.2,<=5.2.99999|>=5.3,<=5.3.99999|>=5.4,<=5.4.99999|>=5.5,<=5.5.49|>=5.6,<=5.6.99999|>=5.7,<=5.7.99999|>=5.8,<=5.8.99999|>=6,<6.18.31|>=7,<7.22.4", - "illuminate/database": "<6.20.14|>=7,<7.30.4|>=8,<8.24", + "illuminate/database": "<6.20.26|>=7,<8.40", "illuminate/encryption": ">=4,<=4.0.11|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.40|>=5.6,<5.6.15", "illuminate/view": ">=7,<7.1.2", "impresscms/impresscms": "<=1.4.2", @@ -9454,7 +9524,7 @@ "kitodo/presentation": "<3.1.2", "kreait/firebase-php": ">=3.2,<3.8.1", "la-haute-societe/tcpdf": "<6.2.22", - "laravel/framework": "<6.20.14|>=7,<7.30.4|>=8,<8.24", + "laravel/framework": "<6.20.26|>=7,<8.40", "laravel/socialite": ">=1,<1.0.99|>=2,<2.0.10", "league/commonmark": "<0.18.3", "librenms/librenms": "<1.53", @@ -9493,7 +9563,7 @@ "paragonie/random_compat": "<2", "passbolt/passbolt_api": "<2.11", "paypal/merchant-sdk-php": "<3.12", - "pear/archive_tar": "<1.4.13", + "pear/archive_tar": "<1.4.12", "personnummer/personnummer": "<3.0.2", "phpfastcache/phpfastcache": ">=5,<5.0.13", "phpmailer/phpmailer": "<6.1.6", @@ -9521,6 +9591,7 @@ "pusher/pusher-php-server": "<2.2.1", "pwweb/laravel-core": "<=0.3.6-beta", "rainlab/debugbar-plugin": "<3.1", + "rmccue/requests": ">=1.6,<1.8", "robrichards/xmlseclibs": "<3.0.4", "sabberworm/php-css-parser": ">=1,<1.0.1|>=2,<2.0.1|>=3,<3.0.1|>=4,<4.0.1|>=5,<5.0.9|>=5.1,<5.1.3|>=5.2,<5.2.1|>=6,<6.0.2|>=7,<7.0.4|>=8,<8.0.1|>=8.1,<8.1.1|>=8.2,<8.2.1|>=8.3,<8.3.1", "sabre/dav": ">=1.6,<1.6.99|>=1.7,<1.7.11|>=1.8,<1.8.9", @@ -9628,6 +9699,7 @@ "yiisoft/yii2-jui": "<2.0.4", "yiisoft/yii2-redis": "<2.0.8", "yourls/yourls": "<1.7.4", + "zendesk/zendesk_api_client_php": "<2.2.11", "zendframework/zend-cache": ">=2.4,<2.4.8|>=2.5,<2.5.3", "zendframework/zend-captcha": ">=2,<2.4.9|>=2.5,<2.5.2", "zendframework/zend-crypt": ">=2,<2.4.9|>=2.5,<2.5.2", @@ -9686,7 +9758,7 @@ "type": "tidelift" } ], - "time": "2021-04-22T17:19:04+00:00" + "time": "2021-04-30T18:08:49+00:00" }, { "name": "sebastian/cli-parser", diff --git a/config/firefly.php b/config/firefly.php index f57d61962f..192d82a80d 100644 --- a/config/firefly.php +++ b/config/firefly.php @@ -100,7 +100,7 @@ return [ 'handle_debts' => true, ], - 'version' => '5.5.9', + 'version' => '5.5.10', 'api_version' => '1.5.2', 'db_version' => 16, 'maxUploadSize' => 1073741824, // 1 GB diff --git a/frontend/src/components/dashboard/MainAccount.vue b/frontend/src/components/dashboard/MainAccount.vue index 786cc84332..72dc7aa9a8 100644 --- a/frontend/src/components/dashboard/MainAccount.vue +++ b/frontend/src/components/dashboard/MainAccount.vue @@ -33,9 +33,6 @@