Compare commits

...

126 Commits

Author SHA1 Message Date
James Cole
4663fb2f12 Merge branch 'release/v6.0.15' 2023-06-21 13:13:10 +02:00
James Cole
e844ab592d Update meta data for release v6.0.15 2023-06-21 13:11:08 +02:00
James Cole
3dcb35710b chore: reformat code. 2023-06-21 12:34:58 +02:00
James Cole
8d87abde64 Fix https://github.com/firefly-iii/firefly-iii/issues/7678 2023-06-21 09:58:37 +02:00
James Cole
2b78485a61 Cleanup edit thing 2023-06-21 07:39:00 +02:00
James Cole
9d057b853f Rule edit form: rule group would always select the top one. 2023-06-21 07:30:08 +02:00
James Cole
bd269eaadf Merge tag 'v6.0.14' into develop
v6.0.14
2023-06-21 07:15:29 +02:00
James Cole
7096c65f50 Merge branch 'release/v6.0.14' 2023-06-21 07:15:28 +02:00
James Cole
1462b0de69 Update meta data for release 6.0.14 2023-06-21 06:40:41 +02:00
James Cole
86a1f170c4 Catch uneven amounts 2023-06-21 06:07:35 +02:00
James Cole
40389fb6d5 fix #7649 2023-06-21 06:06:06 +02:00
James Cole
36021d84cf Fix attachment overview 2023-06-21 06:04:26 +02:00
James Cole
1278f92355 Fix audit log entries and fix #7677 2023-06-21 05:55:57 +02:00
James Cole
573f9adb49 Merge pull request #7676 from timendum/master
Rule ConvertToDeposit: fix missing parameter
2023-06-20 20:03:57 +02:00
Timendum
431c99c27b Rule ConvertToDeposit: fix missing parameter 2023-06-20 15:31:49 +00:00
James Cole
77cc558931 chore: code cleanup 2023-06-20 07:20:26 +02:00
James Cole
42043de34f fix: replace console messages with unified command. 2023-06-20 07:16:56 +02:00
James Cole
f2b2c2109f Merge pull request #7668 from firefly-iii/dependabot/composer/develop/predis/predis-2.2.0 2023-06-19 07:15:54 +02:00
dependabot[bot]
7fe29ad983 Bump predis/predis from 2.1.2 to 2.2.0
Bumps [predis/predis](https://github.com/predis/predis) from 2.1.2 to 2.2.0.
- [Release notes](https://github.com/predis/predis/releases)
- [Changelog](https://github.com/predis/predis/blob/v2.x/CHANGELOG.md)
- [Commits](https://github.com/predis/predis/compare/v2.1.2...v2.2.0)

---
updated-dependencies:
- dependency-name: predis/predis
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-19 05:13:33 +00:00
James Cole
07d9bcfb9d Merge pull request #7671 from firefly-iii/dependabot/composer/develop/phpstan/phpstan-1.10.19 2023-06-19 07:07:51 +02:00
James Cole
fdd235e4cb Merge pull request #7670 from firefly-iii/dependabot/composer/develop/nunomaduro/larastan-2.6.3 2023-06-19 07:07:42 +02:00
James Cole
2646acadb8 Merge pull request #7669 from firefly-iii/dependabot/composer/develop/fakerphp/faker-1.23.0 2023-06-19 07:07:33 +02:00
James Cole
5ef646b810 Merge pull request #7667 from firefly-iii/dependabot/composer/develop/nunomaduro/collision-7.6.0 2023-06-19 07:07:15 +02:00
dependabot[bot]
e8bdb5ef38 Bump phpstan/phpstan from 1.10.18 to 1.10.19
Bumps [phpstan/phpstan](https://github.com/phpstan/phpstan) from 1.10.18 to 1.10.19.
- [Release notes](https://github.com/phpstan/phpstan/releases)
- [Changelog](https://github.com/phpstan/phpstan/blob/1.11.x/CHANGELOG.md)
- [Commits](https://github.com/phpstan/phpstan/compare/1.10.18...1.10.19)

---
updated-dependencies:
- dependency-name: phpstan/phpstan
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-19 03:56:57 +00:00
dependabot[bot]
7a851c2cc6 Bump nunomaduro/larastan from 2.6.2 to 2.6.3
Bumps [nunomaduro/larastan](https://github.com/nunomaduro/larastan) from 2.6.2 to 2.6.3.
- [Release notes](https://github.com/nunomaduro/larastan/releases)
- [Changelog](https://github.com/nunomaduro/larastan/blob/master/RELEASE.md)
- [Commits](https://github.com/nunomaduro/larastan/compare/v2.6.2...v2.6.3)

---
updated-dependencies:
- dependency-name: nunomaduro/larastan
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-19 03:56:49 +00:00
dependabot[bot]
624784e54e Bump fakerphp/faker from 1.22.0 to 1.23.0
Bumps [fakerphp/faker](https://github.com/FakerPHP/Faker) from 1.22.0 to 1.23.0.
- [Release notes](https://github.com/FakerPHP/Faker/releases)
- [Changelog](https://github.com/FakerPHP/Faker/blob/main/CHANGELOG.md)
- [Commits](https://github.com/FakerPHP/Faker/compare/v1.22.0...v1.23.0)

---
updated-dependencies:
- dependency-name: fakerphp/faker
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-19 03:56:38 +00:00
dependabot[bot]
20eb2ebe58 Bump nunomaduro/collision from 7.5.2 to 7.6.0
Bumps [nunomaduro/collision](https://github.com/nunomaduro/collision) from 7.5.2 to 7.6.0.
- [Changelog](https://github.com/nunomaduro/collision/blob/v7.x/CHANGELOG.md)
- [Commits](https://github.com/nunomaduro/collision/compare/v7.5.2...v7.6.0)

---
updated-dependencies:
- dependency-name: nunomaduro/collision
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-19 03:56:28 +00:00
James Cole
25f8acb417 Chore: use of else in accountform 2023-06-18 06:26:50 +02:00
James Cole
f75e6430b1 Fix: nullpointer in billrepository. 2023-06-18 06:26:38 +02:00
James Cole
e72a483c49 Merge pull request #7656 from firefly-iii/fix-7609
Fix #7609
2023-06-14 18:45:14 +02:00
James Cole
68934858ce Fix #7609 2023-06-14 18:44:54 +02:00
James Cole
c08b5177d9 Merge pull request #7647 from firefly-iii/account-validation
Fix account validation
2023-06-12 20:25:08 +02:00
James Cole
fe8635f1ce Fix account validation 2023-06-12 20:24:45 +02:00
James Cole
e96d28b981 Merge pull request #7645 from firefly-iii/fix-7642
Fix #7642
2023-06-12 06:31:25 +02:00
James Cole
784cc3d52d Fix #7642 2023-06-12 06:31:03 +02:00
James Cole
2ab3fb3a71 Merge pull request #7644 from firefly-iii/fix-7630
Fix #7630
2023-06-12 06:24:46 +02:00
James Cole
ff765d4687 Fix #7630 2023-06-12 06:24:30 +02:00
James Cole
f6e778e1d4 Merge branch 'release/v6.0.13' 2023-06-11 18:19:07 +02:00
James Cole
ed36604050 Merge tag 'v6.0.13' into develop
v6.0.13
2023-06-11 18:19:07 +02:00
James Cole
cbf8c6e80d Release v6.0.13 fixes an issue with the authentication controllers. 2023-06-11 18:18:46 +02:00
James Cole
f11db0de61 Merge tag 'v6.0.12' into develop
v6.0.12
2023-06-11 16:34:31 +02:00
James Cole
34f16dcdd5 Merge branch 'release/v6.0.12' 2023-06-11 16:34:30 +02:00
James Cole
f18aae39b8 chore: Meta files for new release 2023-06-11 16:34:06 +02:00
James Cole
924171e7b9 Merge pull request #7640 from firefly-iii/fix-7613
Fix #7613
2023-06-11 16:15:40 +02:00
James Cole
6b580212bf Fix #7613 2023-06-11 16:15:22 +02:00
James Cole
208ae1cae7 Merge pull request #7639 from firefly-iii/fix-7619
Fix #7619
2023-06-11 16:12:41 +02:00
James Cole
3aa7fe47de Fix #7619 2023-06-11 16:12:13 +02:00
James Cole
5318082467 Merge pull request #7638 from firefly-iii/chore2
Fix CSS again
2023-06-11 15:51:42 +02:00
James Cole
941ec095e5 Fix CSS again 2023-06-11 15:51:17 +02:00
James Cole
d5ebd8e57c Merge pull request #7637 from firefly-iii/chore
Chore: Update version and better colors.
2023-06-11 12:21:11 +02:00
James Cole
ebe087984d Chore: Update version and better colors. 2023-06-11 12:20:57 +02:00
James Cole
fa993e02dd Merge pull request #7634 from firefly-iii/fix-missing-var
Fix: missing variable
2023-06-10 21:42:09 +02:00
James Cole
44df77f45a Fix: missing variable 2023-06-10 21:41:45 +02:00
James Cole
0f8f95de9a Merge pull request #7628 from firefly-iii/fix-7618
Fix 7618
2023-06-10 16:21:40 +02:00
James Cole
f32283d2f1 Fix #7618 2023-06-10 16:21:01 +02:00
James Cole
14f8695599 Merge pull request #7627 from firefly-iii/fix-forms
Fix forms
2023-06-10 16:09:00 +02:00
James Cole
f8b48f7455 Fix forms 2023-06-10 16:08:32 +02:00
James Cole
70e2aab073 Merge pull request #7623 from firefly-iii/fix-7620
Fix #7620
2023-06-10 13:15:33 +02:00
James Cole
12db745f17 Fix #7620 2023-06-10 13:15:06 +02:00
James Cole
8a48cc690f Merge pull request #7612 from firefly-iii/logo-tune-2
Another small tune
2023-06-06 12:42:44 +02:00
James Cole
eb313c65a5 Another small tune 2023-06-06 12:42:20 +02:00
James Cole
07d6cbc194 Merge pull request #7611 from firefly-iii/logo-tune
chore: tune the logo
2023-06-06 12:38:50 +02:00
James Cole
8975a462c4 Merge pull request #7610 from firefly-iii/fix-form
fix: expand form elements with ID
2023-06-06 06:19:42 +02:00
James Cole
2e4f07d058 fix: expand form elements with ID 2023-06-06 06:19:24 +02:00
James Cole
74a2935fea Merge pull request #7600 from firefly-iii/upgrade-html
Upgrade html
2023-06-04 15:16:47 +02:00
James Cole
3d02468828 fix: replace deprecated package 2023-06-04 15:16:17 +02:00
James Cole
0438fb5a2e fix: remove and replace old form functions 2023-06-04 10:09:45 +02:00
James Cole
a4f9a6fd42 fix: replace deprecated form.model with html 2023-06-04 10:09:24 +02:00
James Cole
a0be4c9daa chore: tune the logo 2023-06-04 07:53:56 +02:00
James Cole
2dc003bd85 Merge pull request #7597 from firefly-iii/logo-expansion
feat: Expand logo in startup scripts
2023-06-04 06:58:52 +02:00
James Cole
78aa8bd838 feat: Expand logo in startup scripts 2023-06-04 06:58:35 +02:00
James Cole
f55fde2b52 Merge pull request #7596 from firefly-iii/fix-yaml
fix qodana yaml
2023-06-04 06:33:21 +02:00
James Cole
232572549e fix qodana yaml 2023-06-04 06:33:05 +02:00
James Cole
d07705c329 Merge pull request #7595 from firefly-iii/qodana-fix
chore: fix various qodana issues
2023-06-04 06:30:45 +02:00
James Cole
688ca8e374 chore: fix various qodana issues 2023-06-04 06:30:22 +02:00
James Cole
160c364d2a Merge pull request #7594 from firefly-iii/missing-bracket
fix: extra bracket breaks code.
2023-06-04 06:14:38 +02:00
James Cole
2b3e6bfbb9 Merge pull request #7593 from josephbadow/fix-urls-envexample-#7580
Fix URLs in .env.example #7580
2023-06-04 06:13:49 +02:00
James Cole
5a55d1db24 fix: extra bracket breaks code. 2023-06-04 06:13:24 +02:00
josephbadow
bd252dbc16 amend links in .env.example to point to correct documentation pages 2023-06-03 22:16:59 +02:00
James Cole
30124855e3 Merge pull request #7592 from firefly-iii/fix-7589
First attempt to fix #7589
2023-06-03 21:20:15 +02:00
James Cole
463ebd296f First attempt to fix #7589 2023-06-03 21:17:49 +02:00
James Cole
2e7a17560d Merge branch 'main' into develop 2023-06-03 17:19:14 +02:00
James Cole
374d5a074d Merge pull request #7591 from firefly-iii/fix-command-output
chore: fix command output
2023-06-03 17:18:21 +02:00
James Cole
88b294d873 chore: fix command output 2023-06-03 17:18:04 +02:00
James Cole
0aa6d5b322 Merge pull request #7590 from firefly-iii/fix-7588
Fix https://github.com/firefly-iii/firefly-iii/issues/7588
2023-06-03 17:16:51 +02:00
James Cole
1357074dcd Fix https://github.com/firefly-iii/firefly-iii/issues/7588 2023-06-03 17:16:28 +02:00
James Cole
4a03847c14 Merge pull request #7584 from firefly-iii/JC5-patch-1
Create sonarcloud.yml
2023-06-03 05:53:03 +02:00
James Cole
346289fdb2 Create sonarcloud.yml
Signed-off-by: James Cole <james@firefly-iii.org>
2023-06-03 05:52:50 +02:00
James Cole
673c7d98f6 Merge pull request #7583 from firefly-iii/JC5-patch-1
Delete sonarcloud.yaml
2023-06-03 05:52:26 +02:00
James Cole
9473fb849a Delete sonarcloud.yaml
Signed-off-by: James Cole <james@firefly-iii.org>
2023-06-03 05:52:17 +02:00
James Cole
f60e244739 Merge pull request #7579 from firefly-iii/JC5-patch-1
Update contributing.md
2023-06-02 12:30:58 +02:00
James Cole
a571106f0f Update contributing.md
Signed-off-by: James Cole <james@firefly-iii.org>
2023-06-02 12:30:41 +02:00
James Cole
244d9be46e Merge pull request #7578 from firefly-iii/improv-commands
cleanup: Commands are a lot less verbal and report better on success …
2023-06-02 07:36:53 +02:00
James Cole
dcf71c6fdf cleanup: Commands are a lot less verbal and report better on success / failue 2023-06-02 07:36:17 +02:00
James Cole
1e1497ff4e Merge pull request #7577 from firefly-iii/fix-billrepos
clean: remove deprecated methods and refactor as necessary.
2023-06-02 06:38:49 +02:00
James Cole
b72aa92e55 clean: remove deprecated methods and refactor as necessary. 2023-06-02 06:38:07 +02:00
James Cole
527f18c1e3 Merge branch 'main' into develop 2023-06-01 19:50:19 +02:00
James Cole
788003dcdc Merge pull request #7574 from firefly-iii/fix-7572
Fix #7572
2023-06-01 19:50:05 +02:00
James Cole
c764ddd3be Fix #7572 2023-06-01 19:49:28 +02:00
James Cole
057ac0691c Update closed-issues.yml
Signed-off-by: James Cole <james@firefly-iii.org>
2023-06-01 06:43:28 +02:00
James Cole
4334e9bed7 chore: small fixes and prep for new language 2023-05-30 20:15:07 +02:00
James Cole
a9bb87b0c6 Merge pull request #7566 from firefly-iii/chore/fix-small-issues
chore: fix various small sonacloud issues to see if the actions run c…
2023-05-29 14:18:50 +02:00
James Cole
43f668dc65 config: no more sonarcloud / qodana for each PR. 2023-05-29 14:18:43 +02:00
James Cole
6ed5892cf9 chore: fix various small sonacloud issues to see if the actions run correctly. 2023-05-29 14:17:10 +02:00
James Cole
023a3fdade Merge pull request #7565 from firefly-iii/chore/cleanup
chore: code cleanup.
2023-05-29 14:01:32 +02:00
James Cole
1b52147a05 chore: code cleanup. 2023-05-29 13:56:55 +02:00
James Cole
7f7644c92f Merge pull request #7564 from firefly-iii/fix-ci
Fix ci
2023-05-29 12:06:09 +02:00
James Cole
70b756baaf Fix linter 2023-05-29 12:05:45 +02:00
James Cole
0f008b9b1e Merge branch 'main' into develop 2023-05-29 11:58:39 +02:00
James Cole
4d956858de Merge pull request #7563 from firefly-iii/dependabot/npm_and_yarn/develop/postcss-8.4.24 2023-05-29 06:01:06 +02:00
James Cole
959370a204 Merge pull request #7562 from firefly-iii/dependabot/composer/develop/symfony/http-client-6.2.11 2023-05-29 06:00:58 +02:00
dependabot[bot]
336829cd24 Bump postcss from 8.4.23 to 8.4.24
Bumps [postcss](https://github.com/postcss/postcss) from 8.4.23 to 8.4.24.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.4.23...8.4.24)

---
updated-dependencies:
- dependency-name: postcss
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-29 03:57:03 +00:00
dependabot[bot]
5975ab5170 Bump symfony/http-client from 6.2.10 to 6.2.11
Bumps [symfony/http-client](https://github.com/symfony/http-client) from 6.2.10 to 6.2.11.
- [Release notes](https://github.com/symfony/http-client/releases)
- [Changelog](https://github.com/symfony/http-client/blob/6.3/CHANGELOG.md)
- [Commits](https://github.com/symfony/http-client/compare/v6.2.10...v6.2.11)

---
updated-dependencies:
- dependency-name: symfony/http-client
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-29 03:56:29 +00:00
James Cole
eba0e942e8 Update sonarcloud.yaml
Signed-off-by: James Cole <james@firefly-iii.org>
2023-05-28 16:08:47 +02:00
James Cole
f45c20db1e Update cleanup.yml
Signed-off-by: James Cole <james@firefly-iii.org>
2023-05-28 16:08:34 +02:00
James Cole
79afe09d8d Update cleanup.yml
Signed-off-by: James Cole <james@firefly-iii.org>
2023-05-28 16:07:47 +02:00
James Cole
334d010a24 Create sonarcloud.yaml
Signed-off-by: James Cole <james@firefly-iii.org>
2023-05-28 16:07:08 +02:00
James Cole
91947daa5b Create sonar-project.properties
Signed-off-by: James Cole <james@firefly-iii.org>
2023-05-28 16:05:25 +02:00
James Cole
aad2ca4488 Update qodana.yml
Signed-off-by: James Cole <james@firefly-iii.org>
2023-05-28 15:58:48 +02:00
James Cole
7c68a96f7b Update qodana.yml
Signed-off-by: James Cole <james@firefly-iii.org>
2023-05-28 15:56:35 +02:00
James Cole
2e1e8b5d39 Update qodana.yml
Signed-off-by: James Cole <james@firefly-iii.org>
2023-05-28 15:54:48 +02:00
James Cole
178df1ed4a Update qodana.yml
Signed-off-by: James Cole <james@firefly-iii.org>
2023-05-28 06:24:06 +02:00
James Cole
28749e2513 Update qodana.yml
Signed-off-by: James Cole <james@firefly-iii.org>
2023-05-28 06:21:03 +02:00
James Cole
6cbe57ef40 Update qodana.yml
Signed-off-by: James Cole <james@firefly-iii.org>
2023-05-28 06:17:34 +02:00
James Cole
13d3b86309 Fix #7557 2023-05-28 06:07:26 +02:00
James Cole
cf8f43cdf2 Merge tag 'v6.0.11' into develop
v6.0.11
2023-05-27 07:12:28 +02:00
1061 changed files with 23287 additions and 16922 deletions

View File

@@ -51,8 +51,8 @@ services:
# Looks for unused imports from other namespaces.
Nette\CodingStandard\Sniffs\Namespaces\UnusedUsesSniff:
searchAnnotations: yes
ignoredAnnotationNames: ['@testCase']
ignoredAnnotations: ['@internal']
ignoredAnnotationNames: [ '@testCase' ]
ignoredAnnotations: [ '@internal' ]
# Language Construct (should be placed before some other fixers)
@@ -134,7 +134,7 @@ services:
# There MUST NOT be more than one property declared per statement.
PhpCsFixer\Fixer\ClassNotation\SingleClassElementPerStatementFixer:
elements: ['property']
elements: [ 'property' ]
# Methods - https://nette.org/en/coding-standard#toc-methods
@@ -224,7 +224,7 @@ services:
PhpCsFixer\Fixer\Phpdoc\PhpdocTrimFixer: ~
# Single-line comments comments with only one line of actual content should use the `//` syntax.
PhpCsFixer\Fixer\Comment\SingleLineCommentStyleFixer:
comment_types: ['hash']
comment_types: [ 'hash' ]
# Require comments with single-line content to be written as one-liners
SlevomatCodingStandard\Sniffs\Commenting\RequireOneLinePropertyDocCommentSniff: ~
@@ -243,7 +243,7 @@ services:
PhpCsFixer\Fixer\Operator\TernaryToNullCoalescingFixer: ~
Nette\CodingStandard\Fixer\ClassNotation\ClassAndTraitVisibilityRequiredFixer:
elements: ['const', 'property', 'method']
elements: [ 'const', 'property', 'method' ]
# short list() syntax []
PhpCsFixer\Fixer\ListNotation\ListSyntaxFixer:

View File

@@ -22,12 +22,12 @@
$current = __DIR__;
$paths = [
$current.'/../../app',
$current.'/../../config',
$current.'/../../database',
$current.'/../../routes',
$current.'/../../tests',
$current.'/../../resources/lang',
$current . '/../../app',
$current . '/../../config',
$current . '/../../database',
$current . '/../../routes',
$current . '/../../tests',
$current . '/../../resources/lang',
];
$finder = PhpCsFixer\Finder::create()
@@ -40,5 +40,5 @@ return $config->setRules([
'declare_strict_types' => true,
'strict_param' => true,
'array_syntax' => ['syntax' => 'short'],
])
])
->setFinder($finder);

View File

@@ -379,16 +379,16 @@
},
{
"name": "friendsofphp/php-cs-fixer",
"version": "v3.17.0",
"version": "v3.18.0",
"source": {
"type": "git",
"url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git",
"reference": "3f0ed862f22386c55a767461ef5083bddceeed79"
"reference": "b123395c9fa3a70801f816f13606c0f3a7ada8df"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/3f0ed862f22386c55a767461ef5083bddceeed79",
"reference": "3f0ed862f22386c55a767461ef5083bddceeed79",
"url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/b123395c9fa3a70801f816f13606c0f3a7ada8df",
"reference": "b123395c9fa3a70801f816f13606c0f3a7ada8df",
"shasum": ""
},
"require": {
@@ -463,7 +463,7 @@
],
"support": {
"issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues",
"source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.17.0"
"source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.18.0"
},
"funding": [
{
@@ -471,7 +471,7 @@
"type": "github"
}
],
"time": "2023-05-22T19:59:32+00:00"
"time": "2023-06-18T22:25:45+00:00"
},
{
"name": "psr/cache",
@@ -744,23 +744,23 @@
},
{
"name": "symfony/console",
"version": "v6.2.10",
"version": "v6.3.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
"reference": "12288d9f4500f84a4d02254d4aa968b15488476f"
"reference": "8788808b07cf0bdd6e4b7fdd23d8ddb1470c83b7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/console/zipball/12288d9f4500f84a4d02254d4aa968b15488476f",
"reference": "12288d9f4500f84a4d02254d4aa968b15488476f",
"url": "https://api.github.com/repos/symfony/console/zipball/8788808b07cf0bdd6e4b7fdd23d8ddb1470c83b7",
"reference": "8788808b07cf0bdd6e4b7fdd23d8ddb1470c83b7",
"shasum": ""
},
"require": {
"php": ">=8.1",
"symfony/deprecation-contracts": "^2.1|^3",
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/polyfill-mbstring": "~1.0",
"symfony/service-contracts": "^1.1|^2|^3",
"symfony/service-contracts": "^2.5|^3",
"symfony/string": "^5.4|^6.0"
},
"conflict": {
@@ -782,12 +782,6 @@
"symfony/process": "^5.4|^6.0",
"symfony/var-dumper": "^5.4|^6.0"
},
"suggest": {
"psr/log": "For using the console logger",
"symfony/event-dispatcher": "",
"symfony/lock": "",
"symfony/process": ""
},
"type": "library",
"autoload": {
"psr-4": {
@@ -820,7 +814,7 @@
"terminal"
],
"support": {
"source": "https://github.com/symfony/console/tree/v6.2.10"
"source": "https://github.com/symfony/console/tree/v6.3.0"
},
"funding": [
{
@@ -836,20 +830,20 @@
"type": "tidelift"
}
],
"time": "2023-04-28T13:37:43+00:00"
"time": "2023-05-29T12:49:39+00:00"
},
{
"name": "symfony/deprecation-contracts",
"version": "v3.2.1",
"version": "v3.3.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/deprecation-contracts.git",
"reference": "e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e"
"reference": "7c3aff79d10325257a001fcf92d991f24fc967cf"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e",
"reference": "e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e",
"url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf",
"reference": "7c3aff79d10325257a001fcf92d991f24fc967cf",
"shasum": ""
},
"require": {
@@ -858,7 +852,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "3.3-dev"
"dev-main": "3.4-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -887,7 +881,7 @@
"description": "A generic function and convention to trigger deprecation notices",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/deprecation-contracts/tree/v3.2.1"
"source": "https://github.com/symfony/deprecation-contracts/tree/v3.3.0"
},
"funding": [
{
@@ -903,28 +897,29 @@
"type": "tidelift"
}
],
"time": "2023-03-01T10:25:55+00:00"
"time": "2023-05-23T14:45:45+00:00"
},
{
"name": "symfony/event-dispatcher",
"version": "v6.2.8",
"version": "v6.3.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
"reference": "04046f35fd7d72f9646e721fc2ecb8f9c67d3339"
"reference": "3af8ac1a3f98f6dbc55e10ae59c9e44bfc38dfaa"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/04046f35fd7d72f9646e721fc2ecb8f9c67d3339",
"reference": "04046f35fd7d72f9646e721fc2ecb8f9c67d3339",
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/3af8ac1a3f98f6dbc55e10ae59c9e44bfc38dfaa",
"reference": "3af8ac1a3f98f6dbc55e10ae59c9e44bfc38dfaa",
"shasum": ""
},
"require": {
"php": ">=8.1",
"symfony/event-dispatcher-contracts": "^2|^3"
"symfony/event-dispatcher-contracts": "^2.5|^3"
},
"conflict": {
"symfony/dependency-injection": "<5.4"
"symfony/dependency-injection": "<5.4",
"symfony/service-contracts": "<2.5"
},
"provide": {
"psr/event-dispatcher-implementation": "1.0",
@@ -937,13 +932,9 @@
"symfony/error-handler": "^5.4|^6.0",
"symfony/expression-language": "^5.4|^6.0",
"symfony/http-foundation": "^5.4|^6.0",
"symfony/service-contracts": "^1.1|^2|^3",
"symfony/service-contracts": "^2.5|^3",
"symfony/stopwatch": "^5.4|^6.0"
},
"suggest": {
"symfony/dependency-injection": "",
"symfony/http-kernel": ""
},
"type": "library",
"autoload": {
"psr-4": {
@@ -970,7 +961,7 @@
"description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/event-dispatcher/tree/v6.2.8"
"source": "https://github.com/symfony/event-dispatcher/tree/v6.3.0"
},
"funding": [
{
@@ -986,33 +977,30 @@
"type": "tidelift"
}
],
"time": "2023-03-20T16:06:02+00:00"
"time": "2023-04-21T14:41:17+00:00"
},
{
"name": "symfony/event-dispatcher-contracts",
"version": "v3.2.1",
"version": "v3.3.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher-contracts.git",
"reference": "0ad3b6f1e4e2da5690fefe075cd53a238646d8dd"
"reference": "a76aed96a42d2b521153fb382d418e30d18b59df"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/0ad3b6f1e4e2da5690fefe075cd53a238646d8dd",
"reference": "0ad3b6f1e4e2da5690fefe075cd53a238646d8dd",
"url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/a76aed96a42d2b521153fb382d418e30d18b59df",
"reference": "a76aed96a42d2b521153fb382d418e30d18b59df",
"shasum": ""
},
"require": {
"php": ">=8.1",
"psr/event-dispatcher": "^1"
},
"suggest": {
"symfony/event-dispatcher-implementation": ""
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "3.3-dev"
"dev-main": "3.4-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -1049,7 +1037,7 @@
"standards"
],
"support": {
"source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.2.1"
"source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.3.0"
},
"funding": [
{
@@ -1065,20 +1053,20 @@
"type": "tidelift"
}
],
"time": "2023-03-01T10:32:47+00:00"
"time": "2023-05-23T14:45:45+00:00"
},
{
"name": "symfony/filesystem",
"version": "v6.2.10",
"version": "v6.3.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
"reference": "fd588debf7d1bc16a2c84b4b3b71145d9946b894"
"reference": "97b698e1d77d356304def77a8d0cd73090b359ea"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/filesystem/zipball/fd588debf7d1bc16a2c84b4b3b71145d9946b894",
"reference": "fd588debf7d1bc16a2c84b4b3b71145d9946b894",
"url": "https://api.github.com/repos/symfony/filesystem/zipball/97b698e1d77d356304def77a8d0cd73090b359ea",
"reference": "97b698e1d77d356304def77a8d0cd73090b359ea",
"shasum": ""
},
"require": {
@@ -1112,7 +1100,7 @@
"description": "Provides basic utilities for the filesystem",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/filesystem/tree/v6.2.10"
"source": "https://github.com/symfony/filesystem/tree/v6.3.0"
},
"funding": [
{
@@ -1128,20 +1116,20 @@
"type": "tidelift"
}
],
"time": "2023-04-18T13:46:08+00:00"
"time": "2023-05-30T17:12:32+00:00"
},
{
"name": "symfony/finder",
"version": "v6.2.7",
"version": "v6.3.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
"reference": "20808dc6631aecafbe67c186af5dcb370be3a0eb"
"reference": "d9b01ba073c44cef617c7907ce2419f8d00d75e2"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/finder/zipball/20808dc6631aecafbe67c186af5dcb370be3a0eb",
"reference": "20808dc6631aecafbe67c186af5dcb370be3a0eb",
"url": "https://api.github.com/repos/symfony/finder/zipball/d9b01ba073c44cef617c7907ce2419f8d00d75e2",
"reference": "d9b01ba073c44cef617c7907ce2419f8d00d75e2",
"shasum": ""
},
"require": {
@@ -1176,7 +1164,7 @@
"description": "Finds files and directories via an intuitive fluent interface",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/finder/tree/v6.2.7"
"source": "https://github.com/symfony/finder/tree/v6.3.0"
},
"funding": [
{
@@ -1192,25 +1180,25 @@
"type": "tidelift"
}
],
"time": "2023-02-16T09:57:23+00:00"
"time": "2023-04-02T01:25:41+00:00"
},
{
"name": "symfony/options-resolver",
"version": "v6.2.7",
"version": "v6.3.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/options-resolver.git",
"reference": "aa0e85b53bbb2b4951960efd61d295907eacd629"
"reference": "a10f19f5198d589d5c33333cffe98dc9820332dd"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/options-resolver/zipball/aa0e85b53bbb2b4951960efd61d295907eacd629",
"reference": "aa0e85b53bbb2b4951960efd61d295907eacd629",
"url": "https://api.github.com/repos/symfony/options-resolver/zipball/a10f19f5198d589d5c33333cffe98dc9820332dd",
"reference": "a10f19f5198d589d5c33333cffe98dc9820332dd",
"shasum": ""
},
"require": {
"php": ">=8.1",
"symfony/deprecation-contracts": "^2.1|^3"
"symfony/deprecation-contracts": "^2.5|^3"
},
"type": "library",
"autoload": {
@@ -1243,7 +1231,7 @@
"options"
],
"support": {
"source": "https://github.com/symfony/options-resolver/tree/v6.2.7"
"source": "https://github.com/symfony/options-resolver/tree/v6.3.0"
},
"funding": [
{
@@ -1259,7 +1247,7 @@
"type": "tidelift"
}
],
"time": "2023-02-14T08:44:56+00:00"
"time": "2023-05-12T14:21:09+00:00"
},
{
"name": "symfony/polyfill-ctype",
@@ -1755,16 +1743,16 @@
},
{
"name": "symfony/process",
"version": "v6.2.10",
"version": "v6.3.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
"reference": "b34cdbc9c5e75d45a3703e63a48ad07aafa8bf2e"
"reference": "8741e3ed7fe2e91ec099e02446fb86667a0f1628"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/process/zipball/b34cdbc9c5e75d45a3703e63a48ad07aafa8bf2e",
"reference": "b34cdbc9c5e75d45a3703e63a48ad07aafa8bf2e",
"url": "https://api.github.com/repos/symfony/process/zipball/8741e3ed7fe2e91ec099e02446fb86667a0f1628",
"reference": "8741e3ed7fe2e91ec099e02446fb86667a0f1628",
"shasum": ""
},
"require": {
@@ -1796,7 +1784,7 @@
"description": "Executes commands in sub-processes",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/process/tree/v6.2.10"
"source": "https://github.com/symfony/process/tree/v6.3.0"
},
"funding": [
{
@@ -1812,20 +1800,20 @@
"type": "tidelift"
}
],
"time": "2023-04-18T13:56:57+00:00"
"time": "2023-05-19T08:06:44+00:00"
},
{
"name": "symfony/service-contracts",
"version": "v3.2.1",
"version": "v3.3.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/service-contracts.git",
"reference": "a8c9cedf55f314f3a186041d19537303766df09a"
"reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/service-contracts/zipball/a8c9cedf55f314f3a186041d19537303766df09a",
"reference": "a8c9cedf55f314f3a186041d19537303766df09a",
"url": "https://api.github.com/repos/symfony/service-contracts/zipball/40da9cc13ec349d9e4966ce18b5fbcd724ab10a4",
"reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4",
"shasum": ""
},
"require": {
@@ -1835,13 +1823,10 @@
"conflict": {
"ext-psr": "<1.1|>=2"
},
"suggest": {
"symfony/service-implementation": ""
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "3.3-dev"
"dev-main": "3.4-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -1881,7 +1866,7 @@
"standards"
],
"support": {
"source": "https://github.com/symfony/service-contracts/tree/v3.2.1"
"source": "https://github.com/symfony/service-contracts/tree/v3.3.0"
},
"funding": [
{
@@ -1897,25 +1882,25 @@
"type": "tidelift"
}
],
"time": "2023-03-01T10:32:47+00:00"
"time": "2023-05-23T14:45:45+00:00"
},
{
"name": "symfony/stopwatch",
"version": "v6.2.7",
"version": "v6.3.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/stopwatch.git",
"reference": "f3adc98c1061875dd2edcd45e5b04e63d0e29f8f"
"reference": "fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/stopwatch/zipball/f3adc98c1061875dd2edcd45e5b04e63d0e29f8f",
"reference": "f3adc98c1061875dd2edcd45e5b04e63d0e29f8f",
"url": "https://api.github.com/repos/symfony/stopwatch/zipball/fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2",
"reference": "fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2",
"shasum": ""
},
"require": {
"php": ">=8.1",
"symfony/service-contracts": "^1|^2|^3"
"symfony/service-contracts": "^2.5|^3"
},
"type": "library",
"autoload": {
@@ -1943,7 +1928,7 @@
"description": "Provides a way to profile code",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/stopwatch/tree/v6.2.7"
"source": "https://github.com/symfony/stopwatch/tree/v6.3.0"
},
"funding": [
{
@@ -1959,20 +1944,20 @@
"type": "tidelift"
}
],
"time": "2023-02-14T08:44:56+00:00"
"time": "2023-02-16T10:14:28+00:00"
},
{
"name": "symfony/string",
"version": "v6.2.8",
"version": "v6.3.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
"reference": "193e83bbd6617d6b2151c37fff10fa7168ebddef"
"reference": "f2e190ee75ff0f5eced645ec0be5c66fac81f51f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/string/zipball/193e83bbd6617d6b2151c37fff10fa7168ebddef",
"reference": "193e83bbd6617d6b2151c37fff10fa7168ebddef",
"url": "https://api.github.com/repos/symfony/string/zipball/f2e190ee75ff0f5eced645ec0be5c66fac81f51f",
"reference": "f2e190ee75ff0f5eced645ec0be5c66fac81f51f",
"shasum": ""
},
"require": {
@@ -1983,13 +1968,13 @@
"symfony/polyfill-mbstring": "~1.0"
},
"conflict": {
"symfony/translation-contracts": "<2.0"
"symfony/translation-contracts": "<2.5"
},
"require-dev": {
"symfony/error-handler": "^5.4|^6.0",
"symfony/http-client": "^5.4|^6.0",
"symfony/intl": "^6.2",
"symfony/translation-contracts": "^2.0|^3.0",
"symfony/translation-contracts": "^2.5|^3.0",
"symfony/var-exporter": "^5.4|^6.0"
},
"type": "library",
@@ -2029,7 +2014,7 @@
"utf8"
],
"support": {
"source": "https://github.com/symfony/string/tree/v6.2.8"
"source": "https://github.com/symfony/string/tree/v6.3.0"
},
"funding": [
{
@@ -2045,7 +2030,7 @@
"type": "tidelift"
}
],
"time": "2023-03-20T16:06:02+00:00"
"time": "2023-03-21T21:06:29+00:00"
}
],
"packages-dev": [],

View File

@@ -30,7 +30,7 @@ SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
# clean up php code
cd $SCRIPT_DIR/php-cs-fixer
composer update
composer update --quiet
rm -f .php-cs-fixer.cache
PHP_CS_FIXER_IGNORE_ENV=true ./vendor/bin/php-cs-fixer fix --config $SCRIPT_DIR/php-cs-fixer/.php-cs-fixer.php --allow-risky=yes
cd $SCRIPT_DIR/..

37
.ci/phpmd.sh Normal file
View File

@@ -0,0 +1,37 @@
#!/usr/bin/env bash
#
# phpmd.sh
# Copyright (c) 2023 james@firefly-iii.org
#
# This file is part of Firefly III (https://github.com/firefly-iii).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
cd $SCRIPT_DIR/phpmd
composer update --quiet
./vendor/bin/phpmd \
$SCRIPT_DIR/../app text phpmd.xml \
--exclude $SCRIPT_DIR/../app/resources/** \
--exclude $SCRIPT_DIR/../app/frontend/** \
--exclude $SCRIPT_DIR/../app/public/** \
--exclude $SCRIPT_DIR/../app/vendor/** \
cd $SCRIPT_DIR/..
exit 0

1
.ci/phpmd/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
vendor

5
.ci/phpmd/composer.json Normal file
View File

@@ -0,0 +1,5 @@
{
"require-dev": {
"phpmd/phpmd": "^2.13"
}
}

1012
.ci/phpmd/composer.lock generated Normal file

File diff suppressed because it is too large Load Diff

52
.ci/phpmd/phpmd.xml Normal file
View File

@@ -0,0 +1,52 @@
<?xml version="1.0" encoding="UTF-8"?>
<ruleset name="pcsg-generated-ruleset"
xmlns="http://pmd.sf.net/ruleset/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd"
xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd">
<description>Bla bla</description>
<!--
Commando vanuit firefly directory:
phpmd database,app,tests html /gdrive-all/development/phpmd/phpmd.xml > public/report.html
-->
<!-- Import the entire controversial code rule set -->
<rule ref="rulesets/controversial.xml">
<exclude name="CamelCasePropertyName" />
</rule>
<!-- clean code -->
<rule ref="rulesets/codesize.xml" />
<rule ref="rulesets/design.xml" />
<rule ref="rulesets/naming.xml" />
<rule ref="rulesets/unusedcode.xml" />
<rule ref="rulesets/codesize.xml/CyclomaticComplexity">
<properties>
<property name="reportLevel" value="5"/>
</properties>
</rule>
<rule ref="rulesets/codesize.xml/NPathComplexity">
<properties>
<property name="minimum" value="128"/>
</properties>
</rule>
<rule ref="rulesets/codesize.xml/ExcessiveMethodLength">
<properties>
<property name="minimum" value="40"/>
</properties>
</rule>
<rule ref="rulesets/codesize.xml/ExcessiveParameterList">
<properties>
<property name="minimum" value="5"/>
</properties>
</rule>
<!-- include clean code manually -->
<rule ref="rulesets/cleancode.xml/BooleanArgumentFlag" />
<rule ref="rulesets/cleancode.xml/ElseExpression" />
<!-- no this one -->
<!--<rule ref="rulesets/cleancode.xml/StaticAccess" />-->
</ruleset>

View File

@@ -59,3 +59,5 @@ fi
# restore .env file
mv $SCRIPT_DIR/../.env.backup $SCRIPT_DIR/../.env
cd $SCRIPT_DIR/..

View File

@@ -16,6 +16,7 @@ ja_JP
ko_KR
nb_NO
nl_NL
nn_NO
pl_PL
pt_BR
pt_PT

View File

@@ -62,7 +62,7 @@ APP_LOG_LEVEL=notice
AUDIT_LOG_LEVEL=info
# Database credentials. Make sure the database exists. I recommend a dedicated user for Firefly III
# For other database types, please see the FAQ: https://docs.firefly-iii.org/support/faq
# For other database types, please see the FAQ: https://docs.firefly-iii.org/firefly-iii/faq/self-hosted/#i-want-to-use-sqlite
# If you use Docker or similar, you can set these variables from a file by appending them with _FILE
# Use "pgsql" for PostgreSQL
# Use "mysql" for MySQL and MariaDB.
@@ -134,7 +134,7 @@ COOKIE_SECURE=false
COOKIE_SAMESITE=lax
# If you want Firefly III to email you, update these settings
# For instructions, see: https://docs.firefly-iii.org/advanced-installation/email
# For instructions, see: https://docs.firefly-iii.org/firefly-iii/advanced-installation/email/#email
# If you use Docker or similar, you can set these variables from a file by appending them with _FILE
MAIL_MAILER=log
MAIL_HOST=null
@@ -143,6 +143,7 @@ MAIL_FROM=changeme@example.com
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_SENDMAIL_COMMAND=
# Other mail drivers:
# If you use Docker or similar, you can set these variables from a file by appending them with _FILE
@@ -163,9 +164,8 @@ SEND_ERROR_MESSAGE=true
# These messages contain (sensitive) transaction information:
SEND_REPORT_JOURNALS=true
# Set this value to true if you want to set the location
# of certain things, like transactions. Since this involves an external service, it's optional
# and disabled by default.
# Set this value to true if you want to set the location of certain things, like transactions.
# Since this involves an external service, it's optional and disabled by default.
ENABLE_EXTERNAL_MAP=false
# Set this value to true if you want Firefly III to download currency exchange rates
@@ -188,7 +188,7 @@ MAP_DEFAULT_ZOOM=6
# - 'web' (default, uses built in DB)
# - 'remote_user_guard' for Authelia etc
# Read more about these settings in the documentation.
# https://docs.firefly-iii.org/advanced-installation/authentication
# https://docs.firefly-iii.org/firefly-iii/advanced-installation/authentication
#
# LDAP is no longer supported :(
#

View File

@@ -2,7 +2,10 @@
## Our Pledge
In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making
participation in our project and our community a harassment-free experience for everyone, regardless of age, body size,
disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race,
religion, or sexual identity and orientation.
## Our Standards
@@ -24,23 +27,35 @@ Examples of unacceptable behavior by participants include:
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take
appropriate and fair corrective action in response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits,
issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any
contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
## Scope
This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the
project or its community. Examples of representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed representative at an online or offline
event. Representation of a project may be further defined and clarified by project maintainers.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at james@firefly-iii.org. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at
james@firefly-iii.org. The project team will review and investigate all complaints, and will respond in a way that it
deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the
reporter of an incident. Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent
repercussions as determined by other members of the project's leadership.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available
at [http://contributor-covenant.org/version/1/4][version]
[homepage]: http://contributor-covenant.org
[version]: http://contributor-covenant.org/version/1/4/

View File

@@ -1,3 +1,3 @@
# [Contributing guidelines](https://docs.firefly-iii.org/other-pages/contributing)
# [Contributing guidelines](https://docs.firefly-iii.org/firefly-iii/support/#contributing-code)
[Contributing guidelines](https://docs.firefly-iii.org/other-pages/contributing)
[Contributing guidelines](https://docs.firefly-iii.org/firefly-iii/support/#contributing-code)

View File

@@ -5,7 +5,7 @@ updates:
- package-ecosystem: "composer"
directory: "/" # Location of package manifests
target-branch: develop
labels: ["bug"]
labels: [ "bug" ]
versioning-strategy: increase
schedule:
interval: "weekly"
@@ -14,7 +14,7 @@ updates:
- package-ecosystem: "npm"
directory: "/"
target-branch: develop
labels: ["bug"]
labels: [ "bug" ]
versioning-strategy: increase
schedule:
interval: "weekly"
@@ -22,7 +22,7 @@ updates:
- package-ecosystem: "github-actions"
directory: "/"
target-branch: develop
labels: ["bug"]
labels: [ "bug" ]
versioning-strategy: increase
schedule:
interval: "weekly"

View File

@@ -2,9 +2,11 @@
Sometimes bugs reported to Firefly III are configuration and system problems on the user's side.
If you run into any of the following problems, there's a good chance it's not a Firefly III issue, but a configuration issue.
If you run into any of the following problems, there's a good chance it's not a Firefly III issue, but a configuration
issue.
- ⚠️ Firefly III can't connect to the database when starting or the password is wrong, even though you're sure it's correct.
- ⚠️ Firefly III can't connect to the database when starting or the password is wrong, even though you're sure it's
correct.
- ⚠️ Errors about a missing `APP_KEY` or other encryption/hash problems
- ⚠️ You can't login due to `419` errors (page expired)
- ⚠️ Any `500` error when starting Firefly III
@@ -13,4 +15,6 @@ If you run into any of the following problems, there's a good chance it's not a
- ⚠️ Firefly III does not work behind your reverse proxy
- ⚠️ You can't connect to the Data Importer due to 404's or authentication issues.
If you run into an issue like this, please start a [discussion](https://github.com/firefly-iii/firefly-iii/discussions) or chat on [Gitter.im](https://gitter.im/firefly-iii/firefly-iii). There's a good chance it's not a bug but something we can fix rather quickly :+1:
If you run into an issue like this, please start a [discussion](https://github.com/firefly-iii/firefly-iii/discussions)
or chat on [Gitter.im](https://gitter.im/firefly-iii/firefly-iii). There's a good chance it's not a bug but something we
can fix rather quickly :+1:

6
.github/support.md vendored
View File

@@ -9,7 +9,8 @@ First of all: thank you for reporting a bug instead of ditching the tool altoget
1. Open bugs will have open issues, so search for one first.
2. If your feature request is already there, vote on it with :+1: or :-1: reactions.
3. Do NOT hijack old issues with the bug you found, open your own issue.
4. If relevant, take the time and see if the [demo site](https://demo.firefly-iii.org/) is also suffering from your issue.
4. If relevant, take the time and see if the [demo site](https://demo.firefly-iii.org/) is also suffering from your
issue.
5. If relevant, read the [documentation](https://docs.firefly-iii.org/).
Please follow these guidelines when opening new issues:
@@ -25,7 +26,8 @@ Only then [create a new issue](https://github.com/firefly-iii/firefly-iii/issues
## Issue closure and abandonment policy
- Issues can be converted into discussions if it's not a bug or feature request.
- Features that won't be implemented will be labelled "wontfix". [This isn't personal](https://docs.firefly-iii.org/firefly-iii/about-firefly-iii/what-its-not/).
- Features that won't be implemented will be labelled "
wontfix". [This isn't personal](https://docs.firefly-iii.org/firefly-iii/about-firefly-iii/what-its-not/).
- Issues can be closed if they're duplicates of other issues.
- Issues can be closed if the answer is in the FAQ.
- Issues will be closed automatically after 14 days.

View File

@@ -56,9 +56,12 @@ jobs:
const workflows = [
'cleanup.yml',
'closed-issues.yml',
'depsreview.yaml',
'laravel.yml',
'lock.yml',
'qodana.yml',
'sonarcloud.yml',
'stale.yml'
]

View File

@@ -7,16 +7,16 @@ jobs:
auto_comment:
runs-on: ubuntu-latest
steps:
-
uses: aws-actions/closed-issue-message@v1
- uses: aws-actions/closed-issue-message@v1
with:
message: |
Hi there! This is an automatic reply. `Share and enjoy`
This issue is now closed. Please be aware that closed issues are not actively monitored. If you reply, you may get no response.
This issue is now 🔒 closed. Please be aware that closed issues are **not** watched.
- If the original bug is not actually fixed, please feel free to open a new issue. Please refer to this issue for clarity.
- Follow-up questions can also be posted in a new [discussion](https://github.com/firefly-iii/firefly-iii/discussions/)
- If the original bug is not actually fixed, please feel free to open [a new issue](https://github.com/firefly-iii/firefly-iii/issues/new/choose). Please refer to this issue for clarity.
- Follow-up questions must be posted in a new [discussion](https://github.com/firefly-iii/firefly-iii/discussions/)
- Further replies to this issue will get **no response**.
Thank you for your consideration.
Thank you for your contributions.
repo-token: "${{ secrets.GITHUB_TOKEN }}"

View File

@@ -1,5 +1,5 @@
name: 'Dependency Review'
on: [pull_request]
on: [ pull_request ]
permissions:
contents: read

View File

@@ -5,8 +5,6 @@ on:
branches:
- main
- develop
pull_request:
types: [ opened, synchronize, reopened ]
jobs:
qodana:
runs-on: ubuntu-latest

19
.github/workflows/sonarcloud.yml vendored Normal file
View File

@@ -0,0 +1,19 @@
name: Sonarcloud
on:
push:
branches:
- main
- develop
jobs:
sonarcloud:
name: SonarCloud
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
- name: SonarCloud Scan
uses: SonarSource/sonarcloud-github-action@master
env:
GITHUB_TOKEN: ${{ secrets.GH_ACTIONS_PERSONAL_ACCESS_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}

View File

@@ -83,6 +83,7 @@ class AccountController extends Controller
$return = [];
$result = $this->repository->searchAccount((string)$query, $types, $data['limit']);
// TODO this code is duplicated in the V2 Autocomplete controller, which means this code is due to be deprecated.
$defaultCurrency = app('amount')->getDefaultCurrency();
/** @var Account $account */
@@ -92,7 +93,11 @@ class AccountController extends Controller
if (in_array($account->accountType->type, $this->balanceTypes, true)) {
$balance = app('steam')->balance($account, $date);
$nameWithBalance = sprintf('%s (%s)', $account->name, app('amount')->formatAnything($currency, $balance, false));
$nameWithBalance = sprintf(
'%s (%s)',
$account->name,
app('amount')->formatAnything($currency, $balance, false)
);
}
$return[] = [
@@ -109,14 +114,14 @@ class AccountController extends Controller
}
// custom order.
$order = [AccountType::ASSET, AccountType::REVENUE, AccountType::EXPENSE];
usort(
$return,
function ($a, $b) use ($order) {
$pos_a = array_search($a['type'], $order, true);
$pos_b = array_search($b['type'], $order, true);
function ($a, $b) {
$order = [AccountType::ASSET, AccountType::REVENUE, AccountType::EXPENSE];
$posA = array_search($a['type'], $order, true);
$posB = array_search($b['type'], $order, true);
return $pos_a - $pos_b;
return $posA - $posB;
}
);

View File

@@ -125,6 +125,7 @@ class AccountController extends Controller
'yAxisID' => 0, // 0, 1, 2
'entries' => [],
];
// TODO this code is also present in the V2 chart account controller so this method is due to be deprecated.
$currentStart = clone $start;
$range = app('steam')->balanceInRange($account, $start, clone $end);
// 2022-10-11 this method no longer converts to float.

View File

@@ -108,9 +108,15 @@ abstract class Controller extends BaseController
if (null !== $date) {
try {
$obj = Carbon::parse($date);
} catch (InvalidDateException|InvalidFormatException $e) {
} catch (InvalidDateException | InvalidFormatException $e) {
// don't care
app('log')->warning(sprintf('Ignored invalid date "%s" in API controller parameter check: %s', substr($date, 0, 20), $e->getMessage()));
app('log')->warning(
sprintf(
'Ignored invalid date "%s" in API controller parameter check: %s',
substr($date, 0, 20),
$e->getMessage()
)
);
}
}
$bag->set($field, $obj);
@@ -170,7 +176,6 @@ abstract class Controller extends BaseController
return $bag;
}
/**
* Method to help build URL's.
*
@@ -191,7 +196,7 @@ abstract class Controller extends BaseController
$params[$key] = $value;
}
return $return.http_build_query($params);
return $return . http_build_query($params);
}
/**
@@ -201,7 +206,7 @@ abstract class Controller extends BaseController
{
// create some objects:
$manager = new Manager();
$baseUrl = request()->getSchemeAndHttpHost().'/api/v1';
$baseUrl = request()->getSchemeAndHttpHost() . '/api/v1';
$manager->setSerializer(new JsonApiSerializer($baseUrl));
return $manager;

View File

@@ -86,7 +86,7 @@ class ExportController extends Controller
$response
->header('Content-Description', 'File Transfer')
->header('Content-Type', 'application/octet-stream')
->header('Content-Disposition', 'attachment; filename='.$fileName)
->header('Content-Disposition', 'attachment; filename=' . $fileName)
->header('Content-Transfer-Encoding', 'binary')
->header('Connection', 'Keep-Alive')
->header('Expires', '0')

View File

@@ -43,6 +43,7 @@ class PurgeController extends Controller
* TODO cleanup and use repositories.
* This endpoint is documented at:
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/data/purgeData
*
* @return JsonResponse
*/
public function purge(): JsonResponse

View File

@@ -89,7 +89,7 @@ class ListController extends Controller
// make paginator:
$paginator = new LengthAwarePaginator($attachments, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.accounts.attachments', [$account->id]).$this->buildParams());
$paginator->setPath(route('api.v1.accounts.attachments', [$account->id]) . $this->buildParams());
/** @var AttachmentTransformer $transformer */
$transformer = app(AttachmentTransformer::class);
@@ -125,7 +125,7 @@ class ListController extends Controller
// make paginator:
$paginator = new LengthAwarePaginator($piggyBanks, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.accounts.piggy-banks', [$account->id]).$this->buildParams());
$paginator->setPath(route('api.v1.accounts.piggy-banks', [$account->id]) . $this->buildParams());
/** @var PiggyBankTransformer $transformer */
$transformer = app(PiggyBankTransformer::class);
@@ -177,7 +177,7 @@ class ListController extends Controller
}
$paginator = $collector->getPaginatedGroups();
$paginator->setPath(route('api.v1.accounts.transactions', [$account->id]).$this->buildParams());
$paginator->setPath(route('api.v1.accounts.transactions', [$account->id]) . $this->buildParams());
$groups = $paginator->getCollection();
/** @var TransactionGroupTransformer $transformer */

View File

@@ -98,7 +98,7 @@ class ShowController extends Controller
// make paginator:
$paginator = new LengthAwarePaginator($accounts, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.accounts.index').$this->buildParams());
$paginator->setPath(route('api.v1.accounts.index') . $this->buildParams());
/** @var AccountTransformer $transformer */
$transformer = app(AccountTransformer::class);

View File

@@ -29,8 +29,8 @@ use FireflyIII\Models\Account;
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
use FireflyIII\Transformers\AccountTransformer;
use Illuminate\Http\JsonResponse;
use League\Fractal\Resource\Item;
use Illuminate\Support\Facades\Log;
use League\Fractal\Resource\Item;
use Preferences;
/**
@@ -75,7 +75,7 @@ class UpdateController extends Controller
{
Log::debug(sprintf('Now in %s', __METHOD__));
$data = $request->getUpdateData();
$data['type'] = config('firefly.shortNamesByFullName.'.$account->accountType->type);
$data['type'] = config('firefly.shortNamesByFullName.' . $account->accountType->type);
$account = $this->repository->update($account, $data);
$manager = $this->getManager();
$account->refresh();

View File

@@ -96,7 +96,7 @@ class ShowController extends Controller
$response
->header('Content-Description', 'File Transfer')
->header('Content-Type', 'application/octet-stream')
->header('Content-Disposition', 'attachment; filename='.$quoted)
->header('Content-Disposition', 'attachment; filename=' . $quoted)
->header('Content-Transfer-Encoding', 'binary')
->header('Connection', 'Keep-Alive')
->header('Expires', '0')
@@ -132,7 +132,7 @@ class ShowController extends Controller
// make paginator:
$paginator = new LengthAwarePaginator($attachments, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.attachments.index').$this->buildParams());
$paginator->setPath(route('api.v1.attachments.index') . $this->buildParams());
/** @var AttachmentTransformer $transformer */
$transformer = app(AttachmentTransformer::class);

View File

@@ -34,8 +34,8 @@ use FireflyIII\Transformers\AttachmentTransformer;
use FireflyIII\User;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use League\Fractal\Resource\Item;
use Illuminate\Support\Facades\Log;
use League\Fractal\Resource\Item;
/**
* Class StoreController

View File

@@ -88,7 +88,7 @@ class ShowController extends Controller
// make paginator:
$paginator = new LengthAwarePaginator($availableBudgets, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.available-budgets.index').$this->buildParams());
$paginator->setPath(route('api.v1.available-budgets.index') . $this->buildParams());
/** @var AvailableBudgetTransformer $transformer */
$transformer = app(AvailableBudgetTransformer::class);

View File

@@ -88,7 +88,7 @@ class ListController extends Controller
// make paginator:
$paginator = new LengthAwarePaginator($attachments, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.bills.attachments', [$bill->id]).$this->buildParams());
$paginator->setPath(route('api.v1.bills.attachments', [$bill->id]) . $this->buildParams());
/** @var AttachmentTransformer $transformer */
$transformer = app(AttachmentTransformer::class);
@@ -125,7 +125,7 @@ class ListController extends Controller
// make paginator:
$paginator = new LengthAwarePaginator($rules, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.bills.rules', [$bill->id]).$this->buildParams());
$paginator->setPath(route('api.v1.bills.rules', [$bill->id]) . $this->buildParams());
/** @var RuleTransformer $transformer */
$transformer = app(RuleTransformer::class);
@@ -184,7 +184,7 @@ class ListController extends Controller
// get paginator.
$paginator = $collector->getPaginatedGroups();
$paginator->setPath(route('api.v1.bills.transactions', [$bill->id]).$this->buildParams());
$paginator->setPath(route('api.v1.bills.transactions', [$bill->id]) . $this->buildParams());
$transactions = $paginator->getCollection();
/** @var TransactionGroupTransformer $transformer */

View File

@@ -90,7 +90,7 @@ class ListController extends Controller
// make paginator:
$paginator = new LengthAwarePaginator($attachments, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.budgets.attachments', [$budget->id]).$this->buildParams());
$paginator->setPath(route('api.v1.budgets.attachments', [$budget->id]) . $this->buildParams());
/** @var AttachmentTransformer $transformer */
$transformer = app(AttachmentTransformer::class);
@@ -122,7 +122,7 @@ class ListController extends Controller
$count = $collection->count();
$budgetLimits = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize);
$paginator = new LengthAwarePaginator($budgetLimits, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.budgets.budget-limits', [$budget->id]).$this->buildParams());
$paginator->setPath(route('api.v1.budgets.budget-limits', [$budget->id]) . $this->buildParams());
/** @var BudgetLimitTransformer $transformer */
$transformer = app(BudgetLimitTransformer::class);
@@ -186,7 +186,7 @@ class ListController extends Controller
}
$paginator = $collector->getPaginatedGroups();
$paginator->setPath(route('api.v1.budgets.transactions', [$budget->id]).$this->buildParams());
$paginator->setPath(route('api.v1.budgets.transactions', [$budget->id]) . $this->buildParams());
$transactions = $paginator->getCollection();
/** @var TransactionGroupTransformer $transformer */
@@ -249,7 +249,7 @@ class ListController extends Controller
}
$paginator = $collector->getPaginatedGroups();
$paginator->setPath(route('api.v1.budgets.without-budget').$this->buildParams());
$paginator->setPath(route('api.v1.budgets.without-budget') . $this->buildParams());
$transactions = $paginator->getCollection();
/** @var TransactionGroupTransformer $transformer */

View File

@@ -86,7 +86,7 @@ class ShowController extends Controller
// make paginator:
$paginator = new LengthAwarePaginator($budgets, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.budgets.index').$this->buildParams());
$paginator->setPath(route('api.v1.budgets.index') . $this->buildParams());
/** @var BudgetTransformer $transformer */
$transformer = app(BudgetTransformer::class);

View File

@@ -109,7 +109,7 @@ class ListController extends Controller
$collector->setRange($budgetLimit->start_date, $budgetLimit->end_date);
$collector->setTypes($types);
$paginator = $collector->getPaginatedGroups();
$paginator->setPath(route('api.v1.budgets.limits.transactions', [$budget->id, $budgetLimit->id]).$this->buildParams());
$paginator->setPath(route('api.v1.budgets.limits.transactions', [$budget->id, $budgetLimit->id]) . $this->buildParams());
$transactions = $paginator->getCollection();
/** @var TransactionGroupTransformer $transformer */

View File

@@ -90,7 +90,7 @@ class ShowController extends Controller
$count = $collection->count();
$budgetLimits = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize);
$paginator = new LengthAwarePaginator($budgetLimits, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.budgets.limits.index', [$budget->id]).$this->buildParams());
$paginator->setPath(route('api.v1.budgets.limits.index', [$budget->id]) . $this->buildParams());
/** @var BudgetLimitTransformer $transformer */
$transformer = app(BudgetLimitTransformer::class);
@@ -122,7 +122,7 @@ class ShowController extends Controller
$count = $collection->count();
$budgetLimits = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize);
$paginator = new LengthAwarePaginator($budgetLimits, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.budget-limits.index').$this->buildParams());
$paginator->setPath(route('api.v1.budget-limits.index') . $this->buildParams());
/** @var BudgetLimitTransformer $transformer */
$transformer = app(BudgetLimitTransformer::class);

View File

@@ -85,7 +85,7 @@ class ListController extends Controller
// make paginator:
$paginator = new LengthAwarePaginator($attachments, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.categories.attachments', [$category->id]).$this->buildParams());
$paginator->setPath(route('api.v1.categories.attachments', [$category->id]) . $this->buildParams());
/** @var AttachmentTransformer $transformer */
$transformer = app(AttachmentTransformer::class);
@@ -143,7 +143,7 @@ class ListController extends Controller
}
$paginator = $collector->getPaginatedGroups();
$paginator->setPath(route('api.v1.categories.transactions', [$category->id]).$this->buildParams());
$paginator->setPath(route('api.v1.categories.transactions', [$category->id]) . $this->buildParams());
$transactions = $paginator->getCollection();
/** @var TransactionGroupTransformer $transformer */

View File

@@ -82,7 +82,7 @@ class ShowController extends Controller
// make paginator:
$paginator = new LengthAwarePaginator($categories, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.categories.index').$this->buildParams());
$paginator->setPath(route('api.v1.categories.index') . $this->buildParams());
/** @var CategoryTransformer $transformer */
$transformer = app(CategoryTransformer::class);

View File

@@ -85,7 +85,7 @@ class ListController extends Controller
// make paginator:
$paginator = new LengthAwarePaginator($bills, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.currencies.bills', [$objectGroup->id]).$this->buildParams());
$paginator->setPath(route('api.v1.currencies.bills', [$objectGroup->id]) . $this->buildParams());
/** @var BillTransformer $transformer */
$transformer = app(BillTransformer::class);
@@ -123,7 +123,7 @@ class ListController extends Controller
// make paginator:
$paginator = new LengthAwarePaginator($piggyBanks, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.object-groups.piggy-banks', [$objectGroup->id]).$this->buildParams());
$paginator->setPath(route('api.v1.object-groups.piggy-banks', [$objectGroup->id]) . $this->buildParams());
/** @var PiggyBankTransformer $transformer */
$transformer = app(PiggyBankTransformer::class);

View File

@@ -88,7 +88,7 @@ class ShowController extends Controller
// make paginator:
$paginator = new LengthAwarePaginator($objectGroups, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.object-groups.index').$this->buildParams());
$paginator->setPath(route('api.v1.object-groups.index') . $this->buildParams());
/** @var ObjectGroupTransformer $transformer */
$transformer = app(ObjectGroupTransformer::class);

View File

@@ -79,7 +79,7 @@ class ListController extends Controller
// make paginator:
$paginator = new LengthAwarePaginator($attachments, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.piggy-banks.attachments', [$piggyBank->id]).$this->buildParams());
$paginator->setPath(route('api.v1.piggy-banks.attachments', [$piggyBank->id]) . $this->buildParams());
/** @var AttachmentTransformer $transformer */
$transformer = app(AttachmentTransformer::class);
@@ -114,7 +114,7 @@ class ListController extends Controller
// make paginator:
$paginator = new LengthAwarePaginator($events, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.piggy-banks.events', [$piggyBank->id]).$this->buildParams());
$paginator->setPath(route('api.v1.piggy-banks.events', [$piggyBank->id]) . $this->buildParams());
/** @var PiggyBankEventTransformer $transformer */
$transformer = app(PiggyBankEventTransformer::class);

View File

@@ -81,7 +81,7 @@ class ShowController extends Controller
// make paginator:
$paginator = new LengthAwarePaginator($piggyBanks, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.piggy-banks.index').$this->buildParams());
$paginator->setPath(route('api.v1.piggy-banks.index') . $this->buildParams());
/** @var PiggyBankTransformer $transformer */
$transformer = app(PiggyBankTransformer::class);

View File

@@ -109,7 +109,7 @@ class ListController extends Controller
$collector->setRange($this->parameters->get('start'), $this->parameters->get('end'));
}
$paginator = $collector->getPaginatedGroups();
$paginator->setPath(route('api.v1.transactions.index').$this->buildParams());
$paginator->setPath(route('api.v1.transactions.index') . $this->buildParams());
$transactions = $paginator->getCollection();
/** @var TransactionGroupTransformer $transformer */

View File

@@ -82,7 +82,7 @@ class ShowController extends Controller
// make paginator:
$paginator = new LengthAwarePaginator($piggyBanks, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.recurrences.index').$this->buildParams());
$paginator->setPath(route('api.v1.recurrences.index') . $this->buildParams());
/** @var RecurrenceTransformer $transformer */
$transformer = app(RecurrenceTransformer::class);

View File

@@ -86,7 +86,7 @@ class ShowController extends Controller
// make paginator:
$paginator = new LengthAwarePaginator($rules, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.rules.index').$this->buildParams());
$paginator->setPath(route('api.v1.rules.index') . $this->buildParams());
/** @var RuleTransformer $transformer */
$transformer = app(RuleTransformer::class);

View File

@@ -96,12 +96,13 @@ class TriggerController extends Controller
$ruleEngine->addOperator(['type' => 'account_id', 'value' => implode(',', $parameters['accounts'])]);
}
// file the rule(s)
$transactions = $ruleEngine->find();
$count = $transactions->count();
$paginator = new LengthAwarePaginator($transactions, $count, 31337, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.rules.test', [$rule->id]).$this->buildParams());
$paginator->setPath(route('api.v1.rules.test', [$rule->id]) . $this->buildParams());
// resulting list is presented as JSON thing.
$manager = $this->getManager();
@@ -149,6 +150,7 @@ class TriggerController extends Controller
$ruleEngine->addOperator(['type' => 'account_id', 'value' => implode(',', $parameters['accounts'])]);
}
// fire the rule(s)
$ruleEngine->fire();

View File

@@ -84,7 +84,7 @@ class ListController extends Controller
// make paginator:
$paginator = new LengthAwarePaginator($rules, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.rule-groups.rules', [$group->id]).$this->buildParams());
$paginator->setPath(route('api.v1.rule-groups.rules', [$group->id]) . $this->buildParams());
/** @var RuleTransformer $transformer */
$transformer = app(RuleTransformer::class);

View File

@@ -84,7 +84,7 @@ class ShowController extends Controller
// make paginator:
$paginator = new LengthAwarePaginator($ruleGroups, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.rule-groups.index').$this->buildParams());
$paginator->setPath(route('api.v1.rule-groups.index') . $this->buildParams());
/** @var RuleGroupTransformer $transformer */
$transformer = app(RuleGroupTransformer::class);

View File

@@ -108,7 +108,7 @@ class TriggerController extends Controller
$count = $transactions->count();
$paginator = new LengthAwarePaginator($transactions, $count, 31337, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.rule-groups.test', [$group->id]).$this->buildParams());
$paginator->setPath(route('api.v1.rule-groups.test', [$group->id]) . $this->buildParams());
// resulting list is presented as JSON thing.
$manager = $this->getManager();

View File

@@ -88,7 +88,7 @@ class ListController extends Controller
// make paginator:
$paginator = new LengthAwarePaginator($attachments, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.tags.attachments', [$tag->id]).$this->buildParams());
$paginator->setPath(route('api.v1.tags.attachments', [$tag->id]) . $this->buildParams());
/** @var AttachmentTransformer $transformer */
$transformer = app(AttachmentTransformer::class);
@@ -143,7 +143,7 @@ class ListController extends Controller
$collector->setRange($this->parameters->get('start'), $this->parameters->get('end'));
}
$paginator = $collector->getPaginatedGroups();
$paginator->setPath(route('api.v1.tags.transactions', [$tag->id]).$this->buildParams());
$paginator->setPath(route('api.v1.tags.transactions', [$tag->id]) . $this->buildParams());
$transactions = $paginator->getCollection();
/** @var TransactionGroupTransformer $transformer */

View File

@@ -85,7 +85,7 @@ class ShowController extends Controller
// make paginator:
$paginator = new LengthAwarePaginator($rules, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.tags.index').$this->buildParams());
$paginator->setPath(route('api.v1.tags.index') . $this->buildParams());
/** @var TagTransformer $transformer */
$transformer = app(TagTransformer::class);

View File

@@ -89,7 +89,7 @@ class ListController extends Controller
// make paginator:
$paginator = new LengthAwarePaginator($attachments, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.transactions.attachments', [$transactionGroup->id]).$this->buildParams());
$paginator->setPath(route('api.v1.transactions.attachments', [$transactionGroup->id]) . $this->buildParams());
/** @var AttachmentTransformer $transformer */
$transformer = app(AttachmentTransformer::class);
@@ -122,7 +122,7 @@ class ListController extends Controller
$events = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize);
// make paginator:
$paginator = new LengthAwarePaginator($events, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.transactions.piggy-bank-events', [$transactionGroup->id]).$this->buildParams());
$paginator->setPath(route('api.v1.transactions.piggy-bank-events', [$transactionGroup->id]) . $this->buildParams());
/** @var PiggyBankEventTransformer $transformer */
$transformer = app(PiggyBankEventTransformer::class);
@@ -158,7 +158,7 @@ class ListController extends Controller
// make paginator:
$paginator = new LengthAwarePaginator($journalLinks, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.transaction-journals.transaction-links', [$transactionJournal->id]).$this->buildParams());
$paginator->setPath(route('api.v1.transaction-journals.transaction-links', [$transactionJournal->id]) . $this->buildParams());
/** @var TransactionLinkTransformer $transformer */
$transformer = app(TransactionLinkTransformer::class);

View File

@@ -84,7 +84,7 @@ class ShowController extends Controller
$collector->setRange($this->parameters->get('start'), $this->parameters->get('end'));
}
$paginator = $collector->getPaginatedGroups();
$paginator->setPath(route('api.v1.transactions.index').$this->buildParams());
$paginator->setPath(route('api.v1.transactions.index') . $this->buildParams());
$transactions = $paginator->getCollection();
/** @var TransactionGroupTransformer $transformer */

View File

@@ -35,9 +35,9 @@ use FireflyIII\Support\Http\Api\TransactionFilter;
use FireflyIII\Transformers\TransactionGroupTransformer;
use FireflyIII\User;
use Illuminate\Http\JsonResponse;
use Illuminate\Support\Facades\Log;
use Illuminate\Validation\ValidationException;
use League\Fractal\Resource\Item;
use Illuminate\Support\Facades\Log;
use Validator;
/**

View File

@@ -32,8 +32,8 @@ use FireflyIII\Repositories\TransactionGroup\TransactionGroupRepositoryInterface
use FireflyIII\Transformers\TransactionGroupTransformer;
use FireflyIII\User;
use Illuminate\Http\JsonResponse;
use League\Fractal\Resource\Item;
use Illuminate\Support\Facades\Log;
use League\Fractal\Resource\Item;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
/**

View File

@@ -127,7 +127,7 @@ class ListController extends Controller
// make paginator:
$paginator = new LengthAwarePaginator($accounts, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.currencies.accounts', [$currency->code]).$this->buildParams());
$paginator->setPath(route('api.v1.currencies.accounts', [$currency->code]) . $this->buildParams());
/** @var AccountTransformer $transformer */
$transformer = app(AccountTransformer::class);
@@ -164,7 +164,7 @@ class ListController extends Controller
$availableBudgets = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize);
// make paginator:
$paginator = new LengthAwarePaginator($availableBudgets, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.currencies.available-budgets', [$currency->code]).$this->buildParams());
$paginator->setPath(route('api.v1.currencies.available-budgets', [$currency->code]) . $this->buildParams());
/** @var AvailableBudgetTransformer $transformer */
$transformer = app(AvailableBudgetTransformer::class);
@@ -207,7 +207,7 @@ class ListController extends Controller
// make paginator:
$paginator = new LengthAwarePaginator($bills, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.currencies.bills', [$currency->code]).$this->buildParams());
$paginator->setPath(route('api.v1.currencies.bills', [$currency->code]) . $this->buildParams());
/** @var BillTransformer $transformer */
$transformer = app(BillTransformer::class);
@@ -241,7 +241,7 @@ class ListController extends Controller
$count = $collection->count();
$budgetLimits = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize);
$paginator = new LengthAwarePaginator($budgetLimits, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.currencies.budget-limits', [$currency->code]).$this->buildParams());
$paginator->setPath(route('api.v1.currencies.budget-limits', [$currency->code]) . $this->buildParams());
/** @var BudgetLimitTransformer $transformer */
$transformer = app(BudgetLimitTransformer::class);
@@ -293,7 +293,7 @@ class ListController extends Controller
// make paginator:
$paginator = new LengthAwarePaginator($piggyBanks, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.currencies.recurrences', [$currency->code]).$this->buildParams());
$paginator->setPath(route('api.v1.currencies.recurrences', [$currency->code]) . $this->buildParams());
/** @var RecurrenceTransformer $transformer */
$transformer = app(RecurrenceTransformer::class);
@@ -344,7 +344,7 @@ class ListController extends Controller
// make paginator:
$paginator = new LengthAwarePaginator($rules, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.rules.index').$this->buildParams());
$paginator->setPath(route('api.v1.rules.index') . $this->buildParams());
/** @var RuleTransformer $transformer */
$transformer = app(RuleTransformer::class);
@@ -400,7 +400,7 @@ class ListController extends Controller
$collector->setRange($this->parameters->get('start'), $this->parameters->get('end'));
}
$paginator = $collector->getPaginatedGroups();
$paginator->setPath(route('api.v1.currencies.transactions', [$currency->code]).$this->buildParams());
$paginator->setPath(route('api.v1.currencies.transactions', [$currency->code]) . $this->buildParams());
$transactions = $paginator->getCollection();
/** @var TransactionGroupTransformer $transformer */

View File

@@ -84,7 +84,7 @@ class ShowController extends Controller
// slice them:
$currencies = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize);
$paginator = new LengthAwarePaginator($currencies, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.currencies.index').$this->buildParams());
$paginator->setPath(route('api.v1.currencies.index') . $this->buildParams());
$manager = $this->getManager();
$defaultCurrency = app('amount')->getDefaultCurrencyByUser(auth()->user());
$this->parameters->set('defaultCurrency', $defaultCurrency);

View File

@@ -92,7 +92,7 @@ class ShowController extends Controller
// make paginator:
$paginator = new LengthAwarePaginator($journalLinks, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.transaction-links.index').$this->buildParams());
$paginator->setPath(route('api.v1.transaction-links.index') . $this->buildParams());
/** @var TransactionLinkTransformer $transformer */
$transformer = app(TransactionLinkTransformer::class);

View File

@@ -110,7 +110,7 @@ class ListController extends Controller
$collector->setRange($this->parameters->get('start'), $this->parameters->get('end'));
}
$paginator = $collector->getPaginatedGroups();
$paginator->setPath(route('api.v1.transactions.index').$this->buildParams());
$paginator->setPath(route('api.v1.transactions.index') . $this->buildParams());
$transactions = $paginator->getCollection();
/** @var TransactionGroupTransformer $transformer */

View File

@@ -87,7 +87,7 @@ class ShowController extends Controller
// make paginator:
$paginator = new LengthAwarePaginator($linkTypes, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.link-types.index').$this->buildParams());
$paginator->setPath(route('api.v1.link-types.index') . $this->buildParams());
/** @var LinkTypeTransformer $transformer */
$transformer = app(LinkTypeTransformer::class);

View File

@@ -32,10 +32,9 @@ use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Pagination\LengthAwarePaginator;
use JsonException;
use Illuminate\Support\Facades\Log;
use League\Fractal\Pagination\IlluminatePaginatorAdapter;
use League\Fractal\Resource\Collection as FractalCollection;
use Illuminate\Support\Facades\Log;
/**
* Class AccountController
@@ -61,12 +60,12 @@ class AccountController extends Controller
/**
* This endpoint is documented at:
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/search/searchAccounts
*
* @param Request $request
*
* @return JsonResponse|Response
* @throws JsonException
*/
public function search(Request $request)
public function search(Request $request): JsonResponse | Response
{
Log::debug('Now in account search()');
$manager = $this->getManager();

View File

@@ -60,7 +60,7 @@ class TransactionController extends Controller
$searcher->setLimit($pageSize);
$groups = $searcher->searchTransactions();
$parameters = ['search' => $fullQuery];
$url = route('api.v1.search.transactions').'?'.http_build_query($parameters);
$url = route('api.v1.search.transactions') . '?' . http_build_query($parameters);
$groups->setPath($url);
$transactions = $groups->getCollection();

View File

@@ -196,8 +196,8 @@ class BasicController extends Controller
'currency_decimal_places' => $currency->decimal_places,
'value_parsed' => app('amount')->formatAnything($currency, $sums[$currencyId] ?? '0', false),
'local_icon' => 'balance-scale',
'sub_title' => app('amount')->formatAnything($currency, $expenses[$currencyId] ?? '0', false).
' + '.app('amount')->formatAnything($currency, $incomes[$currencyId] ?? '0', false),
'sub_title' => app('amount')->formatAnything($currency, $expenses[$currencyId] ?? '0', false) .
' + ' . app('amount')->formatAnything($currency, $incomes[$currencyId] ?? '0', false),
];
$return[] = [
'key' => sprintf('spent-in-%s', $currency->code),
@@ -240,44 +240,43 @@ class BasicController extends Controller
* Since both this method and the chart use the exact same data, we can suffice
* with calling the one method in the bill repository that will get this amount.
*/
$paidAmount = $this->billRepository->getBillsPaidInRangePerCurrency($start, $end);
$unpaidAmount = $this->billRepository->getBillsUnpaidInRangePerCurrency($start, $end);
$paidAmount = $this->billRepository->sumPaidInRange($start, $end);
$unpaidAmount = $this->billRepository->sumUnpaidInRange($start, $end);
$return = [];
foreach ($paidAmount as $currencyId => $amount) {
$amount = bcmul($amount, '-1');
$currency = $this->currencyRepos->find((int)$currencyId);
if (null === $currency) {
continue;
}
/**
* @var array $info
*/
foreach ($paidAmount as $info) {
$amount = bcmul($info['sum'], '-1');
$return[] = [
'key' => sprintf('bills-paid-in-%s', $currency->code),
'title' => trans('firefly.box_bill_paid_in_currency', ['currency' => $currency->symbol]),
'key' => sprintf('bills-paid-in-%s', $info['code']),
'title' => trans('firefly.box_bill_paid_in_currency', ['currency' => $info['symbol']]),
'monetary_value' => $amount,
'currency_id' => $currency->id,
'currency_code' => $currency->code,
'currency_symbol' => $currency->symbol,
'currency_decimal_places' => $currency->decimal_places,
'value_parsed' => app('amount')->formatAnything($currency, $amount, false),
'currency_id' => $info['id'],
'currency_code' => $info['code'],
'currency_symbol' => $info['symbol'],
'currency_decimal_places' => $info['decimal_places'],
'value_parsed' => app('amount')->formatFlat($info['symbol'], $info['decimal_places'], $amount, false),
'local_icon' => 'check',
'sub_title' => '',
];
}
foreach ($unpaidAmount as $currencyId => $amount) {
$amount = bcmul($amount, '-1');
$currency = $this->currencyRepos->find((int)$currencyId);
if (null === $currency) {
continue;
}
/**
* @var array $info
*/
foreach ($unpaidAmount as $info) {
$amount = bcmul($info['sum'], '-1');
$return[] = [
'key' => sprintf('bills-unpaid-in-%s', $currency->code),
'title' => trans('firefly.box_bill_unpaid_in_currency', ['currency' => $currency->symbol]),
'key' => sprintf('bills-unpaid-in-%s', $info['code']),
'title' => trans('firefly.box_bill_unpaid_in_currency', ['currency' => $info['symbol']]),
'monetary_value' => $amount,
'currency_id' => $currency->id,
'currency_code' => $currency->code,
'currency_symbol' => $currency->symbol,
'currency_decimal_places' => $currency->decimal_places,
'value_parsed' => app('amount')->formatAnything($currency, $amount, false),
'currency_id' => $info['id'],
'currency_code' => $info['code'],
'currency_symbol' => $info['symbol'],
'currency_decimal_places' => $info['decimal_places'],
'value_parsed' => app('amount')->formatFlat($info['symbol'], $info['decimal_places'], $amount, false),
'local_icon' => 'calendar-o',
'sub_title' => '',
];

View File

@@ -111,7 +111,7 @@ class UserController extends Controller
// make paginator:
$paginator = new LengthAwarePaginator($users, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.users.index').$this->buildParams());
$paginator->setPath(route('api.v1.users.index') . $this->buildParams());
// make resource
/** @var UserTransformer $transformer */

View File

@@ -63,7 +63,7 @@ class PreferencesController extends Controller
// make paginator:
$paginator = new LengthAwarePaginator($preferences, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.preferences.index').$this->buildParams());
$paginator->setPath(route('api.v1.preferences.index') . $this->buildParams());
/** @var PreferenceTransformer $transformer */
$transformer = app(PreferenceTransformer::class);

View File

@@ -83,7 +83,7 @@ class AttemptController extends Controller
// make paginator:
$paginator = new LengthAwarePaginator($attempts, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.webhooks.attempts.index', [$webhook->id, $message->id]).$this->buildParams());
$paginator->setPath(route('api.v1.webhooks.attempts.index', [$webhook->id, $message->id]) . $this->buildParams());
/** @var WebhookAttemptTransformer $transformer */
$transformer = app(WebhookAttemptTransformer::class);

View File

@@ -75,7 +75,7 @@ class MessageController extends Controller
// make paginator:
$paginator = new LengthAwarePaginator($messages, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.webhooks.messages.index', [$webhook->id]).$this->buildParams());
$paginator->setPath(route('api.v1.webhooks.messages.index', [$webhook->id]) . $this->buildParams());
/** @var WebhookMessageTransformer $transformer */
$transformer = app(WebhookMessageTransformer::class);

View File

@@ -80,7 +80,7 @@ class ShowController extends Controller
// make paginator:
$paginator = new LengthAwarePaginator($webhooks, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.webhooks.index').$this->buildParams());
$paginator->setPath(route('api.v1.webhooks.index') . $this->buildParams());
/** @var WebhookTransformer $transformer */
$transformer = app(WebhookTransformer::class);
@@ -122,6 +122,7 @@ class ShowController extends Controller
*
* @param Webhook $webhook
* @param TransactionGroup $group
*
* @return JsonResponse
*/
public function triggerTransaction(Webhook $webhook, TransactionGroup $group): JsonResponse
@@ -141,6 +142,7 @@ class ShowController extends Controller
// trigger event to send them:
event(new RequestedSendWebhookMessages());
return response()->json([], 204);
}
}

View File

@@ -83,6 +83,7 @@ class MoveTransactionsRequest extends FormRequest
/**
* @param Validator $validator
*
* @return void
*/
private function validateMove(Validator $validator): void

View File

@@ -30,9 +30,9 @@ use FireflyIII\Support\Request\ChecksLogin;
use FireflyIII\Support\Request\ConvertsDataTypes;
use FireflyIII\Validation\Api\Data\Bulk\ValidatesBulkTransactionQuery;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Facades\Log;
use Illuminate\Validation\Validator;
use JsonException;
use Illuminate\Support\Facades\Log;
/**
* Class TransactionRequest

View File

@@ -52,8 +52,8 @@ class DestroyRequest extends FormRequest
*/
public function rules(): array
{
$valid = 'budgets,bills,piggy_banks,rules,recurring,categories,tags,object_groups'.
',accounts,asset_accounts,expense_accounts,revenue_accounts,liabilities,transactions,withdrawals,deposits,transfers'.
$valid = 'budgets,bills,piggy_banks,rules,recurring,categories,tags,object_groups' .
',accounts,asset_accounts,expense_accounts,revenue_accounts,liabilities,transactions,withdrawals,deposits,transfers' .
',not_assets_liabilities';
return [

View File

@@ -104,7 +104,7 @@ class StoreRequest extends FormRequest
$type = $this->convertString('type');
$rules = [
'name' => 'required|max:1024|min:1|uniqueAccountForUser',
'type' => 'required|max:1024|min:1|'.sprintf('in:%s', $types),
'type' => 'required|max:1024|min:1|' . sprintf('in:%s', $types),
'iban' => ['iban', 'nullable', new UniqueIban(null, $type)],
'bic' => 'bic|nullable',
'account_number' => ['between:1,255', 'nullable', new UniqueAccountNumber(null, $type)],

View File

@@ -33,7 +33,6 @@ use FireflyIII\Support\Request\AppendsLocationData;
use FireflyIII\Support\Request\ChecksLogin;
use FireflyIII\Support\Request\ConvertsDataTypes;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Facades\Log;
/**
* Class UpdateRequest
@@ -77,6 +76,7 @@ class UpdateRequest extends FormRequest
'liability_start_date' => ['liability_start_date', 'date'],
];
$data = $this->getAllData($fields);
return $this->appendLocationData($data, null);
}
@@ -109,7 +109,7 @@ class UpdateRequest extends FormRequest
'include_net_worth' => [new IsBoolean()],
'account_role' => sprintf('in:%s|nullable|required_if:type,asset', $accountRoles),
'credit_card_type' => sprintf('in:%s|nullable|required_if:account_role,ccAsset', $ccPaymentTypes),
'monthly_payment_date' => 'date'.'|nullable|required_if:account_role,ccAsset|required_if:credit_card_type,monthlyFull',
'monthly_payment_date' => 'date' . '|nullable|required_if:account_role,ccAsset|required_if:credit_card_type,monthlyFull',
'liability_type' => 'required_if:type,liability|in:loan,debt,mortgage',
'liability_direction' => 'required_if:type,liability|in:credit,debit',
'interest' => 'required_if:type,liability|between:0,100|numeric',

View File

@@ -28,8 +28,8 @@ use FireflyIII\Rules\IsBoolean;
use FireflyIII\Support\Request\ChecksLogin;
use FireflyIII\Support\Request\ConvertsDataTypes;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Validator;
use Illuminate\Support\Facades\Log;
use Illuminate\Validation\Validator;
/**
* Class StoreRequest
@@ -105,8 +105,8 @@ class StoreRequest extends FormRequest
$validator->after(
static function (Validator $validator) {
$data = $validator->getData();
$min = (string) ($data['amount_min'] ?? '0');
$max = (string) ($data['amount_max'] ?? '0');
$min = (string)($data['amount_min'] ?? '0');
$max = (string)($data['amount_max'] ?? '0');
if (1 === bccomp($min, $max)) {
$validator->errors()->add('amount_min', (string)trans('validation.amount_min_over_max'));

View File

@@ -74,7 +74,7 @@ class UpdateRequest extends FormRequest
$piggyBank = $this->route()->parameter('piggyBank');
return [
'name' => 'between:1,255|uniquePiggyBankForUser:'.$piggyBank->id,
'name' => 'between:1,255|uniquePiggyBankForUser:' . $piggyBank->id,
'current_amount' => ['numeric', 'gte:0', new LessThanPiggyTarget()],
'target_amount' => 'numeric|gte:0',
'start_date' => 'date|nullable',

View File

@@ -205,6 +205,11 @@ class UpdateRequest extends FormRequest
function (Validator $validator) {
//$this->validateOneRecurrenceTransaction($validator);
//$this->validateOneRepetitionUpdate($validator);
/** @var Recurrence $recurrence */
$recurrence = $this->route()->parameter('recurrence');
$this->validateTransactionId($recurrence, $validator);
$this->validateRecurrenceRepetition($validator);
$this->validateRepetitionMoment($validator);
$this->validateForeignCurrencyInformation($validator);
@@ -212,4 +217,5 @@ class UpdateRequest extends FormRequest
}
);
}
}

View File

@@ -129,12 +129,12 @@ class StoreRequest extends FormRequest
'rule_group_id' => 'belongsToUser:rule_groups|required_without:rule_group_title',
'rule_group_title' => 'nullable|between:1,255|required_without:rule_group_id|belongsToUser:rule_groups,title',
'trigger' => 'required|in:store-journal,update-journal',
'triggers.*.type' => 'required|in:'.implode(',', $validTriggers),
'triggers.*.value' => 'required_if:actions.*.type,'.$contextTriggers.'|min:1|ruleTriggerValue|max:1024',
'triggers.*.type' => 'required|in:' . implode(',', $validTriggers),
'triggers.*.value' => 'required_if:actions.*.type,' . $contextTriggers . '|min:1|ruleTriggerValue|max:1024',
'triggers.*.stop_processing' => [new IsBoolean()],
'triggers.*.active' => [new IsBoolean()],
'actions.*.type' => 'required|in:'.implode(',', $validActions),
'actions.*.value' => 'required_if:actions.*.type,'.$contextActions.'|ruleActionValue',
'actions.*.type' => 'required|in:' . implode(',', $validActions),
'actions.*.value' => 'required_if:actions.*.type,' . $contextActions . '|ruleActionValue',
'actions.*.stop_processing' => [new IsBoolean()],
'actions.*.active' => [new IsBoolean()],
'strict' => [new IsBoolean()],

View File

@@ -146,12 +146,12 @@ class UpdateRequest extends FormRequest
'rule_group_id' => 'belongsToUser:rule_groups',
'rule_group_title' => 'nullable|between:1,255|belongsToUser:rule_groups,title',
'trigger' => 'in:store-journal,update-journal',
'triggers.*.type' => 'required|in:'.implode(',', $validTriggers),
'triggers.*.value' => 'required_if:actions.*.type,'.$contextTriggers.'|min:1|ruleTriggerValue|max:1024',
'triggers.*.type' => 'required|in:' . implode(',', $validTriggers),
'triggers.*.value' => 'required_if:actions.*.type,' . $contextTriggers . '|min:1|ruleTriggerValue|max:1024',
'triggers.*.stop_processing' => [new IsBoolean()],
'triggers.*.active' => [new IsBoolean()],
'actions.*.type' => 'required|in:'.implode(',', $validActions),
'actions.*.value' => 'required_if:actions.*.type,'.$contextActions.'|ruleActionValue',
'actions.*.type' => 'required|in:' . implode(',', $validActions),
'actions.*.value' => 'required_if:actions.*.type,' . $contextActions . '|ruleActionValue',
'actions.*.stop_processing' => [new IsBoolean()],
'actions.*.active' => [new IsBoolean()],
'strict' => [new IsBoolean()],

View File

@@ -66,7 +66,7 @@ class UpdateRequest extends FormRequest
$ruleGroup = $this->route()->parameter('ruleGroup');
return [
'title' => 'between:1,100|uniqueObjectForUser:rule_groups,title,'.$ruleGroup->id,
'title' => 'between:1,100|uniqueObjectForUser:rule_groups,title,' . $ruleGroup->id,
'description' => 'between:1,5000|nullable',
'active' => [new IsBoolean()],
];

View File

@@ -71,7 +71,7 @@ class UpdateRequest extends FormRequest
$tag = $this->route()->parameter('tagOrId');
// TODO check if uniqueObjectForUser is obsolete
$rules = [
'tag' => 'min:1|max:1024|uniqueObjectForUser:tags,tag,'.$tag->id,
'tag' => 'min:1|max:1024|uniqueObjectForUser:tags,tag,' . $tag->id,
'description' => 'min:1|nullable|max:65536',
'date' => 'date|nullable',
];

View File

@@ -35,8 +35,8 @@ use FireflyIII\Validation\CurrencyValidation;
use FireflyIII\Validation\GroupValidation;
use FireflyIII\Validation\TransactionValidation;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Validator;
use Illuminate\Support\Facades\Log;
use Illuminate\Validation\Validator;
/**
* Class StoreRequest

View File

@@ -62,7 +62,6 @@ class UpdateRequest extends FormRequest
*/
public function getAll(): array
{
Log::debug(sprintf('Now in %s', __METHOD__));
$this->integerFields = [
'order',
@@ -165,7 +164,7 @@ class UpdateRequest extends FormRequest
/** @var array $transaction */
foreach ($this->get('transactions') as $transaction) {
if(!is_array($transaction)) {
if (!is_array($transaction)) {
throw new FireflyException('Invalid data submitted: transaction is not array.');
}
// default response is to update nothing in the transaction:
@@ -292,6 +291,7 @@ class UpdateRequest extends FormRequest
/**
* @param array $current
* @param array $transaction
*
* @return array
*/
private function getFloatData(array $current, array $transaction): array
@@ -319,6 +319,7 @@ class UpdateRequest extends FormRequest
public function rules(): array
{
Log::debug(sprintf('Now in %s', __METHOD__));
return [
// basic fields for group:
'group_title' => 'between:1,1000',

View File

@@ -64,9 +64,9 @@ class UpdateRequest extends FormRequest
$linkType = $this->route()->parameter('linkType');
return [
'name' => [Rule::unique('link_types', 'name')->ignore($linkType->id), 'min:1','max:1024'],
'outward' => ['different:inward', Rule::unique('link_types', 'outward')->ignore($linkType->id), 'min:1','max:1024'],
'inward' => ['different:outward', Rule::unique('link_types', 'inward')->ignore($linkType->id), 'min:1','max:1024'],
'name' => [Rule::unique('link_types', 'name')->ignore($linkType->id), 'min:1', 'max:1024'],
'outward' => ['different:inward', Rule::unique('link_types', 'outward')->ignore($linkType->id), 'min:1', 'max:1024'],
'inward' => ['different:outward', Rule::unique('link_types', 'inward')->ignore($linkType->id), 'min:1', 'max:1024'],
];
}
}

View File

@@ -29,10 +29,9 @@ use FireflyIII\Api\V2\Request\Autocomplete\AutocompleteRequest;
use FireflyIII\Exceptions\FireflyException;
use FireflyIII\Models\Account;
use FireflyIII\Models\AccountType;
use FireflyIII\Repositories\Administration\Account\AccountRepositoryInterface as AdminAccountRepositoryInterface;
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
use FireflyIII\Repositories\Administration\Account\AccountRepositoryInterface as AdminAccountRepositoryInterface;
use FireflyIII\Support\Http\Api\AccountFilter;
use FireflyIII\User;
use Illuminate\Http\JsonResponse;
use JsonException;
@@ -43,8 +42,8 @@ class AccountController extends Controller
{
use AccountFilter;
private array $balanceTypes;
private AdminAccountRepositoryInterface $adminRepository;
private array $balanceTypes;
private AccountRepositoryInterface $repository;
/**
@@ -55,8 +54,6 @@ class AccountController extends Controller
parent::__construct();
$this->middleware(
function ($request, $next) {
/** @var User $user */
$user = auth()->user();
$this->repository = app(AccountRepositoryInterface::class);
$this->adminRepository = app(AdminAccountRepositoryInterface::class);
@@ -113,10 +110,10 @@ class AccountController extends Controller
}
// custom order.
$order = [AccountType::ASSET, AccountType::REVENUE, AccountType::EXPENSE];
usort(
$return,
function ($a, $b) use ($order) {
function ($a, $b) {
$order = [AccountType::ASSET, AccountType::REVENUE, AccountType::EXPENSE];
$pos_a = array_search($a['type'], $order, true);
$pos_b = array_search($b['type'], $order, true);

View File

@@ -53,6 +53,7 @@ class AccountController extends Controller
$this->middleware(
function ($request, $next) {
$this->repository = app(AccountRepositoryInterface::class);
return $next($request);
}
);
@@ -63,6 +64,7 @@ class AccountController extends Controller
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v2)#/charts/getChartAccountOverview
*
* @param DateRequest $request
*
* @return JsonResponse
* @throws ContainerExceptionInterface
* @throws NotFoundExceptionInterface

View File

@@ -75,7 +75,7 @@ class Controller extends BaseController
$bag = new ParameterBag();
try {
$page = (int)request()->get('page');
} catch (ContainerExceptionInterface|NotFoundExceptionInterface $e) {
} catch (ContainerExceptionInterface | NotFoundExceptionInterface $e) {
$page = 1;
}
@@ -104,7 +104,7 @@ class Controller extends BaseController
if (null !== $date) {
try {
$obj = Carbon::parse($date);
} catch (InvalidDateException|InvalidFormatException $e) {
} catch (InvalidDateException | InvalidFormatException $e) {
// don't care
app('log')->warning(sprintf('Ignored invalid date "%s" in API v2 controller parameter check: %s', substr($date, 0, 20), $e->getMessage()));
}
@@ -136,12 +136,13 @@ class Controller extends BaseController
* @param string $key
* @param LengthAwarePaginator $paginator
* @param AbstractTransformer $transformer
*
* @return array
*/
final protected function jsonApiList(string $key, LengthAwarePaginator $paginator, AbstractTransformer $transformer): array
{
$manager = new Manager();
$baseUrl = request()->getSchemeAndHttpHost().'/api/v2';
$baseUrl = request()->getSchemeAndHttpHost() . '/api/v2';
$manager->setSerializer(new JsonApiSerializer($baseUrl));
$objects = $paginator->getCollection();
@@ -162,18 +163,20 @@ class Controller extends BaseController
* @param string $key
* @param Model $object
* @param AbstractTransformer $transformer
*
* @return array
*/
final protected function jsonApiObject(string $key, Model $object, AbstractTransformer $transformer): array
{
// create some objects:
$manager = new Manager();
$baseUrl = request()->getSchemeAndHttpHost().'/api/v2';
$baseUrl = request()->getSchemeAndHttpHost() . '/api/v2';
$manager->setSerializer(new JsonApiSerializer($baseUrl));
$transformer->collectMetaData(new Collection([$object]));
$resource = new Item($object, $transformer, $key);
return $manager->createData($resource)->toArray();
}
}

View File

@@ -48,6 +48,7 @@ class SumController extends Controller
$this->middleware(
function ($request, $next) {
$this->repository = app(BillRepositoryInterface::class);
return $next($request);
}
);
@@ -58,6 +59,7 @@ class SumController extends Controller
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v2)#/transactions-sum/getBillsPaidTrSum
*
* @param DateRequest $request
*
* @return JsonResponse
*/
public function paid(DateRequest $request): JsonResponse
@@ -75,6 +77,7 @@ class SumController extends Controller
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v2)#/transactions-sum/getBillsUnpaidTrSum
*
* @param DateRequest $request
*
* @return JsonResponse
*/
public function unpaid(DateRequest $request): JsonResponse

View File

@@ -41,6 +41,7 @@ class ListController extends Controller
$this->middleware(
function ($request, $next) {
$this->repository = app(BudgetRepositoryInterface::class);
return $next($request);
}
);
@@ -51,6 +52,7 @@ class ListController extends Controller
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v2)#/budgets/listBudgets
*
* @param Request $request
*
* @return JsonResponse
*/
public function index(Request $request): JsonResponse
@@ -61,6 +63,7 @@ class ListController extends Controller
$paginator = new LengthAwarePaginator($collection, $total, $this->pageSize, $this->parameters->get('page'));
$transformer = new BudgetTransformer();
return response()
->api($this->jsonApiList('budgets', $paginator, $transformer))
->header('Content-Type', self::CONTENT_TYPE);

View File

@@ -48,6 +48,7 @@ class ShowController extends Controller
$this->middleware(
function ($request, $next) {
$this->repository = app(BudgetRepositoryInterface::class);
return $next($request);
}
);

View File

@@ -48,6 +48,7 @@ class SumController extends Controller
$this->middleware(
function ($request, $next) {
$this->repository = app(BudgetRepositoryInterface::class);
return $next($request);
}
);
@@ -58,6 +59,7 @@ class SumController extends Controller
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v2)#/budgets/getBudgetedForBudget
*
* @param DateRequest $request
*
* @return JsonResponse
*/
public function budgeted(DateRequest $request): JsonResponse
@@ -72,7 +74,9 @@ class SumController extends Controller
/**
* This endpoint is documented at:
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v2)#/budgets/getSpentForBudget
*
* @param DateRequest $request
*
* @return JsonResponse
*/
public function spent(DateRequest $request): JsonResponse

View File

@@ -42,6 +42,7 @@ class ListController extends Controller
$this->middleware(
function ($request, $next) {
$this->repository = app(BudgetLimitRepositoryInterface::class);
return $next($request);
}
);
@@ -60,6 +61,7 @@ class ListController extends Controller
$paginator = new LengthAwarePaginator($collection, $total, $this->pageSize, $this->parameters->get('page'));
$transformer = new BudgetLimitTransformer();
return response()
->api($this->jsonApiList('budget_limits', $paginator, $transformer))
->header('Content-Type', self::CONTENT_TYPE);

View File

@@ -48,6 +48,7 @@ class NetWorthController extends Controller
function ($request, $next) {
$this->netWorth = app(NetWorthInterface::class);
$this->netWorth->setUser(auth()->user());
return $next($request);
}
);
@@ -56,7 +57,9 @@ class NetWorthController extends Controller
/**
* This endpoint is documented at:
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v2)#/net-worth/getNetWorth
*
* @param SingleDateRequest $request
*
* @return JsonResponse
*/
public function get(SingleDateRequest $request): JsonResponse

View File

@@ -37,7 +37,9 @@ class PreferencesController extends Controller
/**
* This endpoint is documented at:
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v2)#/preferences/getPreference
*
* @param Preference $preference
*
* @return JsonResponse
*/
public function get(Preference $preference): JsonResponse

View File

@@ -46,6 +46,7 @@ class AccountController extends Controller
*
* @param ListRequest $request
* @param Account $account
*
* @return JsonResponse
*/
public function listTransactions(ListRequest $request, Account $account): JsonResponse

View File

@@ -60,6 +60,7 @@ class AutocompleteRequest extends FormRequest
$array = array_diff($array, [AccountType::INITIAL_BALANCE, AccountType::RECONCILIATION]);
/** @var User $user */
$user = auth()->user();
return [
'types' => $array,
'query' => $this->convertString('query'),

View File

@@ -25,12 +25,14 @@ declare(strict_types=1);
namespace FireflyIII\Api\V2\Response\Sum;
use Closure;
use FireflyIII\Exceptions\FireflyException;
use FireflyIII\Models\TransactionCurrency;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Collection;
/**
* Class AutoSum
*
* @deprecated
*/
class AutoSum
@@ -39,7 +41,9 @@ class AutoSum
* @param Collection $objects
* @param Closure $getCurrency
* @param Closure $getSum
*
* @return array
* @throws FireflyException
*/
public function autoSum(Collection $objects, Closure $getCurrency, Closure $getSum): array
{
@@ -64,6 +68,6 @@ class AutoSum
}
var_dump(array_values($return));
exit;
throw new FireflyException('Not implemented');
}
}

View File

@@ -23,6 +23,7 @@ declare(strict_types=1);
namespace FireflyIII\Console\Commands\Correction;
use FireflyIII\Console\Commands\ShowsFriendlyMessages;
use FireflyIII\Models\AutoBudget;
use FireflyIII\Models\AvailableBudget;
use FireflyIII\Models\Bill;
@@ -39,22 +40,12 @@ use Illuminate\Console\Command;
*/
class CorrectAmounts extends Command
{
/**
* The console command description.
*
* @var string
*/
use ShowsFriendlyMessages;
protected $description = 'This command makes sure positive and negative amounts are recorded correctly.';
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'firefly-iii:fix-amount-pos-neg';
/**
* Execute the console command.
*
* @return int
*/
public function handle(): int
@@ -90,7 +81,8 @@ class CorrectAmounts extends Command
$set = AutoBudget::where('amount', '<', 0)->get();
$count = $set->count();
if (0 === $count) {
$this->info('Correct: All auto budget amounts are positive.');
$this->friendlyPositive('All auto budget amounts are positive.');
return;
}
/** @var AutoBudget $item */
@@ -98,7 +90,7 @@ class CorrectAmounts extends Command
$item->amount = app('steam')->positive((string)$item->amount);
$item->save();
}
$this->line(sprintf('Corrected %d auto budget amount(s).', $count));
$this->friendlyInfo(sprintf('Corrected %d auto budget amount(s).', $count));
}
/**
@@ -109,7 +101,8 @@ class CorrectAmounts extends Command
$set = AvailableBudget::where('amount', '<', 0)->get();
$count = $set->count();
if (0 === $count) {
$this->info('Correct: All available budget amounts are positive.');
$this->friendlyPositive('All available budget amounts are positive.');
return;
}
/** @var AvailableBudget $item */
@@ -117,7 +110,7 @@ class CorrectAmounts extends Command
$item->amount = app('steam')->positive((string)$item->amount);
$item->save();
}
$this->line(sprintf('Corrected %d available budget amount(s).', $count));
$this->friendlyInfo(sprintf('Corrected %d available budget amount(s).', $count));
}
/**
@@ -128,7 +121,8 @@ class CorrectAmounts extends Command
$set = Bill::where('amount_min', '<', 0)->orWhere('amount_max', '<', 0)->get();
$count = $set->count();
if (0 === $count) {
$this->info('Correct: All bill amounts are positive.');
$this->friendlyPositive('All bill amounts are positive.');
return;
}
/** @var Bill $item */
@@ -137,6 +131,7 @@ class CorrectAmounts extends Command
$item->amount_max = app('steam')->positive((string)$item->amount_max);
$item->save();
}
$this->friendlyInfo(sprintf('Corrected %d bill amount(s).', $count));
}
/**
@@ -147,7 +142,8 @@ class CorrectAmounts extends Command
$set = BudgetLimit::where('amount', '<', 0)->get();
$count = $set->count();
if (0 === $count) {
$this->info('Correct: All budget limit amounts are positive.');
$this->friendlyPositive('All budget limit amounts are positive.');
return;
}
/** @var BudgetLimit $item */
@@ -155,7 +151,7 @@ class CorrectAmounts extends Command
$item->amount = app('steam')->positive((string)$item->amount);
$item->save();
}
$this->line(sprintf('Corrected %d budget limit amount(s).', $count));
$this->friendlyInfo(sprintf('Corrected %d budget limit amount(s).', $count));
}
/**
@@ -166,7 +162,8 @@ class CorrectAmounts extends Command
$set = CurrencyExchangeRate::where('rate', '<', 0)->get();
$count = $set->count();
if (0 === $count) {
$this->info('Correct: All currency exchange rates are positive.');
$this->friendlyPositive('All currency exchange rates are positive.');
return;
}
/** @var BudgetLimit $item */
@@ -174,7 +171,27 @@ class CorrectAmounts extends Command
$item->rate = app('steam')->positive((string)$item->rate);
$item->save();
}
$this->line(sprintf('Corrected %d currency exchange rate(s).', $count));
$this->friendlyInfo(sprintf('Corrected %d currency exchange rate(s).', $count));
}
/**
* @return void
*/
private function fixRepetitions(): void
{
$set = PiggyBankRepetition::where('currentamount', '<', 0)->get();
$count = $set->count();
if (0 === $count) {
$this->friendlyPositive('All piggy bank repetition amounts are positive.');
return;
}
/** @var PiggyBankRepetition $item */
foreach ($set as $item) {
$item->currentamount = app('steam')->positive((string)$item->currentamount);
$item->save();
}
$this->friendlyInfo(sprintf('Corrected %d piggy bank repetition amount(s).', $count));
}
/**
@@ -185,7 +202,8 @@ class CorrectAmounts extends Command
$set = PiggyBank::where('targetamount', '<', 0)->get();
$count = $set->count();
if (0 === $count) {
$this->info('Correct: All piggy bank amounts are positive.');
$this->friendlyPositive('All piggy bank amounts are positive.');
return;
}
/** @var PiggyBankRepetition $item */
@@ -193,7 +211,7 @@ class CorrectAmounts extends Command
$item->targetamount = app('steam')->positive((string)$item->targetamount);
$item->save();
}
$this->line(sprintf('Corrected %d piggy bank amount(s).', $count));
$this->friendlyInfo(sprintf('Corrected %d piggy bank amount(s).', $count));
}
/**
@@ -206,7 +224,8 @@ class CorrectAmounts extends Command
->get();
$count = $set->count();
if (0 === $count) {
$this->info('Correct: All recurring transaction amounts are positive.');
$this->friendlyPositive('All recurring transaction amounts are positive.');
return;
}
/** @var PiggyBankRepetition $item */
@@ -215,26 +234,7 @@ class CorrectAmounts extends Command
$item->foreign_amount = app('steam')->positive((string)$item->foreign_amount);
$item->save();
}
$this->line(sprintf('Corrected %d recurring transaction amount(s).', $count));
}
/**
* @return void
*/
private function fixRepetitions(): void
{
$set = PiggyBankRepetition::where('currentamount', '<', 0)->get();
$count = $set->count();
if (0 === $count) {
$this->info('Correct: All piggy bank repetition amounts are positive.');
return;
}
/** @var PiggyBankRepetition $item */
foreach ($set as $item) {
$item->currentamount = app('steam')->positive((string)$item->currentamount);
$item->save();
}
$this->line(sprintf('Corrected %d piggy bank repetition amount(s).', $count));
$this->friendlyInfo(sprintf('Corrected %d recurring transaction amount(s).', $count));
}
/**
@@ -254,10 +254,11 @@ class CorrectAmounts extends Command
}
}
if (0 === $fixed) {
$this->info('Correct: All rule trigger amounts are positive.');
$this->friendlyPositive('All rule trigger amounts are positive.');
return;
}
$this->line(sprintf('Corrected %d rule trigger amount(s).', $fixed));
$this->friendlyInfo(sprintf('Corrected %d rule trigger amount(s).', $fixed));
}
}

View File

@@ -24,6 +24,7 @@ declare(strict_types=1);
namespace FireflyIII\Console\Commands\Correction;
use Artisan;
use FireflyIII\Console\Commands\ShowsFriendlyMessages;
use Illuminate\Console\Command;
use Schema;
@@ -34,17 +35,9 @@ use Schema;
*/
class CorrectDatabase extends Command
{
/**
* The console command description.
*
* @var string
*/
use ShowsFriendlyMessages;
protected $description = 'Will correct the integrity of your database, if necessary.';
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'firefly-iii:correct-database';
/**
@@ -52,10 +45,10 @@ class CorrectDatabase extends Command
*/
public function handle(): int
{
$this->line('Handle Firefly III database correction commands.');
// if table does not exist, return false
if (!Schema::hasTable('users')) {
$this->error('No "users"-table, will not continue.');
$this->friendlyError('No "users"-table, will not continue.');
return 1;
}
$commands = [
@@ -86,7 +79,7 @@ class CorrectDatabase extends Command
'firefly-iii:trigger-credit-recalculation',
];
foreach ($commands as $command) {
$this->line(sprintf('Now executing command "%s"', $command));
$this->friendlyLine(sprintf('Now executing command "%s"', $command));
$this->call($command);
}

Some files were not shown because too many files have changed in this diff Show More