Compare commits

...

856 Commits

Author SHA1 Message Date
github-actions
9ecb414b02 Auto commit for release 'develop' on 2024-03-14 2024-03-14 01:29:53 +01:00
James Cole
ad4f908c24 CI will stop complaining about code base, bi-weekly release picks this up. 2024-03-13 06:52:16 +01:00
James Cole
025f739442 Reformat some code. 2024-03-13 06:51:31 +01:00
James Cole
6df7354c48 Rebuild frontend cause lazy. 2024-03-13 06:51:22 +01:00
James Cole
3f77c845ca Add last activity column 2024-03-13 06:50:08 +01:00
James Cole
d4771f7a5c Remove old configuration file. 2024-03-13 06:29:39 +01:00
James Cole
ec4e2bfa4f Fix https://github.com/firefly-iii/firefly-iii/issues/8663 2024-03-12 20:36:31 +01:00
github-actions
dfdbfae4b5 Auto commit for release 'develop' on 2024-03-11 2024-03-11 06:17:46 +01:00
James Cole
349d38b956 Merge branch 'main' into develop 2024-03-11 06:12:38 +01:00
James Cole
2267aa3ac4 Fix workflow 2024-03-11 06:12:29 +01:00
James Cole
2323aa454e Add git keep 2024-03-11 06:10:17 +01:00
James Cole
8b3317b665 Merge pull request #8658 from firefly-iii/dependabot/composer/develop/symfony/expression-language-7.0.3 2024-03-11 05:26:48 +01:00
James Cole
15f893c343 Merge pull request #8657 from firefly-iii/dependabot/npm_and_yarn/develop/alpinejs-3.13.7 2024-03-11 05:26:21 +01:00
James Cole
309b3e765e Merge pull request #8656 from firefly-iii/dependabot/npm_and_yarn/develop/i18next-23.10.1 2024-03-11 05:26:12 +01:00
dependabot[bot]
d3fad06e00 Bump symfony/expression-language from 6.4.3 to 7.0.3
Bumps [symfony/expression-language](https://github.com/symfony/expression-language) from 6.4.3 to 7.0.3.
- [Release notes](https://github.com/symfony/expression-language/releases)
- [Changelog](https://github.com/symfony/expression-language/blob/7.0/CHANGELOG.md)
- [Commits](https://github.com/symfony/expression-language/compare/v6.4.3...v7.0.3)

---
updated-dependencies:
- dependency-name: symfony/expression-language
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-11 03:55:59 +00:00
dependabot[bot]
834f24c99c Bump alpinejs from 3.13.6 to 3.13.7
Bumps [alpinejs](https://github.com/alpinejs/alpine/tree/HEAD/packages/alpinejs) from 3.13.6 to 3.13.7.
- [Release notes](https://github.com/alpinejs/alpine/releases)
- [Commits](https://github.com/alpinejs/alpine/commits/v3.13.7/packages/alpinejs)

---
updated-dependencies:
- dependency-name: alpinejs
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-11 03:39:56 +00:00
dependabot[bot]
35291e1298 Bump i18next from 23.10.0 to 23.10.1
Bumps [i18next](https://github.com/i18next/i18next) from 23.10.0 to 23.10.1.
- [Release notes](https://github.com/i18next/i18next/releases)
- [Changelog](https://github.com/i18next/i18next/blob/master/CHANGELOG.md)
- [Commits](https://github.com/i18next/i18next/compare/v23.10.0...v23.10.1)

---
updated-dependencies:
- dependency-name: i18next
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-11 03:39:44 +00:00
James Cole
ac4e9dcbc5 Code cleanup. 2024-03-10 17:15:38 +01:00
James Cole
d57806f2ba Drop hashes 2024-03-10 16:52:59 +01:00
James Cole
3b005c317d Remove 'strict-dynamic' 2024-03-10 16:49:16 +01:00
James Cole
e91903fed2 Different orderRemove self 2024-03-10 16:47:59 +01:00
James Cole
fee2002b0f Remove self 2024-03-10 16:47:36 +01:00
James Cole
f12e502eb8 Fix header 2024-03-10 16:46:33 +01:00
James Cole
24e62b1cee Fix header 2024-03-10 16:45:19 +01:00
James Cole
f559ec73e0 Add exception catch. 2024-03-10 16:44:41 +01:00
James Cole
530b501fcf Disable engine. [skip ci] 2024-03-10 11:57:54 +01:00
James Cole
d5ea78025e Fix a few small bugs and rearrange code. 2024-03-10 11:57:21 +01:00
James Cole
3413b9b5b5 Refresh notes in various actions. 2024-03-10 08:11:58 +01:00
James Cole
0b45c1aa76 Better validation, can now also use notes in expression. 2024-03-10 08:08:26 +01:00
James Cole
5718d1690a Add debug logging 2024-03-10 08:07:47 +01:00
James Cole
67b16cc070 Overrule "constant" and "enum" actions. 2024-03-10 06:46:38 +01:00
James Cole
5746ac3247 Add feature flag for expression engine and disable it by default. 2024-03-10 06:46:24 +01:00
James Cole
8a2c520b11 Update packages 2024-03-10 06:29:24 +01:00
James Cole
f46c14df8c Validation over GET, take precedence over other routes 2024-03-10 06:29:15 +01:00
James Cole
009fbba491 Drop "failedValidation" method because this is handled by the system already. 2024-03-10 06:28:58 +01:00
James Cole
53d84347c2 sprintf the rules 2024-03-10 06:24:32 +01:00
James Cole
1961487055 Reformat code. 2024-03-10 06:17:31 +01:00
James Cole
c9ce5df74b Merge pull request #8650 from michaelhthomas/feat/expression-engine
[feat] Rules Expression Engine
2024-03-10 06:04:06 +01:00
Michael Thomas
1371b6773e chore: ignore PHPMD unused parameter errors 2024-03-09 14:09:36 -05:00
James Cole
b9f1baf150 Update packages 2024-03-09 19:50:46 +01:00
James Cole
66b322e844 Fix methods and clean up code. 2024-03-09 19:46:16 +01:00
James Cole
487b65b669 Rebuild frontend. 2024-03-09 19:33:43 +01:00
James Cole
9078781d61 New endpoint, fixed logo, better account overview. 2024-03-09 19:31:27 +01:00
Michael Thomas
1ec830521a fix: resolve PHPstan errors 2024-03-09 13:02:04 -05:00
Michael Thomas
c4bf2aae7d fix: migrate action expression validation to separate rule class 2024-03-09 12:57:34 -05:00
Michael Thomas
69ca88d9f8 fix(api): use kebab case route for validate-expression endpoint 2024-03-09 12:07:20 -05:00
Michael Thomas
b38b7b2534 fix: drop unnecessary changes to composer.lock 2024-03-09 12:05:56 -05:00
Michael Thomas
f19bfc3b4b fix(ActionExpression): update list of valid variable names to reflect actual values 2024-03-09 12:03:46 -05:00
Michael Thomas
d22f9c09d7 fix(RuleAction): add return type to getValue 2024-03-09 12:02:47 -05:00
Michael Thomas
fc2da9eb42 fix(ExpressionController): remove unnecessary rule repository 2024-03-09 11:27:21 -05:00
James Cole
f2c9e20aef Fix other pages 2024-03-09 13:35:22 +01:00
James Cole
16b8ca2746 Add some spacing 2024-03-09 13:20:43 +01:00
James Cole
46ea074821 Merge branch 'main' into develop 2024-03-09 13:20:03 +01:00
James Cole
d2c89781e2 Rebuild frontend 2024-03-09 13:19:39 +01:00
James Cole
e54d711891 Improve colors. 2024-03-09 13:17:58 +01:00
James Cole
84d3ad4764 Remove unused local files. 2024-03-09 13:12:33 +01:00
James Cole
b908951a2d Refactor views 2024-03-09 13:08:23 +01:00
James Cole
8b87deea58 Refactor error pages 2024-03-09 13:03:02 +01:00
James Cole
0d7325b3dc Fix CSS and JS (on dashboard) 2024-03-09 12:21:45 +01:00
James Cole
a3fd99a498 Rename (unused) files. 2024-03-09 12:11:18 +01:00
James Cole
0ff405d1e0 Refactor views and CSS 2024-03-09 12:11:06 +01:00
James Cole
46a60af966 Clean up authentication views. 2024-03-09 08:13:53 +01:00
James Cole
591c9e3b39 Move old login screen. 2024-03-09 07:00:35 +01:00
James Cole
c30461b20b Update lock.yml
Signed-off-by: James Cole <james@firefly-iii.org>
2024-03-09 05:20:30 +01:00
James Cole
2c3f86d9bc Update lock.yml
Signed-off-by: James Cole <james@firefly-iii.org>
2024-03-09 05:19:17 +01:00
Michael Thomas
34349e4475 chore: fix typo 2024-03-07 21:37:24 -05:00
Michael Thomas
6acd5be5dc chore: remove accidental changes 2024-03-07 21:10:11 -05:00
Michael Thomas
55a2b4e789 feat: make all transaction journal variables globals
removes redundant reference to the `transaction` object by making all its properties global
2024-03-07 20:58:43 -05:00
Michael Thomas
f41397eb43 refactor: add method on RuleAction to compute action value 2024-03-07 19:02:40 -05:00
Michael Thomas
41fc1e8f82 Merge remote-tracking branch 'upstream/develop' into feat/expression-engine 2024-03-07 13:09:43 -05:00
Michael Thomas
bee219ebf7 refactor: inject ExpressionLanguage singleton using DI 2024-03-07 13:00:57 -05:00
Michael Thomas
438f602961 feat: surface expression validation errors when creating or updating rules 2024-03-07 12:23:32 -05:00
James Cole
429e72e681 Merge branch 'develop' of github.com:firefly-iii/firefly-iii into develop 2024-03-07 06:08:09 +01:00
James Cole
7a134781f2 Fix route name. 2024-03-07 06:01:39 +01:00
Michael Thomas
b572c1dcd3 Merge remote-tracking branch 'upstream/main' into feat/expression-engine 2024-03-06 21:38:40 -05:00
Michael Thomas
95593f847b feat: update all rules to support action value expressions 2024-03-06 20:54:50 -05:00
github-actions
b82fcbd97b Auto commit for release 'develop' on 2024-03-07 2024-03-07 01:29:08 +01:00
Michael Thomas
daddee7806 feat: support action expression parsing, validation, and evaluation 2024-03-06 17:50:16 -05:00
James Cole
930a08ec90 Better index for accounts. 2024-03-06 19:54:09 +01:00
James Cole
fd2edf3b23 Various code cleanup. 2024-03-06 07:16:01 +01:00
James Cole
0597255c08 Fix #8632 2024-03-06 07:01:21 +01:00
James Cole
955ab38a85 Merge pull request #8634 from WardenJakx/develop 2024-03-06 06:10:29 +01:00
WardenJakx
1311a0db8b fix broken link 2024-03-05 22:35:23 -05:00
James Cole
0ce9ee6a6c Ignore phpstan error [skip ci] 2024-03-05 19:39:20 +01:00
James Cole
3a339382d4 Add a button to go back to the v1 layout. 2024-03-05 19:38:45 +01:00
James Cole
a5b15bbc16 Rebuild frontend for basic account list. 2024-03-05 05:54:04 +01:00
James Cole
fbf89fd514 Merge branch 'develop' of github.com:firefly-iii/firefly-iii into develop 2024-03-04 20:42:05 +01:00
James Cole
b3223feba2 Add debug log 2024-03-04 20:41:59 +01:00
James Cole
88a9bc379e Expand account list 2024-03-04 20:41:34 +01:00
James Cole
b442b91b7c Merge pull request #8621 from firefly-iii/dependabot/composer/develop/barryvdh/laravel-ide-helper-3.0.0 2024-03-04 06:01:38 +01:00
dependabot[bot]
9fadbbe087 Bump barryvdh/laravel-ide-helper from 2.15.1 to 3.0.0
Bumps [barryvdh/laravel-ide-helper](https://github.com/barryvdh/laravel-ide-helper) from 2.15.1 to 3.0.0.
- [Release notes](https://github.com/barryvdh/laravel-ide-helper/releases)
- [Changelog](https://github.com/barryvdh/laravel-ide-helper/blob/master/CHANGELOG.md)
- [Commits](https://github.com/barryvdh/laravel-ide-helper/compare/v2.15.1...v3.0.0)

---
updated-dependencies:
- dependency-name: barryvdh/laravel-ide-helper
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-04 03:49:45 +00:00
github-actions
1ef7239276 Auto commit for release 'develop' on 2024-03-04 2024-03-04 01:30:26 +01:00
James Cole
ea573e9434 Remove some. 2024-03-03 20:07:47 +01:00
James Cole
34fa24e4a8 Remove some indices 2024-03-03 20:01:35 +01:00
James Cole
a1be4a4d8a Add indices 2024-03-03 19:58:51 +01:00
James Cole
b8e8af1e2a Update database version. 2024-03-03 17:58:13 +01:00
James Cole
c13a3fb30c Add missing indices. 2024-03-03 17:55:59 +01:00
James Cole
cb8fa4e1f4 Fix https://github.com/firefly-iii/firefly-iii/issues/8616 2024-03-03 13:45:05 +01:00
James Cole
bf7f4f9887 Fix https://github.com/firefly-iii/firefly-iii/issues/8597 2024-03-03 10:13:49 +01:00
James Cole
af48548e81 Fix https://github.com/firefly-iii/firefly-iii/issues/8608 2024-03-02 19:20:54 +01:00
github-actions
90d58ec8fa Auto commit for release 'v6.1.10' on 2024-03-02 2024-03-02 17:12:03 +01:00
github-actions
e92dd7f464 Merge branch 'develop' 2024-03-02 16:08:11 +00:00
James Cole
3bdf9eeed2 Jump to v34 2024-03-02 17:06:47 +01:00
James Cole
558ac7b0da Update changelog. 2024-03-02 16:53:19 +01:00
James Cole
9d0488ffbc fix phpstan issues. 2024-02-29 06:39:58 +01:00
James Cole
d7fa8b283e Merge branch 'develop' of github.com:firefly-iii/firefly-iii into develop 2024-02-29 06:27:24 +01:00
James Cole
a0097bd613 Fix issues with available budgets. 2024-02-29 06:26:23 +01:00
github-actions
ffc2156e5f Auto commit for release 'develop' on 2024-02-29 2024-02-29 01:28:57 +01:00
James Cole
e0a89bb5fe Rebuild JS 2024-02-26 20:08:14 +01:00
James Cole
647179cd3c Rebuild JS 2024-02-26 19:56:19 +01:00
James Cole
5106ccdbd7 Merge branch 'main' into develop 2024-02-26 19:55:14 +01:00
James Cole
7103098fe7 Better error handling 2024-02-26 19:54:45 +01:00
James Cole
f8072f0bfc Merge pull request #8588 from firefly-iii/dependabot/github_actions/JC5/firefly-iii-dev-33
Bump JC5/firefly-iii-dev from 32 to 33
2024-02-26 06:17:04 +01:00
dependabot[bot]
96ac3a95c8 Bump JC5/firefly-iii-dev from 32 to 33
Bumps [JC5/firefly-iii-dev](https://github.com/jc5/firefly-iii-dev) from 32 to 33.
- [Commits](https://github.com/jc5/firefly-iii-dev/compare/v32...v33)

---
updated-dependencies:
- dependency-name: JC5/firefly-iii-dev
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-26 03:23:03 +00:00
github-actions
cd713dc40f Auto commit for release 'develop' on 2024-02-26 2024-02-26 01:29:50 +01:00
James Cole
d9fba39d80 Fix detection of transaction type. 2024-02-25 18:24:10 +01:00
James Cole
2564470197 Update source account detection. 2024-02-25 18:14:30 +01:00
James Cole
9222c82af0 Expand frontend, first attempt at sorting. 2024-02-25 18:09:52 +01:00
James Cole
243f283bfd Fix tests 2024-02-24 08:36:57 +01:00
James Cole
5b60aaecc0 Update translations. 2024-02-24 08:19:23 +01:00
James Cole
20a4caec60 Add some missing translations 2024-02-24 06:03:34 +01:00
James Cole
99cc096b71 Fix https://github.com/firefly-iii/firefly-iii/issues/8578 2024-02-24 05:38:02 +01:00
James Cole
5626d1c56d Fix https://github.com/firefly-iii/firefly-iii/issues/8575 2024-02-23 17:06:25 +01:00
James Cole
68c9c4ec3c PHPStorm can order methods by alphabet, who knew. 2024-02-22 20:11:09 +01:00
James Cole
f9d4a43e05 This should fix the ci issues. 2024-02-22 06:57:57 +01:00
James Cole
92e7f344e0 Refresh update code. 2024-02-22 06:52:58 +01:00
github-actions
89ce2838d5 Auto commit for release 'develop' on 2024-02-22 2024-02-22 01:29:01 +01:00
James Cole
356b217692 Add missing array 2024-02-20 20:33:33 +01:00
James Cole
950e39b753 Clean up methods. 2024-02-20 20:05:43 +01:00
James Cole
8f14979717 Clean up rule set. 2024-02-20 19:59:55 +01:00
James Cole
aa2afd162e Fix https://github.com/orgs/firefly-iii/discussions/8557 2024-02-20 19:51:13 +01:00
James Cole
fe33352ec1 Fix translation for https://github.com/firefly-iii/firefly-iii/issues/8555 2024-02-19 05:57:06 +01:00
github-actions
65c5249815 Auto commit for release 'develop' on 2024-02-19 2024-02-19 01:30:23 +01:00
James Cole
b1afaea1aa Various updates. 2024-02-18 11:35:08 +01:00
James Cole
997dc3814b Add host header validation 2024-02-17 08:18:49 +01:00
James Cole
b37b5b86d4 Fix https://github.com/firefly-iii/firefly-iii/issues/8544 2024-02-16 20:42:04 +01:00
github-actions
b13a4e1016 Auto commit for release 'develop' on 2024-02-15 2024-02-15 01:29:20 +01:00
James Cole
7897ebc4d5 Update code 2024-02-14 19:47:35 +01:00
James Cole
ac17b82d85 Do not complain when the category is already set. 2024-02-14 19:34:36 +01:00
James Cole
1b1712d998 Make sure that errors in the incoming webhook url are caught. 2024-02-14 19:32:15 +01:00
James Cole
a2c0d9f7d0 The update checker can handle the development releases 2024-02-14 06:34:38 +01:00
James Cole
5b68b25c85 Merge pull request #8538 from firefly-iii/dependabot/composer/develop/phpunit/phpunit-11.0.3
Bump phpunit/phpunit from 10.5.10 to 11.0.3
2024-02-12 19:52:51 +01:00
dependabot[bot]
d3a215b575 Bump phpunit/phpunit from 10.5.10 to 11.0.3
Bumps [phpunit/phpunit](https://github.com/sebastianbergmann/phpunit) from 10.5.10 to 11.0.3.
- [Changelog](https://github.com/sebastianbergmann/phpunit/blob/11.0.3/ChangeLog-11.0.md)
- [Commits](https://github.com/sebastianbergmann/phpunit/compare/10.5.10...11.0.3)

---
updated-dependencies:
- dependency-name: phpunit/phpunit
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-12 03:35:09 +00:00
github-actions
5c352a0d3e Auto commit for release 'develop' on 2024-02-12 2024-02-12 01:29:15 +01:00
James Cole
fded058ea6 Rebuild frontend. 2024-02-11 19:16:27 +01:00
James Cole
99f041b114 Editable up until date. 2024-02-11 10:43:14 +01:00
James Cole
283b594995 Merge branch 'develop' of github.com:firefly-iii/firefly-iii into develop
# Conflicts:
#	app/Helpers/Collector/GroupCollector.php
2024-02-10 08:29:59 +01:00
James Cole
723aa65e7a Inline edit for v2 2024-02-10 08:28:59 +01:00
github-actions
64d315ad51 Auto commit for release 'develop' on 2024-02-08 2024-02-08 01:29:34 +01:00
James Cole
d0844356cb Fix https://github.com/firefly-iii/firefly-iii/issues/8521 2024-02-07 06:14:40 +01:00
James Cole
ba8d65835a Remove unused translation. 2024-02-07 06:02:43 +01:00
github-actions
fa3343f437 Auto commit for release 'v6.1.9' on 2024-02-05 2024-02-05 19:53:12 +01:00
James Cole
c5b8a951d2 Update changelog for new release. 2024-02-05 06:37:16 +01:00
James Cole
20b1fc05cb Don't put a "v" in front of the version when it's a develop version. 2024-02-05 06:29:19 +01:00
github-actions
ab441d7d0c Auto commit for release 'develop' on 2024-02-05 2024-02-05 01:31:01 +01:00
James Cole
b621d14bdf Merge branch 'main' into develop 2024-02-04 06:42:12 +01:00
James Cole
94730e998b Better workflow for prune. 2024-02-04 06:39:55 +01:00
James Cole
23c2f76e52 Merge branch 'main' into develop 2024-02-04 06:36:42 +01:00
James Cole
40196d48b2 Back to monday/thursday 2024-02-04 06:36:32 +01:00
James Cole
ef3c2eb701 Merge branch 'develop' of github.com:firefly-iii/firefly-iii into develop 2024-02-04 06:35:50 +01:00
github-actions
4f994a2795 Auto commit for release 'develop' on 2024-02-04 2024-02-04 01:31:06 +01:00
James Cole
807e575dac Merge pull request #8502 from likuilin/issue-8501
Fix incorrect ID in bulk delete tx URL
2024-02-03 20:35:55 +01:00
kuilin
04b1465eb7 Fix incorrect ID in bulk delete tx URL
Fixes #8501

Signed-off-by: kuilin <kuilin@gmail.com>
2024-02-03 14:23:26 -05:00
James Cole
6f79ab2a70 Merge branch 'main' into develop 2024-02-03 20:00:52 +01:00
James Cole
c1469f016e Add version to develop branch. 2024-02-03 20:00:41 +01:00
James Cole
373ec934df Update version, fix https://github.com/firefly-iii/firefly-iii/issues/8499 2024-02-03 19:04:25 +01:00
github-actions
abd34ba1dc Auto commit for release 'v6.1.8' on 2024-02-03 2024-02-03 16:38:48 +01:00
James Cole
89b7596caf Add fixed issue to changelog. 2024-02-03 16:31:58 +01:00
James Cole
3543548ba0 Fix https://github.com/firefly-iii/firefly-iii/issues/8497 2024-02-03 13:09:44 +01:00
James Cole
a932965908 Merge branch 'main' into develop 2024-02-03 10:09:41 +01:00
James Cole
9056126328 Update release script. 2024-02-03 10:09:30 +01:00
James Cole
0e85a5123d Changelog for next release. 2024-02-03 10:08:46 +01:00
James Cole
d3f19db42d This should fix the tests again. 2024-02-03 10:08:34 +01:00
James Cole
9894d16d26 Fix https://github.com/firefly-iii/firefly-iii/issues/8493 2024-02-03 07:51:18 +01:00
James Cole
0b069bcb58 Merge branch 'main' into develop 2024-02-01 05:44:52 +01:00
James Cole
36d54c3fac Cast to string. 2024-02-01 05:44:41 +01:00
James Cole
530e48f16e Fix description. 2024-02-01 05:43:48 +01:00
github-actions
9763f9f922 Auto commit for release 'develop' on 2024-02-01 2024-02-01 01:31:55 +01:00
James Cole
bbd4d7a8ef Rebuild JS as well. 2024-01-31 07:35:43 +01:00
James Cole
bafe2ece8c Should fix message title. 2024-01-31 07:25:51 +01:00
James Cole
b2449eb726 Merge branch 'main' into develop 2024-01-31 06:38:48 +01:00
James Cole
353c345d9a Updated release script. 2024-01-31 06:38:36 +01:00
James Cole
e2461ba839 Also support redirect 2024-01-30 18:14:56 +01:00
James Cole
e199fdd2b6 Make sure the demo user can't export data. 2024-01-30 18:11:45 +01:00
James Cole
592a89d6a5 Merge pull request #8478 from firefly-iii/dependabot/github_actions/actions/github-script-7
Bump actions/github-script from 6 to 7
2024-01-30 08:31:34 +01:00
James Cole
7a7b629225 Merge pull request #8477 from firefly-iii/dependabot/github_actions/actions/checkout-4
Bump actions/checkout from 3 to 4
2024-01-30 08:31:25 +01:00
James Cole
21a4774561 Merge pull request #8476 from firefly-iii/dependabot/github_actions/actions/dependency-review-action-4
Bump actions/dependency-review-action from 3 to 4
2024-01-30 08:31:17 +01:00
James Cole
5be97bb18f Merge pull request #8475 from firefly-iii/dependabot/github_actions/JC5/firefly-iii-dev-29
Bump JC5/firefly-iii-dev from 16 to 29
2024-01-30 08:31:07 +01:00
dependabot[bot]
a12ff10550 Bump actions/github-script from 6 to 7
Bumps [actions/github-script](https://github.com/actions/github-script) from 6 to 7.
- [Release notes](https://github.com/actions/github-script/releases)
- [Commits](https://github.com/actions/github-script/compare/v6...v7)

---
updated-dependencies:
- dependency-name: actions/github-script
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-30 07:28:29 +00:00
dependabot[bot]
c808294ca1 Bump actions/checkout from 3 to 4
Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-30 07:28:25 +00:00
dependabot[bot]
9dcf264658 Bump actions/dependency-review-action from 3 to 4
Bumps [actions/dependency-review-action](https://github.com/actions/dependency-review-action) from 3 to 4.
- [Release notes](https://github.com/actions/dependency-review-action/releases)
- [Commits](https://github.com/actions/dependency-review-action/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/dependency-review-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-30 07:28:21 +00:00
dependabot[bot]
e0bbd3a810 Bump JC5/firefly-iii-dev from 16 to 29
Bumps [JC5/firefly-iii-dev](https://github.com/jc5/firefly-iii-dev) from 16 to 29.
- [Commits](https://github.com/jc5/firefly-iii-dev/compare/v16...v29)

---
updated-dependencies:
- dependency-name: JC5/firefly-iii-dev
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-30 07:28:16 +00:00
James Cole
2886a22f4e Update dependabot.yml
Signed-off-by: James Cole <james@firefly-iii.org>
2024-01-30 08:27:47 +01:00
James Cole
6f783f7662 Update stale.yml
Signed-off-by: James Cole <james@firefly-iii.org>
2024-01-30 08:24:08 +01:00
James Cole
992fdc9e27 Merge branch 'main' into develop 2024-01-30 05:41:55 +01:00
James Cole
73529c31e0 Only monday / thursday 2024-01-30 05:41:44 +01:00
github-actions
d9fc91a432 Auto commit for release 'develop' on 2024-01-30 2024-01-30 01:29:11 +01:00
James Cole
6a432e7931 Fix https://github.com/firefly-iii/firefly-iii/issues/8447 2024-01-29 19:47:00 +01:00
James Cole
26f7575ba2 Fix https://github.com/firefly-iii/firefly-iii/issues/8471 2024-01-29 19:10:24 +01:00
James Cole
b1c1bbd6c0 Fix https://github.com/firefly-iii/firefly-iii/issues/8472 2024-01-29 19:05:40 +01:00
James Cole
d40643af54 Merge branch 'main' into develop 2024-01-29 06:24:46 +01:00
James Cole
11cfefd908 Update workflow and support guide. 2024-01-29 06:24:24 +01:00
github-actions
ff2b2eec9b Auto commit for release 'develop' on 2024-01-29 2024-01-29 02:35:54 +00:00
James Cole
4f1187bf6e Fix https://github.com/firefly-iii/firefly-iii/issues/8467 2024-01-28 17:29:25 +01:00
James Cole
642539e410 Fix https://github.com/firefly-iii/firefly-iii/issues/8457 2024-01-28 16:34:17 +01:00
github-actions
1f774e0d71 Auto commit for release 'develop' on 2024-01-28 2024-01-28 13:48:09 +00:00
James Cole
1da19cde6f Merge branch 'main' into develop 2024-01-28 14:42:40 +01:00
James Cole
ac5973833e Fix phpcs before it fails anyway 2024-01-28 14:42:23 +01:00
James Cole
40b0e31d27 Merge branch 'main' into develop 2024-01-28 14:37:24 +01:00
James Cole
f56f8d72df Make sure crowdin config is correct. 2024-01-28 14:37:12 +01:00
James Cole
b47bb13558 Change some code. 2024-01-28 14:34:07 +01:00
James Cole
b4133b6512 Merge branch 'main' into develop 2024-01-28 14:33:21 +01:00
James Cole
fb20095502 Slight change in workflow. 2024-01-28 14:33:07 +01:00
James Cole
cfc23c4cb9 Merge branch 'main' into develop 2024-01-28 14:28:33 +01:00
James Cole
44701f1633 Clean up workflow. 2024-01-28 14:25:38 +01:00
James Cole
fadf799b9c Add new workflow. 2024-01-28 12:41:23 +01:00
James Cole
c22a9784ee Clean up code 2024-01-25 03:18:23 +01:00
James Cole
a6512d3d74 Add manifest to session pages. https://github.com/firefly-iii/firefly-iii/issues/8455 2024-01-25 03:18:13 +01:00
James Cole
cea2ca7532 Rebuild old and new JS. 2024-01-24 07:03:08 +01:00
James Cole
e322069bb4 Possible fix for https://github.com/firefly-iii/firefly-iii/issues/8442 2024-01-24 07:00:06 +01:00
James Cole
da7a976c4e Fix https://github.com/firefly-iii/firefly-iii/issues/8446 2024-01-23 20:21:41 +01:00
James Cole
300dba7257 Rebuild frontend for dynamic title update 2024-01-23 19:36:45 +01:00
James Cole
ec59f80fe3 Fix label actions. 2024-01-22 06:17:26 +01:00
James Cole
37aa5bcc60 Merge branch 'develop' of github.com:firefly-iii/firefly-iii into develop 2024-01-22 06:13:26 +01:00
James Cole
e50d2cb481 Add experimental menu. 2024-01-22 06:13:19 +01:00
James Cole
468709c092 Merge pull request #8438 from firefly-iii/dependabot/composer/develop/doctrine/dbal-3.7.3
Bump doctrine/dbal from 3.7.2 to 3.7.3
2024-01-22 06:12:18 +01:00
James Cole
11ced9216c Merge pull request #8439 from firefly-iii/dependabot/npm_and_yarn/develop/i18next-23.7.18
Bump i18next from 23.7.17 to 23.7.18
2024-01-22 06:12:08 +01:00
dependabot[bot]
cfa9151f45 Bump i18next from 23.7.17 to 23.7.18
Bumps [i18next](https://github.com/i18next/i18next) from 23.7.17 to 23.7.18.
- [Release notes](https://github.com/i18next/i18next/releases)
- [Changelog](https://github.com/i18next/i18next/blob/master/CHANGELOG.md)
- [Commits](https://github.com/i18next/i18next/compare/v23.7.17...v23.7.18)

---
updated-dependencies:
- dependency-name: i18next
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-22 03:59:00 +00:00
dependabot[bot]
6577224a55 Bump doctrine/dbal from 3.7.2 to 3.7.3
Bumps [doctrine/dbal](https://github.com/doctrine/dbal) from 3.7.2 to 3.7.3.
- [Release notes](https://github.com/doctrine/dbal/releases)
- [Commits](https://github.com/doctrine/dbal/compare/3.7.2...3.7.3)

---
updated-dependencies:
- dependency-name: doctrine/dbal
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-22 03:18:11 +00:00
James Cole
b4209f2e72 Enable inline edit. 2024-01-21 19:36:56 +01:00
James Cole
f045e4ea69 Fix amount 2024-01-21 18:01:00 +01:00
James Cole
4a37152aea Fix https://github.com/firefly-iii/firefly-iii/issues/8433 2024-01-21 15:58:40 +01:00
James Cole
2907db1380 Merge branch 'develop' of github.com:firefly-iii/firefly-iii into develop 2024-01-21 15:00:59 +01:00
James Cole
80a35692c5 Fix logs. 2024-01-21 15:00:51 +01:00
James Cole
1a6fe5ca3c Apparently people need to be warned. 2024-01-21 15:00:43 +01:00
James Cole
13ec3493bd Merge pull request #8432 from stevietv/patch-1
Update favicons.twig
2024-01-21 14:56:15 +01:00
Stevie Robinson
bf55e8df72 Update favicons.twig
Signed-off-by: Stevie Robinson <stevie.robinson@gmail.com>
2024-01-21 11:18:34 +01:00
James Cole
775504d812 Merge branch 'main' into develop 2024-01-21 07:35:14 +01:00
James Cole
8d6c45b68e No longer lock issues. 2024-01-21 07:35:02 +01:00
James Cole
db9094956e Support even bigger amounts for https://github.com/firefly-iii/firefly-iii/issues/8431 2024-01-21 07:24:16 +01:00
James Cole
25d02e92f4 Change issue to PR. 2024-01-20 18:30:46 +01:00
James Cole
81cb0a38f3 Add debug trigger label. 2024-01-20 16:44:10 +01:00
James Cole
e07a9d6162 Remove huntr thing. 2024-01-20 16:37:28 +01:00
James Cole
2ccbc16dfa Merge tag 'v6.1.7' into develop
v6.1.7
2024-01-20 16:30:23 +01:00
James Cole
e00addc0b0 Merge branch 'release/v6.1.7' 2024-01-20 16:30:16 +01:00
James Cole
da7a2cf0c0 Update meta data for new release. 2024-01-20 16:29:00 +01:00
James Cole
2368788405 Fix issue with "createFromFormat". 2024-01-20 08:07:27 +01:00
James Cole
f603415931 Rebuild edit script. 2024-01-20 07:09:26 +01:00
James Cole
523fa42998 Merge branch 'main' into develop 2024-01-20 07:05:27 +01:00
James Cole
e449395f3f Clean up some code. 2024-01-20 07:04:19 +01:00
James Cole
d8d8002f1e Add some debug to non strict search 2024-01-20 06:53:43 +01:00
James Cole
2570ca9573 Fix account type filter 2024-01-20 06:53:30 +01:00
James Cole
e5fdc2cbfd Merge pull request #8429 from firefly-iii/dependabot/npm_and_yarn/vite-4.5.2
Bump vite from 4.5.1 to 4.5.2
2024-01-20 06:53:12 +01:00
dependabot[bot]
0349cdbc1b Bump vite from 4.5.1 to 4.5.2
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 4.5.1 to 4.5.2.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v4.5.2/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v4.5.2/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-20 05:39:48 +00:00
James Cole
122f0309a6 Fix #8425 2024-01-19 20:23:04 +01:00
James Cole
09bff5ea4e Fix https://github.com/firefly-iii/firefly-iii/issues/8418 2024-01-18 18:57:29 +01:00
James Cole
7ea112c5e7 Fix https://github.com/firefly-iii/firefly-iii/issues/8349 and 2024-01-18 18:57:23 +01:00
James Cole
44df07a5f5 Update, rebuild, and add a new API endpoint. 2024-01-17 20:23:02 +01:00
James Cole
66b0d9d309 Merge pull request #8394 from firefly-iii/dependabot/npm_and_yarn/develop/date-fns-3.2.0 2024-01-15 05:24:53 +01:00
dependabot[bot]
6ac3d3e62c Bump date-fns from 3.1.0 to 3.2.0
Bumps [date-fns](https://github.com/date-fns/date-fns) from 3.1.0 to 3.2.0.
- [Release notes](https://github.com/date-fns/date-fns/releases)
- [Changelog](https://github.com/date-fns/date-fns/blob/main/CHANGELOG.md)
- [Commits](https://github.com/date-fns/date-fns/compare/v3.1.0...v3.2.0)

---
updated-dependencies:
- dependency-name: date-fns
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-15 03:22:07 +00:00
James Cole
925450f84c Fix https://github.com/firefly-iii/firefly-iii/issues/8390 2024-01-14 13:59:09 +01:00
James Cole
62f59c6a19 Update packages 2024-01-14 13:58:16 +01:00
James Cole
7db21612a0 Escape backticks [skip ci] 2024-01-14 11:20:43 +01:00
James Cole
2c0da2cf26 Duh, single quotes [skip ci] 2024-01-14 11:19:47 +01:00
James Cole
79484cc194 Experimental action [skip ci] 2024-01-14 11:18:17 +01:00
James Cole
6f18748c72 Merge branch 'main' into develop 2024-01-14 07:16:21 +01:00
James Cole
577824930f Attempt at newline. 2024-01-14 07:15:08 +01:00
James Cole
d614519ee7 Add necessary params. 2024-01-14 07:12:47 +01:00
James Cole
ae31041f7f Add context 2024-01-14 07:11:39 +01:00
James Cole
62c4d0cf86 new command 2024-01-14 07:07:14 +01:00
James Cole
c2ddabbad2 Expand index. 2024-01-14 07:06:55 +01:00
James Cole
458402aaff Code cleanup. 2024-01-14 05:10:05 +01:00
James Cole
5c81e98218 Add list of transactions. 2024-01-13 20:34:09 +01:00
James Cole
37a46b02f4 Fix https://github.com/firefly-iii/firefly-iii/issues/8374 2024-01-13 08:13:25 +01:00
James Cole
b3e1ecdd02 Merge branch 'main' into develop 2024-01-13 08:13:10 +01:00
James Cole
1780e6dc61 Remove label step, no longer necessary. 2024-01-13 07:55:04 +01:00
James Cole
50f346d092 Add body to secret 2024-01-13 07:54:12 +01:00
James Cole
ccc851090a Manually add comment, lock and redirect user. 2024-01-13 07:50:43 +01:00
James Cole
4605d84cc8 Add more permissions 2024-01-13 07:41:15 +01:00
James Cole
8c7ab50325 Add the action manually. 2024-01-13 07:40:01 +01:00
James Cole
908539836b Use correct string name. 2024-01-13 07:38:21 +01:00
James Cole
9f71cf966c Remove the old step. 2024-01-13 07:36:55 +01:00
James Cole
02ed47c578 Update job. Do it manually. 2024-01-13 07:36:09 +01:00
James Cole
1ddbaf0884 Merge branch 'main' into develop 2024-01-13 07:24:23 +01:00
James Cole
d3ed8c6f0f New action for issues. 2024-01-13 07:24:11 +01:00
James Cole
4f1ac2ac6f Minor code cleanup 2024-01-12 19:03:51 +01:00
James Cole
1e733f4c8b Fix https://github.com/firefly-iii/firefly-iii/issues/8377 2024-01-12 18:57:38 +01:00
James Cole
8e2546da9d Update translations. 2024-01-10 20:29:00 +01:00
James Cole
3a8162d3c5 Add button for https://github.com/firefly-iii/firefly-iii/issues/8369 2024-01-10 05:34:20 +01:00
James Cole
f7ceb75316 Merge pull request #8370 from luzpaz/typos
Fix various typos
2024-01-10 05:31:16 +01:00
luzpaz
744e193faa Fix various typos
Found via `codespell -q 3 -S "./resources/lang,./resources/assets/js/locales" -L hastable`
2024-01-10 01:12:48 +00:00
James Cole
12b0e11592 From error to debug. 2024-01-09 21:05:17 +01:00
James Cole
717f3a9e3d From info to debug 2024-01-09 21:04:12 +01:00
James Cole
b9f0682f04 Add audit entries. 2024-01-09 21:03:26 +01:00
James Cole
8792465fd5 Add validation warnings in audit logs. 2024-01-09 20:58:18 +01:00
James Cole
6fbf9a119d Change priority on audit messages. 2024-01-09 20:48:17 +01:00
James Cole
0dfa21a92e Merge branch 'main' into develop 2024-01-08 20:39:02 +01:00
James Cole
136fe8e8eb Update label-actions.yml
Signed-off-by: James Cole <james@firefly-iii.org>
2024-01-08 20:32:31 +01:00
James Cole
d510c4e31d Rebuild frontend v2 2024-01-08 20:31:35 +01:00
James Cole
c066bcc4ce Update label-actions.yml
Signed-off-by: James Cole <james@firefly-iii.org>
2024-01-08 20:30:47 +01:00
James Cole
c9e7ae1f08 Update label-actions.yml
Signed-off-by: James Cole <james@firefly-iii.org>
2024-01-08 20:25:25 +01:00
James Cole
6a9b4f4d55 Update label-actions.yml
Signed-off-by: James Cole <james@firefly-iii.org>
2024-01-08 20:20:22 +01:00
James Cole
2b5054b905 Merge branch 'develop' of github.com:firefly-iii/firefly-iii into develop 2024-01-08 20:11:39 +01:00
James Cole
0a45a2485b Small edit and show updates 2024-01-08 20:11:27 +01:00
James Cole
fcc0294d07 Smaller max size 2024-01-08 12:56:57 +01:00
James Cole
ad981c2bf0 Fix breadcrumb bg color. 2024-01-07 19:55:56 +01:00
James Cole
75a32b2f94 Expand v2 layout with experimental view. 2024-01-07 12:51:42 +01:00
James Cole
70b60f756b Rebuild frontend [skip ci] 2024-01-07 07:02:53 +01:00
James Cole
0d2ae8ae23 Clean up languages [skip ci] 2024-01-07 07:02:28 +01:00
James Cole
8043c86942 Update readme. 2024-01-06 19:22:38 +01:00
James Cole
4c30a7bc55 Expand edit form. 2024-01-06 17:24:54 +01:00
James Cole
f615b9c252 Fix https://github.com/firefly-iii/firefly-iii/issues/8352 2024-01-06 14:44:50 +01:00
James Cole
c19b36a391 Fix https://github.com/firefly-iii/firefly-iii/issues/8352 2024-01-06 14:40:06 +01:00
James Cole
935634e487 Sanity check on number. 2024-01-06 14:23:20 +01:00
James Cole
2c3f032a2b Merge branch 'release/v6.1.6' 2024-01-06 11:13:41 +01:00
James Cole
7e62b75b12 Merge tag 'v6.1.6' into develop
v6.1.6
2024-01-06 11:13:41 +01:00
James Cole
de57ab0874 Update meta files for new release. 2024-01-06 11:11:18 +01:00
James Cole
6fb4aaecd3 Fix a very dumb bug. 2024-01-06 11:09:40 +01:00
James Cole
45fdbf5a11 Merge tag 'v6.1.5' into develop
v6.1.5
2024-01-06 10:59:05 +01:00
James Cole
c6615a7b17 Merge branch 'release/v6.1.5' 2024-01-06 10:59:02 +01:00
James Cole
0efb3d2dcf Fix currency validation. 2024-01-06 08:33:38 +01:00
James Cole
b8a58f83ee New packages. 2024-01-06 07:59:46 +01:00
James Cole
110228e65e Fix phpstan issue. 2024-01-06 07:49:50 +01:00
James Cole
8ad27e0eda Update meta files for new release. 2024-01-06 07:42:00 +01:00
James Cole
2e0d90c685 Expand edit transaction form. 2024-01-06 07:26:03 +01:00
James Cole
bd2ecb13b8 Change time for rule. 2024-01-05 18:09:19 +01:00
James Cole
5725570dbb Add marker. Seems fastest solution. 2024-01-05 14:47:44 +01:00
James Cole
11f77685e4 Experimental code cleanup. 2024-01-05 14:29:59 +01:00
James Cole
0521c46d27 test 2024-01-05 14:15:26 +01:00
James Cole
50d6225590 test 2024-01-05 14:15:02 +01:00
James Cole
df55f7de79 test 2024-01-05 14:13:44 +01:00
James Cole
5152ae9622 test 2024-01-05 14:11:06 +01:00
James Cole
075d0da63d test 2024-01-05 14:10:07 +01:00
James Cole
d804df2a2f test 2024-01-05 14:09:47 +01:00
James Cole
ff0f8beb81 Of course phpstan has an opinion on this lol 2024-01-05 14:07:13 +01:00
James Cole
c00be92f97 Finalize create transaction form. 2024-01-05 14:04:44 +01:00
James Cole
88f6221424 Small code fix. 2024-01-05 11:09:52 +01:00
James Cole
f9463e02a2 Fix null pointer 2024-01-05 10:55:46 +01:00
James Cole
25a23801be Fix error mail 2024-01-05 10:55:07 +01:00
James Cole
fe7bb02dc5 Clean up min/max sizes of requests. 2024-01-05 09:48:59 +01:00
James Cole
68edcfc4e8 Clean up files and add alias 2024-01-05 08:12:17 +01:00
James Cole
5f8a24a684 Add newline. 2024-01-04 15:43:51 +01:00
James Cole
0a5d62605a Code cleanup and new translations. 2024-01-04 15:42:00 +01:00
James Cole
1873be8d95 Merge branch 'develop' of github.com:firefly-iii/firefly-iii into develop 2024-01-04 15:41:18 +01:00
James Cole
01892c3828 Merge pull request #8348 from lemuelroberto/develop
Update outdated documentation URLs in .env.example
2024-01-04 15:41:00 +01:00
Lemuel Roberto Bonifácio
b87e60c72f Update outdated documentation URLs in .env.example 2024-01-04 11:32:36 -03:00
James Cole
3a083f88b5 Clean up code. 2024-01-04 14:59:55 +01:00
James Cole
566bb2f097 Expand create transaction form. 2024-01-04 14:59:37 +01:00
James Cole
1ba7847d84 Add more details in message. 2024-01-04 11:46:23 +01:00
James Cole
c32044a8eb Smaller notes 2024-01-04 11:41:03 +01:00
James Cole
72a2d417af Change log levels. 2024-01-04 08:35:58 +01:00
James Cole
09c18d6d44 More audit logs. 2024-01-04 08:34:57 +01:00
James Cole
84ae6a633e Add some audit logs. 2024-01-04 08:32:42 +01:00
James Cole
82749cea07 Sanity check in date. 2024-01-04 07:51:37 +01:00
James Cole
23aa0e3ba3 Add some audit log info. 2024-01-04 07:48:51 +01:00
James Cole
8be27a2201 Small code cleanup 2024-01-04 07:44:52 +01:00
James Cole
ff98f3cc3e Expand create transaction form. 2024-01-04 07:26:45 +01:00
James Cole
01c4d25646 Better currency validation for foreign amount 2024-01-04 07:26:12 +01:00
James Cole
292b9ac9d0 Fix wording for https://github.com/firefly-iii/firefly-iii/issues/8328 2024-01-04 07:25:24 +01:00
James Cole
6bdae03961 Extra fix for https://github.com/firefly-iii/firefly-iii/issues/8328 2024-01-04 06:22:47 +01:00
James Cole
7426c6aac3 Split form in parts, add "edit" page. 2024-01-03 19:34:50 +01:00
James Cole
211526c032 Expand new transaction form. 2024-01-03 17:43:05 +01:00
James Cole
e6fe08dd61 Update translations. 2024-01-03 13:05:54 +01:00
James Cole
7bba67130a Merge pull request #8335 from maureenferreira/patch-2
Update intro.php
2024-01-03 07:28:43 +00:00
maureenferreira
7186d8ddfd Update intro.php
Signed-off-by: maureenferreira <142938968+maureenferreira@users.noreply.github.com>
2024-01-03 00:19:18 -06:00
James Cole
1a6bc6decd Merge branch 'release/v6.1.4' 2024-01-02 22:29:55 +01:00
James Cole
5b11c86113 Merge tag 'v6.1.4' into develop
v6.1.4
2024-01-02 22:29:55 +01:00
James Cole
98b95ab891 Fix issue #8328 2024-01-02 22:28:58 +01:00
James Cole
c3068d10bf Merge tag 'v6.1.3' into develop
v6.1.3
2024-01-02 21:23:34 +01:00
James Cole
fa1a1b084b Merge branch 'release/v6.1.3' 2024-01-02 21:23:33 +01:00
James Cole
387e44b8b9 Update changelog. 2024-01-02 21:23:14 +01:00
James Cole
6dafa89a15 Fix https://github.com/firefly-iii/firefly-iii/issues/8326 2024-01-02 21:22:42 +01:00
James Cole
5b5b8008b0 Merge tag 'v6.1.2' into develop
v6.1.2
2024-01-02 20:26:54 +01:00
James Cole
38a955e663 Merge branch 'release/v6.1.2' 2024-01-02 20:26:52 +01:00
James Cole
62921df702 cleanup changelog 2024-01-02 20:24:31 +01:00
James Cole
c7c2b85882 Update packages. 2024-01-02 20:23:39 +01:00
James Cole
bc26ee5cde Code for new release. 2024-01-02 20:19:09 +01:00
James Cole
9eca31529c Fix https://github.com/firefly-iii/firefly-iii/issues/8322 2024-01-02 16:47:54 +01:00
James Cole
25e3abeeb8 Fix https://github.com/firefly-iii/firefly-iii/issues/8320 2024-01-02 16:29:47 +01:00
James Cole
53d6281ba4 Fix https://github.com/firefly-iii/firefly-iii/issues/8320 2024-01-02 15:52:56 +01:00
James Cole
4b9fd949ad Fix https://github.com/firefly-iii/firefly-iii/issues/8321 2024-01-02 15:51:34 +01:00
James Cole
786b4c18a1 Other minification. 2024-01-02 15:41:14 +01:00
James Cole
97b65ac44c Temporary log level elevation. 2024-01-02 14:37:56 +01:00
James Cole
102da7b21e New numerical validation. 2024-01-02 14:33:17 +01:00
James Cole
85bde79fd1 Fix issue validating budget amounts. 2024-01-02 07:08:15 +01:00
James Cole
09a25957d0 Switch to mime. 2024-01-01 16:58:00 +01:00
James Cole
fd7a2181a4 Code cleanup 2024-01-01 15:51:23 +01:00
James Cole
2ede3b420b Base64 encode logs 2024-01-01 15:24:15 +01:00
James Cole
4bed30347d Report uploads 2024-01-01 15:19:20 +01:00
James Cole
ffdcab3220 Report uploads 2024-01-01 15:18:09 +01:00
James Cole
956108399b Various code cleanup and fixed alignments. 2024-01-01 15:17:11 +01:00
James Cole
61c38f2a99 Various code cleanup and fixed alignments. 2024-01-01 14:48:04 +01:00
James Cole
f3773ebfc2 Various code cleanup and fixed alignments. 2024-01-01 14:45:51 +01:00
James Cole
f963ac63f1 Various code cleanup and fixed alignments. 2024-01-01 14:43:56 +01:00
James Cole
1368aafe5f Various code cleanup and fixed alignments. 2024-01-01 14:42:24 +01:00
James Cole
657262f179 Various code cleanup and fixed alignments. 2024-01-01 14:41:31 +01:00
James Cole
8b9dce70bb Various code cleanup and fixed alignments. 2024-01-01 14:38:01 +01:00
James Cole
30bbd0b3a4 Various code cleanup and fixed alignments. 2024-01-01 14:36:31 +01:00
James Cole
d4488f041b Some alignment 2024-01-01 14:35:00 +01:00
James Cole
fa8dc1ae4b Fix bad validation in variable. 2024-01-01 14:13:49 +01:00
James Cole
c2b60edca3 Fix bad validation in variable. 2024-01-01 14:13:06 +01:00
James Cole
949ca4f79e Fix issue with tag search. 2024-01-01 11:31:14 +01:00
James Cole
ab0b03dd14 Audit validation errors. 2024-01-01 10:15:19 +01:00
James Cole
5b41e58025 Add some audit debug. 2024-01-01 10:12:47 +01:00
James Cole
88bf76fa27 Add some audit things. 2024-01-01 10:06:44 +01:00
James Cole
3ad155882a Nice disable warning. 2024-01-01 09:46:13 +01:00
James Cole
4747e28621 Disable old upgrade command. 2024-01-01 09:45:21 +01:00
James Cole
5664695a92 Various code changes. 2024-01-01 08:17:15 +01:00
James Cole
fdcd31652a Fix limits 2024-01-01 07:24:17 +01:00
James Cole
e5397b6659 Merge pull request #8314 from firefly-iii/dependabot/npm_and_yarn/develop/axios-1.6.3 2024-01-01 07:11:53 +01:00
James Cole
51e5b9a994 Merge pull request #8313 from firefly-iii/dependabot/npm_and_yarn/develop/sass-1.69.6 2024-01-01 07:11:42 +01:00
James Cole
dc95632834 Merge pull request #8312 from firefly-iii/dependabot/composer/develop/symfony/http-client-7.0.2 2024-01-01 07:11:02 +01:00
dependabot[bot]
3e888382c9 chore(deps-dev): bump axios from 1.6.2 to 1.6.3
Bumps [axios](https://github.com/axios/axios) from 1.6.2 to 1.6.3.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.6.2...v1.6.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-01 03:54:25 +00:00
dependabot[bot]
de8d6f8439 chore(deps-dev): bump sass from 1.69.5 to 1.69.6
Bumps [sass](https://github.com/sass/dart-sass) from 1.69.5 to 1.69.6.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.69.5...1.69.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-01 03:54:09 +00:00
dependabot[bot]
60543b8f1d chore(deps): bump symfony/http-client from 7.0.0 to 7.0.2
Bumps [symfony/http-client](https://github.com/symfony/http-client) from 7.0.0 to 7.0.2.
- [Release notes](https://github.com/symfony/http-client/releases)
- [Changelog](https://github.com/symfony/http-client/blob/7.0/CHANGELOG.md)
- [Commits](https://github.com/symfony/http-client/compare/v7.0.0...v7.0.2)

---
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>
2024-01-01 03:05:43 +00:00
James Cole
268cec6d08 Must be above zero. 2023-12-31 18:00:55 +01:00
James Cole
94aea91927 Add audit data 2023-12-31 17:58:02 +01:00
James Cole
135a6993aa Fix tag length 2023-12-31 17:40:57 +01:00
James Cole
16079f496a Remove tag length. 2023-12-31 17:38:41 +01:00
James Cole
e318e8e9cf Catch amounts. 2023-12-31 17:29:00 +01:00
James Cole
51ca8277bb Fix amount thing. 2023-12-31 17:18:54 +01:00
James Cole
a49cf1fd3d Check submission sizes. 2023-12-31 06:20:29 +01:00
James Cole
81a11ee5b4 Size filter for large notes. 2023-12-31 06:09:36 +01:00
James Cole
b778424b7e Fix markdown links. 2023-12-30 19:42:10 +01:00
James Cole
d408d7cc20 Fix bad index 2023-12-30 16:22:13 +01:00
James Cole
228870ceac Code and API cleanup. 2023-12-30 14:39:44 +01:00
James Cole
ae1939cd1b Add some missing methods. 2023-12-30 13:31:13 +01:00
James Cole
f7a4bd5d12 Link 2023-12-30 13:10:42 +01:00
James Cole
eec1888f87 Add button but indicate it's disabled. 2023-12-30 13:10:06 +01:00
James Cole
a42470e5b4 Remove webhooks. 2023-12-30 13:08:00 +01:00
James Cole
098f1fe0f6 Suppress warning for method 2023-12-30 12:59:09 +01:00
James Cole
2e5bc750d1 Disable attachment API for demo users 2023-12-30 12:54:21 +01:00
James Cole
d777a1f2b8 Add audit log entries. 2023-12-30 10:14:35 +01:00
James Cole
5178e19cea Clean up code, clarify 404. 2023-12-30 09:56:03 +01:00
James Cole
be8aaa68af Fix some sums. 2023-12-29 20:50:03 +01:00
James Cole
1e31a1184a Skip non-existing tags. 2023-12-29 20:41:54 +01:00
James Cole
c269be7f07 Skip irrelevant tags. 2023-12-29 20:39:49 +01:00
James Cole
6bf42ba237 No tag. 2023-12-29 20:37:47 +01:00
James Cole
1901648a05 Clean up and add some debug info. 2023-12-29 20:33:39 +01:00
James Cole
789a6cebcd Fix bad route. 2023-12-29 20:27:16 +01:00
James Cole
4230349c07 Fix https://github.com/firefly-iii/firefly-iii/issues/8304 2023-12-29 20:25:32 +01:00
James Cole
33b95b9371 Catch some amounts 2023-12-29 19:59:19 +01:00
James Cole
e47110607c Small change in audit logger [skip ci] 2023-12-29 12:09:06 +01:00
James Cole
1e3665e54f Make log message debug level [skip ci] 2023-12-29 12:07:09 +01:00
James Cole
47147066d2 Add audit things. 2023-12-29 12:06:23 +01:00
James Cole
5b8f67e992 Change loglevel to debug again. 2023-12-29 12:00:15 +01:00
James Cole
fb1a66d872 Fix translations. 2023-12-29 10:19:12 +01:00
James Cole
e594b9304a Fix bad if/then. 2023-12-29 09:16:13 +01:00
James Cole
0d7fd36c38 Catch division by zero. 2023-12-29 09:05:44 +01:00
James Cole
bdba786322 Fix bad conversion 2023-12-29 09:02:49 +01:00
James Cole
507e0fb54c Catch query things. 2023-12-29 09:01:42 +01:00
James Cole
e4d91aa337 Disable API endpoints. 2023-12-29 08:42:03 +01:00
James Cole
4e6fc8e2a2 Remove most debug info. 2023-12-29 08:39:15 +01:00
James Cole
244ffb2450 Start throwing 404's 2023-12-29 08:35:54 +01:00
James Cole
7aa3aef508 Even more debug 2023-12-29 08:30:50 +01:00
James Cole
c16f7d214f More debug info. 2023-12-29 08:25:01 +01:00
James Cole
c08d44ea48 Add some debug info. 2023-12-29 08:21:14 +01:00
James Cole
6381d04e2b Add lots of audit logs. 2023-12-29 08:19:04 +01:00
James Cole
ec43d10e35 Max size for notes. 2023-12-28 10:35:35 +01:00
James Cole
b32d9aab34 Dumb nullpointer 2023-12-27 20:11:50 +01:00
James Cole
de5cb4c165 Catch division by zero. https://github.com/firefly-iii/firefly-iii/issues/8297 2023-12-27 19:36:28 +01:00
James Cole
609edb9dff Add basic catch for big date ranges. 2023-12-27 15:48:04 +01:00
James Cole
636b3921fa Merge tag 'v6.1.1' into develop
v6.1.1
2023-12-26 11:37:22 +01:00
James Cole
a391d731ff Merge branch 'release/v6.1.1' 2023-12-26 11:37:16 +01:00
James Cole
c743b0c66b Fix missing info. 2023-12-26 11:34:05 +01:00
James Cole
ef09f88816 Meta data for new release. 2023-12-26 08:42:38 +01:00
James Cole
ffeada037d Small JS fixes 2023-12-25 06:45:36 +01:00
James Cole
4723d9dd30 Smaller rule list 2023-12-25 06:32:43 +01:00
James Cole
b84604a4db Merge branch 'develop' of github.com:firefly-iii/firefly-iii into develop 2023-12-25 06:09:01 +01:00
James Cole
1bd1a9cba3 Fix https://github.com/firefly-iii/firefly-iii/issues/8291 AND fix issue with non-strict rule triggers AND fix behaviour of actions 2023-12-25 06:03:56 +01:00
James Cole
d0c830c560 Merge pull request #8295 from firefly-iii/dependabot/npm_and_yarn/develop/date-fns-3.0.6 2023-12-25 05:33:18 +01:00
dependabot[bot]
06d3cc3506 chore(deps): bump date-fns from 2.30.0 to 3.0.6
Bumps [date-fns](https://github.com/date-fns/date-fns) from 2.30.0 to 3.0.6.
- [Release notes](https://github.com/date-fns/date-fns/releases)
- [Changelog](https://github.com/date-fns/date-fns/blob/main/CHANGELOG.md)
- [Commits](https://github.com/date-fns/date-fns/compare/v2.30.0...v3.0.6)

---
updated-dependencies:
- dependency-name: date-fns
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-25 03:16:21 +00:00
James Cole
2b90c20db8 Fix https://github.com/firefly-iii/firefly-iii/issues/8291 2023-12-24 15:53:24 +01:00
James Cole
ebe1fd6142 New meta files and some translations 2023-12-23 16:15:13 +01:00
James Cole
ca8f153c6a Small code cleanup. 2023-12-23 06:22:47 +01:00
James Cole
581e5d7330 Various code cleanup. 2023-12-22 20:12:38 +01:00
James Cole
067d160c13 Clean up various code. 2023-12-22 17:28:42 +01:00
James Cole
e8890ada7c Catch null 2023-12-22 10:16:10 +01:00
James Cole
c5fbf6ec55 Clean up methods. 2023-12-22 09:09:58 +01:00
James Cole
5cd9793edf Some new translations. 2023-12-22 08:06:43 +01:00
James Cole
c60b5e5c21 Remove unused exceptions. 2023-12-22 07:58:35 +01:00
James Cole
b2bd9301b6 Small phpcs fixes. 2023-12-22 07:53:00 +01:00
James Cole
4864ecc0c7 small experimental code cleanup 2023-12-22 07:49:55 +01:00
James Cole
58dea55d38 Remove JSON exceptions that are not thrown anyway. 2023-12-22 07:47:13 +01:00
James Cole
34e22e0747 Remove some debug. 2023-12-22 06:35:21 +01:00
James Cole
7c9f74f550 no message 2023-12-22 06:27:46 +01:00
James Cole
f0517aee53 Catch for the same rate 2023-12-22 06:25:38 +01:00
James Cole
f69072d293 Various improvements for https://github.com/firefly-iii/firefly-iii/issues/8281 2023-12-22 06:14:14 +01:00
James Cole
669aedeea3 Fix https://github.com/firefly-iii/firefly-iii/issues/8282 2023-12-22 05:15:09 +01:00
James Cole
8a4985261a Fix various code 2023-12-21 06:06:23 +01:00
James Cole
337d14e71e Pick up some phpmd things 2023-12-21 05:46:05 +01:00
James Cole
ebf4b00288 Fix various code. 2023-12-21 05:15:46 +01:00
James Cole
a445bc53cd Fix code 2023-12-21 05:07:26 +01:00
James Cole
1f7ceb6df6 Fix #8274 2023-12-21 05:06:51 +01:00
James Cole
135b9fc010 Add void to a lot of methods. 2023-12-21 05:06:17 +01:00
James Cole
655d03bec4 Add void after some methods. 2023-12-21 04:59:23 +01:00
James Cole
bc50d25468 Code cleanup. 2023-12-21 04:48:00 +01:00
James Cole
e40bb81d80 Fix #8278, not 8276! 2023-12-21 04:43:39 +01:00
James Cole
53e972fbba Fix #8276 2023-12-21 04:42:39 +01:00
James Cole
51d244cfe6 Update language strings 2023-12-20 21:13:31 +01:00
James Cole
3842552256 Update translations. 2023-12-20 21:04:35 +01:00
James Cole
c9d5d74662 More code cleanup 2023-12-20 19:45:12 +01:00
James Cole
4961b1f715 More code cleanup 2023-12-20 19:41:37 +01:00
James Cole
680012056b More code cleanup 2023-12-20 19:39:53 +01:00
James Cole
64ec0cf62e Code cleanup. 2023-12-20 19:35:52 +01:00
James Cole
c4f6366642 Simplify code. 2023-12-20 18:51:15 +01:00
James Cole
28021aa711 Fix vulnerabilities reported by Stefan Schiller from Sonar. Thanks! 2023-12-20 16:43:15 +01:00
James Cole
bf5a15077d Fix https://github.com/firefly-iii/firefly-iii/issues/8277 2023-12-20 12:37:27 +01:00
James Cole
9506b37200 Fix phpstan issues. 2023-12-20 07:51:25 +01:00
James Cole
ee41eadcd9 Fix issues. 2023-12-20 07:42:44 +01:00
James Cole
5ecc1929f9 Add balance group. 2023-12-20 07:31:32 +01:00
James Cole
1186359898 Remove unused var 2023-12-20 06:46:59 +01:00
James Cole
aabf73d3e9 Make method smaller. 2023-12-20 06:27:10 +01:00
James Cole
da4e813d9a Fix tests 2023-12-20 06:02:35 +01:00
James Cole
cbcadb6706 Fix https://github.com/firefly-iii/firefly-iii/issues/8272 2023-12-19 20:18:28 +01:00
James Cole
9f0b4564cf Fix https://github.com/firefly-iii/firefly-iii/issues/8273 2023-12-19 20:06:40 +01:00
James Cole
327b0b4a37 Fix nullpointer 2023-12-19 09:39:36 +01:00
James Cole
77695409f6 Remove fixed sidebar. https://github.com/firefly-iii/firefly-iii/issues/8266 2023-12-18 08:12:51 +01:00
James Cole
92cdec2877 Merge tag 'v6.1.0' into develop
v6.1.0
2023-12-16 19:43:32 +01:00
James Cole
4804f419ef Merge branch 'release/v6.1.0' 2023-12-16 19:43:31 +01:00
James Cole
0c52c85e25 Update phpmd 2023-12-16 19:35:26 +01:00
James Cole
5ca1367a7c Update meta data for new release. 2023-12-16 19:33:13 +01:00
James Cole
68acd52c86 Update meta data for new release 2023-12-16 19:31:10 +01:00
James Cole
bd221a59d6 Fixes https://github.com/firefly-iii/firefly-iii/issues/8251 2023-12-16 19:11:27 +01:00
James Cole
b91a938a60 Remove unnecessary code 2023-12-16 16:16:06 +01:00
James Cole
698c1f6c7e Fixed another link while checking https://github.com/firefly-iii/firefly-iii/pull/8263 2023-12-16 16:11:39 +01:00
James Cole
2f110ab9a8 Fix default currencies. 2023-12-16 16:06:23 +01:00
James Cole
a1dfb3a99e Clean up command 2023-12-16 15:56:35 +01:00
James Cole
b2a301bf94 Fix links and info. 2023-12-12 20:23:45 +01:00
James Cole
3b3f9ee497 Merge tag 'v6.1.0-alpha.1' into develop
v6.1.0-alpha.1
2023-12-10 07:06:12 +01:00
James Cole
0b22b056bc Merge branch 'release/v6.1.0-alpha.1' 2023-12-10 07:05:51 +01:00
James Cole
ce239a5bb1 Update packages. 2023-12-10 07:03:48 +01:00
James Cole
ce023f2580 Always great when using conflicting tools 2023-12-10 06:57:41 +01:00
James Cole
46e130fdfe Clean up code. 2023-12-10 06:51:59 +01:00
James Cole
c2b22a2bac Clean up code. 2023-12-10 06:45:59 +01:00
James Cole
9a807fc215 Merge branch 'main' into develop
# Conflicts:
#	package-lock.json
#	package.json
2023-12-10 06:22:57 +01:00
James Cole
8ef74e9fd2 Merge branch 'develop' of github.com:firefly-iii/firefly-iii into develop 2023-12-09 20:15:13 +01:00
James Cole
abd123b1c8 Fix a few null pointers. 2023-12-09 20:12:34 +01:00
James Cole
7e72003984 Merge pull request #8235 from firefly-iii/dependabot/npm_and_yarn/vite-4.5.1 2023-12-06 05:26:37 +01:00
dependabot[bot]
69f653d0c9 chore(deps-dev): bump vite from 4.5.0 to 4.5.1
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 4.5.0 to 4.5.1.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v4.5.1/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v4.5.1/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-05 23:54:31 +00:00
James Cole
e6e9535509 Update manifest.webmanifest
Signed-off-by: James Cole <james@firefly-iii.org>
2023-12-05 09:25:41 +01:00
James Cole
45787a30de Update manifest.webmanifest
Signed-off-by: James Cole <james@firefly-iii.org>
2023-12-05 09:24:16 +01:00
James Cole
18e4c2ab33 Update manifest.webmanifest
Signed-off-by: James Cole <james@firefly-iii.org>
2023-12-05 09:20:54 +01:00
James Cole
c063bcf80d Merge pull request #8226 from firefly-iii/dependabot/composer/develop/symfony/mailgun-mailer-7.0.0 2023-12-04 06:54:33 +01:00
James Cole
eb8b7af7aa Merge pull request #8227 from firefly-iii/dependabot/composer/develop/guzzlehttp/guzzle-7.8.1 2023-12-04 06:54:21 +01:00
dependabot[bot]
c60fb0c68c chore(deps): bump symfony/mailgun-mailer from 6.4.0 to 7.0.0
Bumps [symfony/mailgun-mailer](https://github.com/symfony/mailgun-mailer) from 6.4.0 to 7.0.0.
- [Release notes](https://github.com/symfony/mailgun-mailer/releases)
- [Changelog](https://github.com/symfony/mailgun-mailer/blob/7.0/CHANGELOG.md)
- [Commits](https://github.com/symfony/mailgun-mailer/compare/v6.4.0...v7.0.0)

---
updated-dependencies:
- dependency-name: symfony/mailgun-mailer
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-04 05:46:13 +00:00
James Cole
84e99a065f Merge pull request #8225 from firefly-iii/dependabot/composer/develop/symfony/http-client-7.0.0 2023-12-04 06:45:39 +01:00
James Cole
369e980466 Merge pull request #8224 from firefly-iii/dependabot/npm_and_yarn/develop/vite-5.0.4 2023-12-04 06:44:11 +01:00
dependabot[bot]
963d4b7345 chore(deps): bump guzzlehttp/guzzle from 7.8.0 to 7.8.1
Bumps [guzzlehttp/guzzle](https://github.com/guzzle/guzzle) from 7.8.0 to 7.8.1.
- [Release notes](https://github.com/guzzle/guzzle/releases)
- [Changelog](https://github.com/guzzle/guzzle/blob/7.8/CHANGELOG.md)
- [Commits](https://github.com/guzzle/guzzle/compare/7.8.0...7.8.1)

---
updated-dependencies:
- dependency-name: guzzlehttp/guzzle
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-04 03:11:07 +00:00
dependabot[bot]
eaf6bd3fa0 chore(deps): bump symfony/http-client from 6.4.0 to 7.0.0
Bumps [symfony/http-client](https://github.com/symfony/http-client) from 6.4.0 to 7.0.0.
- [Release notes](https://github.com/symfony/http-client/releases)
- [Changelog](https://github.com/symfony/http-client/blob/7.0/CHANGELOG.md)
- [Commits](https://github.com/symfony/http-client/compare/v6.4.0...v7.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-04 03:10:52 +00:00
dependabot[bot]
9b4a30565c chore(deps-dev): bump vite from 4.5.0 to 5.0.4
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 4.5.0 to 5.0.4.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v5.0.4/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-04 03:03:14 +00:00
James Cole
c37a877f34 Fix phpstan things 2023-12-03 08:28:50 +01:00
James Cole
d2a895ddda Update to PHP 8.3 2023-12-03 08:18:17 +01:00
James Cole
2660dc5bf7 Update meta data for new release. 2023-12-03 08:14:32 +01:00
James Cole
40083bf2b4 Fix https://github.com/firefly-iii/firefly-iii/issues/8022 2023-12-03 07:44:53 +01:00
James Cole
3136bccb24 Add new search options for https://github.com/firefly-iii/firefly-iii/issues/7571 2023-12-03 07:02:23 +01:00
James Cole
a5c370c70e Fix #7716 2023-12-02 15:56:40 +01:00
James Cole
01a897b5e1 Fix #8802 2023-12-02 15:56:17 +01:00
James Cole
722ae91c02 Fix https://github.com/firefly-iii/firefly-iii/issues/8023 2023-12-02 15:41:39 +01:00
James Cole
6df7f1f762 add new action 2023-12-02 15:38:06 +01:00
James Cole
7aacd1f945 Fix https://github.com/firefly-iii/firefly-iii/issues/8138 2023-12-02 14:56:23 +01:00
James Cole
b02a61dfbd Add some PHP 8.3-only features. 2023-12-02 12:56:48 +01:00
James Cole
2b0a3ec818 Code cleanup 2023-12-02 07:26:03 +01:00
James Cole
00410c8486 Merge branch 'main' into develop 2023-12-02 07:06:43 +01:00
James Cole
8e0f0b03d8 Fix various phpstan issues. 2023-12-02 07:05:34 +01:00
James Cole
7c3f2dd83a Merge pull request #8213 from firefly-iii/dependabot/composer/phpseclib/phpseclib-3.0.34
chore(deps): bump phpseclib/phpseclib from 3.0.33 to 3.0.34
2023-12-02 06:35:37 +01:00
James Cole
d2f0eab4c4 fix debug msg 2023-12-01 11:21:04 +01:00
James Cole
a8ade914ac fix debug msg 2023-12-01 11:18:46 +01:00
James Cole
ef08b7eb93 Fix enums 2023-12-01 11:14:30 +01:00
James Cole
726ed3292a Fix enums 2023-12-01 11:12:40 +01:00
James Cole
5883dfbed8 Various code cleanup. 2023-12-01 05:15:59 +01:00
James Cole
271e4271eb Update various things. I know, great description. 2023-11-30 17:28:44 +01:00
James Cole
627db2c2df Various code cleanup 2023-11-29 06:36:48 +01:00
James Cole
b9feb0aa71 Fix various phpstan things 2023-11-29 06:30:35 +01:00
dependabot[bot]
155084084d chore(deps): bump phpseclib/phpseclib from 3.0.33 to 3.0.34
Bumps [phpseclib/phpseclib](https://github.com/phpseclib/phpseclib) from 3.0.33 to 3.0.34.
- [Release notes](https://github.com/phpseclib/phpseclib/releases)
- [Changelog](https://github.com/phpseclib/phpseclib/blob/master/CHANGELOG.md)
- [Commits](https://github.com/phpseclib/phpseclib/compare/3.0.33...3.0.34)

---
updated-dependencies:
- dependency-name: phpseclib/phpseclib
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-28 18:24:21 +00:00
James Cole
1c3cb85a46 Fix a bunch of phpstan issues. 2023-11-28 18:57:10 +01:00
James Cole
b0a39c00ba fix phpstan issues. 2023-11-28 17:18:31 +01:00
James Cole
7cb919e9c2 fix various phpstan errors 2023-11-28 05:31:26 +01:00
James Cole
cbecacd652 Fix various phpstan issues. 2023-11-28 05:05:42 +01:00
James Cole
14e9d73768 Various phpstan fixes 2023-11-28 04:45:07 +01:00
James Cole
8604b05d07 Merge pull request #8207 from Maxco10/main
Fixed routing for category title and go_to_budget shortcut
2023-11-28 04:25:10 +01:00
Maxco10
b66bac497e Fixed routing for category title and go_to_budget shortcut
Signed-off-by: Maxco10 <mmagnani93@gmail.com>
2023-11-27 21:31:36 +01:00
James Cole
6ad38b38b8 Merge pull request #8202 from firefly-iii/dependabot/npm_and_yarn/develop/vite-5.0.2
chore(deps-dev): bump vite from 5.0.0 to 5.0.2
2023-11-27 06:18:23 +01:00
dependabot[bot]
53f31f17d2 chore(deps-dev): bump vite from 5.0.0 to 5.0.2
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.0.0 to 5.0.2.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v5.0.2/packages/vite)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-27 03:53:57 +00:00
James Cole
a7bfdbe31f Fix some PHPMD issues. 2023-11-26 16:20:24 +01:00
James Cole
72ead65d9c Fix various phpmd issues. 2023-11-26 12:50:54 +01:00
James Cole
846c60fb85 Fix phpstan errors 2023-11-26 12:24:37 +01:00
James Cole
938446ede3 Fix CS things 2023-11-26 12:13:05 +01:00
James Cole
68f01d932e Fix a lot of phpstan things 2023-11-26 12:10:42 +01:00
James Cole
a6c355c7b8 Add test case for bill dates 2023-11-26 07:19:57 +01:00
James Cole
5e49e149b1 Add some whitespace 2023-11-25 19:38:48 +01:00
James Cole
06fd8dc5e0 Fix phpcs error 2023-11-25 19:35:19 +01:00
James Cole
43c79af293 Attempt to fix https://github.com/firefly-iii/firefly-iii/issues/8195 (this really needs refactor, separate tests. 2023-11-25 19:29:10 +01:00
James Cole
3355645cb4 Fix https://github.com/firefly-iii/firefly-iii/issues/8192 2023-11-25 19:03:51 +01:00
James Cole
bac0710a9c Possible fix for https://github.com/firefly-iii/firefly-iii/issues/8163 2023-11-23 06:13:28 +01:00
James Cole
47d8ab685d Merge pull request #8175 from firefly-iii/dependabot/npm_and_yarn/develop/vite-plugin-manifest-sri-0.2.0 2023-11-20 05:47:29 +01:00
dependabot[bot]
9fd4d29fda chore(deps-dev): bump vite-plugin-manifest-sri from 0.1.0 to 0.2.0
Bumps [vite-plugin-manifest-sri](https://github.com/ElMassimo/vite-plugin-manifest-sri) from 0.1.0 to 0.2.0.
- [Changelog](https://github.com/ElMassimo/vite-plugin-manifest-sri/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ElMassimo/vite-plugin-manifest-sri/compare/v0.1.0...v0.2.0)

---
updated-dependencies:
- dependency-name: vite-plugin-manifest-sri
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-20 04:41:56 +00:00
James Cole
0126669fa8 Merge pull request #8176 from firefly-iii/dependabot/npm_and_yarn/develop/vite-5.0.0 2023-11-20 05:40:46 +01:00
James Cole
1e01eb7bc2 Merge pull request #8177 from firefly-iii/dependabot/npm_and_yarn/develop/alpinejs-3.13.3 2023-11-20 05:40:35 +01:00
James Cole
ed28102aff Merge pull request #8178 from firefly-iii/dependabot/composer/develop/doctrine/dbal-3.7.2 2023-11-20 05:39:54 +01:00
James Cole
6c91ca5463 Merge pull request #8179 from firefly-iii/dependabot/composer/develop/phpstan/phpstan-1.10.43 2023-11-20 05:39:45 +01:00
dependabot[bot]
9ab926f9ab chore(deps-dev): bump phpstan/phpstan from 1.10.41 to 1.10.43
Bumps [phpstan/phpstan](https://github.com/phpstan/phpstan) from 1.10.41 to 1.10.43.
- [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.41...1.10.43)

---
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-11-20 03:36:25 +00:00
dependabot[bot]
29132b18ab chore(deps): bump doctrine/dbal from 3.7.1 to 3.7.2
Bumps [doctrine/dbal](https://github.com/doctrine/dbal) from 3.7.1 to 3.7.2.
- [Release notes](https://github.com/doctrine/dbal/releases)
- [Commits](https://github.com/doctrine/dbal/compare/3.7.1...3.7.2)

---
updated-dependencies:
- dependency-name: doctrine/dbal
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-20 03:36:17 +00:00
dependabot[bot]
28307edf81 chore(deps): bump alpinejs from 3.13.2 to 3.13.3
Bumps [alpinejs](https://github.com/alpinejs/alpine/tree/HEAD/packages/alpinejs) from 3.13.2 to 3.13.3.
- [Release notes](https://github.com/alpinejs/alpine/releases)
- [Commits](https://github.com/alpinejs/alpine/commits/v3.13.3/packages/alpinejs)

---
updated-dependencies:
- dependency-name: alpinejs
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-20 03:09:36 +00:00
dependabot[bot]
7310e7a3e5 chore(deps-dev): bump vite from 4.5.0 to 5.0.0
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 4.5.0 to 5.0.0.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/create-vite@5.0.0/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-20 03:09:29 +00:00
James Cole
ff7219a955 Update languages 2023-11-19 02:15:04 +01:00
James Cole
97d739e254 Update translations. 2023-11-16 06:16:20 +01:00
James Cole
8f26bbdaa0 Update translations 2023-11-15 06:32:41 +01:00
James Cole
67ef185a72 Fix annoying index error. 2023-11-14 02:46:04 +01:00
James Cole
76954f4a13 Update translations. 2023-11-13 20:14:39 +01:00
James Cole
afb9e6ef71 Merge pull request #8151 from firefly-iii/dependabot/npm_and_yarn/develop/axios-1.6.1 2023-11-13 05:15:33 +01:00
dependabot[bot]
28112a2283 chore(deps-dev): bump axios from 1.6.0 to 1.6.1
Bumps [axios](https://github.com/axios/axios) from 1.6.0 to 1.6.1.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.6.0...v1.6.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-13 03:38:01 +00:00
James Cole
c5db6c9201 New translations 2023-11-12 19:32:53 +01:00
James Cole
64813d4ba7 Update translations and rebuild JS. 2023-11-12 18:50:19 +01:00
James Cole
67e2c061ab Update translations 2023-11-12 14:28:39 +01:00
James Cole
d149cf01bd Run PHPCS on translations. 2023-11-11 21:03:35 +01:00
James Cole
590c3cf6f8 Update translations. 2023-11-11 20:23:55 +01:00
James Cole
93b25842e2 Fix int > string 2023-11-11 20:19:50 +01:00
James Cole
fa240c0e00 Update translations 2023-11-10 22:06:18 +01:00
James Cole
1b489385b2 Update languages. 2023-11-10 20:09:29 +01:00
James Cole
bac0f99b9b Update lang for https://github.com/firefly-iii/firefly-iii/issues/8148 2023-11-10 20:08:50 +01:00
James Cole
8a66249b3d Attempt at fixing https://github.com/firefly-iii/firefly-iii/issues/8137 2023-11-08 20:06:23 +01:00
James Cole
77bbe1e213 Fix method call. 2023-11-08 05:22:41 +01:00
James Cole
9973fd2970 Fix null pointer 2023-11-08 05:06:41 +01:00
James Cole
64ea59e4ec Fix https://github.com/firefly-iii/firefly-iii/issues/8137 2023-11-08 04:56:06 +01:00
James Cole
80b8e676d0 Fix https://github.com/firefly-iii/firefly-iii/issues/8137 2023-11-07 20:06:56 +01:00
James Cole
867d932e59 Merge pull request #8132 from firefly-iii/dependabot/composer/develop/phpstan/phpstan-1.10.41 2023-11-06 05:50:03 +01:00
dependabot[bot]
57fb0d7f3b chore(deps-dev): bump phpstan/phpstan from 1.10.40 to 1.10.41
Bumps [phpstan/phpstan](https://github.com/phpstan/phpstan) from 1.10.40 to 1.10.41.
- [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.40...1.10.41)

---
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-11-06 03:44:03 +00:00
James Cole
97cc2405a9 Move to level 6 2023-11-05 20:24:40 +01:00
James Cole
0022201c4f Move to level 5 2023-11-05 20:18:16 +01:00
James Cole
6f6b8d9b3e Fix phpstan issues. 2023-11-05 19:55:39 +01:00
James Cole
1d2e95f5af Various code cleanup. 2023-11-05 19:41:37 +01:00
James Cole
a0564751d6 Fix phpstan issues. 2023-11-05 16:55:16 +01:00
James Cole
4edd9fe3da Repair php cs fixer. 2023-11-05 16:16:22 +01:00
James Cole
5b05fb07ae Fix various phpstan errors 2023-11-05 16:11:09 +01:00
James Cole
998fed7782 Fix API error 2023-11-05 14:31:05 +01:00
James Cole
c0cc896102 Fix up to level 3 2023-11-05 10:16:53 +01:00
James Cole
2d5790c417 More phpstan issues fixed. 2023-11-05 09:54:53 +01:00
James Cole
1b978d41e0 Fix all level 2 issues. 2023-11-05 09:40:45 +01:00
James Cole
9002365e6d Fix code quality and CS fixer 2023-11-05 08:28:05 +01:00
James Cole
c1cc71f85c PHPstan fixes. 2023-11-05 08:15:17 +01:00
James Cole
ff599795d3 Allow null 2023-11-04 19:21:40 +01:00
James Cole
688f50ee3f Fix various code things. 2023-11-04 19:20:07 +01:00
James Cole
e51fef3037 Exit code 0 2023-11-04 19:06:47 +01:00
James Cole
0f6f4e1a50 Code cleanup and phpstan fixes. Still breaks but at least it's consistent. 2023-11-04 19:00:25 +01:00
James Cole
fe0a205a05 Various code cleanup. 2023-11-04 17:41:28 +01:00
James Cole
1059da8a2a Refactor various code. 2023-11-04 17:26:38 +01:00
James Cole
e41236495f Small script change. [skip ci] 2023-11-04 14:32:19 +01:00
James Cole
7436f94feb Fix code quality and run. 2023-11-04 14:26:35 +01:00
James Cole
bcf1e4dc13 Fix output format 2023-11-04 14:19:01 +01:00
James Cole
ba0843d0bb Code cleanup 2023-11-04 14:18:49 +01:00
James Cole
5a35960434 Expand action and clean up code. 2023-11-04 14:09:51 +01:00
James Cole
6eabe5fa8c Add chmod +x for phpmd 2023-11-04 12:25:15 +01:00
James Cole
8cb72d8d7d Explain ignored exit code. 2023-11-04 12:23:25 +01:00
James Cole
f81b5bea9d Add phpmd step 2023-11-04 12:20:18 +01:00
James Cole
fa45076e48 Forgot to close if statement 2023-11-04 12:16:58 +01:00
James Cole
08c07352ae Check for github 2023-11-04 12:14:10 +01:00
James Cole
94b0028254 Drop to level 6, that should fix the build. 2023-11-04 12:10:17 +01:00
James Cole
b77b3e3fc8 Fix script and job 2023-11-04 11:41:21 +01:00
James Cole
4db6933c17 Do things differently 2023-11-04 11:38:48 +01:00
James Cole
88160df2e8 Add phpstan step. 2023-11-04 11:33:42 +01:00
James Cole
0220cf9784 Fix various phpstan issues. 2023-11-04 11:31:14 +01:00
James Cole
ef428a0226 Fix various phpstan issues. 2023-11-04 07:18:03 +01:00
James Cole
dc45131f73 Various phpstan fixes. 2023-11-04 06:52:40 +01:00
James Cole
633d84449a Merge branch 'main' into develop 2023-11-03 06:03:14 +01:00
James Cole
c3a779df12 Rename action 2023-11-03 06:02:48 +01:00
James Cole
280c941899 Fix action 2023-11-03 06:01:49 +01:00
James Cole
d653bb24cb Merge into single action. 2023-11-03 05:59:17 +01:00
James Cole
9879378566 Add action to prune list. 2023-11-03 05:57:25 +01:00
James Cole
7b4eb9f1df Add new action. 2023-11-03 05:55:59 +01:00
James Cole
101bcc250e Code cleanup 2023-11-03 05:52:35 +01:00
James Cole
dedc1e8131 Add debug for issue https://github.com/firefly-iii/firefly-iii/issues/8110 2023-11-01 18:53:36 +01:00
James Cole
3b4b074bae Fix various phpstan errors. 2023-11-01 18:45:15 +01:00
James Cole
4ee3c7d83e Fix phpstan issues. 2023-10-30 19:49:40 +01:00
James Cole
d36feebb71 Fix #8106 2023-10-30 19:11:02 +01:00
James Cole
6790c318e2 Experimental refactoring. 2023-10-30 07:27:43 +01:00
James Cole
e9ef7d4144 Remove some complex log options 2023-10-30 06:35:08 +01:00
James Cole
a3a412d553 Lol whoops, "cp" is the correct command. 2023-10-30 06:19:14 +01:00
James Cole
d0d7a0befc Add experimental .env for test purposes. 2023-10-30 06:17:38 +01:00
James Cole
6b2e3dcb2a Add step 2023-10-30 06:04:34 +01:00
James Cole
ab6d05cac3 Add an experimental step to CI build 2023-10-30 05:55:48 +01:00
James Cole
c46962306e Merge branch 'develop' of github.com:firefly-iii/firefly-iii into develop 2023-10-30 05:45:56 +01:00
James Cole
821bf6d657 Merge pull request #8108 from firefly-iii/dependabot/composer/develop/symfony/http-client-6.3.7 2023-10-30 05:39:13 +01:00
dependabot[bot]
f3df1d0a04 chore(deps): bump symfony/http-client from 6.3.6 to 6.3.7
Bumps [symfony/http-client](https://github.com/symfony/http-client) from 6.3.6 to 6.3.7.
- [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.3.6...v6.3.7)

---
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-10-30 03:20:20 +00:00
James Cole
d7ff7c633d Merge branch 'main' into develop 2023-10-29 18:00:32 +01:00
James Cole
06629b0b89 Rename workflows 2023-10-29 18:00:14 +01:00
James Cole
ee9ab3d548 Add default app key. 2023-10-29 17:57:27 +01:00
James Cole
feb171171d Migrate to SQLite so we can download a full test database later. 2023-10-29 17:54:52 +01:00
James Cole
21fede0dd0 Remove duplicate set, add mysql. 2023-10-29 17:52:01 +01:00
James Cole
12675dd950 Refactor phpstan errors. 2023-10-29 17:41:14 +01:00
James Cole
5e32878d01 Various code cleanup 2023-10-29 12:10:03 +01:00
James Cole
9a17a11b37 Remove references to static class. 2023-10-29 06:36:37 +01:00
James Cole
4f2159b54d Remove static references 2023-10-29 06:33:43 +01:00
James Cole
075d459b7c Remove static references 2023-10-29 06:32:00 +01:00
James Cole
e65d0eef6e Remove static references 2023-10-29 06:31:27 +01:00
James Cole
91b7d20f9b Remove static references 2023-10-29 06:31:13 +01:00
James Cole
59d96f2893 Various code cleanup. 2023-10-29 06:22:57 +01:00
James Cole
aa1a521cf0 Clean up v2 api points. 2023-10-29 06:09:21 +01:00
James Cole
4bb171128e Remove the use of deprecated methods. 2023-10-29 05:54:01 +01:00
James Cole
a28f561e0c Merge branch 'main' into develop 2023-10-29 05:26:24 +01:00
James Cole
3b6c727916 Rename workflows 2023-10-29 05:26:15 +01:00
James Cole
447ec63299 Expand currency options in transaction form. 2023-10-29 05:24:57 +01:00
James Cole
f1a8d3cc81 Merge tag 'v6.0.30' into develop
v6.0.30
2023-10-28 18:21:14 +02:00
James Cole
4d7909e23d Merge branch 'release/v6.0.30' 2023-10-28 18:21:13 +02:00
James Cole
6f13600fb5 Add missing method. 2023-10-28 18:18:12 +02:00
James Cole
c9fefcd8f4 Add missing method. 2023-10-28 18:08:43 +02:00
James Cole
fa31483b02 Merge branch 'main' into develop 2023-10-28 17:38:50 +02:00
James Cole
e7be0eae8a Add workflow dispatch 2023-10-28 17:38:42 +02:00
James Cole
86c70cf232 Merge tag 'v6.0.29' into develop
v6.0.29
2023-10-28 17:32:00 +02:00
James Cole
a3490e97c0 Merge branch 'release/v6.0.29' 2023-10-28 17:31:59 +02:00
James Cole
85b1768908 Fix issue in release. 2023-10-28 17:31:42 +02:00
James Cole
6ab462a795 Fix issue in bill transformer. 2023-10-28 17:28:54 +02:00
James Cole
70f46338db Merge tag 'v6.0.28' into develop
v6.0.28
2023-10-28 17:18:51 +02:00
James Cole
461b5ad859 Merge branch 'release/v6.0.28' 2023-10-28 17:18:49 +02:00
James Cole
6af62c6be0 Update meta files for new release. 2023-10-28 17:18:02 +02:00
James Cole
78153c2aa4 Update meta files for new release. 2023-10-28 17:17:09 +02:00
James Cole
62458885ce Fix #8103 2023-10-28 16:47:31 +02:00
James Cole
83d64262c8 Refactor currency API 2023-10-28 16:47:11 +02:00
James Cole
0133a7c5db Code cleanup 2023-10-28 15:03:33 +02:00
James Cole
fa920fed4e Introduce missing methods 2023-10-28 14:59:16 +02:00
James Cole
1d138eed8d Refactor currency repository. 2023-10-28 06:58:33 +02:00
James Cole
9e94b9e57e Fix #8099 2023-10-27 18:07:56 +02:00
James Cole
c4c690f44f various fixes 2023-10-27 17:47:24 +02:00
James Cole
902cc21ff0 Debug bill transformer 2023-10-27 17:47:12 +02:00
James Cole
106471877f Merge branch 'develop' of https://github.com/firefly-iii/firefly-iii into develop 2023-10-27 08:48:38 +02:00
James Cole
ccaace707e rename foreign key 2023-10-27 08:48:13 +02:00
James Cole
cc14a4ac57 Merge pull request #8098 from tonicospinelli/testing
Cover preferred format methods of the Navigation class
2023-10-27 05:51:56 +02:00
James Cole
3ca1e6d197 Remove rule title 2023-10-26 08:09:16 +02:00
James Cole
531a6c17de Merge pull request #8070 from Maxco10/patch-1
[Issue #8069] Fixed bug on description field
2023-10-26 08:06:33 +02:00
Maxco10
4b7e1fcdb0 Fixed spelling and replaced quotes
Signed-off-by: Maxco10 <mmagnani93@gmail.com>
2023-10-25 11:58:14 +02:00
Maxco10
5f35bc5ee6 Added check on title and improved the check for description field
Signed-off-by: Maxco10 <mmagnani93@gmail.com>
2023-10-25 11:15:20 +02:00
Antonio Spinelli
8100f68020 Cover preferred format methods of the Navigation class 2023-10-24 22:52:01 -03:00
James Cole
32a36bbb12 Restore missing methods and fix silly bugs. 2023-10-24 18:32:24 +02:00
James Cole
64b9234207 Merge branch 'develop' of github.com:firefly-iii/firefly-iii into develop 2023-10-23 20:09:23 +02:00
James Cole
a9d490263b Fix method. 2023-10-23 20:09:10 +02:00
James Cole
8c5a3c9b3e Merge pull request #8086 from tonicospinelli/testing
Cover endOfPeriod method of the Navigation class
2023-10-23 19:51:59 +02:00
Antonio Spinelli
dd2f8d4404 Cover endOfPeriod method of the Navigation class
The custom frequency requires a timezone configuration, forcing it
to run in the integration test scope.

Running the integration tests requires a database connection in the
build process. It enables other case tests.

The API Tests cause interference in other tests, requiring isolating
them.
2023-10-23 10:32:38 -03:00
James Cole
ea82cff0ce Merge pull request #8088 from firefly-iii/dependabot/npm_and_yarn/develop/sass-1.69.4 2023-10-23 07:06:19 +02:00
James Cole
66ef9a919a Merge pull request #8089 from firefly-iii/dependabot/npm_and_yarn/develop/alpinejs-3.13.2 2023-10-23 07:05:42 +02:00
dependabot[bot]
73b912ee8b chore(deps-dev): bump sass from 1.69.3 to 1.69.4
Bumps [sass](https://github.com/sass/dart-sass) from 1.69.3 to 1.69.4.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.69.3...1.69.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-23 03:48:18 +00:00
James Cole
5960258a89 Merge pull request #8087 from firefly-iii/dependabot/npm_and_yarn/develop/vite-4.5.0 2023-10-23 05:47:37 +02:00
dependabot[bot]
ea7d1f481a chore(deps): bump alpinejs from 3.13.1 to 3.13.2
Bumps [alpinejs](https://github.com/alpinejs/alpine/tree/HEAD/packages/alpinejs) from 3.13.1 to 3.13.2.
- [Release notes](https://github.com/alpinejs/alpine/releases)
- [Commits](https://github.com/alpinejs/alpine/commits/v3.13.2/packages/alpinejs)

---
updated-dependencies:
- dependency-name: alpinejs
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-23 03:46:29 +00:00
dependabot[bot]
d81a0ebba4 chore(deps-dev): bump vite from 4.4.11 to 4.5.0
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 4.4.11 to 4.5.0.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v4.5.0/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v4.5.0/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-23 03:46:01 +00:00
James Cole
e90fb98613 Fix https://github.com/firefly-iii/firefly-iii/issues/7204 2023-10-22 19:01:18 +02:00
James Cole
2c34bd36a5 Allow unreconcile and expand API to block reconciled transactions. 2023-10-22 18:44:30 +02:00
James Cole
a86a582d0f Rebuild frontend 2023-10-22 16:27:03 +02:00
James Cole
c7778ce8cb Merge pull request #8084 from JoSchrader/develop
Hide duplicated webhook create button
2023-10-22 16:12:40 +02:00
root
5eaf1f4438 Hide duplicated webhook create button
When there are no webhooks yet the button below the table will be hidden
2023-10-22 14:45:58 +02:00
James Cole
691682bc0c Fix bad math in piggy bank order code 2023-10-22 09:52:43 +02:00
James Cole
8627ee391a Add missing command 2023-10-22 08:50:35 +02:00
James Cole
41089a0a0a Rename workflows. 2023-10-22 08:22:53 +02:00
James Cole
2072a3dd94 Remove old frontend 2023-10-22 08:18:24 +02:00
James Cole
8eec325e0a Merge branch 'main' into develop 2023-10-22 08:17:44 +02:00
James Cole
7ae88b42cf Add label action 2023-10-22 08:16:16 +02:00
James Cole
24e0839c34 Merge branch 'main' into develop 2023-10-22 08:05:48 +02:00
James Cole
c3398d4d51 Fix refactor for field. 2023-10-22 08:05:28 +02:00
James Cole
80237d8bc3 Refactor methods that request the old currency preference. 2023-10-22 07:55:36 +02:00
James Cole
4cec0a9f97 Refactor repository and some commands for upgrading 2023-10-22 07:51:26 +02:00
James Cole
a810eb2cb5 Do error catching etc. 2023-10-22 07:50:46 +02:00
James Cole
7feb4b4aaf Upgrade database version 2023-10-22 07:45:57 +02:00
James Cole
840fd61b04 Update API 2023-10-22 07:45:48 +02:00
James Cole
5425dac180 Update index to handle new fields. 2023-10-22 07:17:53 +02:00
James Cole
0d65e396d4 Update get() methods. 2023-10-22 07:16:05 +02:00
James Cole
704fc24d20 Rename field for less confusion. 2023-10-22 07:12:47 +02:00
James Cole
9b22c16f14 Remove unused logic from home controller 2023-10-22 06:58:17 +02:00
James Cole
2923d1b449 Remove unused methods from currency controller 2023-10-22 06:57:59 +02:00
James Cole
9d5b028a5f Remove routes that enable/disable/default a currency. 2023-10-22 06:57:15 +02:00
James Cole
97dfdd5c5d Link currency to user and user group. 2023-10-22 06:56:46 +02:00
James Cole
eb5ee4d147 Slightly better text. 2023-10-21 10:39:38 +02:00
James Cole
d97581325d Expand YAML once more. 2023-10-21 08:02:43 +02:00
James Cole
2a1e53f32a Slight changes in yaml config. 2023-10-21 08:00:24 +02:00
James Cole
b5e4ac0038 Add label actions things. 2023-10-21 07:58:24 +02:00
James Cole
b032210a33 Small changes to create transaction form 2023-10-21 07:45:28 +02:00
James Cole
24a1d61560 Merge branch 'main' into develop 2023-10-21 07:38:29 +02:00
James Cole
d632c1c7fc Introduce clone and edit button. 2023-10-21 07:38:08 +02:00
James Cole
9c5b3fc030 Merge pull request #8072 from firefly-iii/dependabot/npm_and_yarn/frontend/babel/traverse-7.23.2 2023-10-18 05:07:07 +02:00
dependabot[bot]
90e407b9d0 chore(deps): bump @babel/traverse from 7.17.9 to 7.23.2 in /frontend
Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.17.9 to 7.23.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse)

---
updated-dependencies:
- dependency-name: "@babel/traverse"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-17 23:03:13 +00:00
Maxco10
dc0a2a2a10 Fixed bug on description field
Signed-off-by: Maxco10 <mmagnani93@gmail.com>
2023-10-17 21:59:56 +02:00
James Cole
b6aa76477e Merge tag 'v6.0.27' into develop
v6.0.27
2023-10-15 13:30:41 +02:00
James Cole
068191e08c Merge branch 'release/v6.0.27' 2023-10-15 13:30:40 +02:00
James Cole
533cd1dbed Update meta data for new release. 2023-10-15 13:03:14 +02:00
James Cole
028ef63f6e Fix https://github.com/firefly-iii/firefly-iii/issues/8057 2023-10-15 12:45:27 +02:00
James Cole
127b6ea515 Add more rounded debug 2023-10-14 14:52:21 +02:00
James Cole
ab546865a8 Clean up debug logs 2023-10-14 14:42:06 +02:00
James Cole
d6a2f2959d Add extra debug entry 2023-10-14 12:41:32 +02:00
James Cole
58848caf30 Change in parameter and code cleanup. 2023-10-14 07:13:35 +02:00
James Cole
c1107fe854 Fix preference thing. 2023-10-14 07:04:07 +02:00
James Cole
c3debb1a17 Fix https://github.com/firefly-iii/firefly-iii/issues/8050 2023-10-14 07:03:18 +02:00
James Cole
0c841a12d2 Fix https://github.com/firefly-iii/firefly-iii/issues/8041 2023-10-14 06:41:08 +02:00
James Cole
64ed9376fe https://github.com/firefly-iii/firefly-iii/pull/8026 2023-10-12 19:15:56 +02:00
James Cole
1966e12703 Fix #8051 2023-10-11 07:42:38 +02:00
James Cole
289ccc7d89 Code for https://github.com/firefly-iii/firefly-iii/pull/8026 2023-10-10 20:13:33 +02:00
James Cole
590c33c0af Merge pull request #8039 from firefly-iii/dependabot/npm_and_yarn/develop/sass-1.69.0 2023-10-09 07:20:43 +02:00
James Cole
4e7236a338 Merge pull request #8040 from firefly-iii/dependabot/npm_and_yarn/develop/alpinejs-3.13.1 2023-10-09 07:20:33 +02:00
dependabot[bot]
63b7626aab chore(deps-dev): bump sass from 1.68.0 to 1.69.0
Bumps [sass](https://github.com/sass/dart-sass) from 1.68.0 to 1.69.0.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.68.0...1.69.0)

---
updated-dependencies:
- dependency-name: sass
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-09 05:18:21 +00:00
James Cole
78b88949d8 Merge pull request #8038 from firefly-iii/dependabot/npm_and_yarn/develop/vite-4.4.11 2023-10-09 07:17:44 +02:00
James Cole
40a7abf9e8 Merge pull request #8037 from firefly-iii/dependabot/composer/develop/phpstan/phpstan-1.10.38 2023-10-09 07:17:33 +02:00
James Cole
cd62dfd8f4 Merge pull request #8036 from firefly-iii/dependabot/composer/develop/laravel/framework-10.26.2 2023-10-09 07:17:21 +02:00
James Cole
4445ad8fe5 Expand debug info 2023-10-09 05:57:00 +02:00
dependabot[bot]
ed29721677 chore(deps): bump alpinejs from 3.13.0 to 3.13.1
Bumps [alpinejs](https://github.com/alpinejs/alpine/tree/HEAD/packages/alpinejs) from 3.13.0 to 3.13.1.
- [Release notes](https://github.com/alpinejs/alpine/releases)
- [Commits](https://github.com/alpinejs/alpine/commits/v3.13.1/packages/alpinejs)

---
updated-dependencies:
- dependency-name: alpinejs
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-09 03:36:14 +00:00
dependabot[bot]
e587f6ec37 chore(deps-dev): bump vite from 4.4.9 to 4.4.11
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 4.4.9 to 4.4.11.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v4.4.11/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v4.4.11/packages/vite)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-09 03:35:53 +00:00
dependabot[bot]
f98f4b00ba chore(deps-dev): bump phpstan/phpstan from 1.10.36 to 1.10.38
Bumps [phpstan/phpstan](https://github.com/phpstan/phpstan) from 1.10.36 to 1.10.38.
- [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.36...1.10.38)

---
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-10-09 03:30:57 +00:00
dependabot[bot]
78bbcb324b chore(deps): bump laravel/framework from 10.25.2 to 10.26.2
Bumps [laravel/framework](https://github.com/laravel/framework) from 10.25.2 to 10.26.2.
- [Release notes](https://github.com/laravel/framework/releases)
- [Changelog](https://github.com/laravel/framework/blob/10.x/CHANGELOG.md)
- [Commits](https://github.com/laravel/framework/compare/v10.25.2...v10.26.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-09 03:30:47 +00:00
James Cole
d646ab0232 Rebuild frontend 2023-10-08 16:21:09 +02:00
James Cole
1fe36044f1 First attempt at "create transaction"-form for v2 users. 2023-10-08 16:11:04 +02:00
James Cole
2ea9369f99 Method should not be async 2023-10-07 07:20:01 +02:00
James Cole
802e1dbf2d Merge pull request #8033 from firefly-iii/dependabot/npm_and_yarn/postcss-8.4.31
chore(deps-dev): bump postcss from 8.4.30 to 8.4.31
2023-10-06 19:29:33 +02:00
dependabot[bot]
b6aca26d8c chore(deps-dev): bump postcss from 8.4.30 to 8.4.31
Bumps [postcss](https://github.com/postcss/postcss) from 8.4.30 to 8.4.31.
- [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.30...8.4.31)

---
updated-dependencies:
- dependency-name: postcss
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-06 17:27:59 +00:00
James Cole
ef653f7b00 Merge pull request #8030 from firefly-iii/dependabot/npm_and_yarn/frontend/postcss-8.4.31
chore(deps): bump postcss from 8.4.5 to 8.4.31 in /frontend
2023-10-06 19:27:21 +02:00
James Cole
8e183d8cad Fix code structure 2023-10-06 18:23:32 +02:00
James Cole
0ce34048cd Merge branch 'develop' of github.com:firefly-iii/firefly-iii into develop 2023-10-06 18:22:02 +02:00
James Cole
d46041f22e Attempt to fix bill view 2023-10-06 18:21:49 +02:00
dependabot[bot]
94cf424bbd chore(deps): bump postcss from 8.4.5 to 8.4.31 in /frontend
Bumps [postcss](https://github.com/postcss/postcss) from 8.4.5 to 8.4.31.
- [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.5...8.4.31)

---
updated-dependencies:
- dependency-name: postcss
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-06 16:20:05 +00:00
James Cole
778d700ba8 Merge pull request #8028 from tieu1991/patch-1
Fix interest payment deducted from amount due
2023-10-06 18:04:13 +02:00
James Cole
8c1cbd77dd Fix correct controller 2023-10-05 19:11:17 +02:00
James Cole
954bf779eb Make sure default is set. 2023-10-05 19:09:31 +02:00
James Cole
7fbed452bb Do check 2023-10-05 19:08:17 +02:00
James Cole
e32023bb97 Refer to middleware 2023-10-05 19:00:39 +02:00
James Cole
664a08d42f Add limit param to all endpoints 2023-10-05 18:52:01 +02:00
tieu1991
854c7f090b Fix edge case amount due in liability
New Case 8 for interest paid to expense account

Signed-off-by: tieu1991 <tieu1991@users.noreply.github.com>
2023-10-05 12:36:37 -04:00
James Cole
a29d056a9b Fix copy paste error in API 2023-10-05 18:26:24 +02:00
James Cole
7d3ee9f0c4 Possible fix for https://github.com/firefly-iii/firefly-iii/issues/8004 2023-10-05 16:50:48 +02:00
James Cole
e26d39ab63 Possible fix for https://github.com/orgs/firefly-iii/discussions/7655 2023-10-05 16:48:29 +02:00
James Cole
ecf465958f Merge branch 'develop' of github.com:firefly-iii/firefly-iii into develop 2023-10-04 19:15:51 +02:00
James Cole
8fa6030341 Fix issue mentioned in https://github.com/firefly-iii/firefly-iii/pull/8020 2023-10-04 19:14:47 +02:00
James Cole
1f6f6dadfa Merge pull request #8016 from firefly-iii/dependabot/npm_and_yarn/develop/axios-1.5.1 2023-10-02 05:40:13 +02:00
dependabot[bot]
ed81eb4edf chore(deps-dev): bump axios from 1.5.0 to 1.5.1
Bumps [axios](https://github.com/axios/axios) from 1.5.0 to 1.5.1.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.5.0...v1.5.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-02 03:40:05 +00:00
James Cole
06ff4b808a Merge pull request #8015 from firefly-iii/dependabot/npm_and_yarn/develop/laravel-vite-plugin-0.8.1 2023-10-02 05:39:24 +02:00
James Cole
fe5999d5b8 Merge pull request #8014 from firefly-iii/dependabot/composer/develop/symfony/http-client-6.3.5 2023-10-02 05:39:15 +02:00
James Cole
9331796dc3 Merge pull request #8013 from firefly-iii/dependabot/composer/develop/doctrine/dbal-3.7.0 2023-10-02 05:39:04 +02:00
James Cole
0a18c948bc Merge pull request #8012 from firefly-iii/dependabot/composer/develop/laravel/framework-10.25.2 2023-10-02 05:38:56 +02:00
dependabot[bot]
595a1fbe34 chore(deps-dev): bump laravel-vite-plugin from 0.8.0 to 0.8.1
Bumps [laravel-vite-plugin](https://github.com/laravel/vite-plugin) from 0.8.0 to 0.8.1.
- [Release notes](https://github.com/laravel/vite-plugin/releases)
- [Changelog](https://github.com/laravel/vite-plugin/blob/main/CHANGELOG.md)
- [Commits](https://github.com/laravel/vite-plugin/compare/v0.8.0...v0.8.1)

---
updated-dependencies:
- dependency-name: laravel-vite-plugin
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-02 03:38:49 +00:00
James Cole
f12db3b8d9 Merge pull request #8011 from firefly-iii/dependabot/composer/develop/symfony/mailgun-mailer-6.3.5 2023-10-02 05:38:47 +02:00
James Cole
2c1da7af31 Merge pull request #8010 from firefly-iii/dependabot/composer/develop/phpstan/phpstan-1.10.36 2023-10-02 05:38:36 +02:00
dependabot[bot]
0f9535bfd5 chore(deps): bump symfony/http-client from 6.3.2 to 6.3.5
Bumps [symfony/http-client](https://github.com/symfony/http-client) from 6.3.2 to 6.3.5.
- [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.3.2...v6.3.5)

---
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-10-02 03:02:50 +00:00
dependabot[bot]
961d3c26fc chore(deps): bump doctrine/dbal from 3.6.7 to 3.7.0
Bumps [doctrine/dbal](https://github.com/doctrine/dbal) from 3.6.7 to 3.7.0.
- [Release notes](https://github.com/doctrine/dbal/releases)
- [Commits](https://github.com/doctrine/dbal/compare/3.6.7...3.7.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-02 03:02:42 +00:00
dependabot[bot]
bd8e003db8 chore(deps): bump laravel/framework from 10.24.0 to 10.25.2
Bumps [laravel/framework](https://github.com/laravel/framework) from 10.24.0 to 10.25.2.
- [Release notes](https://github.com/laravel/framework/releases)
- [Changelog](https://github.com/laravel/framework/blob/10.x/CHANGELOG.md)
- [Commits](https://github.com/laravel/framework/compare/v10.24.0...v10.25.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-02 03:02:34 +00:00
dependabot[bot]
619eb60dd1 chore(deps): bump symfony/mailgun-mailer from 6.3.2 to 6.3.5
Bumps [symfony/mailgun-mailer](https://github.com/symfony/mailgun-mailer) from 6.3.2 to 6.3.5.
- [Release notes](https://github.com/symfony/mailgun-mailer/releases)
- [Changelog](https://github.com/symfony/mailgun-mailer/blob/6.3/CHANGELOG.md)
- [Commits](https://github.com/symfony/mailgun-mailer/compare/v6.3.2...v6.3.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-02 03:02:15 +00:00
dependabot[bot]
15948303ec chore(deps-dev): bump phpstan/phpstan from 1.10.35 to 1.10.36
Bumps [phpstan/phpstan](https://github.com/phpstan/phpstan) from 1.10.35 to 1.10.36.
- [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.35...1.10.36)

---
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-10-02 03:02:08 +00:00
James Cole
ccec203910 Make sure charts are destroyed. 2023-10-01 11:32:08 +02:00
James Cole
78122a7d4b Optimize validation command. 2023-10-01 11:17:57 +02:00
James Cole
272c73054e Dynamic cache key for all data. 2023-10-01 07:17:56 +02:00
James Cole
aa629523a0 Fix issue on dashboard. 2023-10-01 06:52:38 +02:00
James Cole
3e6aca4cd1 Remove template 2023-09-25 20:20:23 +02:00
James Cole
891883c8c2 Merge tag 'v6.0.26' into develop
v6.0.26
2023-09-24 03:35:55 +02:00
James Cole
98ba392016 Merge branch 'release/v6.0.26' 2023-09-24 03:35:54 +02:00
James Cole
d49ee83748 Update packages 2023-09-24 03:35:27 +02:00
James Cole
88cdb1811f Update meta files for new release 2023-09-24 03:35:10 +02:00
James Cole
94c190668c Fix https://github.com/firefly-iii/firefly-iii/issues/7992 2023-09-24 03:22:18 +02:00
James Cole
eef0f4bd4e Remove string https://github.com/firefly-iii/firefly-iii/issues/7990 2023-09-23 18:56:04 +02:00
James Cole
dad58fa362 Remove exceptions. 2023-09-23 16:43:54 +02:00
James Cole
40585469f2 Slightly different text for closed issues. 2023-09-23 16:35:51 +02:00
James Cole
d06035071a Fix missing timezone in debug info 2023-09-23 16:30:00 +02:00
James Cole
e81565d36a Small change in debug logging. 2023-09-23 16:29:21 +02:00
James Cole
f66dd259f0 Fix https://github.com/firefly-iii/firefly-iii/issues/7986 2023-09-23 10:34:49 +02:00
James Cole
e003dcd596 Merge tag 'v6.0.25' into develop
v6.0.25
2023-09-23 08:29:48 +02:00
2342 changed files with 116065 additions and 223615 deletions

30
.ci/all.sh Executable file
View File

@@ -0,0 +1,30 @@
#!/usr/bin/env bash
#
# all.sh
# Copyright (c) 2024 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 )"
echo "Running PHP CS Fixer"
$SCRIPT_DIR/phpcs.sh
echo "Running PHPStan"
$SCRIPT_DIR/phpstan.sh
echo "Running PHPMD"
$SCRIPT_DIR/phpmd.sh

View File

@@ -35,10 +35,39 @@ $finder = PhpCsFixer\Finder::create()
$config = new PhpCsFixer\Config();
return $config->setRules([
'@PSR12' => true,
'declare_strict_types' => true,
'strict_param' => true,
'array_syntax' => ['syntax' => 'short'],
])
return $config->setRules(
[
// rule sets
'@PHP83Migration' => true,
'@PhpCsFixer' => true,
'@PhpCsFixer:risky' => true,
'@PSR12' => true,
'@PSR12:risky' => true,
'declare_strict_types' => true,
'strict_param' => true,
'no_unused_imports' => true,
'single_space_around_construct' => true,
'statement_indentation' => true,
'void_return' => true,
// disabled rules
'native_function_invocation' => false, // annoying
'php_unit_data_provider_name' => false, // bloody annoying long test names
'static_lambda' => false, // breaks the Response macro for API's.
'phpdoc_summary' => false, // annoying.
'comment_to_phpdoc' => false, // breaks phpstan lines in combination with PHPStorm.
'type_declaration_spaces' => false,
'cast_spaces' => false,
// complex rules
'array_syntax' => ['syntax' => 'short'],
'binary_operator_spaces' => [
'default' => 'at_least_single_space',
'operators' => [
'=>' => 'align_single_space_by_scope',
'=' => 'align_single_space_minimal_by_scope',
'??=' => 'align_single_space_minimal_by_scope',
],
],
])
->setFinder($finder);

View File

@@ -8,16 +8,16 @@
"packages": [
{
"name": "composer/pcre",
"version": "3.1.0",
"version": "3.1.2",
"source": {
"type": "git",
"url": "https://github.com/composer/pcre.git",
"reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2"
"reference": "4775f35b2d70865807c89d32c8e7385b86eb0ace"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/composer/pcre/zipball/4bff79ddd77851fe3cdd11616ed3f92841ba5bd2",
"reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2",
"url": "https://api.github.com/repos/composer/pcre/zipball/4775f35b2d70865807c89d32c8e7385b86eb0ace",
"reference": "4775f35b2d70865807c89d32c8e7385b86eb0ace",
"shasum": ""
},
"require": {
@@ -59,7 +59,7 @@
],
"support": {
"issues": "https://github.com/composer/pcre/issues",
"source": "https://github.com/composer/pcre/tree/3.1.0"
"source": "https://github.com/composer/pcre/tree/3.1.2"
},
"funding": [
{
@@ -75,7 +75,7 @@
"type": "tidelift"
}
],
"time": "2022-11-17T09:50:14+00:00"
"time": "2024-03-07T15:38:35+00:00"
},
{
"name": "composer/semver",
@@ -226,52 +226,49 @@
},
{
"name": "friendsofphp/php-cs-fixer",
"version": "v3.28.0",
"version": "v3.51.0",
"source": {
"type": "git",
"url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git",
"reference": "113e09fea3d2306319ffaa2423fe3de768b28cff"
"reference": "127fa74f010da99053e3f5b62672615b72dd6efd"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/113e09fea3d2306319ffaa2423fe3de768b28cff",
"reference": "113e09fea3d2306319ffaa2423fe3de768b28cff",
"url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/127fa74f010da99053e3f5b62672615b72dd6efd",
"reference": "127fa74f010da99053e3f5b62672615b72dd6efd",
"shasum": ""
},
"require": {
"composer/semver": "^3.3",
"composer/semver": "^3.4",
"composer/xdebug-handler": "^3.0.3",
"ext-filter": "*",
"ext-json": "*",
"ext-tokenizer": "*",
"php": "^7.4 || ^8.0",
"sebastian/diff": "^4.0 || ^5.0",
"symfony/console": "^5.4 || ^6.0",
"symfony/event-dispatcher": "^5.4 || ^6.0",
"symfony/filesystem": "^5.4 || ^6.0",
"symfony/finder": "^5.4 || ^6.0",
"symfony/options-resolver": "^5.4 || ^6.0",
"symfony/polyfill-mbstring": "^1.27",
"symfony/polyfill-php80": "^1.27",
"symfony/polyfill-php81": "^1.27",
"symfony/process": "^5.4 || ^6.0",
"symfony/stopwatch": "^5.4 || ^6.0"
"sebastian/diff": "^4.0 || ^5.0 || ^6.0",
"symfony/console": "^5.4 || ^6.0 || ^7.0",
"symfony/event-dispatcher": "^5.4 || ^6.0 || ^7.0",
"symfony/filesystem": "^5.4 || ^6.0 || ^7.0",
"symfony/finder": "^5.4 || ^6.0 || ^7.0",
"symfony/options-resolver": "^5.4 || ^6.0 || ^7.0",
"symfony/polyfill-mbstring": "^1.28",
"symfony/polyfill-php80": "^1.28",
"symfony/polyfill-php81": "^1.28",
"symfony/process": "^5.4 || ^6.0 || ^7.0",
"symfony/stopwatch": "^5.4 || ^6.0 || ^7.0"
},
"require-dev": {
"facile-it/paraunit": "^1.3 || ^2.0",
"justinrainbow/json-schema": "^5.2",
"keradus/cli-executor": "^2.0",
"keradus/cli-executor": "^2.1",
"mikey179/vfsstream": "^1.6.11",
"php-coveralls/php-coveralls": "^2.5.3",
"php-coveralls/php-coveralls": "^2.7",
"php-cs-fixer/accessible-object": "^1.1",
"php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.2",
"php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.2.1",
"phpspec/prophecy": "^1.16",
"phpspec/prophecy-phpunit": "^2.0",
"phpunit/phpunit": "^9.5",
"phpunitgoodpractices/polyfill": "^1.6",
"phpunitgoodpractices/traits": "^1.9.2",
"symfony/phpunit-bridge": "^6.2.3",
"symfony/yaml": "^5.4 || ^6.0"
"php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.4",
"php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.4",
"phpunit/phpunit": "^9.6 || ^10.5.5 || ^11.0.2",
"symfony/var-dumper": "^5.4 || ^6.0 || ^7.0",
"symfony/yaml": "^5.4 || ^6.0 || ^7.0"
},
"suggest": {
"ext-dom": "For handling output formats in XML",
@@ -309,7 +306,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.28.0"
"source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.51.0"
},
"funding": [
{
@@ -317,7 +314,7 @@
"type": "github"
}
],
"time": "2023-09-22T20:43:40+00:00"
"time": "2024-02-28T19:50:06+00:00"
},
{
"name": "psr/container",
@@ -474,29 +471,29 @@
},
{
"name": "sebastian/diff",
"version": "5.0.3",
"version": "6.0.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/diff.git",
"reference": "912dc2fbe3e3c1e7873313cc801b100b6c68c87b"
"reference": "ab83243ecc233de5655b76f577711de9f842e712"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/912dc2fbe3e3c1e7873313cc801b100b6c68c87b",
"reference": "912dc2fbe3e3c1e7873313cc801b100b6c68c87b",
"url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/ab83243ecc233de5655b76f577711de9f842e712",
"reference": "ab83243ecc233de5655b76f577711de9f842e712",
"shasum": ""
},
"require": {
"php": ">=8.1"
"php": ">=8.2"
},
"require-dev": {
"phpunit/phpunit": "^10.0",
"phpunit/phpunit": "^11.0",
"symfony/process": "^4.2 || ^5"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "5.0-dev"
"dev-main": "6.0-dev"
}
},
"autoload": {
@@ -529,7 +526,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/diff/issues",
"security": "https://github.com/sebastianbergmann/diff/security/policy",
"source": "https://github.com/sebastianbergmann/diff/tree/5.0.3"
"source": "https://github.com/sebastianbergmann/diff/tree/6.0.1"
},
"funding": [
{
@@ -537,47 +534,50 @@
"type": "github"
}
],
"time": "2023-05-01T07:48:21+00:00"
"time": "2024-03-02T07:30:33+00:00"
},
{
"name": "symfony/console",
"version": "v6.3.4",
"version": "v7.0.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
"reference": "eca495f2ee845130855ddf1cf18460c38966c8b6"
"reference": "6b099f3306f7c9c2d2786ed736d0026b2903205f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/console/zipball/eca495f2ee845130855ddf1cf18460c38966c8b6",
"reference": "eca495f2ee845130855ddf1cf18460c38966c8b6",
"url": "https://api.github.com/repos/symfony/console/zipball/6b099f3306f7c9c2d2786ed736d0026b2903205f",
"reference": "6b099f3306f7c9c2d2786ed736d0026b2903205f",
"shasum": ""
},
"require": {
"php": ">=8.1",
"symfony/deprecation-contracts": "^2.5|^3",
"php": ">=8.2",
"symfony/polyfill-mbstring": "~1.0",
"symfony/service-contracts": "^2.5|^3",
"symfony/string": "^5.4|^6.0"
"symfony/string": "^6.4|^7.0"
},
"conflict": {
"symfony/dependency-injection": "<5.4",
"symfony/dotenv": "<5.4",
"symfony/event-dispatcher": "<5.4",
"symfony/lock": "<5.4",
"symfony/process": "<5.4"
"symfony/dependency-injection": "<6.4",
"symfony/dotenv": "<6.4",
"symfony/event-dispatcher": "<6.4",
"symfony/lock": "<6.4",
"symfony/process": "<6.4"
},
"provide": {
"psr/log-implementation": "1.0|2.0|3.0"
},
"require-dev": {
"psr/log": "^1|^2|^3",
"symfony/config": "^5.4|^6.0",
"symfony/dependency-injection": "^5.4|^6.0",
"symfony/event-dispatcher": "^5.4|^6.0",
"symfony/lock": "^5.4|^6.0",
"symfony/process": "^5.4|^6.0",
"symfony/var-dumper": "^5.4|^6.0"
"symfony/config": "^6.4|^7.0",
"symfony/dependency-injection": "^6.4|^7.0",
"symfony/event-dispatcher": "^6.4|^7.0",
"symfony/http-foundation": "^6.4|^7.0",
"symfony/http-kernel": "^6.4|^7.0",
"symfony/lock": "^6.4|^7.0",
"symfony/messenger": "^6.4|^7.0",
"symfony/process": "^6.4|^7.0",
"symfony/stopwatch": "^6.4|^7.0",
"symfony/var-dumper": "^6.4|^7.0"
},
"type": "library",
"autoload": {
@@ -611,7 +611,7 @@
"terminal"
],
"support": {
"source": "https://github.com/symfony/console/tree/v6.3.4"
"source": "https://github.com/symfony/console/tree/v7.0.4"
},
"funding": [
{
@@ -627,11 +627,11 @@
"type": "tidelift"
}
],
"time": "2023-08-16T10:10:12+00:00"
"time": "2024-02-22T20:27:20+00:00"
},
{
"name": "symfony/deprecation-contracts",
"version": "v3.3.0",
"version": "v3.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/deprecation-contracts.git",
@@ -678,7 +678,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.3.0"
"source": "https://github.com/symfony/deprecation-contracts/tree/v3.4.0"
},
"funding": [
{
@@ -698,24 +698,24 @@
},
{
"name": "symfony/event-dispatcher",
"version": "v6.3.2",
"version": "v7.0.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
"reference": "adb01fe097a4ee930db9258a3cc906b5beb5cf2e"
"reference": "834c28d533dd0636f910909d01b9ff45cc094b5e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/adb01fe097a4ee930db9258a3cc906b5beb5cf2e",
"reference": "adb01fe097a4ee930db9258a3cc906b5beb5cf2e",
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/834c28d533dd0636f910909d01b9ff45cc094b5e",
"reference": "834c28d533dd0636f910909d01b9ff45cc094b5e",
"shasum": ""
},
"require": {
"php": ">=8.1",
"php": ">=8.2",
"symfony/event-dispatcher-contracts": "^2.5|^3"
},
"conflict": {
"symfony/dependency-injection": "<5.4",
"symfony/dependency-injection": "<6.4",
"symfony/service-contracts": "<2.5"
},
"provide": {
@@ -724,13 +724,13 @@
},
"require-dev": {
"psr/log": "^1|^2|^3",
"symfony/config": "^5.4|^6.0",
"symfony/dependency-injection": "^5.4|^6.0",
"symfony/error-handler": "^5.4|^6.0",
"symfony/expression-language": "^5.4|^6.0",
"symfony/http-foundation": "^5.4|^6.0",
"symfony/config": "^6.4|^7.0",
"symfony/dependency-injection": "^6.4|^7.0",
"symfony/error-handler": "^6.4|^7.0",
"symfony/expression-language": "^6.4|^7.0",
"symfony/http-foundation": "^6.4|^7.0",
"symfony/service-contracts": "^2.5|^3",
"symfony/stopwatch": "^5.4|^6.0"
"symfony/stopwatch": "^6.4|^7.0"
},
"type": "library",
"autoload": {
@@ -758,7 +758,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.3.2"
"source": "https://github.com/symfony/event-dispatcher/tree/v7.0.3"
},
"funding": [
{
@@ -774,11 +774,11 @@
"type": "tidelift"
}
],
"time": "2023-07-06T06:56:43+00:00"
"time": "2024-01-23T15:02:46+00:00"
},
{
"name": "symfony/event-dispatcher-contracts",
"version": "v3.3.0",
"version": "v3.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher-contracts.git",
@@ -834,7 +834,7 @@
"standards"
],
"support": {
"source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.3.0"
"source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.4.0"
},
"funding": [
{
@@ -854,20 +854,20 @@
},
{
"name": "symfony/filesystem",
"version": "v6.3.1",
"version": "v7.0.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
"reference": "edd36776956f2a6fcf577edb5b05eb0e3bdc52ae"
"reference": "2890e3a825bc0c0558526c04499c13f83e1b6b12"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/filesystem/zipball/edd36776956f2a6fcf577edb5b05eb0e3bdc52ae",
"reference": "edd36776956f2a6fcf577edb5b05eb0e3bdc52ae",
"url": "https://api.github.com/repos/symfony/filesystem/zipball/2890e3a825bc0c0558526c04499c13f83e1b6b12",
"reference": "2890e3a825bc0c0558526c04499c13f83e1b6b12",
"shasum": ""
},
"require": {
"php": ">=8.1",
"php": ">=8.2",
"symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-mbstring": "~1.8"
},
@@ -897,7 +897,7 @@
"description": "Provides basic utilities for the filesystem",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/filesystem/tree/v6.3.1"
"source": "https://github.com/symfony/filesystem/tree/v7.0.3"
},
"funding": [
{
@@ -913,27 +913,27 @@
"type": "tidelift"
}
],
"time": "2023-06-01T08:30:39+00:00"
"time": "2024-01-23T15:02:46+00:00"
},
{
"name": "symfony/finder",
"version": "v6.3.3",
"version": "v7.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
"reference": "9915db259f67d21eefee768c1abcf1cc61b1fc9e"
"reference": "6e5688d69f7cfc4ed4a511e96007e06c2d34ce56"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/finder/zipball/9915db259f67d21eefee768c1abcf1cc61b1fc9e",
"reference": "9915db259f67d21eefee768c1abcf1cc61b1fc9e",
"url": "https://api.github.com/repos/symfony/finder/zipball/6e5688d69f7cfc4ed4a511e96007e06c2d34ce56",
"reference": "6e5688d69f7cfc4ed4a511e96007e06c2d34ce56",
"shasum": ""
},
"require": {
"php": ">=8.1"
"php": ">=8.2"
},
"require-dev": {
"symfony/filesystem": "^6.0"
"symfony/filesystem": "^6.4|^7.0"
},
"type": "library",
"autoload": {
@@ -961,7 +961,7 @@
"description": "Finds files and directories via an intuitive fluent interface",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/finder/tree/v6.3.3"
"source": "https://github.com/symfony/finder/tree/v7.0.0"
},
"funding": [
{
@@ -977,24 +977,24 @@
"type": "tidelift"
}
],
"time": "2023-07-31T08:31:44+00:00"
"time": "2023-10-31T17:59:56+00:00"
},
{
"name": "symfony/options-resolver",
"version": "v6.3.0",
"version": "v7.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/options-resolver.git",
"reference": "a10f19f5198d589d5c33333cffe98dc9820332dd"
"reference": "700ff4096e346f54cb628ea650767c8130f1001f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/options-resolver/zipball/a10f19f5198d589d5c33333cffe98dc9820332dd",
"reference": "a10f19f5198d589d5c33333cffe98dc9820332dd",
"url": "https://api.github.com/repos/symfony/options-resolver/zipball/700ff4096e346f54cb628ea650767c8130f1001f",
"reference": "700ff4096e346f54cb628ea650767c8130f1001f",
"shasum": ""
},
"require": {
"php": ">=8.1",
"php": ">=8.2",
"symfony/deprecation-contracts": "^2.5|^3"
},
"type": "library",
@@ -1028,7 +1028,7 @@
"options"
],
"support": {
"source": "https://github.com/symfony/options-resolver/tree/v6.3.0"
"source": "https://github.com/symfony/options-resolver/tree/v7.0.0"
},
"funding": [
{
@@ -1044,20 +1044,20 @@
"type": "tidelift"
}
],
"time": "2023-05-12T14:21:09+00:00"
"time": "2023-08-08T10:20:21+00:00"
},
{
"name": "symfony/polyfill-ctype",
"version": "v1.28.0",
"version": "v1.29.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
"reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb"
"reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb",
"reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ef4d7e442ca910c4764bce785146269b30cb5fc4",
"reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4",
"shasum": ""
},
"require": {
@@ -1071,9 +1071,6 @@
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.28-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
@@ -1110,7 +1107,7 @@
"portable"
],
"support": {
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0"
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.29.0"
},
"funding": [
{
@@ -1126,20 +1123,20 @@
"type": "tidelift"
}
],
"time": "2023-01-26T09:26:14+00:00"
"time": "2024-01-29T20:11:03+00:00"
},
{
"name": "symfony/polyfill-intl-grapheme",
"version": "v1.28.0",
"version": "v1.29.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-grapheme.git",
"reference": "875e90aeea2777b6f135677f618529449334a612"
"reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/875e90aeea2777b6f135677f618529449334a612",
"reference": "875e90aeea2777b6f135677f618529449334a612",
"url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/32a9da87d7b3245e09ac426c83d334ae9f06f80f",
"reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f",
"shasum": ""
},
"require": {
@@ -1150,9 +1147,6 @@
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.28-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
@@ -1191,7 +1185,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.28.0"
"source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.29.0"
},
"funding": [
{
@@ -1207,20 +1201,20 @@
"type": "tidelift"
}
],
"time": "2023-01-26T09:26:14+00:00"
"time": "2024-01-29T20:11:03+00:00"
},
{
"name": "symfony/polyfill-intl-normalizer",
"version": "v1.28.0",
"version": "v1.29.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
"reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92"
"reference": "bc45c394692b948b4d383a08d7753968bed9a83d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92",
"reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92",
"url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/bc45c394692b948b4d383a08d7753968bed9a83d",
"reference": "bc45c394692b948b4d383a08d7753968bed9a83d",
"shasum": ""
},
"require": {
@@ -1231,9 +1225,6 @@
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.28-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
@@ -1275,7 +1266,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.28.0"
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.29.0"
},
"funding": [
{
@@ -1291,20 +1282,20 @@
"type": "tidelift"
}
],
"time": "2023-01-26T09:26:14+00:00"
"time": "2024-01-29T20:11:03+00:00"
},
{
"name": "symfony/polyfill-mbstring",
"version": "v1.28.0",
"version": "v1.29.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
"reference": "42292d99c55abe617799667f454222c54c60e229"
"reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229",
"reference": "42292d99c55abe617799667f454222c54c60e229",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec",
"reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec",
"shasum": ""
},
"require": {
@@ -1318,9 +1309,6 @@
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.28-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
@@ -1358,7 +1346,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0"
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0"
},
"funding": [
{
@@ -1374,20 +1362,20 @@
"type": "tidelift"
}
],
"time": "2023-07-28T09:04:16+00:00"
"time": "2024-01-29T20:11:03+00:00"
},
{
"name": "symfony/polyfill-php80",
"version": "v1.28.0",
"version": "v1.29.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php80.git",
"reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5"
"reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/6caa57379c4aec19c0a12a38b59b26487dcfe4b5",
"reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5",
"url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/87b68208d5c1188808dd7839ee1e6c8ec3b02f1b",
"reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b",
"shasum": ""
},
"require": {
@@ -1395,9 +1383,6 @@
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.28-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
@@ -1441,7 +1426,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-php80/tree/v1.28.0"
"source": "https://github.com/symfony/polyfill-php80/tree/v1.29.0"
},
"funding": [
{
@@ -1457,20 +1442,20 @@
"type": "tidelift"
}
],
"time": "2023-01-26T09:26:14+00:00"
"time": "2024-01-29T20:11:03+00:00"
},
{
"name": "symfony/polyfill-php81",
"version": "v1.28.0",
"version": "v1.29.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php81.git",
"reference": "7581cd600fa9fd681b797d00b02f068e2f13263b"
"reference": "c565ad1e63f30e7477fc40738343c62b40bc672d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/7581cd600fa9fd681b797d00b02f068e2f13263b",
"reference": "7581cd600fa9fd681b797d00b02f068e2f13263b",
"url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/c565ad1e63f30e7477fc40738343c62b40bc672d",
"reference": "c565ad1e63f30e7477fc40738343c62b40bc672d",
"shasum": ""
},
"require": {
@@ -1478,9 +1463,6 @@
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.28-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
@@ -1520,7 +1502,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-php81/tree/v1.28.0"
"source": "https://github.com/symfony/polyfill-php81/tree/v1.29.0"
},
"funding": [
{
@@ -1536,24 +1518,24 @@
"type": "tidelift"
}
],
"time": "2023-01-26T09:26:14+00:00"
"time": "2024-01-29T20:11:03+00:00"
},
{
"name": "symfony/process",
"version": "v6.3.4",
"version": "v7.0.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
"reference": "0b5c29118f2e980d455d2e34a5659f4579847c54"
"reference": "0e7727191c3b71ebec6d529fa0e50a01ca5679e9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/process/zipball/0b5c29118f2e980d455d2e34a5659f4579847c54",
"reference": "0b5c29118f2e980d455d2e34a5659f4579847c54",
"url": "https://api.github.com/repos/symfony/process/zipball/0e7727191c3b71ebec6d529fa0e50a01ca5679e9",
"reference": "0e7727191c3b71ebec6d529fa0e50a01ca5679e9",
"shasum": ""
},
"require": {
"php": ">=8.1"
"php": ">=8.2"
},
"type": "library",
"autoload": {
@@ -1581,7 +1563,7 @@
"description": "Executes commands in sub-processes",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/process/tree/v6.3.4"
"source": "https://github.com/symfony/process/tree/v7.0.4"
},
"funding": [
{
@@ -1597,25 +1579,25 @@
"type": "tidelift"
}
],
"time": "2023-08-07T10:39:22+00:00"
"time": "2024-02-22T20:27:20+00:00"
},
{
"name": "symfony/service-contracts",
"version": "v3.3.0",
"version": "v3.4.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/service-contracts.git",
"reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4"
"reference": "fe07cbc8d837f60caf7018068e350cc5163681a0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/service-contracts/zipball/40da9cc13ec349d9e4966ce18b5fbcd724ab10a4",
"reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4",
"url": "https://api.github.com/repos/symfony/service-contracts/zipball/fe07cbc8d837f60caf7018068e350cc5163681a0",
"reference": "fe07cbc8d837f60caf7018068e350cc5163681a0",
"shasum": ""
},
"require": {
"php": ">=8.1",
"psr/container": "^2.0"
"psr/container": "^1.1|^2.0"
},
"conflict": {
"ext-psr": "<1.1|>=2"
@@ -1663,7 +1645,7 @@
"standards"
],
"support": {
"source": "https://github.com/symfony/service-contracts/tree/v3.3.0"
"source": "https://github.com/symfony/service-contracts/tree/v3.4.1"
},
"funding": [
{
@@ -1679,24 +1661,24 @@
"type": "tidelift"
}
],
"time": "2023-05-23T14:45:45+00:00"
"time": "2023-12-26T14:02:43+00:00"
},
{
"name": "symfony/stopwatch",
"version": "v6.3.0",
"version": "v7.0.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/stopwatch.git",
"reference": "fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2"
"reference": "983900d6fddf2b0cbaacacbbad07610854bd8112"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/stopwatch/zipball/fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2",
"reference": "fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2",
"url": "https://api.github.com/repos/symfony/stopwatch/zipball/983900d6fddf2b0cbaacacbbad07610854bd8112",
"reference": "983900d6fddf2b0cbaacacbbad07610854bd8112",
"shasum": ""
},
"require": {
"php": ">=8.1",
"php": ">=8.2",
"symfony/service-contracts": "^2.5|^3"
},
"type": "library",
@@ -1725,7 +1707,7 @@
"description": "Provides a way to profile code",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/stopwatch/tree/v6.3.0"
"source": "https://github.com/symfony/stopwatch/tree/v7.0.3"
},
"funding": [
{
@@ -1741,24 +1723,24 @@
"type": "tidelift"
}
],
"time": "2023-02-16T10:14:28+00:00"
"time": "2024-01-23T15:02:46+00:00"
},
{
"name": "symfony/string",
"version": "v6.3.2",
"version": "v7.0.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
"reference": "53d1a83225002635bca3482fcbf963001313fb68"
"reference": "f5832521b998b0bec40bee688ad5de98d4cf111b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/string/zipball/53d1a83225002635bca3482fcbf963001313fb68",
"reference": "53d1a83225002635bca3482fcbf963001313fb68",
"url": "https://api.github.com/repos/symfony/string/zipball/f5832521b998b0bec40bee688ad5de98d4cf111b",
"reference": "f5832521b998b0bec40bee688ad5de98d4cf111b",
"shasum": ""
},
"require": {
"php": ">=8.1",
"php": ">=8.2",
"symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-intl-grapheme": "~1.0",
"symfony/polyfill-intl-normalizer": "~1.0",
@@ -1768,11 +1750,11 @@
"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/error-handler": "^6.4|^7.0",
"symfony/http-client": "^6.4|^7.0",
"symfony/intl": "^6.4|^7.0",
"symfony/translation-contracts": "^2.5|^3.0",
"symfony/var-exporter": "^5.4|^6.0"
"symfony/var-exporter": "^6.4|^7.0"
},
"type": "library",
"autoload": {
@@ -1811,7 +1793,7 @@
"utf8"
],
"support": {
"source": "https://github.com/symfony/string/tree/v6.3.2"
"source": "https://github.com/symfony/string/tree/v7.0.4"
},
"funding": [
{
@@ -1827,7 +1809,7 @@
"type": "tidelift"
}
],
"time": "2023-07-05T08:41:27+00:00"
"time": "2024-02-01T13:17:36+00:00"
}
],
"packages-dev": [],
@@ -1838,5 +1820,5 @@
"prefer-lowest": false,
"platform": [],
"platform-dev": [],
"plugin-api-version": "2.3.0"
"plugin-api-version": "2.6.0"
}

View File

@@ -28,11 +28,29 @@ SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
# enable test .env file.
# cp .ci/.env.ci .env
OUTPUT_FORMAT=txt
EXTRA_PARAMS=""
if [[ $GITHUB_ACTIONS = "true" ]]
then
OUTPUT_FORMAT=txt
EXTRA_PARAMS=""
fi
# clean up php code
cd $SCRIPT_DIR/php-cs-fixer
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
PHP_CS_FIXER_IGNORE_ENV=true
./vendor/bin/php-cs-fixer fix \
--config $SCRIPT_DIR/php-cs-fixer/.php-cs-fixer.php \
--format=$OUTPUT_FORMAT \
--allow-risky=yes $EXTRA_PARAMS
EXIT_CODE=$?
echo "Exit code for CS fixer is $EXIT_CODE."
cd $SCRIPT_DIR/..
exit 0
exit $EXIT_CODE

19
.ci/phpmd.sh Normal file → Executable file
View File

@@ -22,16 +22,29 @@
SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
OUTPUT_FORMAT=text
if [[ $GITHUB_ACTIONS = "true" ]]
then
OUTPUT_FORMAT=github
fi
cd $SCRIPT_DIR/phpmd
composer update --quiet
./vendor/bin/phpmd \
$SCRIPT_DIR/../app text phpmd.xml \
$SCRIPT_DIR/../app,$SCRIPT_DIR/../database,$SCRIPT_DIR/../routes,$SCRIPT_DIR/../config \
$OUTPUT_FORMAT phpmd.xml \
--exclude $SCRIPT_DIR/../app/resources/** \
--exclude $SCRIPT_DIR/../app/frontend/** \
--exclude $SCRIPT_DIR/../app/public/** \
--exclude $SCRIPT_DIR/../app/vendor/** \
--exclude $SCRIPT_DIR/../app/vendor/**
EXIT_CODE=$?
cd $SCRIPT_DIR/..
exit 0
echo "Exit code is $EXIT_CODE."
# for the time being, exit 0
exit $EXIT_CODE

187
.ci/phpmd/composer.lock generated
View File

@@ -9,16 +9,16 @@
"packages-dev": [
{
"name": "composer/pcre",
"version": "3.1.0",
"version": "3.1.2",
"source": {
"type": "git",
"url": "https://github.com/composer/pcre.git",
"reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2"
"reference": "4775f35b2d70865807c89d32c8e7385b86eb0ace"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/composer/pcre/zipball/4bff79ddd77851fe3cdd11616ed3f92841ba5bd2",
"reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2",
"url": "https://api.github.com/repos/composer/pcre/zipball/4775f35b2d70865807c89d32c8e7385b86eb0ace",
"reference": "4775f35b2d70865807c89d32c8e7385b86eb0ace",
"shasum": ""
},
"require": {
@@ -60,7 +60,7 @@
],
"support": {
"issues": "https://github.com/composer/pcre/issues",
"source": "https://github.com/composer/pcre/tree/3.1.0"
"source": "https://github.com/composer/pcre/tree/3.1.2"
},
"funding": [
{
@@ -76,7 +76,7 @@
"type": "tidelift"
}
],
"time": "2022-11-17T09:50:14+00:00"
"time": "2024-03-07T15:38:35+00:00"
},
{
"name": "composer/xdebug-handler",
@@ -146,28 +146,28 @@
},
{
"name": "pdepend/pdepend",
"version": "2.14.0",
"version": "2.16.2",
"source": {
"type": "git",
"url": "https://github.com/pdepend/pdepend.git",
"reference": "1121d4b04af06e33e9659bac3a6741b91cab1de1"
"reference": "f942b208dc2a0868454d01b29f0c75bbcfc6ed58"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/pdepend/pdepend/zipball/1121d4b04af06e33e9659bac3a6741b91cab1de1",
"reference": "1121d4b04af06e33e9659bac3a6741b91cab1de1",
"url": "https://api.github.com/repos/pdepend/pdepend/zipball/f942b208dc2a0868454d01b29f0c75bbcfc6ed58",
"reference": "f942b208dc2a0868454d01b29f0c75bbcfc6ed58",
"shasum": ""
},
"require": {
"php": ">=5.3.7",
"symfony/config": "^2.3.0|^3|^4|^5|^6.0",
"symfony/dependency-injection": "^2.3.0|^3|^4|^5|^6.0",
"symfony/filesystem": "^2.3.0|^3|^4|^5|^6.0"
"symfony/config": "^2.3.0|^3|^4|^5|^6.0|^7.0",
"symfony/dependency-injection": "^2.3.0|^3|^4|^5|^6.0|^7.0",
"symfony/filesystem": "^2.3.0|^3|^4|^5|^6.0|^7.0",
"symfony/polyfill-mbstring": "^1.19"
},
"require-dev": {
"easy-doc/easy-doc": "0.0.0|^1.2.3",
"gregwar/rst": "^1.0",
"phpunit/phpunit": "^4.8.36|^5.7.27",
"squizlabs/php_codesniffer": "^2.0.0"
},
"bin": [
@@ -197,7 +197,7 @@
],
"support": {
"issues": "https://github.com/pdepend/pdepend/issues",
"source": "https://github.com/pdepend/pdepend/tree/2.14.0"
"source": "https://github.com/pdepend/pdepend/tree/2.16.2"
},
"funding": [
{
@@ -205,26 +205,26 @@
"type": "tidelift"
}
],
"time": "2023-05-26T13:15:18+00:00"
"time": "2023-12-17T18:09:59+00:00"
},
{
"name": "phpmd/phpmd",
"version": "2.13.0",
"version": "2.15.0",
"source": {
"type": "git",
"url": "https://github.com/phpmd/phpmd.git",
"reference": "dad0228156856b3ad959992f9748514fa943f3e3"
"reference": "74a1f56e33afad4128b886e334093e98e1b5e7c0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpmd/phpmd/zipball/dad0228156856b3ad959992f9748514fa943f3e3",
"reference": "dad0228156856b3ad959992f9748514fa943f3e3",
"url": "https://api.github.com/repos/phpmd/phpmd/zipball/74a1f56e33afad4128b886e334093e98e1b5e7c0",
"reference": "74a1f56e33afad4128b886e334093e98e1b5e7c0",
"shasum": ""
},
"require": {
"composer/xdebug-handler": "^1.0 || ^2.0 || ^3.0",
"ext-xml": "*",
"pdepend/pdepend": "^2.12.1",
"pdepend/pdepend": "^2.16.1",
"php": ">=5.3.9"
},
"require-dev": {
@@ -233,8 +233,7 @@
"ext-simplexml": "*",
"gregwar/rst": "^1.0",
"mikey179/vfsstream": "^1.6.8",
"phpunit/phpunit": "^4.8.36 || ^5.7.27",
"squizlabs/php_codesniffer": "^2.0"
"squizlabs/php_codesniffer": "^2.9.2 || ^3.7.2"
},
"bin": [
"src/bin/phpmd"
@@ -271,6 +270,7 @@
"description": "PHPMD is a spin-off project of PHP Depend and aims to be a PHP equivalent of the well known Java tool PMD.",
"homepage": "https://phpmd.org/",
"keywords": [
"dev",
"mess detection",
"mess detector",
"pdepend",
@@ -280,7 +280,7 @@
"support": {
"irc": "irc://irc.freenode.org/phpmd",
"issues": "https://github.com/phpmd/phpmd/issues",
"source": "https://github.com/phpmd/phpmd/tree/2.13.0"
"source": "https://github.com/phpmd/phpmd/tree/2.15.0"
},
"funding": [
{
@@ -288,7 +288,7 @@
"type": "tidelift"
}
],
"time": "2022-09-10T08:44:15+00:00"
"time": "2023-12-11T08:22:20+00:00"
},
{
"name": "psr/container",
@@ -395,34 +395,34 @@
},
{
"name": "symfony/config",
"version": "v6.3.0",
"version": "v7.0.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/config.git",
"reference": "a5e00dec161b08c946a2c16eed02adbeedf827ae"
"reference": "44deeba7233f08f383185ffa37dace3b3bc87364"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/config/zipball/a5e00dec161b08c946a2c16eed02adbeedf827ae",
"reference": "a5e00dec161b08c946a2c16eed02adbeedf827ae",
"url": "https://api.github.com/repos/symfony/config/zipball/44deeba7233f08f383185ffa37dace3b3bc87364",
"reference": "44deeba7233f08f383185ffa37dace3b3bc87364",
"shasum": ""
},
"require": {
"php": ">=8.1",
"php": ">=8.2",
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/filesystem": "^5.4|^6.0",
"symfony/filesystem": "^6.4|^7.0",
"symfony/polyfill-ctype": "~1.8"
},
"conflict": {
"symfony/finder": "<5.4",
"symfony/finder": "<6.4",
"symfony/service-contracts": "<2.5"
},
"require-dev": {
"symfony/event-dispatcher": "^5.4|^6.0",
"symfony/finder": "^5.4|^6.0",
"symfony/messenger": "^5.4|^6.0",
"symfony/event-dispatcher": "^6.4|^7.0",
"symfony/finder": "^6.4|^7.0",
"symfony/messenger": "^6.4|^7.0",
"symfony/service-contracts": "^2.5|^3",
"symfony/yaml": "^5.4|^6.0"
"symfony/yaml": "^6.4|^7.0"
},
"type": "library",
"autoload": {
@@ -450,7 +450,7 @@
"description": "Helps you find, load, combine, autofill and validate configuration values of any kind",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/config/tree/v6.3.0"
"source": "https://github.com/symfony/config/tree/v7.0.4"
},
"funding": [
{
@@ -466,44 +466,43 @@
"type": "tidelift"
}
],
"time": "2023-04-25T10:46:17+00:00"
"time": "2024-02-26T07:52:39+00:00"
},
{
"name": "symfony/dependency-injection",
"version": "v6.3.1",
"version": "v7.0.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/dependency-injection.git",
"reference": "7abf242af21f196b65f20ab00ff251fdf3889b8d"
"reference": "47f37af245df8457ea63409fc242b3cc825ce5eb"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/dependency-injection/zipball/7abf242af21f196b65f20ab00ff251fdf3889b8d",
"reference": "7abf242af21f196b65f20ab00ff251fdf3889b8d",
"url": "https://api.github.com/repos/symfony/dependency-injection/zipball/47f37af245df8457ea63409fc242b3cc825ce5eb",
"reference": "47f37af245df8457ea63409fc242b3cc825ce5eb",
"shasum": ""
},
"require": {
"php": ">=8.1",
"php": ">=8.2",
"psr/container": "^1.1|^2.0",
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/service-contracts": "^2.5|^3.0",
"symfony/var-exporter": "^6.2.10"
"symfony/service-contracts": "^3.3",
"symfony/var-exporter": "^6.4|^7.0"
},
"conflict": {
"ext-psr": "<1.1|>=2",
"symfony/config": "<6.1",
"symfony/finder": "<5.4",
"symfony/proxy-manager-bridge": "<6.3",
"symfony/yaml": "<5.4"
"symfony/config": "<6.4",
"symfony/finder": "<6.4",
"symfony/yaml": "<6.4"
},
"provide": {
"psr/container-implementation": "1.1|2.0",
"symfony/service-implementation": "1.1|2.0|3.0"
},
"require-dev": {
"symfony/config": "^6.1",
"symfony/expression-language": "^5.4|^6.0",
"symfony/yaml": "^5.4|^6.0"
"symfony/config": "^6.4|^7.0",
"symfony/expression-language": "^6.4|^7.0",
"symfony/yaml": "^6.4|^7.0"
},
"type": "library",
"autoload": {
@@ -531,7 +530,7 @@
"description": "Allows you to standardize and centralize the way objects are constructed in your application",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/dependency-injection/tree/v6.3.1"
"source": "https://github.com/symfony/dependency-injection/tree/v7.0.4"
},
"funding": [
{
@@ -547,11 +546,11 @@
"type": "tidelift"
}
],
"time": "2023-06-24T11:51:27+00:00"
"time": "2024-02-22T20:27:20+00:00"
},
{
"name": "symfony/deprecation-contracts",
"version": "v3.3.0",
"version": "v3.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/deprecation-contracts.git",
@@ -598,7 +597,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.3.0"
"source": "https://github.com/symfony/deprecation-contracts/tree/v3.4.0"
},
"funding": [
{
@@ -618,20 +617,20 @@
},
{
"name": "symfony/filesystem",
"version": "v6.3.1",
"version": "v7.0.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
"reference": "edd36776956f2a6fcf577edb5b05eb0e3bdc52ae"
"reference": "2890e3a825bc0c0558526c04499c13f83e1b6b12"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/filesystem/zipball/edd36776956f2a6fcf577edb5b05eb0e3bdc52ae",
"reference": "edd36776956f2a6fcf577edb5b05eb0e3bdc52ae",
"url": "https://api.github.com/repos/symfony/filesystem/zipball/2890e3a825bc0c0558526c04499c13f83e1b6b12",
"reference": "2890e3a825bc0c0558526c04499c13f83e1b6b12",
"shasum": ""
},
"require": {
"php": ">=8.1",
"php": ">=8.2",
"symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-mbstring": "~1.8"
},
@@ -661,7 +660,7 @@
"description": "Provides basic utilities for the filesystem",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/filesystem/tree/v6.3.1"
"source": "https://github.com/symfony/filesystem/tree/v7.0.3"
},
"funding": [
{
@@ -677,20 +676,20 @@
"type": "tidelift"
}
],
"time": "2023-06-01T08:30:39+00:00"
"time": "2024-01-23T15:02:46+00:00"
},
{
"name": "symfony/polyfill-ctype",
"version": "v1.27.0",
"version": "v1.29.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
"reference": "5bbc823adecdae860bb64756d639ecfec17b050a"
"reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a",
"reference": "5bbc823adecdae860bb64756d639ecfec17b050a",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ef4d7e442ca910c4764bce785146269b30cb5fc4",
"reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4",
"shasum": ""
},
"require": {
@@ -704,9 +703,6 @@
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.27-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
@@ -743,7 +739,7 @@
"portable"
],
"support": {
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0"
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.29.0"
},
"funding": [
{
@@ -759,20 +755,20 @@
"type": "tidelift"
}
],
"time": "2022-11-03T14:55:06+00:00"
"time": "2024-01-29T20:11:03+00:00"
},
{
"name": "symfony/polyfill-mbstring",
"version": "v1.27.0",
"version": "v1.29.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
"reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534"
"reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534",
"reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec",
"reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec",
"shasum": ""
},
"require": {
@@ -786,9 +782,6 @@
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.27-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
@@ -826,7 +819,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0"
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0"
},
"funding": [
{
@@ -842,25 +835,25 @@
"type": "tidelift"
}
],
"time": "2022-11-03T14:55:06+00:00"
"time": "2024-01-29T20:11:03+00:00"
},
{
"name": "symfony/service-contracts",
"version": "v3.3.0",
"version": "v3.4.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/service-contracts.git",
"reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4"
"reference": "fe07cbc8d837f60caf7018068e350cc5163681a0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/service-contracts/zipball/40da9cc13ec349d9e4966ce18b5fbcd724ab10a4",
"reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4",
"url": "https://api.github.com/repos/symfony/service-contracts/zipball/fe07cbc8d837f60caf7018068e350cc5163681a0",
"reference": "fe07cbc8d837f60caf7018068e350cc5163681a0",
"shasum": ""
},
"require": {
"php": ">=8.1",
"psr/container": "^2.0"
"psr/container": "^1.1|^2.0"
},
"conflict": {
"ext-psr": "<1.1|>=2"
@@ -908,7 +901,7 @@
"standards"
],
"support": {
"source": "https://github.com/symfony/service-contracts/tree/v3.3.0"
"source": "https://github.com/symfony/service-contracts/tree/v3.4.1"
},
"funding": [
{
@@ -924,27 +917,27 @@
"type": "tidelift"
}
],
"time": "2023-05-23T14:45:45+00:00"
"time": "2023-12-26T14:02:43+00:00"
},
{
"name": "symfony/var-exporter",
"version": "v6.3.0",
"version": "v7.0.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-exporter.git",
"reference": "db5416d04269f2827d8c54331ba4cfa42620d350"
"reference": "dfb0acb6803eb714f05d97dd4c5abe6d5fa9fe41"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/var-exporter/zipball/db5416d04269f2827d8c54331ba4cfa42620d350",
"reference": "db5416d04269f2827d8c54331ba4cfa42620d350",
"url": "https://api.github.com/repos/symfony/var-exporter/zipball/dfb0acb6803eb714f05d97dd4c5abe6d5fa9fe41",
"reference": "dfb0acb6803eb714f05d97dd4c5abe6d5fa9fe41",
"shasum": ""
},
"require": {
"php": ">=8.1"
"php": ">=8.2"
},
"require-dev": {
"symfony/var-dumper": "^5.4|^6.0"
"symfony/var-dumper": "^6.4|^7.0"
},
"type": "library",
"autoload": {
@@ -982,7 +975,7 @@
"serialize"
],
"support": {
"source": "https://github.com/symfony/var-exporter/tree/v6.3.0"
"source": "https://github.com/symfony/var-exporter/tree/v7.0.4"
},
"funding": [
{
@@ -998,7 +991,7 @@
"type": "tidelift"
}
],
"time": "2023-04-21T08:48:44+00:00"
"time": "2024-02-26T10:35:24+00:00"
}
],
"aliases": [],
@@ -1008,5 +1001,5 @@
"prefer-lowest": false,
"platform": [],
"platform-dev": [],
"plugin-api-version": "2.3.0"
"plugin-api-version": "2.6.0"
}

View File

@@ -20,53 +20,75 @@
-->
<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>
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>Firefly III ruleset.</description>
<!-- Import the entire controversial code rule set -->
<rule ref="rulesets/controversial.xml">
<exclude name="CamelCasePropertyName"/>
</rule>
<!--
Commando vanuit firefly directory:
phpmd database,app,tests html /gdrive-all/development/phpmd/phpmd.xml > public/report.html
-->
<!-- clean code -->
<!-- <rule ref="rulesets/codesize.xml" /> -->
<rule ref="rulesets/unusedcode.xml"/>
<!-- 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/design.xml/NumberOfChildren">
<properties>
<!-- This is now at 32, which excludes the controllers but should prevent more monoliths. -->
<property name="minimum" value="32"/>
</properties>
</rule>
<rule ref="rulesets/design.xml/CouplingBetweenObjects">
<properties>
<!-- Leaving this at 28 excuses most current code but it can't get worse than that. -->
<property name="maximum" value="28"/>
</properties>
</rule>
<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" />
<rule ref="rulesets/naming.xml/ShortMethodName">
<properties>
<property name="minimum" value="3"/>
</properties>
</rule>
<!-- no this one -->
<!--<rule ref="rulesets/cleancode.xml/StaticAccess" />-->
<!-- code size -->
<rule ref="rulesets/codesize.xml/CyclomaticComplexity">
<properties>
<!-- Leave at 20. This means methods will be pretty complex before the system starts complaining. -->
<property name="reportLevel" value="20"/>
</properties>
</rule>
<rule ref="rulesets/codesize.xml/NPathComplexity">
<properties>
<!-- 2000 results in some pretty complex methods, but it's OK. -->
<!-- They should not be much more complex than that though -->
<property name="minimum" value="2000"/>
</properties>
</rule>
<rule ref="rulesets/codesize.xml/ExcessiveMethodLength">
<properties>
<!-- 75 seems like a nice number. Shorter isn't always feasible and there are a few exceptions already -->
<property name="minimum" value="75"/>
<property name="ignore-whitespace" value="true"/>
</properties>
</rule>
<rule ref="rulesets/codesize.xml/ExcessiveParameterList">
<properties>
<!-- 5 is fine. 6 is excessive, but I have just one of those. At the end of the day, I still need all params. -->
<property name="minimum" value="5"/>
</properties>
</rule>
<!-- include clean code manually -->
<rule ref="rulesets/cleancode.xml/BooleanArgumentFlag"/>
<rule ref="rulesets/cleancode.xml/ElseExpression"/>
<rule ref="rulesets/cleancode.xml/MissingImport"/>
<rule ref="rulesets/cleancode.xml/UndefinedVariable"/>
<rule ref="rulesets/cleancode.xml/IfStatementAssignment"/>
<rule ref="rulesets/cleancode.xml/DuplicatedArrayKey"/>
<rule ref="rulesets/cleancode.xml/ErrorControlOperator"/>
</ruleset>

View File

@@ -1,42 +1,33 @@
includes:
- ../vendor/nunomaduro/larastan/extension.neon
- ../vendor/ergebnis/phpstan-rules/rules.neon
- ../vendor/phpstan/phpstan-deprecation-rules/rules.neon
- ../vendor/thecodingmachine/phpstan-strict-rules/phpstan-strict-rules.neon
parameters:
universalObjectCratesClasses:
- Illuminate\Database\Eloquent\Model
# TODO: slowly remove these parameters and fix the issues found.
reportUnmatchedIgnoredErrors: false
checkGenericClassInNonGenericObjectType: false # remove this rule when all other issues are solved.
ignoreErrors:
# TODO: slowly remove these exceptions and fix the issues found.
- '#Dynamic call to static method#' # all the Laravel ORM things depend on this.
- '#Control structures using switch should not be used.#' # switch is fine in some cases.
- '#with no value type specified in iterable type array#' # remove this rule when all other issues are solved.
- '#has no value type specified in iterable type array#' # remove this rule when all other issues are solved.
- '#is not allowed to extend#'
- '#switch is forbidden to use#'
- '#is neither abstract nor final#'
- '#has a nullable return type declaration#'
- '#with a nullable type declaration#'
- '#on left side of \?\?\= always exists and is not nullable#'
- '#has a nullable return type declaration#' # perhaps throw errors instead?
- '#with a nullable type declaration#' # decide what action should be if param is null.
- '#with null as default value#'
- '#is not covariant with PHPDoc type array#'
-
message: '#Constructor in [a-zA-Z0-9\\_]+ has parameter \$[a-zA-Z0-9\\_]+ with default value#'
paths:
- ../app/Exceptions/IntervalException.php
- ../app/Support/Navigation.php
-
message: '#but containers should not be injected#'
paths:
- ../app/Support/Authentication/RemoteUserGuard.php
-
message: '#Control structures using switch should not be used.#'
paths:
- ../app/Api/V1/Controllers/Data/DestroyController.php
- ../app/Console/Commands/Correction/FixAccountTypes.php
- ../app/Console/Commands/Upgrade/OtherCurrenciesCorrections.php
- ../app/Exceptions/GracefulNotFoundHandler.php
- ../app/Generator/Webhook/StandardMessageGenerator.php
- ../app/Support/Amount.php
- ../app/Support/Navigation.php
- ../app/Support/ParseDateString.php
- ../app/Support/Search/AccountSearch.php
- ../app/Support/Search/OperatorQuerySearch.php
- ../app/Support/Twig/General.php
- ../app/Transformers/RecurrenceTransformer.php
- ../app/Validation/AccountValidator.php
- ../app/Validation/RecurrenceValidation.php
- ../app/Validation/TransactionValidation.php
-
message: '#Function compact\(\) should not be used#'
message: '#Function compact\(\) should not be used#' # too useful in template rendering.
paths:
- ../app/Generator/Report/Account/MonthReportGenerator.php
- ../app/Generator/Report/Audit/MonthReportGenerator.php
@@ -57,7 +48,6 @@ parameters:
message: '#Either catch a more specific exception#'
paths:
- ../app/Support/Form/FormSupport.php
paths:
- ../app
- ../database
@@ -66,5 +56,6 @@ parameters:
- ../bootstrap/app.php
# The level 8 is the highest level. original was 5
level: 4
# 7 is more than enough, higher just leaves NULL things.
level: 7

View File

@@ -29,7 +29,20 @@ SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
# cp .ci/.env.ci .env
# Do static code analysis.
# ./vendor/bin/phpstan analyse -c .ci/phpstan.neon --no-progress
./vendor/bin/phpstan analyse -c .ci/phpstan.neon --xdebug --error-format=table > phpstan-report.txt
if [[ $GITHUB_ACTIONS = "" ]]
then
./vendor/bin/phpstan analyse -c .ci/phpstan.neon --error-format=table > phpstan-report.txt
EXIT_CODE=$?
echo "The PHPstan report can be found in phpstan-report.txt. Exit code is $EXIT_CODE."
fi
echo 'The PHPstan report can be found in phpstan-report.txt'
if [[ $GITHUB_ACTIONS = "true" ]]
then
./vendor/bin/phpstan analyse -c .ci/phpstan.neon --no-progress --error-format=github
EXIT_CODE=$?
# temporary exit code 0
# EXIT_CODE=0
fi
exit $EXIT_CODE

View File

@@ -1,63 +0,0 @@
#!/usr/bin/env bash
#
# phpunit.sh
# Copyright (c) 2021 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 )"
# enable test .env file.
cp $SCRIPT_DIR/../.env $SCRIPT_DIR/../.env.backup
cp $SCRIPT_DIR/.env.ci $SCRIPT_DIR/../.env
COVERAGE=false
RESET=false
FILE=storage/database/database.sqlite
while getopts "cr" o; do
case "${o}" in
c) COVERAGE=true;;
r) RESET=true;;
esac
done
# reset if necessary.
if [ $RESET = "true" ] ; then
rm -f $FILE
fi
# download test database
if [ -f "$FILE" ]; then
echo 'DB exists, will use it'
else
echo 'Download new DB'
wget --quiet https://github.com/firefly-iii/test-fixtures/raw/main/test-database.sqlite -O $FILE
fi
# run phpunit
if [ $COVERAGE = "true" ] ; then
echo 'Run with coverage'
XDEBUG_MODE=coverage ./vendor/bin/phpunit --configuration phpunit.xml --coverage-html $SCRIPT_DIR/coverage
else
echo 'Run without coverage'
./vendor/bin/phpunit --configuration phpunit.xml
fi
# restore .env file
mv $SCRIPT_DIR/../.env.backup $SCRIPT_DIR/../.env
cd $SCRIPT_DIR/..

View File

@@ -1,6 +1,6 @@
# You can leave this on "local". If you change it to production most console commands will ask for extra confirmation.
# Never set it to "testing".
APP_ENV=local
APP_ENV=production
# Set to true if you want to see debug information in error screens.
APP_DEBUG=false
@@ -78,7 +78,7 @@ PAPERTRAIL_HOST=
PAPERTRAIL_PORT=
# 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/firefly-iii/faq/self-hosted/#i-want-to-use-sqlite
# For other database types, please see the FAQ: https://docs.firefly-iii.org/references/faq/install/#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.
@@ -122,7 +122,7 @@ SESSION_DRIVER=file
# If you use Docker or similar, you can set REDIS_HOST_FILE, REDIS_PASSWORD_FILE or
# REDIS_PORT_FILE to set the value from a file instead of from an environment variable
# can be tcp, unix or http
# can be tcp or unix. http is not supported
REDIS_SCHEME=tcp
# use only when using 'unix' for REDIS_SCHEME. Leave empty otherwise.
@@ -150,7 +150,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/firefly-iii/advanced-installation/email/#email
# For instructions, see: https://docs.firefly-iii.org/how-to/firefly-iii/advanced/notifications/#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
@@ -195,6 +195,16 @@ MAP_DEFAULT_LAT=51.983333
MAP_DEFAULT_LONG=5.916667
MAP_DEFAULT_ZOOM=6
#
# Some objects have room for an URL, like transactions and webhooks.
# By default, the following protocols are allowed:
# http, https, ftp, ftps, mailto
#
# To change this, set your preferred comma separated set below.
# Be sure to include http, https and other default ones if you need to.
#
VALID_URL_PROTOCOLS=
#
# Firefly III authentication settings
#
@@ -204,7 +214,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/firefly-iii/advanced-installation/authentication
# https://docs.firefly-iii.org/how-to/firefly-iii/advanced/authentication/
#
# LDAP is no longer supported :(
#
@@ -259,7 +269,7 @@ ALLOW_WEBHOOKS=false
# 1. Set this token to any 32-character value (this is important!).
# 2. Use this token in the cron URL instead of a user's command line token that you can find in /profile
#
# For more info: https://docs.firefly-iii.org/firefly-iii/advanced-installation/cron/
# For more info: https://docs.firefly-iii.org/how-to/firefly-iii/advanced/cron/
#
# You can set this variable from a file by appending it with _FILE
#
@@ -314,18 +324,15 @@ PUSHER_SECRET=
PUSHER_ID=
DEMO_USERNAME=
DEMO_PASSWORD=
#
# The v2 layout is very experimental. If it breaks you get to keep both parts.
# Be wary of data loss.
#
FIREFLY_III_LAYOUT=v1
#
# If you have trouble configuring your Firefly III installation, DON'T BOTHER setting this variable.
# It won't work. It doesn't do ANYTHING. Don't believe the lies you read online. I'm not joking.
# This configuration value WILL NOT HELP.
#
# Notable exception to this rule is Synology, which, according to some users, will use APP_URL to rewrite stuff.
#
# This variable is ONLY used in some of the emails Firefly III sends around. Nowhere else.
# So when configuring anything WEB related this variable doesn't do anything. Nothing
#
# If you're stuck I understand you get desperate but look SOMEWHERE ELSE.
# Please make sure this URL matches the external URL of your Firefly III installation.
# It is used to validate specific requests and to generate URLs in emails.
#
APP_URL=http://localhost

26
.env.testing Normal file
View File

@@ -0,0 +1,26 @@
APP_ENV=testing
APP_DEBUG=true
SITE_OWNER=mail@example.com
APP_KEY=TestTestTestTestTestTestTestTest
DEFAULT_LANGUAGE=en_US
DEFAULT_LOCALE=equal
TZ=Europe/Amsterdam
LOG_CHANNEL=stdout
APP_LOG_LEVEL=debug
AUDIT_LOG_LEVEL=info
AUDIT_LOG_CHANNEL=audit_stdout
DB_CONNECTION=sqlite
CACHE_DRIVER=array
SESSION_DRIVER=array
MAIL_MAILER=log
SEND_ERROR_MESSAGE=true
ENABLE_EXTERNAL_MAP=false
ENABLE_EXTERNAL_RATES=true
AUTHENTICATION_GUARD=web
ALLOW_WEBHOOKS=true
APP_NAME=FireflyIII
BROADCAST_DRIVER=log
QUEUE_DRIVER=sync
CACHE_PREFIX=firefly
FIREFLY_III_LAYOUT=v1
APP_URL=http://localhost

2
.github/CODEOWNERS vendored Normal file
View File

@@ -0,0 +1,2 @@
# code owners for this Firefly III related repository
* @JC5 @SDx3

View File

@@ -8,7 +8,7 @@ body:
options:
- label: I've read the [support guidelines](https://github.com/firefly-iii/firefly-iii/blob/main/.github/support.md)
required: true
- label: My request is not listed as [a very good idea, but unfortunately...](https://docs.firefly-iii.org/firefly-iii/more-information/what-its-not/)
- label: My request is not listed as [a very good idea, but unfortunately...](https://docs.firefly-iii.org/explanation/more-information/what-its-not/)
required: true
- label: I've used [the search](https://github.com/firefly-iii/firefly-iii/issues?q=is%3Aissue) and this has not been requested before.
required: true

View File

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

View File

@@ -1,11 +1,16 @@
version: 2
updates:
# Check for updates to GitHub Actions every week
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
# composer updates
- package-ecosystem: "composer"
directory: "/" # Location of package manifests
target-branch: develop
labels: [ "bug" ]
versioning-strategy: increase
schedule:
interval: "weekly"
@@ -14,15 +19,6 @@ updates:
- package-ecosystem: "npm"
directory: "/"
target-branch: develop
labels: [ "bug" ]
versioning-strategy: increase
schedule:
interval: "weekly"
- package-ecosystem: "github-actions"
directory: "/"
target-branch: develop
labels: [ "bug" ]
versioning-strategy: increase
schedule:
interval: "weekly"

111
.github/label-actions.yml vendored Normal file
View File

@@ -0,0 +1,111 @@
# Configuration for Label Actions - https://github.com/dessant/label-actions
# The `feature` label is added to issues
feature:
issues:
# Post a comment, `{issue-author}` is an optional placeholder
comment: |
Hi there!
This is an automatic reply. `Share and enjoy`
This issue has been marked as a feature request. The requested (new) feature will become a part of Firefly III or the data importer in due course.
If you come across this issue, please be aware there is NO need to reply with "+1" or "me too" or "I need this too" or whatever. Such comments are not helpful, and do not influence [the roadmap](https://roadmap.firefly-iii.org/). Your comment may be :skull: deleted. You can subscribe to this issue to get updates.
Thank you for your contributions.
epic:
issues:
# Post a comment, `{issue-author}` is an optional placeholder
comment: |
Hi there!
This is an automatic reply. `Share and enjoy`
This issue has been marked as an epic. In epics, large amounts of works are collected that will be part of a major new feature. If you have more ideas that could be a part of this epic, feel free to reply.
*However*, please be aware there is NO need to reply with "+1" or "me too" or "I need this too" or whatever. Such comments are not helpful, and do not influence [the roadmap](https://roadmap.firefly-iii.org/). Your comment may be :skull: deleted.
If you are merely interested in this epic's progress, you can subscribe to this issue to get updates.
Thank you for your contributions.
enhancement:
issues:
# Post a comment, `{issue-author}` is an optional placeholder
comment: |
Hi there!
This is an automatic reply. `Share and enjoy`
This issue has been marked as an enhancement. The requested enhancement to an existing feature will become a part of Firefly III or the data importer in due course.
If you come across this issue, please be aware there is NO need to reply with "+1" or "me too" or "I need this too" or whatever. Such comments are not helpful, and do not influence [the roadmap](https://roadmap.firefly-iii.org/). Your comment may be :skull: deleted. You can subscribe to this issue to get updates.
Thank you for your contributions.
triage:
issues:
# Post a comment, `{issue-author}` is an optional placeholder
comment: |
Hi there!
This is an automatic reply. `Share and enjoy`
This issue has been marked as being in triage. The root cause is not known yet, or the issue needs more investigation. You can help by sharing debug information (from `/debug`) if you also have this issue or when you haven't already done so.
Thank you for your contributions.
needs-moar-debug:
issues:
comment: |
Hi there!
This is an automatic reply. `Share and enjoy`
To learn more about this issue, please make sure you share at least:
1. The table you can find on the `/debug` page
2. Firefly III version
2. Docker, self-hosted, or hosted by a third party?
3. Operating system and browser
Thank you for your contributions.
unlabel: needs-moar-debug
needs-moar-logs:
issues:
comment: |
Hi there!
This is an automatic reply. `Share and enjoy`
To learn more about this issue, please share the relevant log files from your Firefly III or data importer installation.
The relevant instructions can be found in the documentation: [How to debug Firefly III?](https://docs.firefly-iii.org/how-to/general/debug/) Once debug mode is activated per these instructions, you can repeat your action and find the logs, depending on your method of installation. All is explained on the page.
Please share the relevant log lines in your issue, either inline or as an attachment. If you feel the logs contain sensitive information, you may also send them to [james@firefly-iii.org](mailto:james@firefly-iii.org). Without these logs, it may not be possible to properly investigate this issue.
Thank you for your contributions.
unlabel: needs-moar-logs
v2-layout-issue:
issues:
comment: |
Hi there!
This is an automatic reply. `Share and enjoy`
It seems your issue is about the new v2-layout that is currently in development for Firefly III.
These issues are collected in [a GitHub discussion](https://github.com/firefly-iii/firefly-iii/issues/8361).
Please note that the v2 layout is still very much in development.
Thank you for your contributions.
close: true
close-reason: completed
lock: false
unlabel: v2-layout-issue

2
.github/support.md vendored
View File

@@ -27,7 +27,7 @@ Only then [create a new issue](https://github.com/firefly-iii/firefly-iii/issues
- 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/).
wontfix". [This isn't personal](https://docs.firefly-iii.org/explanation/more-information/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

@@ -1,6 +1,9 @@
# This workflow prunes old workflow runs for an entire repository.
name: Prune old builds
name: "Chore - Prune old builds"
permissions:
actions: write
on:
schedule:
@@ -12,9 +15,9 @@ jobs:
timeout-minutes: 10
steps:
- name: Prune cancelled/skipped runs
uses: actions/github-script@v6
uses: actions/github-script@v7
with:
github-token: ${{ secrets.GH_ACTIONS_PERSONAL_ACCESS_TOKEN }}
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const cancelled = await github.rest.actions.listWorkflowRunsForRepo({
owner: context.repo.owner,
@@ -22,14 +25,14 @@ jobs:
repo: context.repo.repo,
status: 'cancelled',
});
const skipped = await github.rest.actions.listWorkflowRunsForRepo({
owner: context.repo.owner,
per_page: 100,
repo: context.repo.repo,
status: 'skipped',
});
for (const response of [cancelled, skipped]) {
for (const run of response.data.workflow_runs) {
console.log(`Run id ${run.id} of '${run.name}' is a cancelled/skipped run. Deleting...`);
@@ -42,31 +45,33 @@ jobs:
}
- name: Prune runs older than 3 days
uses: actions/github-script@v6
uses: actions/github-script@v7
with:
github-token: ${{ secrets.GH_ACTIONS_PERSONAL_ACCESS_TOKEN }}
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const days_to_expiration = 3;
const ms_in_day = 86400000;
const now = Date.now();
const pages = 5;
// we don't want to prune old runs from test.yml
// because we track the duration of runs over time
const workflows = [
'cleanup.yml',
'close-duplicates.yml',
'closed-issues.yml',
'depsreview.yaml',
'laravel.yml',
'debug-info-actions.yml',
'depsreview.yml',
'label-actions.yml',
'lock.yml',
'qodana.yml',
'release.yml',
'sonarcloud.yml',
'stale.yml'
]
let runs_to_delete = [];
for (const workflow of workflows) {
for (let page = 0; page < pages; page += 1) {
let response = await github.rest.actions.listWorkflowRuns({
@@ -76,7 +81,7 @@ jobs:
repo: context.repo.repo,
workflow_id: workflow
});
if (response.data.workflow_runs.length > 0) {
for (const run of response.data.workflow_runs) {
if (now - Date.parse(run.created_at) > ms_in_day * days_to_expiration) {
@@ -86,7 +91,7 @@ jobs:
}
}
}
for (const run of runs_to_delete) {
console.log(`Run id ${run[0]} of '${run[1]}' is older than ${days_to_expiration} days. Deleting...`);
try {

39
.github/workflows/close-duplicates.yml vendored Normal file
View File

@@ -0,0 +1,39 @@
name: "Issues - Command to close duplicate issues"
# the workflow to execute on is comments that are newly created
on:
issue_comment:
types: [created]
permissions:
issues: write
checks: read
jobs:
close_duplicates:
runs-on: ubuntu-latest
steps:
- uses: github/command@v1.1.0
id: command
with:
allowed_contexts: "issue"
command: ".duplicate"
- name: reply
if: ${{ steps.command.outputs.continue == 'true' }}
run: |
ISSUE_TITLE=$(gh issue view ${{ steps.command.outputs.params }} --json title --jq '.title')
gh issue comment "$NUMBER" --body "Hi there!
This is an automatic reply. \`Share and enjoy\`.
Your issue is probably a duplicate of issue <span>#</span>${{ steps.command.outputs.params }}: [$ISSUE_TITLE](https://github.com/firefly-iii/firefly-iii/issues/${{ steps.command.outputs.params }}). Please refer to issue #${{ steps.command.outputs.params }} for support.
You can close this issue now. If you believe this is not in fact a duplicate, please reply and let us know. Otherwise, this issue will be automatically closed in a few days time.
Thank you for your contributions."
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_REPO: ${{ github.repository }}
NUMBER: ${{ github.event.issue.number }}

View File

@@ -1,22 +1,25 @@
name: "Reply to closed issue"
---
name: Issues - Reply to closed issue
on:
issues:
types:
- closed
jobs:
auto_comment:
command_and_close:
runs-on: ubuntu-latest
steps:
- 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** watched.
- 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.
This issue is now 🔒 closed. Please be aware that closed issues are not monitored by the developer of Firefly III.
- If the original bug is not actually fixed, please open [a new issue](https://github.com/firefly-iii/firefly-iii/issues/new/choose). 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**.
- Further replies to this issue may get no response.
If there is more to discuss, please open [a new issue](https://github.com/firefly-iii/firefly-iii/issues/new/choose) or [discussion](https://github.com/firefly-iii/firefly-iii/discussions/).
Thank you for your contributions.
repo-token: "${{ secrets.GITHUB_TOKEN }}"
repo-token: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -0,0 +1,32 @@
name: 'Issues - Respond to hidden commands'
# the workflow to execute on is comments that are newly created
on:
issues:
types: [opened, edited]
issue_comment:
types: [created]
# permissions needed for reacting to IssueOps commands on issues and PRs
permissions:
contents: read
pull-requests: write
issues: write
checks: read
jobs:
respond:
runs-on: ubuntu-latest
steps:
- run: |
ISSUE_BODY=$(gh issue view $NUMBER --json body)
if [[ $ISSUE_BODY == *".eOxNZAmyGz6CXMyf"* ]]; then
gh issue comment "$NUMBER" --body "$V2_ISSUE_REPLY_BODY"
gh issue close "$NUMBER" --reason completed
fi
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_REPO: ${{ github.repository }}
NUMBER: ${{ github.event.issue.number }}
V2_ISSUE_REPLY_BODY: ${{ secrets.V2_ISSUE_REPLY_BODY }}
LABELS: v2-layout-issue

View File

@@ -1,14 +0,0 @@
name: 'Dependency Review'
on: [ pull_request ]
permissions:
contents: read
jobs:
dependency-review:
runs-on: ubuntu-latest
steps:
- name: 'Checkout Repository'
uses: actions/checkout@v3
- name: 'Dependency Review'
uses: actions/dependency-review-action@v3

16
.github/workflows/depsreview.yml vendored Normal file
View File

@@ -0,0 +1,16 @@
name: 'Code - Dependency review'
on: [ pull_request ]
permissions:
contents: read
jobs:
dependency-review:
runs-on: ubuntu-latest
steps:
- name: 'Checkout repository'
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: 'Dependency review'
uses: actions/dependency-review-action@v4

21
.github/workflows/label-actions.yml vendored Normal file
View File

@@ -0,0 +1,21 @@
name: 'Issues - Reply to specific labels'
on:
issues:
types: [labeled, unlabeled]
pull_request_target:
types: [labeled, unlabeled]
discussion:
types: [labeled, unlabeled]
permissions:
contents: read
issues: write
pull-requests: write
discussions: write
jobs:
action:
runs-on: ubuntu-latest
steps:
- uses: dessant/label-actions@v4

View File

@@ -1,146 +0,0 @@
name: Firefly III
on:
push:
branches-ignore:
- '**'
jobs:
prepare:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Copy .env
run: test -f .env || cp .ci/.env.ci .env
- name: Prepare dependencies
run: |
set -euxo pipefail
export PATH=$PATH:$HOME/.composer/vendor/bin/
composer global require hirak/prestissimo --no-plugins --no-scripts
composer install --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist --no-suggest
touch ./storage/database/database.sqlite
- name: Prepare Firefly III
run: |
chmod -R 777 storage bootstrap/cache
php artisan migrate --seed
php artisan firefly-iii:upgrade-database
- name: Upload database
uses: actions/upload-artifact@v2
with:
name: database
path: storage/database/database.sqlite
- name: Upload cache
uses: actions/upload-artifact@v2
with:
name: cache
path: bootstrap/cache/
- name: Upload composer cache
uses: actions/upload-artifact@v2
with:
name: composer
path: ~/.composer
laravel-tests:
runs-on: ubuntu-latest
needs:
- prepare
steps:
- uses: actions/checkout@v3
- name: Copy .env
run: test -f .env || cp .ci/.env.ci .env
- name: Download database
uses: actions/download-artifact@v2
with:
name: database
path: storage/database/database.sqlite
- name: Download cache
uses: actions/download-artifact@v2
with:
name: cache
path: bootstrap/cache/
- name: Download vendor
uses: actions/download-artifact@v2
with:
name: composer
path: ~/.composer
- name: Install composer
run: composer install --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist --no-suggest
- name: PHPUnit tests
uses: php-actions/phpunit@v1
with:
config: phpunit.xml
memory: 512M
coding-standards:
runs-on: ubuntu-latest
needs:
- prepare
steps:
- uses: actions/checkout@v3
- name: Copy .env
run: test -f .env || cp .ci/.env.ci .env
- name: Download database
uses: actions/download-artifact@v2
with:
name: database
path: storage/database/database.sqlite
- name: Download cache
uses: actions/download-artifact@v2
with:
name: cache
path: bootstrap/cache/
- name: Download vendor
uses: actions/download-artifact@v2
with:
name: composer
path: ~/.composer
- name: install depenencies
run: |
composer global require nette/coding-standard
composer install --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist --no-suggest
- name: Execute code standard
run: /home/runner/.composer/vendor/bin/ecs check app tests --config ./.ci/firefly-iii-standard.yml
phpstan:
runs-on: ubuntu-latest
needs:
- prepare
steps:
- uses: actions/checkout@v3
- name: Copy .env
run: test -f .env || cp .ci/.env.ci .env
- name: Download database
uses: actions/download-artifact@v2
with:
name: database
path: storage/database/database.sqlite
- name: Download cache
uses: actions/download-artifact@v2
with:
name: cache
path: bootstrap/cache/
- name: Download vendor
uses: actions/download-artifact@v2
with:
name: composer
path: ~/.composer
- name: Install depenencies
run: |
composer install --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist --no-suggest
- name: Execute PHPStan
run: vendor/bin/phpstan analyse -c .ci/phpstan.neon

View File

@@ -1,10 +1,18 @@
name: Lock old issues
name: 'Issues - Lock old issues'
on:
workflow_dispatch:
schedule:
- cron: '0 0 * * *'
concurrency:
group: lock-threads
permissions:
issues: write
pull-requests: write
discussions: write
jobs:
lock:
permissions:
@@ -12,8 +20,9 @@ jobs:
pull-requests: write
runs-on: ubuntu-latest
steps:
- uses: JC5/lock-threads@main
- uses: dessant/lock-threads@v5
with:
github-token: ${{ github.token }}
issue-inactive-days: 90
pr-inactive-days: 90
issue-inactive-days: 7
pr-inactive-days: 7
log-output: true

View File

@@ -1,35 +0,0 @@
name: Qodana
on:
workflow_dispatch:
push:
branches:
- main
- develop
jobs:
qodana:
runs-on: ubuntu-latest
name: 'Qodana Scan'
steps:
- name: Setup PHP with no coverage driver
uses: shivammathur/setup-php@v2
with:
php-version: '8.2'
coverage: none
extensions: bcmath, intl
env:
update: true
- uses: actions/checkout@v3
with:
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
- name: Install dependencies
run: |
composer install --no-scripts
cp .env.example .env
php artisan key:generate
php artisan clear-compiled
php artisan ide-helper:generate;
- name: 'Qodana Scan'
uses: JetBrains/qodana-action@main
env:
QODANA_TOKEN: ${{ secrets.QODANA_TOKEN }}

174
.github/workflows/release.yml vendored Normal file
View File

@@ -0,0 +1,174 @@
name: 'Code - Create new release'
on:
workflow_dispatch:
inputs:
version:
description: 'Version to release'
required: true
default: 'develop'
schedule:
- cron: '15 0 * * MON,THU'
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Switch branch
run: |
if [[ "develop" == "$version" ]]; then
git checkout --track origin/develop
git pull
else
git config user.name github-actions
git config user.email 41898282+github-actions[bot]@users.noreply.github.com
git checkout --track origin/develop
git pull
git checkout main
git merge develop
fi
env:
version: ${{ github.event_name == 'schedule' && 'develop' || github.event.inputs.version }}
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.3'
extensions: mbstring, intl, zip, bcmath
- name: crowdin action
uses: crowdin/github-action@v1
with:
upload_sources: true
download_translations: true
push_translations: false
push_sources: false
env:
GITHUB_TOKEN: ${{ github.token }}
CROWDIN_PROJECT_NR: ${{ secrets.CROWDIN_PROJECT_NR }}
CROWDIN_TOKEN: ${{ secrets.CROWDIN_TOKEN }}
- name: Cleanup translations
id: cleanup-transactions
uses: JC5/firefly-iii-dev@v34
with:
action: 'ff3:crowdin-warning'
output: ''
env:
FIREFLY_III_ROOT: /github/workspace
GH_TOKEN: ''
- name: Cleanup changelog
id: cleanup-changelog
uses: JC5/firefly-iii-dev@v34
with:
action: 'ff3:changelog'
output: ''
env:
FIREFLY_III_ROOT: /github/workspace
GH_TOKEN: ${{ secrets.CHANGELOG_TOKEN }}
- name: Extract changelog
id: extract-changelog
uses: JC5/firefly-iii-dev@v34
with:
action: 'ff3:extract-changelog'
output: 'output'
env:
FIREFLY_III_ROOT: /github/workspace
GH_TOKEN: ""
- name: Replace version
id: replace-version
uses: JC5/firefly-iii-dev@v34
with:
action: 'ff3:version'
output: ''
env:
FIREFLY_III_ROOT: /github/workspace
GH_TOKEN: ""
FF_III_VERSION: ${{ github.event_name == 'schedule' && 'develop' || github.event.inputs.version }}
- name: Generate JSON v1
id: json-v1
uses: JC5/firefly-iii-dev@v34
with:
action: 'ff3:json-translations v1'
output: ''
env:
FIREFLY_III_ROOT: /github/workspace
GH_TOKEN: ''
- name: Generate JSON v2
id: json-v2
uses: JC5/firefly-iii-dev@v34
with:
action: 'ff3:json-translations v2'
output: ''
env:
FIREFLY_III_ROOT: /github/workspace
GH_TOKEN: ''
- name: Code cleanup
id: code-cleanup
uses: JC5/firefly-iii-dev@v34
with:
action: 'ff3:code'
output: ''
env:
FIREFLY_III_ROOT: /github/workspace
GH_TOKEN: ''
- name: Build new JS
run: |
pwd
npm install
npm run build
- name: Build old JS
id: old-js
uses: JC5/firefly-iii-dev@v34
with:
action: 'ff3:old-js'
output: ''
env:
FIREFLY_III_ROOT: /github/workspace
GH_TOKEN: ''
- name: Run CI
run: |
rm -rf vendor composer.lock
composer validate --strict
composer update --no-dev --no-scripts --no-plugins -q
sudo chown -R runner:docker resources/lang
.ci/phpcs.sh
- name: Release
run: |
sudo timedatectl set-timezone Europe/Amsterdam
git config user.name github-actions
git config user.email 41898282+github-actions[bot]@users.noreply.github.com
git config advice.addIgnoredFile false
if [[ "develop" == "$version" ]]; then
[[ -z $(git status --untracked-files=normal --porcelain) ]] && echo "this branch is clean, no need to push..." && exit 0;
fi
git add -A
if test -f "output.txt"; then
git reset output.txt
fi
git commit -m "Auto commit for release '$version' on $(date +'%Y-%m-%d')" || true
git push
if [[ "develop" == "$version" ]]; then
echo "Create nightly release."
git tag -a $version-$(date +'%Y%m%d') -m "Nightly development release '$version' on $(date +'%Y-%m-%d')"
git push origin $version-$(date +'%Y%m%d')
gh release create $version-$(date +'%Y%m%d') -p --verify-tag \
-t "Development release for $(date +'%Y-%m-%d')" \
-n "Bi-weekly development release of Firefly III with the latest fixes, translations and features. This release was created on **$(date +'%Y-%m-%d')** and may contain bugs. Use at your own risk. Docker users can find this release under the \`develop\` tag."
else
echo "Create default release."
git tag -a $version -m "Here be changelog"
git push origin $version
gh release create $version -F output.txt -t "$version" --verify-tag
rm output.txt
git checkout develop
git merge main
git push
fi
env:
GH_TOKEN: ${{ github.token }}
version: ${{ github.event_name == 'schedule' && 'develop' || github.event.inputs.version }}

View File

@@ -1,38 +1,58 @@
name: Sonarcloud
name: 'Code - Run Sonarcloud'
on:
pull_request:
pull_request:
workflow_dispatch:
push:
branches:
- main
- develop
env:
DB_CONNECTION: sqlite
APP_KEY: UfpBqqeXx7zpNodsC6yjYQcRfDdm4Bxh
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: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
uses: actions/checkout@v4
- name: Setup PHP with Xdebug
uses: shivammathur/setup-php@v2
with:
php-version: '8.2'
php-version: '8.3'
coverage: xdebug
extensions: >-
bcmath
curl
fileinfo
iconv
intl
json
sqlite3
mbstring
openssl
pdo
session
simplexml
sodium
tokenizer
xml
xmlwriter
- name: Copy standard configuration
run: cp .env.testing .env
- name: Install Composer dependencies
run: composer install --prefer-dist --no-interaction --no-progress --no-scripts
- name: Copy environment file
run: cp .env.example .env
- name: "Create database file"
run: touch storage/database/database.sqlite
- name: Generate app key
run: php artisan key:generate
- name: "Upgrades the database to the latest version"
run: php artisan firefly-iii:upgrade-database
- name: "Integrity Database Report"
run: php artisan firefly-iii:report-integrity
- name: "Run tests with coverage"
run: composer coverage

View File

@@ -1,4 +1,4 @@
name: "Close stale issues"
name: "Issues - Mark and close stale issues"
on:
schedule:
- cron: "30 1 * * *"
@@ -14,21 +14,25 @@ jobs:
pull-requests: write # for actions/stale to close stale PRs
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v6
- uses: actions/stale@v9
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
stale-issue-message: >
Hi there! This is an automatic reply. `Share and enjoy`
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs.
Hi there!
This is an automatic reply. `Share and enjoy`
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs.
Thank you for your contributions.
stale-pr-message: >
Hi there! This is an automatic reply. `Share and enjoy`
Hi there!
This is an automatic reply. `Share and enjoy`
This PR has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs.
This PR has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs.
Thank you for your contributions.
days-before-stale: 14
days-before-close: 7
exempt-issue-labels: 'enhancement,feature,bug,announcement,epic'
exempt-issue-labels: 'enhancement,feature,bug,announcement,epic,triage'

3
.gitignore vendored
View File

@@ -1,8 +1,7 @@
/node_modules
/frontend/node_modules
/storage/*.key
/vendor
/.vagrant
public/hot
npm-debug.log
yarn-error.log
.env

View File

@@ -32,7 +32,6 @@ use FireflyIII\Repositories\Account\AccountRepositoryInterface;
use FireflyIII\Support\Http\Api\AccountFilter;
use FireflyIII\User;
use Illuminate\Http\JsonResponse;
use JsonException;
/**
* Class AccountController
@@ -41,6 +40,7 @@ class AccountController extends Controller
{
use AccountFilter;
/** @var array<int, string> */
private array $balanceTypes;
private AccountRepositoryInterface $repository;
@@ -60,29 +60,25 @@ class AccountController extends Controller
return $next($request);
}
);
$this->balanceTypes = [AccountType::ASSET, AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE,];
$this->balanceTypes = [AccountType::ASSET, AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE];
}
/**
* Documentation for this endpoint:
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/autocomplete/getAccountsAC
*
* @param AutocompleteRequest $request
*
* @return JsonResponse
* @throws JsonException
* @throws FireflyException
* @throws FireflyException
*/
public function accounts(AutocompleteRequest $request): JsonResponse
{
$data = $request->getData();
$types = $data['types'];
$query = $data['query'];
$date = $data['date'] ?? today(config('app.timezone'));
$data = $request->getData();
$types = $data['types'];
$query = $data['query'];
$date = $data['date'] ?? today(config('app.timezone'));
$return = [];
$result = $this->repository->searchAccount((string)$query, $types, $this->parameters->get('limit'));
$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();
@@ -100,7 +96,7 @@ class AccountController extends Controller
);
}
$return[] = [
$return[] = [
'id' => (string)$account->id,
'name' => $account->name,
'name_with_balance' => $nameWithBalance,
@@ -116,10 +112,10 @@ class AccountController extends Controller
// custom order.
usort(
$return,
function ($a, $b) {
static function (array $left, array $right) {
$order = [AccountType::ASSET, AccountType::REVENUE, AccountType::EXPENSE];
$posA = array_search($a['type'], $order, true);
$posB = array_search($b['type'], $order, true);
$posA = (int)array_search($left['type'], $order, true);
$posB = (int)array_search($right['type'], $order, true);
return $posA - $posB;
}

View File

@@ -58,16 +58,11 @@ class BillController extends Controller
/**
* Documentation for this endpoint is at:
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/autocomplete/getBillsAC
* TODO expand API to add active field.
*
* @param AutocompleteRequest $request
*
* @return JsonResponse
*/
public function bills(AutocompleteRequest $request): JsonResponse
{
$data = $request->getData();
$result = $this->repository->searchBill($data['query'], $data['limit']);
$result = $this->repository->searchBill($data['query'], $this->parameters->get('limit'));
$filtered = $result->map(
static function (Bill $item) {
return [

View File

@@ -58,15 +58,11 @@ class BudgetController extends Controller
/**
* Documentation for this endpoint is at:
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/autocomplete/getBudgetsAC
*
* @param AutocompleteRequest $request
*
* @return JsonResponse
*/
public function budgets(AutocompleteRequest $request): JsonResponse
{
$data = $request->getData();
$result = $this->repository->searchBudget($data['query'], $data['limit']);
$result = $this->repository->searchBudget($data['query'], $this->parameters->get('limit'));
$filtered = $result->map(
static function (Budget $item) {
return [

View File

@@ -58,15 +58,11 @@ class CategoryController extends Controller
/**
* Documentation for this endpoint is at:
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/autocomplete/getCategoriesAC
*
* @param AutocompleteRequest $request
*
* @return JsonResponse
*/
public function categories(AutocompleteRequest $request): JsonResponse
{
$data = $request->getData();
$result = $this->repository->searchCategory($data['query'], $data['limit']);
$result = $this->repository->searchCategory($data['query'], $this->parameters->get('limit'));
$filtered = $result->map(
static function (Category $item) {
return [

View File

@@ -26,7 +26,7 @@ namespace FireflyIII\Api\V1\Controllers\Autocomplete;
use FireflyIII\Api\V1\Controllers\Controller;
use FireflyIII\Api\V1\Requests\Autocomplete\AutocompleteRequest;
use FireflyIII\Models\TransactionCurrency;
use FireflyIII\Repositories\Currency\CurrencyRepositoryInterface;
use FireflyIII\Repositories\UserGroups\Currency\CurrencyRepositoryInterface;
use FireflyIII\User;
use Illuminate\Http\JsonResponse;
@@ -58,15 +58,11 @@ class CurrencyController extends Controller
/**
* Documentation for this endpoint is at:
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/autocomplete/getCurrenciesAC
*
* @param AutocompleteRequest $request
*
* @return JsonResponse
*/
public function currencies(AutocompleteRequest $request): JsonResponse
{
$data = $request->getData();
$collection = $this->repository->searchCurrency($data['query'], $data['limit']);
$collection = $this->repository->searchCurrency($data['query'], $this->parameters->get('limit'));
$result = [];
/** @var TransactionCurrency $currency */
@@ -87,15 +83,12 @@ class CurrencyController extends Controller
* Documentation for this endpoint is at:
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/autocomplete/getCurrenciesCodeAC
*
* @param AutocompleteRequest $request
*
* @return JsonResponse
* @deprecated
*/
public function currenciesWithCode(AutocompleteRequest $request): JsonResponse
{
$data = $request->getData();
$collection = $this->repository->searchCurrency($data['query'], $data['limit']);
$collection = $this->repository->searchCurrency($data['query'], $this->parameters->get('limit'));
$result = [];
/** @var TransactionCurrency $currency */

View File

@@ -58,16 +58,12 @@ class ObjectGroupController extends Controller
/**
* Documentation for this endpoint is at:
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/autocomplete/getObjectGroupsAC
*
* @param AutocompleteRequest $request
*
* @return JsonResponse
*/
public function objectGroups(AutocompleteRequest $request): JsonResponse
{
$data = $request->getData();
$return = [];
$result = $this->repository->search($data['query'], $data['limit']);
$result = $this->repository->search($data['query'], $this->parameters->get('limit'));
/** @var ObjectGroup $objectGroup */
foreach ($result as $objectGroup) {

View File

@@ -62,15 +62,11 @@ class PiggyBankController extends Controller
/**
* This endpoint is documented at:
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/autocomplete/getPiggiesAC
*
* @param AutocompleteRequest $request
*
* @return JsonResponse
*/
public function piggyBanks(AutocompleteRequest $request): JsonResponse
{
$data = $request->getData();
$piggies = $this->piggyRepository->searchPiggyBank($data['query'], $data['limit']);
$piggies = $this->piggyRepository->searchPiggyBank($data['query'], $this->parameters->get('limit'));
$defaultCurrency = app('amount')->getDefaultCurrency();
$response = [];
@@ -97,17 +93,14 @@ class PiggyBankController extends Controller
/**
* This endpoint is documented at:
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/autocomplete/getPiggiesBalanceAC
*
* @param AutocompleteRequest $request
*
* @return JsonResponse
*/
public function piggyBanksWithBalance(AutocompleteRequest $request): JsonResponse
{
$data = $request->getData();
$piggies = $this->piggyRepository->searchPiggyBank($data['query'], $data['limit']);
$piggies = $this->piggyRepository->searchPiggyBank($data['query'], $this->parameters->get('limit'));
$defaultCurrency = app('amount')->getDefaultCurrency();
$response = [];
/** @var PiggyBank $piggy */
foreach ($piggies as $piggy) {
$currency = $this->accountRepository->getAccountCurrency($piggy->account) ?? $defaultCurrency;

View File

@@ -56,15 +56,11 @@ class RecurrenceController extends Controller
/**
* This endpoint is documented at:
* * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/autocomplete/getRecurringAC
*
* @param AutocompleteRequest $request
*
* @return JsonResponse
*/
public function recurring(AutocompleteRequest $request): JsonResponse
{
$data = $request->getData();
$recurrences = $this->repository->searchRecurrence($data['query'], $data['limit']);
$recurrences = $this->repository->searchRecurrence($data['query'], $this->parameters->get('limit'));
$response = [];
/** @var Recurrence $recurrence */

View File

@@ -55,15 +55,11 @@ class RuleController extends Controller
/**
* This endpoint is documented at:
* * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/autocomplete/getRulesAC
*
* @param AutocompleteRequest $request
*
* @return JsonResponse
*/
public function rules(AutocompleteRequest $request): JsonResponse
{
$data = $request->getData();
$rules = $this->repository->searchRule($data['query'], $data['limit']);
$rules = $this->repository->searchRule($data['query'], $this->parameters->get('limit'));
$response = [];
/** @var Rule $rule */

View File

@@ -55,15 +55,11 @@ class RuleGroupController extends Controller
/**
* This endpoint is documented at:
* * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/autocomplete/getRuleGroupsAC
*
* @param AutocompleteRequest $request
*
* @return JsonResponse
*/
public function ruleGroups(AutocompleteRequest $request): JsonResponse
{
$data = $request->getData();
$groups = $this->repository->searchRuleGroup($data['query'], $data['limit']);
$groups = $this->repository->searchRuleGroup($data['query'], $this->parameters->get('limit'));
$response = [];
/** @var RuleGroup $group */

View File

@@ -58,17 +58,13 @@ class TagController extends Controller
/**
* This endpoint is documented at:
* * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/autocomplete/getTagAC
*
* @param AutocompleteRequest $request
*
* @return JsonResponse
*/
public function tags(AutocompleteRequest $request): JsonResponse
{
$data = $request->getData();
$result = $this->repository->searchTags($data['query'], $data['limit']);
$data = $request->getData();
$result = $this->repository->searchTags($data['query'], $this->parameters->get('limit'));
$array = [];
/** @var Tag $tag */
foreach ($result as $tag) {
$array[] = [

View File

@@ -63,15 +63,11 @@ class TransactionController extends Controller
/**
* This endpoint is documented at:
* * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/autocomplete/getTransactionsAC
*
* @param AutocompleteRequest $request
*
* @return JsonResponse
*/
public function transactions(AutocompleteRequest $request): JsonResponse
{
$data = $request->getData();
$result = $this->repository->searchJournalDescriptions($data['query'], $data['limit']);
$data = $request->getData();
$result = $this->repository->searchJournalDescriptions($data['query'], $this->parameters->get('limit'));
// limit and unique
$filtered = $result->unique('description');
@@ -93,10 +89,6 @@ class TransactionController extends Controller
/**
* This endpoint is documented at:
* * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/autocomplete/getTransactionsIDAC
*
* @param AutocompleteRequest $request
*
* @return JsonResponse
*/
public function transactionsWithID(AutocompleteRequest $request): JsonResponse
{
@@ -113,11 +105,11 @@ class TransactionController extends Controller
}
}
if (!is_numeric($data['query'])) {
$result = $this->repository->searchJournalDescriptions($data['query'], $data['limit']);
$result = $this->repository->searchJournalDescriptions($data['query'], $this->parameters->get('limit'));
}
// limit and unique
$array = [];
$array = [];
/** @var TransactionJournal $journal */
foreach ($result as $journal) {

View File

@@ -54,15 +54,11 @@ class TransactionTypeController extends Controller
/**
* This endpoint is documented at
* * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/autocomplete/getTransactionTypesAC
*
* @param AutocompleteRequest $request
*
* @return JsonResponse
*/
public function transactionTypes(AutocompleteRequest $request): JsonResponse
{
$data = $request->getData();
$types = $this->repository->searchTypes($data['query'], $data['limit']);
$types = $this->repository->searchTypes($data['query'], $this->parameters->get('limit'));
$array = [];
/** @var TransactionType $type */

View File

@@ -30,14 +30,11 @@ use FireflyIII\Api\V1\Requests\Data\DateRequest;
use FireflyIII\Exceptions\FireflyException;
use FireflyIII\Models\Account;
use FireflyIII\Models\AccountType;
use FireflyIII\Models\Preference;
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
use FireflyIII\Repositories\Currency\CurrencyRepositoryInterface;
use FireflyIII\Support\Http\Api\ApiSupport;
use FireflyIII\User;
use Illuminate\Http\JsonResponse;
use JsonException;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\NotFoundExceptionInterface;
/**
* Class AccountController
@@ -46,13 +43,10 @@ class AccountController extends Controller
{
use ApiSupport;
private CurrencyRepositoryInterface $currencyRepository;
private AccountRepositoryInterface $repository;
private AccountRepositoryInterface $repository;
/**
* AccountController constructor.
*
*/
public function __construct()
{
@@ -64,9 +58,6 @@ class AccountController extends Controller
$this->repository = app(AccountRepositoryInterface::class);
$this->repository->setUser($user);
$this->currencyRepository = app(CurrencyRepositoryInterface::class);
$this->currencyRepository->setUser($user);
return $next($request);
}
);
@@ -76,25 +67,23 @@ class AccountController extends Controller
* This endpoint is documented at:
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/charts/getChartAccountOverview
*
* @param DateRequest $request
*
* @return JsonResponse
* @throws FireflyException
* @throws JsonException
* @throws ContainerExceptionInterface
* @throws NotFoundExceptionInterface
*/
public function overview(DateRequest $request): JsonResponse
{
// parameters for chart:
$dates = $request->getAll();
$dates = $request->getAll();
/** @var Carbon $start */
$start = $dates['start'];
$start = $dates['start'];
/** @var Carbon $end */
$end = $dates['end'];
$end = $dates['end'];
// user's preferences
$defaultSet = $this->repository->getAccountsByType([AccountType::ASSET])->pluck('id')->toArray();
/** @var Preference $frontPage */
$frontPage = app('preferences')->get('frontPageAccounts', $defaultSet);
$default = app('amount')->getDefaultCurrency();
@@ -103,17 +92,17 @@ class AccountController extends Controller
$frontPage->save();
}
// get accounts:
$accounts = $this->repository->getAccountsById($frontPage->data);
$chartData = [];
$accounts = $this->repository->getAccountsById($frontPage->data);
$chartData = [];
/** @var Account $account */
foreach ($accounts as $account) {
$currency = $this->repository->getAccountCurrency($account);
$currency = $this->repository->getAccountCurrency($account);
if (null === $currency) {
$currency = $default;
}
$currentSet = [
$currentSet = [
'label' => $account->name,
'currency_id' => (string)$currency->id,
'currency_code' => $currency->code,
@@ -129,16 +118,16 @@ class AccountController extends Controller
$currentStart = clone $start;
$range = app('steam')->balanceInRange($account, $start, clone $end);
// 2022-10-11 this method no longer converts to float.
$previous = array_values($range)[0];
$previous = array_values($range)[0];
while ($currentStart <= $end) {
$format = $currentStart->format('Y-m-d');
$label = $currentStart->toAtomString();
$balance = array_key_exists($format, $range) ? $range[$format] : $previous;
$previous = $balance;
$format = $currentStart->format('Y-m-d');
$label = $currentStart->toAtomString();
$balance = array_key_exists($format, $range) ? $range[$format] : $previous;
$previous = $balance;
$currentStart->addDay();
$currentSet['entries'][$label] = $balance;
}
$chartData[] = $currentSet;
$chartData[] = $currentSet;
}
return response()->json($chartData);

View File

@@ -27,22 +27,22 @@ namespace FireflyIII\Api\V1\Controllers;
use Carbon\Carbon;
use Carbon\Exceptions\InvalidDateException;
use Carbon\Exceptions\InvalidFormatException;
use FireflyIII\Models\Preference;
use FireflyIII\User;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Support\Facades\Log;
use League\Fractal\Manager;
use League\Fractal\Serializer\JsonApiSerializer;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\NotFoundExceptionInterface;
use Symfony\Component\HttpFoundation\Exception\BadRequestException;
use Symfony\Component\HttpFoundation\ParameterBag;
/**
* Class Controller.
*
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
* @SuppressWarnings(PHPMD.NumberOfChildren)
*/
abstract class Controller extends BaseController
{
@@ -50,7 +50,9 @@ abstract class Controller extends BaseController
use DispatchesJobs;
use ValidatesRequests;
protected const CONTENT_TYPE = 'application/vnd.api+json';
protected const string CONTENT_TYPE = 'application/vnd.api+json';
/** @var array<int, string> */
protected array $allowedSort;
protected ParameterBag $parameters;
@@ -61,9 +63,9 @@ abstract class Controller extends BaseController
{
// get global parameters
$this->allowedSort = config('firefly.allowed_sort_parameters');
$this->parameters = $this->getParameters();
$this->middleware(
function ($request, $next) {
$this->parameters = $this->getParameters();
if (auth()->check()) {
$language = app('steam')->getLanguage();
app()->setLocale($language);
@@ -76,45 +78,42 @@ abstract class Controller extends BaseController
/**
* Method to grab all parameters from the URL.
*
* @return ParameterBag
* @throws ContainerExceptionInterface
* @throws NotFoundExceptionInterface
*/
private function getParameters(): ParameterBag
{
$bag = new ParameterBag();
$page = (int)request()->get('page');
$bag = new ParameterBag();
$page = (int)request()->get('page');
if ($page < 1) {
$page = 1;
}
if ($page > pow(2, 16)) {
$page = pow(2, 16);
if ($page > 2 ** 16) {
$page = 2 ** 16;
}
$bag->set('page', $page);
// some date fields:
$dates = ['start', 'end', 'date'];
$dates = ['start', 'end', 'date'];
foreach ($dates as $field) {
$date = null;
try {
$date = request()->query->get($field);
} catch (BadRequestException $e) {
Log::error(sprintf('Request field "%s" contains a non-scalar value. Value set to NULL.', $field));
Log::error($e->getMessage());
Log::error($e->getTraceAsString());
app('log')->error(sprintf('Request field "%s" contains a non-scalar value. Value set to NULL.', $field));
app('log')->error($e->getMessage());
app('log')->error($e->getTraceAsString());
$value = null;
}
$obj = null;
$obj = null;
if (null !== $date) {
try {
$obj = Carbon::parse($date);
} catch (InvalidDateException | InvalidFormatException $e) {
$obj = Carbon::parse((string)$date);
} 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),
substr((string)$date, 0, 20),
$e->getMessage()
)
);
@@ -129,40 +128,47 @@ abstract class Controller extends BaseController
try {
$value = request()->query->get($integer);
} catch (BadRequestException $e) {
Log::error(sprintf('Request field "%s" contains a non-scalar value. Value set to NULL.', $integer));
Log::error($e->getMessage());
Log::error($e->getTraceAsString());
app('log')->error(sprintf('Request field "%s" contains a non-scalar value. Value set to NULL.', $integer));
app('log')->error($e->getMessage());
app('log')->error($e->getTraceAsString());
$value = null;
}
if (null !== $value) {
$bag->set($integer, (int)$value);
}
if (null === $value
&& 'limit' === $integer // @phpstan-ignore-line
&& auth()->check()) {
// set default for user:
/** @var User $user */
$user = auth()->user();
/** @var Preference $pageSize */
$pageSize = (int)app('preferences')->getForUser($user, 'listPageSize', 50)->data;
$bag->set($integer, $pageSize);
}
}
// sort fields:
return $this->getSortParameters($bag);
}
/**
* @param ParameterBag $bag
*
* @return ParameterBag
*/
private function getSortParameters(ParameterBag $bag): ParameterBag
{
$sortParameters = [];
try {
$param = (string)request()->query->get('sort');
} catch (BadRequestException $e) {
Log::error('Request field "sort" contains a non-scalar value. Value set to NULL.');
Log::error($e->getMessage());
Log::error($e->getTraceAsString());
app('log')->error('Request field "sort" contains a non-scalar value. Value set to NULL.');
app('log')->error($e->getMessage());
app('log')->error($e->getTraceAsString());
$param = '';
}
if ('' === $param) {
return $bag;
}
$parts = explode(',', $param);
$parts = explode(',', $param);
foreach ($parts as $part) {
$part = trim($part);
$direction = 'asc';
@@ -181,8 +187,6 @@ abstract class Controller extends BaseController
/**
* Method to help build URL's.
*
* @return string
*/
final protected function buildParams(): string
{
@@ -194,22 +198,20 @@ abstract class Controller extends BaseController
}
if ($value instanceof Carbon) {
$params[$key] = $value->format('Y-m-d');
continue;
}
$params[$key] = $value;
}
return $return . http_build_query($params);
return $return.http_build_query($params);
}
/**
* @return Manager
*/
final protected function getManager(): Manager
{
// 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

@@ -44,9 +44,6 @@ class TransactionController extends Controller
{
private AccountRepositoryInterface $repository;
/**
*
*/
public function __construct()
{
parent::__construct();
@@ -63,10 +60,6 @@ class TransactionController extends Controller
/**
* This endpoint is documented at:
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/data/bulkUpdateTransactions
*
* @param TransactionRequest $request
*
* @return JsonResponse
*/
public function update(TransactionRequest $request): JsonResponse
{
@@ -76,12 +69,12 @@ class TransactionController extends Controller
// this deserves better code, but for now a loop of basic if-statements
// to respond to what is in the $query.
// this is OK because only one thing can be in the query at the moment.
if ($this->updatesTransactionAccount($params)) {
if ($this->isUpdateTransactionAccount($params)) {
$original = $this->repository->find((int)$params['where']['account_id']);
$destination = $this->repository->find((int)$params['update']['account_id']);
/** @var AccountDestroyService $service */
$service = app(AccountDestroyService::class);
$service = app(AccountDestroyService::class);
$service->moveTransactions($original, $destination);
}
@@ -89,11 +82,9 @@ class TransactionController extends Controller
}
/**
* @param array $params
*
* @return bool
* @param array<string, array<string, string>> $params
*/
private function updatesTransactionAccount(array $params): bool
private function isUpdateTransactionAccount(array $params): bool
{
return array_key_exists('account_id', $params['where']) && array_key_exists('account_id', $params['update']);
}

View File

@@ -58,160 +58,53 @@ class DestroyController extends Controller
* This endpoint is documented at:
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/data/destroyData
*
* @param DestroyRequest $request
*
* @return JsonResponse
* @throws FireflyException
*/
public function destroy(DestroyRequest $request): JsonResponse
{
$objects = $request->getObjects();
$this->unused = $request->boolean('unused', false);
switch ($objects) {
default:
throw new FireflyException(sprintf('200033: This endpoint can\'t handle object "%s"', $objects));
case 'budgets':
$this->destroyBudgets();
break;
case 'bills':
$this->destroyBills();
break;
case 'piggy_banks':
$this->destroyPiggyBanks();
break;
case 'rules':
$this->destroyRules();
break;
case 'recurring':
$this->destroyRecurringTransactions();
break;
case 'categories':
$this->destroyCategories();
break;
case 'tags':
$this->destroyTags();
break;
case 'object_groups':
$this->destroyObjectGroups();
break;
case 'not_assets_liabilities':
$this->destroyAccounts(
[
AccountType::BENEFICIARY,
AccountType::CASH,
AccountType::CREDITCARD,
AccountType::DEFAULT,
AccountType::EXPENSE,
AccountType::IMPORT,
AccountType::INITIAL_BALANCE,
AccountType::LIABILITY_CREDIT,
AccountType::RECONCILIATION,
AccountType::REVENUE,
]
);
break;
case 'accounts':
$this->destroyAccounts(
[
AccountType::ASSET,
AccountType::BENEFICIARY,
AccountType::CASH,
AccountType::CREDITCARD,
AccountType::DEBT,
AccountType::DEFAULT,
AccountType::EXPENSE,
AccountType::IMPORT,
AccountType::INITIAL_BALANCE,
AccountType::LIABILITY_CREDIT,
AccountType::LOAN,
AccountType::MORTGAGE,
AccountType::RECONCILIATION,
AccountType::REVENUE,
]
);
break;
case 'asset_accounts':
$this->destroyAccounts(
[
AccountType::ASSET,
AccountType::DEFAULT,
]
);
break;
case 'expense_accounts':
$this->destroyAccounts(
[
AccountType::BENEFICIARY,
AccountType::EXPENSE,
]
);
break;
case 'revenue_accounts':
$this->destroyAccounts(
[
AccountType::REVENUE,
]
);
break;
case 'liabilities':
$this->destroyAccounts(
[
AccountType::DEBT,
AccountType::LOAN,
AccountType::MORTGAGE,
AccountType::CREDITCARD,
]
);
break;
case 'transactions':
$this->destroyTransactions(
[
TransactionType::WITHDRAWAL,
TransactionType::DEPOSIT,
TransactionType::TRANSFER,
TransactionType::RECONCILIATION,
TransactionType::OPENING_BALANCE,
]
);
break;
case 'withdrawals':
$this->destroyTransactions(
[
TransactionType::WITHDRAWAL,
]
);
break;
case 'deposits':
$this->destroyTransactions(
[
TransactionType::DEPOSIT,
]
);
break;
case 'transfers':
$this->destroyTransactions(
[
TransactionType::TRANSFER,
]
);
break;
}
$objects = $request->getObjects();
$this->unused = $request->boolean('unused', false);
$allExceptAssets = [AccountType::BENEFICIARY, AccountType::CASH, AccountType::CREDITCARD, AccountType::DEFAULT, AccountType::EXPENSE, AccountType::IMPORT, AccountType::INITIAL_BALANCE, AccountType::LIABILITY_CREDIT, AccountType::RECONCILIATION, AccountType::REVENUE];
$all = [AccountType::ASSET, AccountType::BENEFICIARY, AccountType::CASH, AccountType::CREDITCARD, AccountType::DEBT, AccountType::DEFAULT, AccountType::EXPENSE, AccountType::IMPORT, AccountType::INITIAL_BALANCE, AccountType::LIABILITY_CREDIT, AccountType::LOAN, AccountType::MORTGAGE, AccountType::RECONCILIATION];
$liabilities = [AccountType::DEBT, AccountType::LOAN, AccountType::MORTGAGE, AccountType::CREDITCARD];
$transactions = [TransactionType::WITHDRAWAL, TransactionType::DEPOSIT, TransactionType::TRANSFER, TransactionType::RECONCILIATION];
match ($objects) {
'budgets' => $this->destroyBudgets(),
'bills' => $this->destroyBills(),
'piggy_banks' => $this->destroyPiggyBanks(),
'rules' => $this->destroyRules(),
'recurring' => $this->destroyRecurringTransactions(),
'categories' => $this->destroyCategories(),
'tags' => $this->destroyTags(),
'object_groups' => $this->destroyObjectGroups(),
'not_assets_liabilities' => $this->destroyAccounts($allExceptAssets),
'accounts' => $this->destroyAccounts($all),
'asset_accounts' => $this->destroyAccounts([AccountType::ASSET, AccountType::DEFAULT]),
'expense_accounts' => $this->destroyAccounts([AccountType::BENEFICIARY, AccountType::EXPENSE]),
'revenue_accounts' => $this->destroyAccounts([AccountType::REVENUE]),
'liabilities' => $this->destroyAccounts($liabilities),
'transactions' => $this->destroyTransactions($transactions),
'withdrawals' => $this->destroyTransactions([TransactionType::WITHDRAWAL]),
'deposits' => $this->destroyTransactions([TransactionType::DEPOSIT]),
'transfers' => $this->destroyTransactions([TransactionType::TRANSFER]),
default => throw new FireflyException(sprintf('200033: This endpoint can\'t handle object "%s"', $objects)),
};
app('preferences')->mark();
return response()->json([], 204);
}
/**
*
*/
private function destroyBudgets(): void
{
/** @var AvailableBudgetRepositoryInterface $abRepository */
$abRepository = app(AvailableBudgetRepositoryInterface::class);
$abRepository = app(AvailableBudgetRepositoryInterface::class);
$abRepository->destroyAll();
/** @var BudgetLimitRepositoryInterface $blRepository */
$blRepository = app(BudgetLimitRepositoryInterface::class);
$blRepository = app(BudgetLimitRepositoryInterface::class);
$blRepository->destroyAll();
/** @var BudgetRepositoryInterface $budgetRepository */
@@ -219,9 +112,6 @@ class DestroyController extends Controller
$budgetRepository->destroyAll();
}
/**
*
*/
private function destroyBills(): void
{
/** @var BillRepositoryInterface $repository */
@@ -229,9 +119,6 @@ class DestroyController extends Controller
$repository->destroyAll();
}
/**
*
*/
private function destroyPiggyBanks(): void
{
/** @var PiggyBankRepositoryInterface $repository */
@@ -239,9 +126,6 @@ class DestroyController extends Controller
$repository->destroyAll();
}
/**
*
*/
private function destroyRules(): void
{
/** @var RuleGroupRepositoryInterface $repository */
@@ -249,9 +133,6 @@ class DestroyController extends Controller
$repository->destroyAll();
}
/**
*
*/
private function destroyRecurringTransactions(): void
{
/** @var RecurringRepositoryInterface $repository */
@@ -259,9 +140,6 @@ class DestroyController extends Controller
$repository->destroyAll();
}
/**
*
*/
private function destroyCategories(): void
{
/** @var CategoryRepositoryInterface $categoryRepos */
@@ -269,9 +147,6 @@ class DestroyController extends Controller
$categoryRepos->destroyAll();
}
/**
*
*/
private function destroyTags(): void
{
/** @var TagRepositoryInterface $tagRepository */
@@ -279,9 +154,6 @@ class DestroyController extends Controller
$tagRepository->destroyAll();
}
/**
* @return void
*/
private function destroyObjectGroups(): void
{
/** @var ObjectGroupRepositoryInterface $repository */
@@ -290,7 +162,7 @@ class DestroyController extends Controller
}
/**
* @param array $types
* @param array<int, string> $types
*/
private function destroyAccounts(array $types): void
{
@@ -303,19 +175,22 @@ class DestroyController extends Controller
foreach ($collection as $account) {
$count = $account->transactions()->count();
if (true === $this->unused && 0 === $count) {
Log::info(sprintf('Deleted unused account #%d "%s"', $account->id, $account->name));
app('log')->info(sprintf('Deleted unused account #%d "%s"', $account->id, $account->name));
Log::channel('audit')->info(sprintf('Deleted unused account #%d "%s"', $account->id, $account->name));
$service->destroy($account, null);
continue;
}
if (false === $this->unused) {
Log::info(sprintf('Deleting account #%d "%s"', $account->id, $account->name));
app('log')->info(sprintf('Deleting account #%d "%s"', $account->id, $account->name));
Log::channel('audit')->warning(sprintf('Deleted account #%d "%s"', $account->id, $account->name));
$service->destroy($account, null);
}
}
}
/**
* @param array $types
* @param array<int, string> $types
*/
private function destroyTransactions(array $types): void
{
@@ -323,6 +198,7 @@ class DestroyController extends Controller
$repository = app(JournalRepositoryInterface::class);
$journals = $repository->findByType($types);
$service = app(JournalDestroyService::class);
/** @var TransactionJournal $journal */
foreach ($journals as $journal) {
$service->destroy($journal);

View File

@@ -29,8 +29,6 @@ use FireflyIII\Api\V1\Requests\Data\Export\ExportRequest;
use FireflyIII\Exceptions\FireflyException;
use FireflyIII\Support\Export\ExportDataGenerator;
use Illuminate\Http\Response as LaravelResponse;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\NotFoundExceptionInterface;
/**
* Class ExportController
@@ -59,10 +57,9 @@ class ExportController extends Controller
* This endpoint is documented at:
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/data/exportAccounts
*
* @param ExportRequest $request
*
* @return LaravelResponse
* @throws FireflyException
*
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
public function accounts(ExportRequest $request): LaravelResponse
{
@@ -72,12 +69,7 @@ class ExportController extends Controller
}
/**
* @param string $key
*
* @return LaravelResponse
* @throws FireflyException
* @throws ContainerExceptionInterface
* @throws NotFoundExceptionInterface
*/
private function returnExport(string $key): LaravelResponse
{
@@ -90,13 +82,14 @@ 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')
->header('Cache-Control', 'must-revalidate, post-check=0, pre-check=0')
->header('Pragma', 'public')
->header('Content-Length', (string)strlen($data[$key]));
->header('Content-Length', (string)strlen($data[$key]))
;
return $response;
}
@@ -105,10 +98,9 @@ class ExportController extends Controller
* This endpoint is documented at:
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/data/exportBills
*
* @param ExportRequest $request
*
* @return LaravelResponse
* @throws FireflyException
*
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
public function bills(ExportRequest $request): LaravelResponse
{
@@ -121,10 +113,9 @@ class ExportController extends Controller
* This endpoint is documented at:
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/data/exportBudgets
*
* @param ExportRequest $request
*
* @return LaravelResponse
* @throws FireflyException
*
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
public function budgets(ExportRequest $request): LaravelResponse
{
@@ -137,10 +128,9 @@ class ExportController extends Controller
* This endpoint is documented at:
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/data/exportCategories
*
* @param ExportRequest $request
*
* @return LaravelResponse
* @throws FireflyException
*
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
public function categories(ExportRequest $request): LaravelResponse
{
@@ -153,10 +143,9 @@ class ExportController extends Controller
* This endpoint is documented at:
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/data/exportPiggies
*
* @param ExportRequest $request
*
* @return LaravelResponse
* @throws FireflyException
*
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
public function piggyBanks(ExportRequest $request): LaravelResponse
{
@@ -169,10 +158,9 @@ class ExportController extends Controller
* This endpoint is documented at:
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/data/exportRecurring
*
* @param ExportRequest $request
*
* @return LaravelResponse
* @throws FireflyException
*
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
public function recurring(ExportRequest $request): LaravelResponse
{
@@ -185,10 +173,9 @@ class ExportController extends Controller
* This endpoint is documented at:
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/data/exportRules
*
* @param ExportRequest $request
*
* @return LaravelResponse
* @throws FireflyException
*
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
public function rules(ExportRequest $request): LaravelResponse
{
@@ -201,10 +188,9 @@ class ExportController extends Controller
* This endpoint is documented at:
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/data/exportTags
*
* @param ExportRequest $request
*
* @return LaravelResponse
* @throws FireflyException
*
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
public function tags(ExportRequest $request): LaravelResponse
{
@@ -217,9 +203,6 @@ class ExportController extends Controller
* This endpoint is documented at:
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/data/exportTransactions
*
* @param ExportRequest $request
*
* @return LaravelResponse
* @throws FireflyException
*/
public function transactions(ExportRequest $request): LaravelResponse

View File

@@ -35,6 +35,7 @@ use FireflyIII\Models\RuleGroup;
use FireflyIII\Models\Tag;
use FireflyIII\Models\TransactionGroup;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\User;
use Illuminate\Http\JsonResponse;
/**
@@ -46,11 +47,10 @@ 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
{
/** @var User $user */
$user = auth()->user();
// some manual code, too lazy to call all repositories.
@@ -62,8 +62,10 @@ class PurgeController extends Controller
Bill::whereUserId($user->id)->onlyTrashed()->forceDelete();
// piggies
$set = PiggyBank::leftJoin('accounts', 'accounts.id', 'piggy_banks.account_id')
->where('accounts.user_id', $user->id)->onlyTrashed()->get(['piggy_banks.*']);
$set = PiggyBank::leftJoin('accounts', 'accounts.id', 'piggy_banks.account_id')
->where('accounts.user_id', $user->id)->onlyTrashed()->get(['piggy_banks.*'])
;
/** @var PiggyBank $piggy */
foreach ($set as $piggy) {
$piggy->forceDelete();
@@ -84,7 +86,6 @@ class PurgeController extends Controller
// tags
Tag::whereUserId($user->id)->onlyTrashed()->forceDelete();
// accounts
Account::whereUserId($user->id)->onlyTrashed()->forceDelete();

View File

@@ -28,12 +28,10 @@ use FireflyIII\Api\V1\Controllers\Controller;
use FireflyIII\Api\V1\Requests\Insight\GenericRequest;
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
use FireflyIII\Repositories\Account\OperationsRepositoryInterface;
use FireflyIII\Repositories\Currency\CurrencyRepositoryInterface;
use FireflyIII\Support\Http\Api\ApiSupport;
use Illuminate\Http\JsonResponse;
/**
*
* Class AccountController
*
* Shows expense information grouped or limited by date.
@@ -43,27 +41,21 @@ class AccountController extends Controller
{
use ApiSupport;
private CurrencyRepositoryInterface $currencyRepository;
private OperationsRepositoryInterface $opsRepository;
private AccountRepositoryInterface $repository;
/**
* AccountController constructor.
*
*/
public function __construct()
{
parent::__construct();
$this->middleware(
function ($request, $next) {
$user = auth()->user();
$this->repository = app(AccountRepositoryInterface::class);
$user = auth()->user();
$this->repository = app(AccountRepositoryInterface::class);
$this->repository->setUser($user);
$this->currencyRepository = app(CurrencyRepositoryInterface::class);
$this->currencyRepository->setUser($user);
$this->opsRepository = app(OperationsRepositoryInterface::class);
$this->opsRepository->setUser($user);
@@ -75,10 +67,6 @@ class AccountController extends Controller
/**
* This endpoint is documented at:
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/insight/insightExpenseAsset
*
* @param GenericRequest $request
*
* @return JsonResponse
*/
public function asset(GenericRequest $request): JsonResponse
{
@@ -106,10 +94,6 @@ class AccountController extends Controller
/**
* This endpoint is documented at:
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/insight/insightExpenseExpense
*
* @param GenericRequest $request
*
* @return JsonResponse
*/
public function expense(GenericRequest $request): JsonResponse
{

View File

@@ -60,18 +60,14 @@ class BillController extends Controller
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/insight/insightExpenseBill
*
* Expenses per bill, possibly filtered by bill and account.
*
* @param GenericRequest $request
*
* @return JsonResponse
*/
public function bill(GenericRequest $request): JsonResponse
{
$accounts = $request->getAssetAccounts();
$bills = $request->getBills();
$start = $request->getStart();
$end = $request->getEnd();
$response = [];
$accounts = $request->getAssetAccounts();
$bills = $request->getBills();
$start = $request->getStart();
$end = $request->getEnd();
$response = [];
// get all bills:
if (0 === $bills->count()) {
@@ -79,7 +75,7 @@ class BillController extends Controller
}
// collect all expenses in this period (regardless of type) by the given bills and accounts.
$collector = app(GroupCollectorInterface::class);
$collector = app(GroupCollectorInterface::class);
$collector->setTypes([TransactionType::WITHDRAWAL])->setRange($start, $end)->setSourceAccounts($accounts);
$collector->setBills($bills);
@@ -92,7 +88,7 @@ class BillController extends Controller
$foreignKey = sprintf('%d-%d', $billId, $foreignCurrencyId);
if (0 !== $currencyId) {
$response[$key] = $response[$key] ?? [
$response[$key] ??= [
'id' => (string)$billId,
'name' => $journal['bill_name'],
'difference' => '0',
@@ -104,7 +100,7 @@ class BillController extends Controller
$response[$key]['difference_float'] = (float)$response[$key]['difference']; // intentional float
}
if (0 !== $foreignCurrencyId) {
$response[$foreignKey] = $response[$foreignKey] ?? [
$response[$foreignKey] ??= [
'difference' => '0',
'difference_float' => 0,
'currency_id' => (string)$foreignCurrencyId,
@@ -123,20 +119,16 @@ class BillController extends Controller
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/insight/insightExpenseNoBill
*
* Expenses for no bill filtered by account.
*
* @param GenericRequest $request
*
* @return JsonResponse
*/
public function noBill(GenericRequest $request): JsonResponse
{
$accounts = $request->getAssetAccounts();
$start = $request->getStart();
$end = $request->getEnd();
$response = [];
$accounts = $request->getAssetAccounts();
$start = $request->getStart();
$end = $request->getEnd();
$response = [];
// collect all expenses in this period (regardless of type) by the given bills and accounts.
$collector = app(GroupCollectorInterface::class);
$collector = app(GroupCollectorInterface::class);
$collector->setTypes([TransactionType::WITHDRAWAL])->setRange($start, $end)->setSourceAccounts($accounts);
$collector->withoutBill();
@@ -147,7 +139,7 @@ class BillController extends Controller
$foreignCurrencyId = (int)$journal['foreign_currency_id'];
if (0 !== $currencyId) {
$response[$currencyId] = $response[$currencyId] ?? [
$response[$currencyId] ??= [
'difference' => '0',
'difference_float' => 0,
'currency_id' => (string)$currencyId,
@@ -157,7 +149,7 @@ class BillController extends Controller
$response[$currencyId]['difference_float'] = (float)$response[$currencyId]['difference']; // intentional float
}
if (0 !== $foreignCurrencyId) {
$response[$foreignCurrencyId] = $response[$foreignCurrencyId] ?? [
$response[$foreignCurrencyId] ??= [
'difference' => '0',
'difference_float' => 0,
'currency_id' => (string)$foreignCurrencyId,

View File

@@ -43,8 +43,6 @@ class BudgetController extends Controller
/**
* AccountController constructor.
*
*/
public function __construct()
{
@@ -67,10 +65,6 @@ class BudgetController extends Controller
/**
* This endpoint is documented at:
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/insight/insightExpenseBudget
*
* @param GenericRequest $request
*
* @return JsonResponse
*/
public function budget(GenericRequest $request): JsonResponse
{
@@ -82,9 +76,11 @@ class BudgetController extends Controller
if (0 === $budgets->count()) {
$budgets = $this->repository->getActiveBudgets();
}
/** @var Budget $budget */
foreach ($budgets as $budget) {
$expenses = $this->opsRepository->sumExpenses($start, $end, $assetAccounts, new Collection([$budget]));
/** @var array $expense */
foreach ($expenses as $expense) {
$result[] = [
@@ -104,10 +100,6 @@ class BudgetController extends Controller
/**
* This endpoint is documented at:
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/insight/insightExpenseNoBudget
*
* @param GenericRequest $request
*
* @return JsonResponse
*/
public function noBudget(GenericRequest $request): JsonResponse
{
@@ -116,6 +108,7 @@ class BudgetController extends Controller
$assetAccounts = $request->getAssetAccounts();
$result = [];
$expenses = $this->noRepository->sumExpenses($start, $end, $assetAccounts);
/** @var array $expense */
foreach ($expenses as $expense) {
$result[] = [

View File

@@ -44,8 +44,6 @@ class CategoryController extends Controller
/**
* AccountController constructor.
*
*/
public function __construct()
{
@@ -68,10 +66,6 @@ class CategoryController extends Controller
/**
* This endpoint is documented at:
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/insight/insightTransferCategory
*
* @param GenericRequest $request
*
* @return JsonResponse
*/
public function category(GenericRequest $request): JsonResponse
{
@@ -83,9 +77,11 @@ class CategoryController extends Controller
if (0 === $categories->count()) {
$categories = $this->repository->getCategories();
}
/** @var Category $category */
foreach ($categories as $category) {
$expenses = $this->opsRepository->sumExpenses($start, $end, $assetAccounts, new Collection([$category]));
/** @var array $expense */
foreach ($expenses as $expense) {
$result[] = [
@@ -105,10 +101,6 @@ class CategoryController extends Controller
/**
* This endpoint is documented at:
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/insight/insightTransferNoCategory
*
* @param GenericRequest $request
*
* @return JsonResponse
*/
public function noCategory(GenericRequest $request): JsonResponse
{
@@ -117,6 +109,7 @@ class CategoryController extends Controller
$assetAccounts = $request->getAssetAccounts();
$result = [];
$expenses = $this->noRepository->sumExpenses($start, $end, $assetAccounts);
/** @var array $expense */
foreach ($expenses as $expense) {
$result[] = [

View File

@@ -37,20 +37,16 @@ class PeriodController extends Controller
/**
* This endpoint is documented at:
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/insight/insightExpenseTotal
*
* @param GenericRequest $request
*
* @return JsonResponse
*/
public function total(GenericRequest $request): JsonResponse
{
$accounts = $request->getAssetAccounts();
$start = $request->getStart();
$end = $request->getEnd();
$response = [];
$accounts = $request->getAssetAccounts();
$start = $request->getStart();
$end = $request->getEnd();
$response = [];
// collect all expenses in this period (regardless of type)
$collector = app(GroupCollectorInterface::class);
$collector = app(GroupCollectorInterface::class);
$collector->setTypes([TransactionType::WITHDRAWAL])->setRange($start, $end)->setSourceAccounts($accounts);
$genericSet = $collector->getExtractedJournals();
foreach ($genericSet as $journal) {
@@ -58,7 +54,7 @@ class PeriodController extends Controller
$foreignCurrencyId = (int)$journal['foreign_currency_id'];
if (0 !== $currencyId) {
$response[$currencyId] = $response[$currencyId] ?? [
$response[$currencyId] ??= [
'difference' => '0',
'difference_float' => 0,
'currency_id' => (string)$currencyId,
@@ -68,7 +64,7 @@ class PeriodController extends Controller
$response[$currencyId]['difference_float'] = (float)$response[$currencyId]['difference']; // intentional float
}
if (0 !== $foreignCurrencyId) {
$response[$foreignCurrencyId] = $response[$foreignCurrencyId] ?? [
$response[$foreignCurrencyId] ??= [
'difference' => '0',
'difference_float' => 0,
'currency_id' => (string)$foreignCurrencyId,

View File

@@ -59,20 +59,16 @@ class TagController extends Controller
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/insight/insightExpenseNoTag
*
* Expenses for no tag filtered by account.
*
* @param GenericRequest $request
*
* @return JsonResponse
*/
public function noTag(GenericRequest $request): JsonResponse
{
$accounts = $request->getAssetAccounts();
$start = $request->getStart();
$end = $request->getEnd();
$response = [];
$accounts = $request->getAssetAccounts();
$start = $request->getStart();
$end = $request->getEnd();
$response = [];
// collect all expenses in this period (regardless of type) by the given bills and accounts.
$collector = app(GroupCollectorInterface::class);
$collector = app(GroupCollectorInterface::class);
$collector->setTypes([TransactionType::WITHDRAWAL])->setRange($start, $end)->setSourceAccounts($accounts);
$collector->withoutTags();
@@ -83,7 +79,7 @@ class TagController extends Controller
$foreignCurrencyId = (int)$journal['foreign_currency_id'];
if (0 !== $currencyId) {
$response[$currencyId] = $response[$currencyId] ?? [
$response[$currencyId] ??= [
'difference' => '0',
'difference_float' => 0,
'currency_id' => (string)$currencyId,
@@ -93,7 +89,7 @@ class TagController extends Controller
$response[$currencyId]['difference_float'] = (float)$response[$currencyId]['difference']; // float but on purpose.
}
if (0 !== $foreignCurrencyId) {
$response[$foreignCurrencyId] = $response[$foreignCurrencyId] ?? [
$response[$foreignCurrencyId] ??= [
'difference' => '0',
'difference_float' => 0,
'currency_id' => (string)$foreignCurrencyId,
@@ -112,18 +108,14 @@ class TagController extends Controller
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/insight/insightExpenseTag
*
* Expenses per tag, possibly filtered by tag and account.
*
* @param GenericRequest $request
*
* @return JsonResponse
*/
public function tag(GenericRequest $request): JsonResponse
{
$accounts = $request->getAssetAccounts();
$tags = $request->getTags();
$start = $request->getStart();
$end = $request->getEnd();
$response = [];
$accounts = $request->getAssetAccounts();
$tags = $request->getTags();
$start = $request->getStart();
$end = $request->getEnd();
$response = [];
// get all tags:
if (0 === $tags->count()) {
@@ -131,10 +123,11 @@ class TagController extends Controller
}
// collect all expenses in this period (regardless of type) by the given bills and accounts.
$collector = app(GroupCollectorInterface::class);
$collector = app(GroupCollectorInterface::class);
$collector->setTypes([TransactionType::WITHDRAWAL])->setRange($start, $end)->setSourceAccounts($accounts);
$collector->setTags($tags);
$genericSet = $collector->getExtractedJournals();
/** @var array $journal */
foreach ($genericSet as $journal) {
$currencyId = (int)$journal['currency_id'];
@@ -148,7 +141,7 @@ class TagController extends Controller
// on currency ID
if (0 !== $currencyId) {
$response[$key] = $response[$key] ?? [
$response[$key] ??= [
'id' => (string)$tagId,
'name' => $tag['name'],
'difference' => '0',

View File

@@ -28,12 +28,10 @@ use FireflyIII\Api\V1\Controllers\Controller;
use FireflyIII\Api\V1\Requests\Insight\GenericRequest;
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
use FireflyIII\Repositories\Account\OperationsRepositoryInterface;
use FireflyIII\Repositories\Currency\CurrencyRepositoryInterface;
use FireflyIII\Support\Http\Api\ApiSupport;
use Illuminate\Http\JsonResponse;
/**
*
* Class AccountController
*
* Shows income information grouped or limited by date.
@@ -43,27 +41,21 @@ class AccountController extends Controller
{
use ApiSupport;
private CurrencyRepositoryInterface $currencyRepository;
private OperationsRepositoryInterface $opsRepository;
private AccountRepositoryInterface $repository;
/**
* AccountController constructor.
*
*/
public function __construct()
{
parent::__construct();
$this->middleware(
function ($request, $next) {
$user = auth()->user();
$this->repository = app(AccountRepositoryInterface::class);
$user = auth()->user();
$this->repository = app(AccountRepositoryInterface::class);
$this->repository->setUser($user);
$this->currencyRepository = app(CurrencyRepositoryInterface::class);
$this->currencyRepository->setUser($user);
$this->opsRepository = app(OperationsRepositoryInterface::class);
$this->opsRepository->setUser($user);
@@ -75,10 +67,6 @@ class AccountController extends Controller
/**
* This endpoint is documented at:
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/insight/insightIncomeAsset
*
* @param GenericRequest $request
*
* @return JsonResponse
*/
public function asset(GenericRequest $request): JsonResponse
{
@@ -87,6 +75,7 @@ class AccountController extends Controller
$assetAccounts = $request->getAssetAccounts();
$income = $this->opsRepository->sumIncomeByDestination($start, $end, $assetAccounts);
$result = [];
/** @var array $entry */
foreach ($income as $entry) {
$result[] = [
@@ -105,10 +94,6 @@ class AccountController extends Controller
/**
* This endpoint is documented at:
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/insight/insightIncomeRevenue
*
* @param GenericRequest $request
*
* @return JsonResponse
*/
public function revenue(GenericRequest $request): JsonResponse
{

View File

@@ -44,8 +44,6 @@ class CategoryController extends Controller
/**
* AccountController constructor.
*
*/
public function __construct()
{
@@ -68,10 +66,6 @@ class CategoryController extends Controller
/**
* This endpoint is documented at:
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/insight/insightIncomeCategory
*
* @param GenericRequest $request
*
* @return JsonResponse
*/
public function category(GenericRequest $request): JsonResponse
{
@@ -83,9 +77,11 @@ class CategoryController extends Controller
if (0 === $categories->count()) {
$categories = $this->repository->getCategories();
}
/** @var Category $category */
foreach ($categories as $category) {
$expenses = $this->opsRepository->sumIncome($start, $end, $assetAccounts, new Collection([$category]));
/** @var array $expense */
foreach ($expenses as $expense) {
$result[] = [
@@ -105,10 +101,6 @@ class CategoryController extends Controller
/**
* This endpoint is documented at:
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/insight/insightIncomeNoCategory
*
* @param GenericRequest $request
*
* @return JsonResponse
*/
public function noCategory(GenericRequest $request): JsonResponse
{
@@ -117,6 +109,7 @@ class CategoryController extends Controller
$assetAccounts = $request->getAssetAccounts();
$result = [];
$expenses = $this->noRepository->sumIncome($start, $end, $assetAccounts);
/** @var array $expense */
foreach ($expenses as $expense) {
$result[] = [

View File

@@ -37,20 +37,16 @@ class PeriodController extends Controller
/**
* This endpoint is documented at:
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/insight/insightIncomeTotal
*
* @param GenericRequest $request
*
* @return JsonResponse
*/
public function total(GenericRequest $request): JsonResponse
{
$accounts = $request->getAssetAccounts();
$start = $request->getStart();
$end = $request->getEnd();
$response = [];
$accounts = $request->getAssetAccounts();
$start = $request->getStart();
$end = $request->getEnd();
$response = [];
// collect all expenses in this period (regardless of type)
$collector = app(GroupCollectorInterface::class);
$collector = app(GroupCollectorInterface::class);
$collector->setTypes([TransactionType::DEPOSIT])->setRange($start, $end)->setDestinationAccounts($accounts);
$genericSet = $collector->getExtractedJournals();
foreach ($genericSet as $journal) {
@@ -58,7 +54,7 @@ class PeriodController extends Controller
$foreignCurrencyId = (int)$journal['foreign_currency_id'];
if (0 !== $currencyId) {
$response[$currencyId] = $response[$currencyId] ?? [
$response[$currencyId] ??= [
'difference' => '0',
'difference_float' => 0,
'currency_id' => (string)$currencyId,
@@ -68,7 +64,7 @@ class PeriodController extends Controller
$response[$currencyId]['difference_float'] = (float)$response[$currencyId]['difference']; // float but on purpose.
}
if (0 !== $foreignCurrencyId) {
$response[$foreignCurrencyId] = $response[$foreignCurrencyId] ?? [
$response[$foreignCurrencyId] ??= [
'difference' => '0',
'difference_float' => 0,
'currency_id' => (string)$foreignCurrencyId,

View File

@@ -60,20 +60,16 @@ class TagController extends Controller
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/insight/insightIncomeTag
*
* Expenses for no tag filtered by account.
*
* @param GenericRequest $request
*
* @return JsonResponse
*/
public function noTag(GenericRequest $request): JsonResponse
{
$accounts = $request->getAssetAccounts();
$start = $request->getStart();
$end = $request->getEnd();
$response = [];
$accounts = $request->getAssetAccounts();
$start = $request->getStart();
$end = $request->getEnd();
$response = [];
// collect all expenses in this period (regardless of type) by the given bills and accounts.
$collector = app(GroupCollectorInterface::class);
$collector = app(GroupCollectorInterface::class);
$collector->setTypes([TransactionType::DEPOSIT])->setRange($start, $end)->setDestinationAccounts($accounts);
$collector->withoutTags();
@@ -84,7 +80,7 @@ class TagController extends Controller
$foreignCurrencyId = (int)$journal['foreign_currency_id'];
if (0 !== $currencyId) {
$response[$currencyId] = $response[$currencyId] ?? [
$response[$currencyId] ??= [
'difference' => '0',
'difference_float' => 0,
'currency_id' => (string)$currencyId,
@@ -94,7 +90,7 @@ class TagController extends Controller
$response[$currencyId]['difference_float'] = (float)$response[$currencyId]['difference'];
}
if (0 !== $foreignCurrencyId) {
$response[$foreignCurrencyId] = $response[$foreignCurrencyId] ?? [
$response[$foreignCurrencyId] ??= [
'difference' => '0',
'difference_float' => 0,
'currency_id' => (string)$foreignCurrencyId,
@@ -116,18 +112,14 @@ class TagController extends Controller
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/insight/insightIncomeNoTag
*
* Expenses per tag, possibly filtered by tag and account.
*
* @param GenericRequest $request
*
* @return JsonResponse
*/
public function tag(GenericRequest $request): JsonResponse
{
$accounts = $request->getAssetAccounts();
$tags = $request->getTags();
$start = $request->getStart();
$end = $request->getEnd();
$response = [];
$accounts = $request->getAssetAccounts();
$tags = $request->getTags();
$start = $request->getStart();
$end = $request->getEnd();
$response = [];
// get all tags:
if (0 === $tags->count()) {
@@ -135,10 +127,11 @@ class TagController extends Controller
}
// collect all expenses in this period (regardless of type) by the given bills and accounts.
$collector = app(GroupCollectorInterface::class);
$collector = app(GroupCollectorInterface::class);
$collector->setTypes([TransactionType::DEPOSIT])->setRange($start, $end)->setDestinationAccounts($accounts);
$collector->setTags($tags);
$genericSet = $collector->getExtractedJournals();
/** @var array $journal */
foreach ($genericSet as $journal) {
$currencyId = (int)$journal['currency_id'];
@@ -152,7 +145,7 @@ class TagController extends Controller
// on currency ID
if (0 !== $currencyId) {
$response[$key] = $response[$key] ?? [
$response[$key] ??= [
'id' => (string)$tagId,
'name' => $tag['name'],
'difference' => '0',

View File

@@ -40,8 +40,6 @@ class AccountController extends Controller
/**
* AccountController constructor.
*
*/
public function __construct()
{
@@ -60,10 +58,6 @@ class AccountController extends Controller
/**
* This endpoint is documented at:
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/insight/insightTransfers
*
* @param GenericRequest $request
*
* @return JsonResponse
*/
public function asset(GenericRequest $request): JsonResponse
{

View File

@@ -43,8 +43,6 @@ class CategoryController extends Controller
/**
* AccountController constructor.
*
*/
public function __construct()
{
@@ -67,10 +65,6 @@ class CategoryController extends Controller
/**
* This endpoint is documented at:
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/insight/insightTransferCategory
*
* @param GenericRequest $request
*
* @return JsonResponse
*/
public function category(GenericRequest $request): JsonResponse
{
@@ -82,9 +76,11 @@ class CategoryController extends Controller
if (0 === $categories->count()) {
$categories = $this->repository->getCategories();
}
/** @var Category $category */
foreach ($categories as $category) {
$expenses = $this->opsRepository->sumTransfers($start, $end, $assetAccounts, new Collection([$category]));
/** @var array $expense */
foreach ($expenses as $expense) {
$result[] = [
@@ -104,10 +100,6 @@ class CategoryController extends Controller
/**
* This endpoint is documented at:
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/insight/insightTransferNoCategory
*
* @param GenericRequest $request
*
* @return JsonResponse
*/
public function noCategory(GenericRequest $request): JsonResponse
{
@@ -116,6 +108,7 @@ class CategoryController extends Controller
$assetAccounts = $request->getAssetAccounts();
$result = [];
$expenses = $this->noRepository->sumTransfers($start, $end, $assetAccounts);
/** @var array $expense */
foreach ($expenses as $expense) {
$result[] = [

View File

@@ -37,20 +37,16 @@ class PeriodController extends Controller
/**
* This endpoint is documented at:
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/insight/insightTransferTotal
*
* @param GenericRequest $request
*
* @return JsonResponse
*/
public function total(GenericRequest $request): JsonResponse
{
$accounts = $request->getAssetAccounts();
$start = $request->getStart();
$end = $request->getEnd();
$response = [];
$accounts = $request->getAssetAccounts();
$start = $request->getStart();
$end = $request->getEnd();
$response = [];
// collect all expenses in this period (regardless of type)
$collector = app(GroupCollectorInterface::class);
$collector = app(GroupCollectorInterface::class);
$collector->setTypes([TransactionType::TRANSFER])->setRange($start, $end)->setDestinationAccounts($accounts);
$genericSet = $collector->getExtractedJournals();
foreach ($genericSet as $journal) {
@@ -58,7 +54,7 @@ class PeriodController extends Controller
$foreignCurrencyId = (int)$journal['foreign_currency_id'];
if (0 !== $currencyId) {
$response[$currencyId] = $response[$currencyId] ?? [
$response[$currencyId] ??= [
'difference' => '0',
'difference_float' => 0,
'currency_id' => (string)$currencyId,
@@ -68,7 +64,7 @@ class PeriodController extends Controller
$response[$currencyId]['difference_float'] = (float)$response[$currencyId]['difference'];
}
if (0 !== $foreignCurrencyId) {
$response[$foreignCurrencyId] = $response[$foreignCurrencyId] ?? [
$response[$foreignCurrencyId] ??= [
'difference' => '0',
'difference_float' => 0,
'currency_id' => (string)$foreignCurrencyId,

View File

@@ -57,20 +57,16 @@ class TagController extends Controller
/**
* This endpoint is documented at:
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/insight/insightTransferNoTag
*
* @param GenericRequest $request
*
* @return JsonResponse
*/
public function noTag(GenericRequest $request): JsonResponse
{
$accounts = $request->getAssetAccounts();
$start = $request->getStart();
$end = $request->getEnd();
$response = [];
$accounts = $request->getAssetAccounts();
$start = $request->getStart();
$end = $request->getEnd();
$response = [];
// collect all expenses in this period (regardless of type) by the given bills and accounts.
$collector = app(GroupCollectorInterface::class);
$collector = app(GroupCollectorInterface::class);
$collector->setTypes([TransactionType::TRANSFER])->setRange($start, $end)->setDestinationAccounts($accounts);
$collector->withoutTags();
@@ -81,7 +77,7 @@ class TagController extends Controller
$foreignCurrencyId = (int)$journal['foreign_currency_id'];
if (0 !== $currencyId) {
$response[$currencyId] = $response[$currencyId] ?? [
$response[$currencyId] ??= [
'difference' => '0',
'difference_float' => 0,
'currency_id' => (string)$currencyId,
@@ -91,7 +87,7 @@ class TagController extends Controller
$response[$currencyId]['difference_float'] = (float)$response[$currencyId]['difference'];
}
if (0 !== $foreignCurrencyId) {
$response[$foreignCurrencyId] = $response[$foreignCurrencyId] ?? [
$response[$foreignCurrencyId] ??= [
'difference' => '0',
'difference_float' => 0,
'currency_id' => (string)$foreignCurrencyId,
@@ -113,18 +109,14 @@ class TagController extends Controller
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/insight/insightTransferTag
*
* Transfers per tag, possibly filtered by tag and account.
*
* @param GenericRequest $request
*
* @return JsonResponse
*/
public function tag(GenericRequest $request): JsonResponse
{
$accounts = $request->getAssetAccounts();
$tags = $request->getTags();
$start = $request->getStart();
$end = $request->getEnd();
$response = [];
$accounts = $request->getAssetAccounts();
$tags = $request->getTags();
$start = $request->getStart();
$end = $request->getEnd();
$response = [];
// get all tags:
if (0 === $tags->count()) {
@@ -132,10 +124,11 @@ class TagController extends Controller
}
// collect all expenses in this period (regardless of type) by the given bills and accounts.
$collector = app(GroupCollectorInterface::class);
$collector = app(GroupCollectorInterface::class);
$collector->setTypes([TransactionType::TRANSFER])->setRange($start, $end)->setDestinationAccounts($accounts);
$collector->setTags($tags);
$genericSet = $collector->getExtractedJournals();
/** @var array $journal */
foreach ($genericSet as $journal) {
$currencyId = (int)$journal['currency_id'];
@@ -149,7 +142,7 @@ class TagController extends Controller
// on currency ID
if (0 !== $currencyId) {
$response[$key] = $response[$key] ?? [
$response[$key] ??= [
'id' => (string)$tagId,
'name' => $tag['name'],
'difference' => '0',

View File

@@ -33,14 +33,12 @@ use Illuminate\Http\JsonResponse;
*/
class DestroyController extends Controller
{
public const RESOURCE_KEY = 'accounts';
public const string RESOURCE_KEY = 'accounts';
private AccountRepositoryInterface $repository;
/**
* AccountController constructor.
*
*/
public function __construct()
{
@@ -60,10 +58,6 @@ class DestroyController extends Controller
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/accounts/deleteAccount
*
* Remove the specified resource from storage.
*
* @param Account $account
*
* @return JsonResponse
*/
public function destroy(Account $account): JsonResponse
{

View File

@@ -47,14 +47,12 @@ class ListController extends Controller
{
use TransactionFilter;
public const RESOURCE_KEY = 'accounts';
public const string RESOURCE_KEY = 'accounts';
private AccountRepositoryInterface $repository;
/**
* AccountController constructor.
*
*/
public function __construct()
{
@@ -73,29 +71,26 @@ class ListController extends Controller
* This endpoint is documented at:
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/accounts/listAttachmentByAccount
*
* @param Account $account
*
* @return JsonResponse
* @throws FireflyException
*/
public function attachments(Account $account): JsonResponse
{
$manager = $this->getManager();
$pageSize = (int)app('preferences')->getForUser(auth()->user(), 'listPageSize', 50)->data;
$collection = $this->repository->getAttachments($account);
$manager = $this->getManager();
$pageSize = $this->parameters->get('limit');
$collection = $this->repository->getAttachments($account);
$count = $collection->count();
$attachments = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize);
// make paginator:
$paginator = new LengthAwarePaginator($attachments, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.accounts.attachments', [$account->id]) . $this->buildParams());
$paginator = new LengthAwarePaginator($attachments, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.accounts.attachments', [$account->id]).$this->buildParams());
/** @var AttachmentTransformer $transformer */
$transformer = app(AttachmentTransformer::class);
$transformer->setParameters($this->parameters);
$resource = new FractalCollection($attachments, $transformer, 'attachments');
$resource = new FractalCollection($attachments, $transformer, 'attachments');
$resource->setPaginator(new IlluminatePaginatorAdapter($paginator));
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);
@@ -105,33 +100,30 @@ class ListController extends Controller
* This endpoint is documented at:
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/accounts/listPiggyBankByAccount
*
* @param Account $account
*
* @return JsonResponse
* @throws FireflyException
*/
public function piggyBanks(Account $account): JsonResponse
{
// create some objects:
$manager = $this->getManager();
$manager = $this->getManager();
// types to get, page size:
$pageSize = (int)app('preferences')->getForUser(auth()->user(), 'listPageSize', 50)->data;
$pageSize = $this->parameters->get('limit');
// get list of budgets. Count it and split it.
$collection = $this->repository->getPiggyBanks($account);
$count = $collection->count();
$piggyBanks = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize);
$collection = $this->repository->getPiggyBanks($account);
$count = $collection->count();
$piggyBanks = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize);
// 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 = new LengthAwarePaginator($piggyBanks, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.accounts.piggy-banks', [$account->id]).$this->buildParams());
/** @var PiggyBankTransformer $transformer */
$transformer = app(PiggyBankTransformer::class);
$transformer->setParameters($this->parameters);
$resource = new FractalCollection($piggyBanks, $transformer, 'piggy_banks');
$resource = new FractalCollection($piggyBanks, $transformer, 'piggy_banks');
$resource->setPaginator(new IlluminatePaginatorAdapter($paginator));
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);
@@ -143,48 +135,42 @@ class ListController extends Controller
*
* Show all transaction groups related to the account.
*
*
* @param Request $request
* @param Account $account
*
* @return JsonResponse
* @throws FireflyException
*/
public function transactions(Request $request, Account $account): JsonResponse
{
$pageSize = (int)app('preferences')->getForUser(auth()->user(), 'listPageSize', 50)->data;
$type = $request->get('type') ?? 'default';
$pageSize = $this->parameters->get('limit');
$type = $request->get('type') ?? 'default';
$this->parameters->set('type', $type);
$types = $this->mapTransactionTypes($this->parameters->get('type'));
$manager = $this->getManager();
// user can overrule page size with limit parameter.
$limit = $this->parameters->get('limit');
if (null !== $limit && $limit > 0) {
$pageSize = $limit;
}
$types = $this->mapTransactionTypes($this->parameters->get('type'));
$manager = $this->getManager();
/** @var User $admin */
$admin = auth()->user();
$admin = auth()->user();
// use new group collector:
/** @var GroupCollectorInterface $collector */
$collector = app(GroupCollectorInterface::class);
$collector = app(GroupCollectorInterface::class);
$collector->setUser($admin)->setAccounts(new Collection([$account]))
->withAPIInformation()->setLimit($pageSize)->setPage($this->parameters->get('page'))->setTypes($types);
->withAPIInformation()->setLimit($pageSize)->setPage($this->parameters->get('page'))->setTypes($types)
;
if (null !== $this->parameters->get('start') && null !== $this->parameters->get('end')) {
$collector->setRange($this->parameters->get('start'), $this->parameters->get('end'));
if (null !== $this->parameters->get('start')) {
$collector->setStart($this->parameters->get('start'));
}
if (null !== $this->parameters->get('end')) {
$collector->setEnd($this->parameters->get('end'));
}
$paginator = $collector->getPaginatedGroups();
$paginator->setPath(route('api.v1.accounts.transactions', [$account->id]) . $this->buildParams());
$groups = $paginator->getCollection();
$paginator = $collector->getPaginatedGroups();
$paginator->setPath(route('api.v1.accounts.transactions', [$account->id]).$this->buildParams());
$groups = $paginator->getCollection();
/** @var TransactionGroupTransformer $transformer */
$transformer = app(TransactionGroupTransformer::class);
$transformer->setParameters($this->parameters);
$resource = new FractalCollection($groups, $transformer, 'transactions');
$resource = new FractalCollection($groups, $transformer, 'transactions');
$resource->setPaginator(new IlluminatePaginatorAdapter($paginator));
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);

View File

@@ -43,14 +43,12 @@ class ShowController extends Controller
{
use AccountFilter;
public const RESOURCE_KEY = 'accounts';
public const string RESOURCE_KEY = 'accounts';
private AccountRepositoryInterface $repository;
/**
* AccountController constructor.
*
*/
public function __construct()
{
@@ -71,40 +69,36 @@ class ShowController extends Controller
*
* Display a listing of the resource.
*
* @param Request $request
*
* @return JsonResponse
* @throws FireflyException
*/
public function index(Request $request): JsonResponse
{
$manager = $this->getManager();
$type = $request->get('type') ?? 'all';
$manager = $this->getManager();
$type = $request->get('type') ?? 'all';
$this->parameters->set('type', $type);
// types to get, page size:
$types = $this->mapAccountTypes($this->parameters->get('type'));
$pageSize = (int)app('preferences')->getForUser(auth()->user(), 'listPageSize', 50)->data;
$types = $this->mapAccountTypes($this->parameters->get('type'));
$pageSize = $this->parameters->get('limit');
// get list of accounts. Count it and split it.
$this->repository->resetAccountOrder();
$collection = $this->repository->getAccountsByType($types, $this->parameters->get('sort') ?? []);
$count = $collection->count();
$collection = $this->repository->getAccountsByType($types, $this->parameters->get('sort') ?? []);
$count = $collection->count();
// continue sort:
$accounts = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize);
$accounts = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize);
// make paginator:
$paginator = new LengthAwarePaginator($accounts, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.accounts.index') . $this->buildParams());
$paginator = new LengthAwarePaginator($accounts, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.accounts.index').$this->buildParams());
/** @var AccountTransformer $transformer */
$transformer = app(AccountTransformer::class);
$transformer->setParameters($this->parameters);
$resource = new FractalCollection($accounts, $transformer, self::RESOURCE_KEY);
$resource = new FractalCollection($accounts, $transformer, self::RESOURCE_KEY);
$resource->setPaginator(new IlluminatePaginatorAdapter($paginator));
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);
@@ -115,22 +109,18 @@ class ShowController extends Controller
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/accounts/getAccount
*
* Show single instance.
*
* @param Account $account
*
* @return JsonResponse
*/
public function show(Account $account): JsonResponse
{
// get list of accounts. Count it and split it.
$this->repository->resetAccountOrder();
$account->refresh();
$manager = $this->getManager();
$manager = $this->getManager();
/** @var AccountTransformer $transformer */
$transformer = app(AccountTransformer::class);
$transformer->setParameters($this->parameters);
$resource = new Item($account, $transformer, self::RESOURCE_KEY);
$resource = new Item($account, $transformer, self::RESOURCE_KEY);
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);
}

View File

@@ -35,14 +35,12 @@ use League\Fractal\Resource\Item;
*/
class StoreController extends Controller
{
public const RESOURCE_KEY = 'accounts';
public const string RESOURCE_KEY = 'accounts';
private AccountRepositoryInterface $repository;
/**
* AccountController constructor.
*
*/
public function __construct()
{
@@ -62,23 +60,19 @@ class StoreController extends Controller
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/accounts/storeAccount
*
* Store a new instance.
*
* @param StoreRequest $request
*
* @return JsonResponse
*/
public function store(StoreRequest $request): JsonResponse
{
$data = $request->getAllAccountData();
$data = $request->getAllAccountData();
$this->repository->resetAccountOrder();
$account = $this->repository->store($data);
$manager = $this->getManager();
$account = $this->repository->store($data);
$manager = $this->getManager();
/** @var AccountTransformer $transformer */
$transformer = app(AccountTransformer::class);
$transformer->setParameters($this->parameters);
$resource = new Item($account, $transformer, self::RESOURCE_KEY);
$resource = new Item($account, $transformer, self::RESOURCE_KEY);
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);
}

View File

@@ -29,23 +29,19 @@ use FireflyIII\Models\Account;
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
use FireflyIII\Transformers\AccountTransformer;
use Illuminate\Http\JsonResponse;
use Illuminate\Support\Facades\Log;
use League\Fractal\Resource\Item;
use Preferences;
/**
* Class UpdateController
*/
class UpdateController extends Controller
{
public const RESOURCE_KEY = 'accounts';
public const string RESOURCE_KEY = 'accounts';
private AccountRepositoryInterface $repository;
/**
* AccountController constructor.
*
*/
public function __construct()
{
@@ -65,26 +61,21 @@ class UpdateController extends Controller
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/accounts/updateAccount
*
* Update account.
*
* @param UpdateRequest $request
* @param Account $account
*
* @return JsonResponse
*/
public function update(UpdateRequest $request, Account $account): JsonResponse
{
Log::debug(sprintf('Now in %s', __METHOD__));
app('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();
Preferences::mark();
app('preferences')->mark();
/** @var AccountTransformer $transformer */
$transformer = app(AccountTransformer::class);
$transformer = app(AccountTransformer::class);
$transformer->setParameters($this->parameters);
$resource = new Item($account, $transformer, self::RESOURCE_KEY);
$resource = new Item($account, $transformer, self::RESOURCE_KEY);
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);
}

View File

@@ -29,6 +29,8 @@ use FireflyIII\Models\Attachment;
use FireflyIII\Repositories\Attachment\AttachmentRepositoryInterface;
use FireflyIII\User;
use Illuminate\Http\JsonResponse;
use Illuminate\Support\Facades\Log;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
/**
* Class DestroyController
@@ -39,8 +41,6 @@ class DestroyController extends Controller
/**
* DestroyController constructor.
*
*/
public function __construct()
{
@@ -63,14 +63,15 @@ class DestroyController extends Controller
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/attachments/deleteAttachment
*
* Remove the specified resource from storage.
*
*
* @param Attachment $attachment
*
* @return JsonResponse
*/
public function destroy(Attachment $attachment): JsonResponse
{
if (true === auth()->user()->hasRole('demo')) {
Log::channel('audit')->warning(sprintf('Demo user tries to access attachment API in %s', __METHOD__));
throw new NotFoundHttpException();
}
$this->repository->destroy($attachment);
app('preferences')->mark();

View File

@@ -33,9 +33,11 @@ use FireflyIII\User;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Response as LaravelResponse;
use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Support\Facades\Log;
use League\Fractal\Pagination\IlluminatePaginatorAdapter;
use League\Fractal\Resource\Collection as FractalCollection;
use League\Fractal\Resource\Item;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
/**
* Class ShowController
@@ -46,8 +48,6 @@ class ShowController extends Controller
/**
* ShowController constructor.
*
*/
public function __construct()
{
@@ -71,13 +71,15 @@ class ShowController extends Controller
*
* Download an attachment.
*
* @param Attachment $attachment
*
* @return LaravelResponse
* @throws FireflyException
* @throws FireflyException
*/
public function download(Attachment $attachment): LaravelResponse
{
if (true === auth()->user()->hasRole('demo')) {
Log::channel('audit')->warning(sprintf('Demo user tries to access attachment API in %s', __METHOD__));
throw new NotFoundHttpException();
}
if (false === $attachment->uploaded) {
throw new FireflyException('200000: File has not been uploaded (yet).');
}
@@ -85,27 +87,29 @@ class ShowController extends Controller
throw new FireflyException('200000: File has not been uploaded (yet).');
}
if ($this->repository->exists($attachment)) {
$content = $this->repository->getContent($attachment);
$content = $this->repository->getContent($attachment);
if ('' === $content) {
throw new FireflyException('200002: File is empty (zero bytes).');
}
$quoted = sprintf('"%s"', addcslashes(basename($attachment->filename), '"\\'));
$quoted = sprintf('"%s"', addcslashes(basename($attachment->filename), '"\\'));
/** @var LaravelResponse $response */
$response = response($content);
$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')
->header('Cache-Control', 'must-revalidate, post-check=0, pre-check=0')
->header('Pragma', 'public')
->header('Content-Length', (string)strlen($content));
->header('Content-Length', (string)strlen($content))
;
return $response;
}
throw new FireflyException('200003: File does not exist.');
}
@@ -115,15 +119,20 @@ class ShowController extends Controller
*
* Display a listing of the resource.
*
* @return JsonResponse
* @throws FireflyException
*/
public function index(): JsonResponse
{
$manager = $this->getManager();
if (true === auth()->user()->hasRole('demo')) {
Log::channel('audit')->warning(sprintf('Demo user tries to access attachment API in %s', __METHOD__));
throw new NotFoundHttpException();
}
$manager = $this->getManager();
// types to get, page size:
$pageSize = (int)app('preferences')->getForUser(auth()->user(), 'listPageSize', 50)->data;
$pageSize = $this->parameters->get('limit');
// get list of attachments. Count it and split it.
$collection = $this->repository->get();
@@ -131,14 +140,14 @@ class ShowController extends Controller
$attachments = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize);
// make paginator:
$paginator = new LengthAwarePaginator($attachments, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.attachments.index') . $this->buildParams());
$paginator = new LengthAwarePaginator($attachments, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.attachments.index').$this->buildParams());
/** @var AttachmentTransformer $transformer */
$transformer = app(AttachmentTransformer::class);
$transformer->setParameters($this->parameters);
$resource = new FractalCollection($attachments, $transformer, 'attachments');
$resource = new FractalCollection($attachments, $transformer, 'attachments');
$resource->setPaginator(new IlluminatePaginatorAdapter($paginator));
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);
@@ -149,19 +158,21 @@ class ShowController extends Controller
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/attachments/getAttachment
*
* Display the specified resource.
*
* @param Attachment $attachment
*
* @return JsonResponse
*/
public function show(Attachment $attachment): JsonResponse
{
$manager = $this->getManager();
if (true === auth()->user()->hasRole('demo')) {
Log::channel('audit')->warning(sprintf('Demo user tries to access attachment API in %s', __METHOD__));
throw new NotFoundHttpException();
}
$manager = $this->getManager();
/** @var AttachmentTransformer $transformer */
$transformer = app(AttachmentTransformer::class);
$transformer->setParameters($this->parameters);
$resource = new Item($attachment, $transformer, 'attachments');
$resource = new Item($attachment, $transformer, 'attachments');
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);
}

View File

@@ -36,6 +36,7 @@ use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
use League\Fractal\Resource\Item;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
/**
* Class StoreController
@@ -46,8 +47,6 @@ class StoreController extends Controller
/**
* StoreController constructor.
*
*/
public function __construct()
{
@@ -71,43 +70,45 @@ class StoreController extends Controller
*
* Store a newly created resource in storage.
*
* @param StoreRequest $request
*
* @return JsonResponse
* @throws FireflyException
*/
public function store(StoreRequest $request): JsonResponse
{
Log::debug(sprintf('Now in %s', __METHOD__));
$data = $request->getAll();
$attachment = $this->repository->store($data);
$manager = $this->getManager();
if (true === auth()->user()->hasRole('demo')) {
Log::channel('audit')->warning(sprintf('Demo user tries to access attachment API in %s', __METHOD__));
throw new NotFoundHttpException();
}
app('log')->debug(sprintf('Now in %s', __METHOD__));
$data = $request->getAll();
$attachment = $this->repository->store($data);
$manager = $this->getManager();
/** @var AttachmentTransformer $transformer */
$transformer = app(AttachmentTransformer::class);
$transformer->setParameters($this->parameters);
$resource = new Item($attachment, $transformer, 'attachments');
$resource = new Item($attachment, $transformer, 'attachments');
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);
}
/**
* Upload an attachment.
*
*
* @param Request $request
* @param Attachment $attachment
*
* @return JsonResponse
*/
public function upload(Request $request, Attachment $attachment): JsonResponse
{
if (true === auth()->user()->hasRole('demo')) {
Log::channel('audit')->warning(sprintf('Demo user tries to access attachment API in %s', __METHOD__));
throw new NotFoundHttpException();
}
/** @var AttachmentHelperInterface $helper */
$helper = app(AttachmentHelperInterface::class);
$body = $request->getContent();
if ('' === $body) {
Log::error('Body of attachment is empty.');
app('log')->error('Body of attachment is empty.');
return response()->json([], 422);
}

View File

@@ -31,7 +31,9 @@ use FireflyIII\Repositories\Attachment\AttachmentRepositoryInterface;
use FireflyIII\Transformers\AttachmentTransformer;
use FireflyIII\User;
use Illuminate\Http\JsonResponse;
use Illuminate\Support\Facades\Log;
use League\Fractal\Resource\Item;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
/**
* Class UpdateController
@@ -42,8 +44,6 @@ class UpdateController extends Controller
/**
* UpdateController constructor.
*
*/
public function __construct()
{
@@ -66,23 +66,23 @@ class UpdateController extends Controller
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/attachments/updateAttachment
*
* Update the specified resource in storage.
*
* @param UpdateRequest $request
* @param Attachment $attachment
*
* @return JsonResponse
*/
public function update(UpdateRequest $request, Attachment $attachment): JsonResponse
{
$data = $request->getAll();
if (true === auth()->user()->hasRole('demo')) {
Log::channel('audit')->warning(sprintf('Demo user tries to access attachment API in %s', __METHOD__));
throw new NotFoundHttpException();
}
$data = $request->getAll();
$this->repository->update($attachment, $data);
$manager = $this->getManager();
$manager = $this->getManager();
/** @var AttachmentTransformer $transformer */
$transformer = app(AttachmentTransformer::class);
$transformer->setParameters($this->parameters);
$resource = new Item($attachment, $transformer, 'attachments');
$resource = new Item($attachment, $transformer, 'attachments');
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);
}

View File

@@ -44,8 +44,6 @@ class ShowController extends Controller
/**
* AvailableBudgetController constructor.
*
*/
public function __construct()
{
@@ -68,18 +66,17 @@ class ShowController extends Controller
*
* Display a listing of the resource.
*
* @return JsonResponse
* @throws FireflyException
*/
public function index(): JsonResponse
{
$manager = $this->getManager();
$manager = $this->getManager();
// types to get, page size:
$pageSize = (int)app('preferences')->getForUser(auth()->user(), 'listPageSize', 50)->data;
$pageSize = $this->parameters->get('limit');
$start = $this->parameters->get('start');
$end = $this->parameters->get('end');
$start = $this->parameters->get('start');
$end = $this->parameters->get('end');
// get list of available budgets. Count it and split it.
$collection = $this->abRepository->getAvailableBudgetsByDate($start, $end);
@@ -87,14 +84,14 @@ class ShowController 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.available-budgets.index') . $this->buildParams());
$paginator = new LengthAwarePaginator($availableBudgets, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.available-budgets.index').$this->buildParams());
/** @var AvailableBudgetTransformer $transformer */
$transformer = app(AvailableBudgetTransformer::class);
$transformer = app(AvailableBudgetTransformer::class);
$transformer->setParameters($this->parameters);
$resource = new FractalCollection($availableBudgets, $transformer, 'available_budgets');
$resource = new FractalCollection($availableBudgets, $transformer, 'available_budgets');
$resource->setPaginator(new IlluminatePaginatorAdapter($paginator));
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);
@@ -105,20 +102,16 @@ class ShowController extends Controller
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/available_budgets/getAvailableBudget
*
* Display the specified resource.
*
* @param AvailableBudget $availableBudget
*
* @return JsonResponse
*/
public function show(AvailableBudget $availableBudget): JsonResponse
{
$manager = $this->getManager();
$manager = $this->getManager();
/** @var AvailableBudgetTransformer $transformer */
$transformer = app(AvailableBudgetTransformer::class);
$transformer->setParameters($this->parameters);
$resource = new Item($availableBudget, $transformer, 'available_budgets');
$resource = new Item($availableBudget, $transformer, 'available_budgets');
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);
}

View File

@@ -37,8 +37,6 @@ class DestroyController extends Controller
/**
* BillController constructor.
*
*/
public function __construct()
{
@@ -58,10 +56,6 @@ class DestroyController extends Controller
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/bills/deleteBill
*
* Remove the specified resource from storage.
*
* @param Bill $bill
*
* @return JsonResponse
*/
public function destroy(Bill $bill): JsonResponse
{

View File

@@ -50,8 +50,6 @@ class ListController extends Controller
/**
* BillController constructor.
*
*/
public function __construct()
{
@@ -72,29 +70,26 @@ class ListController extends Controller
*
* Display a listing of the resource.
*
* @param Bill $bill
*
* @return JsonResponse
* @throws FireflyException
*/
public function attachments(Bill $bill): JsonResponse
{
$manager = $this->getManager();
$pageSize = (int)app('preferences')->getForUser(auth()->user(), 'listPageSize', 50)->data;
$collection = $this->repository->getAttachments($bill);
$manager = $this->getManager();
$pageSize = $this->parameters->get('limit');
$collection = $this->repository->getAttachments($bill);
$count = $collection->count();
$attachments = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize);
// make paginator:
$paginator = new LengthAwarePaginator($attachments, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.bills.attachments', [$bill->id]) . $this->buildParams());
$paginator = new LengthAwarePaginator($attachments, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.bills.attachments', [$bill->id]).$this->buildParams());
/** @var AttachmentTransformer $transformer */
$transformer = app(AttachmentTransformer::class);
$transformer->setParameters($this->parameters);
$resource = new FractalCollection($attachments, $transformer, 'attachments');
$resource = new FractalCollection($attachments, $transformer, 'attachments');
$resource->setPaginator(new IlluminatePaginatorAdapter($paginator));
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);
@@ -106,31 +101,28 @@ class ListController extends Controller
*
* List all of them.
*
* @param Bill $bill
*
* @return JsonResponse
* @throws FireflyException
*/
public function rules(Bill $bill): JsonResponse
{
$manager = $this->getManager();
$manager = $this->getManager();
// types to get, page size:
$pageSize = (int)app('preferences')->getForUser(auth()->user(), 'listPageSize', 50)->data;
$pageSize = $this->parameters->get('limit');
// get list of budgets. Count it and split it.
$collection = $this->repository->getRulesForBill($bill);
$count = $collection->count();
$rules = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize);
$collection = $this->repository->getRulesForBill($bill);
$count = $collection->count();
$rules = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize);
// make paginator:
$paginator = new LengthAwarePaginator($rules, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.bills.rules', [$bill->id]) . $this->buildParams());
$paginator = new LengthAwarePaginator($rules, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.bills.rules', [$bill->id]).$this->buildParams());
/** @var RuleTransformer $transformer */
$transformer = app(RuleTransformer::class);
$transformer->setParameters($this->parameters);
$resource = new FractalCollection($rules, $transformer, 'rules');
$resource = new FractalCollection($rules, $transformer, 'rules');
$resource->setPaginator(new IlluminatePaginatorAdapter($paginator));
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);
@@ -142,28 +134,23 @@ class ListController extends Controller
*
* Show all transactions.
*
* @param Request $request
*
* @param Bill $bill
*
* @return JsonResponse
* @throws FireflyException
*/
public function transactions(Request $request, Bill $bill): JsonResponse
{
$pageSize = (int)app('preferences')->getForUser(auth()->user(), 'listPageSize', 50)->data;
$type = $request->get('type') ?? 'default';
$pageSize = $this->parameters->get('limit');
$type = $request->get('type') ?? 'default';
$this->parameters->set('type', $type);
$types = $this->mapTransactionTypes($this->parameters->get('type'));
$manager = $this->getManager();
$types = $this->mapTransactionTypes($this->parameters->get('type'));
$manager = $this->getManager();
/** @var User $admin */
$admin = auth()->user();
$admin = auth()->user();
// use new group collector:
/** @var GroupCollectorInterface $collector */
$collector = app(GroupCollectorInterface::class);
$collector = app(GroupCollectorInterface::class);
$collector
->setUser($admin)
// include source + destination account name and type.
@@ -175,23 +162,26 @@ class ListController extends Controller
// set page to retrieve
->setPage($this->parameters->get('page'))
// set types of transactions to return.
->setTypes($types);
->setTypes($types)
;
// do parameter stuff on new group collector.
if (null !== $this->parameters->get('start') && null !== $this->parameters->get('end')) {
$collector->setRange($this->parameters->get('start'), $this->parameters->get('end'));
if (null !== $this->parameters->get('start')) {
$collector->setStart($this->parameters->get('start'));
}
if (null !== $this->parameters->get('end')) {
$collector->setEnd($this->parameters->get('end'));
}
// get paginator.
$paginator = $collector->getPaginatedGroups();
$paginator->setPath(route('api.v1.bills.transactions', [$bill->id]) . $this->buildParams());
$paginator = $collector->getPaginatedGroups();
$paginator->setPath(route('api.v1.bills.transactions', [$bill->id]).$this->buildParams());
$transactions = $paginator->getCollection();
/** @var TransactionGroupTransformer $transformer */
$transformer = app(TransactionGroupTransformer::class);
$transformer = app(TransactionGroupTransformer::class);
$transformer->setParameters($this->parameters);
$resource = new FractalCollection($transactions, $transformer, 'transactions');
$resource = new FractalCollection($transactions, $transformer, 'transactions');
$resource->setPaginator(new IlluminatePaginatorAdapter($paginator));
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);

View File

@@ -43,8 +43,6 @@ class ShowController extends Controller
/**
* BillController constructor.
*
*/
public function __construct()
{
@@ -65,24 +63,23 @@ class ShowController extends Controller
*
* Display a listing of the resource.
*
* @return JsonResponse
* @throws FireflyException
*/
public function index(): JsonResponse
{
$this->repository->correctOrder();
$bills = $this->repository->getBills();
$manager = $this->getManager();
$pageSize = (int)app('preferences')->getForUser(auth()->user(), 'listPageSize', 50)->data;
$count = $bills->count();
$bills = $bills->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize);
$paginator = new LengthAwarePaginator($bills, $count, $pageSize, $this->parameters->get('page'));
$bills = $this->repository->getBills();
$manager = $this->getManager();
$pageSize = $this->parameters->get('limit');
$count = $bills->count();
$bills = $bills->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize);
$paginator = new LengthAwarePaginator($bills, $count, $pageSize, $this->parameters->get('page'));
/** @var BillTransformer $transformer */
$transformer = app(BillTransformer::class);
$transformer->setParameters($this->parameters);
$resource = new FractalCollection($bills, $transformer, 'bills');
$resource = new FractalCollection($bills, $transformer, 'bills');
$resource->setPaginator(new IlluminatePaginatorAdapter($paginator));
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);
@@ -93,19 +90,16 @@ class ShowController extends Controller
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/bills/getBill
*
* Show the specified bill.
*
* @param Bill $bill
*
* @return JsonResponse
*/
public function show(Bill $bill): JsonResponse
{
$manager = $this->getManager();
$manager = $this->getManager();
/** @var BillTransformer $transformer */
$transformer = app(BillTransformer::class);
$transformer->setParameters($this->parameters);
$resource = new Item($bill, $transformer, 'bills');
$resource = new Item($bill, $transformer, 'bills');
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);
}

View File

@@ -43,8 +43,6 @@ class StoreController extends Controller
/**
* BillController constructor.
*
*/
public function __construct()
{
@@ -65,22 +63,19 @@ class StoreController extends Controller
*
* Store a bill.
*
* @param StoreRequest $request
*
* @return JsonResponse
* @throws FireflyException
*/
public function store(StoreRequest $request): JsonResponse
{
$data = $request->getAll();
$bill = $this->repository->store($data);
$manager = $this->getManager();
$data = $request->getAll();
$bill = $this->repository->store($data);
$manager = $this->getManager();
/** @var BillTransformer $transformer */
$transformer = app(BillTransformer::class);
$transformer->setParameters($this->parameters);
$resource = new Item($bill, $transformer, 'bills');
$resource = new Item($bill, $transformer, 'bills');
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);
}

View File

@@ -40,8 +40,6 @@ class UpdateController extends Controller
/**
* BillController constructor.
*
*/
public function __construct()
{
@@ -61,23 +59,18 @@ class UpdateController extends Controller
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/bills/updateBill
*
* Update a bill.
*
* @param UpdateRequest $request
* @param Bill $bill
*
* @return JsonResponse
*/
public function update(UpdateRequest $request, Bill $bill): JsonResponse
{
$data = $request->getAll();
$bill = $this->repository->update($bill, $data);
$manager = $this->getManager();
$data = $request->getAll();
$bill = $this->repository->update($bill, $data);
$manager = $this->getManager();
/** @var BillTransformer $transformer */
$transformer = app(BillTransformer::class);
$transformer->setParameters($this->parameters);
$resource = new Item($bill, $transformer, 'bills');
$resource = new Item($bill, $transformer, 'bills');
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);
}

View File

@@ -37,8 +37,6 @@ class DestroyController extends Controller
/**
* DestroyController constructor.
*
*/
public function __construct()
{
@@ -58,10 +56,6 @@ class DestroyController extends Controller
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/budgets/deleteBudget
*
* Remove the specified resource from storage.
*
* @param Budget $budget
*
* @return JsonResponse
*/
public function destroy(Budget $budget): JsonResponse
{

View File

@@ -40,9 +40,7 @@ use Illuminate\Pagination\LengthAwarePaginator;
use League\Fractal\Pagination\IlluminatePaginatorAdapter;
use League\Fractal\Resource\Collection as FractalCollection;
/***
* Class ListController
*/
// Class ListController
class ListController extends Controller
{
use TransactionFilter;
@@ -52,8 +50,6 @@ class ListController extends Controller
/**
* ListController constructor.
*
*/
public function __construct()
{
@@ -74,29 +70,26 @@ class ListController extends Controller
* This endpoint is documented at:
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/budgets/listAttachmentByBudget
*
* @param Budget $budget
*
* @return JsonResponse
* @throws FireflyException
*/
public function attachments(Budget $budget): JsonResponse
{
$manager = $this->getManager();
$pageSize = (int)app('preferences')->getForUser(auth()->user(), 'listPageSize', 50)->data;
$collection = $this->repository->getAttachments($budget);
$manager = $this->getManager();
$pageSize = $this->parameters->get('limit');
$collection = $this->repository->getAttachments($budget);
$count = $collection->count();
$attachments = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize);
// make paginator:
$paginator = new LengthAwarePaginator($attachments, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.budgets.attachments', [$budget->id]) . $this->buildParams());
$paginator = new LengthAwarePaginator($attachments, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.budgets.attachments', [$budget->id]).$this->buildParams());
/** @var AttachmentTransformer $transformer */
$transformer = app(AttachmentTransformer::class);
$transformer->setParameters($this->parameters);
$resource = new FractalCollection($attachments, $transformer, 'attachments');
$resource = new FractalCollection($attachments, $transformer, 'attachments');
$resource->setPaginator(new IlluminatePaginatorAdapter($paginator));
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);
@@ -108,26 +101,23 @@ class ListController extends Controller
*
* Display a listing of the resource.
*
* @param Budget $budget
*
* @return JsonResponse
* @throws FireflyException
*/
public function budgetLimits(Budget $budget): JsonResponse
{
$manager = $this->getManager();
$pageSize = (int)app('preferences')->getForUser(auth()->user(), 'listPageSize', 50)->data;
$manager = $this->getManager();
$pageSize = $this->parameters->get('limit');
$this->parameters->set('budget_id', $budget->id);
$collection = $this->blRepository->getBudgetLimits($budget, $this->parameters->get('start'), $this->parameters->get('end'));
$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);
$transformer = app(BudgetLimitTransformer::class);
$transformer->setParameters($this->parameters);
$resource = new FractalCollection($budgetLimits, $transformer, 'budget_limits');
$resource = new FractalCollection($budgetLimits, $transformer, 'budget_limits');
$resource->setPaginator(new IlluminatePaginatorAdapter($paginator));
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);
@@ -139,35 +129,24 @@ class ListController extends Controller
*
* Show all transactions.
*
* @param Request $request
*
* @param Budget $budget
*
* @return JsonResponse
* @throws FireflyException
*/
public function transactions(Request $request, Budget $budget): JsonResponse
{
$pageSize = (int)app('preferences')->getForUser(auth()->user(), 'listPageSize', 50)->data;
$pageSize = $this->parameters->get('limit');
// user can overrule page size with limit parameter.
$limit = $this->parameters->get('limit');
if (null !== $limit && $limit > 0) {
$pageSize = $limit;
}
$type = $request->get('type') ?? 'default';
$type = $request->get('type') ?? 'default';
$this->parameters->set('type', $type);
$types = $this->mapTransactionTypes($this->parameters->get('type'));
$manager = $this->getManager();
$types = $this->mapTransactionTypes($this->parameters->get('type'));
$manager = $this->getManager();
/** @var User $admin */
$admin = auth()->user();
$admin = auth()->user();
// use new group collector:
/** @var GroupCollectorInterface $collector */
$collector = app(GroupCollectorInterface::class);
$collector = app(GroupCollectorInterface::class);
$collector
->setUser($admin)
// filter on budget.
@@ -179,20 +158,24 @@ class ListController extends Controller
// set page to retrieve
->setPage($this->parameters->get('page'))
// set types of transactions to return.
->setTypes($types);
->setTypes($types)
;
if (null !== $this->parameters->get('start') && null !== $this->parameters->get('end')) {
$collector->setRange($this->parameters->get('start'), $this->parameters->get('end'));
if (null !== $this->parameters->get('start')) {
$collector->setStart($this->parameters->get('start'));
}
if (null !== $this->parameters->get('end')) {
$collector->setEnd($this->parameters->get('end'));
}
$paginator = $collector->getPaginatedGroups();
$paginator->setPath(route('api.v1.budgets.transactions', [$budget->id]) . $this->buildParams());
$paginator = $collector->getPaginatedGroups();
$paginator->setPath(route('api.v1.budgets.transactions', [$budget->id]).$this->buildParams());
$transactions = $paginator->getCollection();
/** @var TransactionGroupTransformer $transformer */
$transformer = app(TransactionGroupTransformer::class);
$transformer = app(TransactionGroupTransformer::class);
$transformer->setParameters($this->parameters);
$resource = new FractalCollection($transactions, $transformer, 'transactions');
$resource = new FractalCollection($transactions, $transformer, 'transactions');
$resource->setPaginator(new IlluminatePaginatorAdapter($paginator));
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);
@@ -204,33 +187,24 @@ class ListController extends Controller
*
* Show all transactions.
*
* @param Request $request
*
* @return JsonResponse
* @throws FireflyException
*/
public function withoutBudget(Request $request): JsonResponse
{
$pageSize = (int)app('preferences')->getForUser(auth()->user(), 'listPageSize', 50)->data;
$pageSize = $this->parameters->get('limit');
// user can overrule page size with limit parameter.
$limit = $this->parameters->get('limit');
if (null !== $limit && $limit > 0) {
$pageSize = $limit;
}
$type = $request->get('type') ?? 'default';
$type = $request->get('type') ?? 'default';
$this->parameters->set('type', $type);
$types = $this->mapTransactionTypes($this->parameters->get('type'));
$manager = $this->getManager();
$types = $this->mapTransactionTypes($this->parameters->get('type'));
$manager = $this->getManager();
/** @var User $admin */
$admin = auth()->user();
$admin = auth()->user();
// use new group collector:
/** @var GroupCollectorInterface $collector */
$collector = app(GroupCollectorInterface::class);
$collector = app(GroupCollectorInterface::class);
$collector
->setUser($admin)
// filter on budget.
@@ -242,20 +216,24 @@ class ListController extends Controller
// set page to retrieve
->setPage($this->parameters->get('page'))
// set types of transactions to return.
->setTypes($types);
->setTypes($types)
;
if (null !== $this->parameters->get('start') && null !== $this->parameters->get('end')) {
$collector->setRange($this->parameters->get('start'), $this->parameters->get('end'));
if (null !== $this->parameters->get('start')) {
$collector->setStart($this->parameters->get('start'));
}
if (null !== $this->parameters->get('end')) {
$collector->setEnd($this->parameters->get('end'));
}
$paginator = $collector->getPaginatedGroups();
$paginator->setPath(route('api.v1.budgets.without-budget') . $this->buildParams());
$paginator = $collector->getPaginatedGroups();
$paginator->setPath(route('api.v1.budgets.without-budget').$this->buildParams());
$transactions = $paginator->getCollection();
/** @var TransactionGroupTransformer $transformer */
$transformer = app(TransactionGroupTransformer::class);
$transformer = app(TransactionGroupTransformer::class);
$transformer->setParameters($this->parameters);
$resource = new FractalCollection($transactions, $transformer, 'transactions');
$resource = new FractalCollection($transactions, $transformer, 'transactions');
$resource->setPaginator(new IlluminatePaginatorAdapter($paginator));
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);

View File

@@ -45,8 +45,6 @@ class ShowController extends Controller
/**
* ListController constructor.
*
*/
public function __construct()
{
@@ -69,30 +67,29 @@ class ShowController extends Controller
*
* Display a listing of the resource.
*
* @return JsonResponse
* @throws FireflyException
*/
public function index(): JsonResponse
{
$manager = $this->getManager();
$manager = $this->getManager();
// types to get, page size:
$pageSize = (int)app('preferences')->getForUser(auth()->user(), 'listPageSize', 50)->data;
$pageSize = $this->parameters->get('limit');
// get list of budgets. Count it and split it.
$collection = $this->repository->getBudgets();
$count = $collection->count();
$budgets = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize);
$collection = $this->repository->getBudgets();
$count = $collection->count();
$budgets = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize);
// make paginator:
$paginator = new LengthAwarePaginator($budgets, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.budgets.index') . $this->buildParams());
$paginator = new LengthAwarePaginator($budgets, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.budgets.index').$this->buildParams());
/** @var BudgetTransformer $transformer */
$transformer = app(BudgetTransformer::class);
$transformer->setParameters($this->parameters);
$resource = new FractalCollection($budgets, $transformer, 'budgets');
$resource = new FractalCollection($budgets, $transformer, 'budgets');
$resource->setPaginator(new IlluminatePaginatorAdapter($paginator));
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);
@@ -100,20 +97,16 @@ class ShowController extends Controller
/**
* Show a budget.
*
* @param Budget $budget
*
* @return JsonResponse
*/
public function show(Budget $budget): JsonResponse
{
$manager = $this->getManager();
$manager = $this->getManager();
/** @var BudgetTransformer $transformer */
$transformer = app(BudgetTransformer::class);
$transformer->setParameters($this->parameters);
$resource = new Item($budget, $transformer, 'budgets');
$resource = new Item($budget, $transformer, 'budgets');
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);
}

View File

@@ -40,8 +40,6 @@ class StoreController extends Controller
/**
* StoreController constructor.
*
*/
public function __construct()
{
@@ -62,23 +60,19 @@ class StoreController extends Controller
*
* Store a budget.
*
* @param StoreRequest $request
*
* @return JsonResponse
* @throws FireflyException
*
*/
public function store(StoreRequest $request): JsonResponse
{
$budget = $this->repository->store($request->getAll());
$budget = $this->repository->store($request->getAll());
$budget->refresh();
$manager = $this->getManager();
$manager = $this->getManager();
/** @var BudgetTransformer $transformer */
$transformer = app(BudgetTransformer::class);
$transformer->setParameters($this->parameters);
$resource = new Item($budget, $transformer, 'budgets');
$resource = new Item($budget, $transformer, 'budgets');
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);
}

View File

@@ -40,8 +40,6 @@ class UpdateController extends Controller
/**
* UpdateController constructor.
*
*/
public function __construct()
{
@@ -61,23 +59,18 @@ class UpdateController extends Controller
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/budgets/updateBudget
*
* Update a budget.
*
* @param UpdateRequest $request
* @param Budget $budget
*
* @return JsonResponse
*/
public function update(UpdateRequest $request, Budget $budget): JsonResponse
{
$data = $request->getAll();
$budget = $this->repository->update($budget, $data);
$manager = $this->getManager();
$data = $request->getAll();
$budget = $this->repository->update($budget, $data);
$manager = $this->getManager();
/** @var BudgetTransformer $transformer */
$transformer = app(BudgetTransformer::class);
$transformer->setParameters($this->parameters);
$resource = new Item($budget, $transformer, 'budgets');
$resource = new Item($budget, $transformer, 'budgets');
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);
}

View File

@@ -40,8 +40,6 @@ class DestroyController extends Controller
/**
* BudgetLimitController constructor.
*
*/
public function __construct()
{
@@ -64,10 +62,6 @@ class DestroyController extends Controller
*
* Remove the specified resource from storage.
*
* @param Budget $budget
* @param BudgetLimit $budgetLimit
*
* @return JsonResponse
* @throws FireflyException
*/
public function destroy(Budget $budget, BudgetLimit $budgetLimit): JsonResponse

View File

@@ -28,7 +28,6 @@ use FireflyIII\Exceptions\FireflyException;
use FireflyIII\Helpers\Collector\GroupCollectorInterface;
use FireflyIII\Models\Budget;
use FireflyIII\Models\BudgetLimit;
use FireflyIII\Repositories\Budget\BudgetLimitRepositoryInterface;
use FireflyIII\Support\Http\Api\TransactionFilter;
use FireflyIII\Transformers\TransactionGroupTransformer;
use FireflyIII\User;
@@ -44,55 +43,28 @@ class ListController extends Controller
{
use TransactionFilter;
private BudgetLimitRepositoryInterface $blRepository;
/**
* BudgetLimitController constructor.
*
*/
public function __construct()
{
parent::__construct();
$this->middleware(
function ($request, $next) {
/** @var User $user */
$user = auth()->user();
$this->blRepository = app(BudgetLimitRepositoryInterface::class);
$this->blRepository->setUser($user);
return $next($request);
}
);
}
/**
* This endpoint is documented at:
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/budgets/listTransactionByBudgetLimit
* Show all transactions.
*
* @param Request $request
* @param Budget $budget
* @param BudgetLimit $budgetLimit
*
* @return JsonResponse
* @throws FireflyException
*/
public function transactions(Request $request, Budget $budget, BudgetLimit $budgetLimit): JsonResponse
{
$pageSize = (int)app('preferences')->getForUser(auth()->user(), 'listPageSize', 50)->data;
$type = $request->get('type') ?? 'default';
$pageSize = $this->parameters->get('limit');
$type = $request->get('type') ?? 'default';
$this->parameters->set('type', $type);
$types = $this->mapTransactionTypes($this->parameters->get('type'));
$manager = $this->getManager();
$types = $this->mapTransactionTypes($this->parameters->get('type'));
$manager = $this->getManager();
/** @var User $admin */
$admin = auth()->user();
$admin = auth()->user();
// use new group collector:
/** @var GroupCollectorInterface $collector */
$collector = app(GroupCollectorInterface::class);
$collector = app(GroupCollectorInterface::class);
$collector
->setUser($admin)
// filter on budget.
@@ -104,19 +76,20 @@ class ListController extends Controller
// set page to retrieve
->setPage($this->parameters->get('page'))
// set types of transactions to return.
->setTypes($types);
->setTypes($types)
;
$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 = $collector->getPaginatedGroups();
$paginator->setPath(route('api.v1.budgets.limits.transactions', [$budget->id, $budgetLimit->id]).$this->buildParams());
$transactions = $paginator->getCollection();
/** @var TransactionGroupTransformer $transformer */
$transformer = app(TransactionGroupTransformer::class);
$transformer = app(TransactionGroupTransformer::class);
$transformer->setParameters($this->parameters);
$resource = new FractalCollection($transactions, $transformer, 'transactions');
$resource = new FractalCollection($transactions, $transformer, 'transactions');
$resource->setPaginator(new IlluminatePaginatorAdapter($paginator));
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);

View File

@@ -33,7 +33,6 @@ use FireflyIII\Repositories\Budget\BudgetRepositoryInterface;
use FireflyIII\Transformers\BudgetLimitTransformer;
use FireflyIII\User;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Pagination\LengthAwarePaginator;
use League\Fractal\Pagination\IlluminatePaginatorAdapter;
use League\Fractal\Resource\Collection as FractalCollection;
@@ -49,8 +48,6 @@ class ShowController extends Controller
/**
* BudgetLimitController constructor.
*
*/
public function __construct()
{
@@ -74,29 +71,23 @@ class ShowController extends Controller
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/budgets/listBudgetLimitByBudget
*
* Display a listing of the budget limits for this budget.
*
* @param Request $request
* @param Budget $budget
*
* @return JsonResponse
* @throws FireflyException
*/
public function index(Request $request, Budget $budget): JsonResponse
public function index(Budget $budget): JsonResponse
{
$manager = $this->getManager();
$manager = $this->getManager();
$manager->parseIncludes('budget');
$pageSize = (int)app('preferences')->getForUser(auth()->user(), 'listPageSize', 50)->data;
$pageSize = $this->parameters->get('limit');
$collection = $this->blRepository->getBudgetLimits($budget, $this->parameters->get('start'), $this->parameters->get('end'));
$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);
$transformer = app(BudgetLimitTransformer::class);
$transformer->setParameters($this->parameters);
$resource = new FractalCollection($budgetLimits, $transformer, 'budget_limits');
$resource = new FractalCollection($budgetLimits, $transformer, 'budget_limits');
$resource->setPaginator(new IlluminatePaginatorAdapter($paginator));
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);
@@ -108,27 +99,24 @@ class ShowController extends Controller
*
* Display a listing of the budget limits for this budget.
*
* @param SameDateRequest $request
*
* @return JsonResponse
* @throws FireflyException
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
public function indexAll(SameDateRequest $request): JsonResponse
{
$manager = $this->getManager();
$manager = $this->getManager();
$manager->parseIncludes('budget');
$pageSize = (int)app('preferences')->getForUser(auth()->user(), 'listPageSize', 50)->data;
$pageSize = $this->parameters->get('limit');
$collection = $this->blRepository->getAllBudgetLimits($this->parameters->get('start'), $this->parameters->get('end'));
$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);
$transformer = app(BudgetLimitTransformer::class);
$transformer->setParameters($this->parameters);
$resource = new FractalCollection($budgetLimits, $transformer, 'budget_limits');
$resource = new FractalCollection($budgetLimits, $transformer, 'budget_limits');
$resource->setPaginator(new IlluminatePaginatorAdapter($paginator));
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);
@@ -138,26 +126,21 @@ class ShowController extends Controller
* This endpoint is documented at:
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/budgets/getBudgetLimit
*
* @param Request $request
* @param Budget $budget
* @param BudgetLimit $budgetLimit
*
* @return JsonResponse
* @throws FireflyException
*/
public function show(Request $request, Budget $budget, BudgetLimit $budgetLimit): JsonResponse
public function show(Budget $budget, BudgetLimit $budgetLimit): JsonResponse
{
if ((int)$budget->id !== (int)$budgetLimit->budget_id) {
if ($budget->id !== $budgetLimit->budget_id) {
throw new FireflyException('20028: The budget limit does not belong to the budget.');
}
// continue!
$manager = $this->getManager();
$manager = $this->getManager();
/** @var BudgetLimitTransformer $transformer */
$transformer = app(BudgetLimitTransformer::class);
$transformer->setParameters($this->parameters);
$resource = new Item($budgetLimit, $transformer, 'budget_limits');
$resource = new Item($budgetLimit, $transformer, 'budget_limits');
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);
}

View File

@@ -41,8 +41,6 @@ class StoreController extends Controller
/**
* BudgetLimitController constructor.
*
*/
public function __construct()
{
@@ -64,11 +62,6 @@ class StoreController extends Controller
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/budgets/storeBudgetLimit
*
* Store a newly created resource in storage.
*
* @param StoreRequest $request
* @param Budget $budget
*
* @return JsonResponse
*/
public function store(StoreRequest $request, Budget $budget): JsonResponse
{
@@ -77,13 +70,14 @@ class StoreController extends Controller
$data['end_date'] = $data['end'];
$data['budget_id'] = $budget->id;
$budgetLimit = $this->blRepository->store($data);
$manager = $this->getManager();
$budgetLimit = $this->blRepository->store($data);
$manager = $this->getManager();
/** @var BudgetLimitTransformer $transformer */
$transformer = app(BudgetLimitTransformer::class);
$transformer = app(BudgetLimitTransformer::class);
$transformer->setParameters($this->parameters);
$resource = new Item($budgetLimit, $transformer, 'budget_limits');
$resource = new Item($budgetLimit, $transformer, 'budget_limits');
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);
}

View File

@@ -46,8 +46,6 @@ class UpdateController extends Controller
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/budgets/updateBudgetLimit
*
* BudgetLimitController constructor.
*
*/
public function __construct()
{
@@ -69,16 +67,11 @@ class UpdateController extends Controller
* This endpoint is documented at:
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/budgets/updateBudgetLimit
*
* @param UpdateRequest $request
* @param Budget $budget
* @param BudgetLimit $budgetLimit
*
* @return JsonResponse
* @throws FireflyException
*/
public function update(UpdateRequest $request, Budget $budget, BudgetLimit $budgetLimit): JsonResponse
{
if ((int)$budget->id !== (int)$budgetLimit->budget_id) {
if ($budget->id !== $budgetLimit->budget_id) {
throw new FireflyException('20028: The budget limit does not belong to the budget.');
}
$data = $request->getAll();
@@ -87,10 +80,10 @@ class UpdateController extends Controller
$manager = $this->getManager();
/** @var BudgetLimitTransformer $transformer */
$transformer = app(BudgetLimitTransformer::class);
$transformer = app(BudgetLimitTransformer::class);
$transformer->setParameters($this->parameters);
$resource = new Item($budgetLimit, $transformer, 'budget_limits');
$resource = new Item($budgetLimit, $transformer, 'budget_limits');
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);
}

View File

@@ -37,8 +37,6 @@ class DestroyController extends Controller
/**
* CategoryController constructor.
*
*/
public function __construct()
{
@@ -58,10 +56,6 @@ class DestroyController extends Controller
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/categories/deleteCategory
*
* Remove the specified resource from storage.
*
* @param Category $category
*
* @return JsonResponse
*/
public function destroy(Category $category): JsonResponse
{

View File

@@ -49,8 +49,6 @@ class ListController extends Controller
/**
* CategoryController constructor.
*
*/
public function __construct()
{
@@ -69,29 +67,26 @@ class ListController extends Controller
* This endpoint is documented at:
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/categories/listAttachmentByCategory
*
* @param Category $category
*
* @return JsonResponse
* @throws FireflyException
*/
public function attachments(Category $category): JsonResponse
{
$manager = $this->getManager();
$pageSize = (int)app('preferences')->getForUser(auth()->user(), 'listPageSize', 50)->data;
$collection = $this->repository->getAttachments($category);
$manager = $this->getManager();
$pageSize = $this->parameters->get('limit');
$collection = $this->repository->getAttachments($category);
$count = $collection->count();
$attachments = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize);
// make paginator:
$paginator = new LengthAwarePaginator($attachments, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.categories.attachments', [$category->id]) . $this->buildParams());
$paginator = new LengthAwarePaginator($attachments, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.categories.attachments', [$category->id]).$this->buildParams());
/** @var AttachmentTransformer $transformer */
$transformer = app(AttachmentTransformer::class);
$transformer->setParameters($this->parameters);
$resource = new FractalCollection($attachments, $transformer, 'attachments');
$resource = new FractalCollection($attachments, $transformer, 'attachments');
$resource->setPaginator(new IlluminatePaginatorAdapter($paginator));
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);
@@ -103,28 +98,23 @@ class ListController extends Controller
*
* Show all transactions.
*
* @param Request $request
*
* @param Category $category
*
* @return JsonResponse
* @throws FireflyException
*/
public function transactions(Request $request, Category $category): JsonResponse
{
$pageSize = (int)app('preferences')->getForUser(auth()->user(), 'listPageSize', 50)->data;
$type = $request->get('type') ?? 'default';
$pageSize = $this->parameters->get('limit');
$type = $request->get('type') ?? 'default';
$this->parameters->set('type', $type);
$types = $this->mapTransactionTypes($this->parameters->get('type'));
$manager = $this->getManager();
$types = $this->mapTransactionTypes($this->parameters->get('type'));
$manager = $this->getManager();
/** @var User $admin */
$admin = auth()->user();
$admin = auth()->user();
// use new group collector:
/** @var GroupCollectorInterface $collector */
$collector = app(GroupCollectorInterface::class);
$collector = app(GroupCollectorInterface::class);
$collector
->setUser($admin)
// filter on category.
@@ -136,21 +126,25 @@ class ListController extends Controller
// set page to retrieve
->setPage($this->parameters->get('page'))
// set types of transactions to return.
->setTypes($types);
->setTypes($types)
;
if (null !== $this->parameters->get('start') && null !== $this->parameters->get('end')) {
$collector->setRange($this->parameters->get('start'), $this->parameters->get('end'));
if (null !== $this->parameters->get('start')) {
$collector->setStart($this->parameters->get('start'));
}
if (null !== $this->parameters->get('end')) {
$collector->setEnd($this->parameters->get('end'));
}
$paginator = $collector->getPaginatedGroups();
$paginator->setPath(route('api.v1.categories.transactions', [$category->id]) . $this->buildParams());
$paginator = $collector->getPaginatedGroups();
$paginator->setPath(route('api.v1.categories.transactions', [$category->id]).$this->buildParams());
$transactions = $paginator->getCollection();
/** @var TransactionGroupTransformer $transformer */
$transformer = app(TransactionGroupTransformer::class);
$transformer = app(TransactionGroupTransformer::class);
$transformer->setParameters($this->parameters);
$resource = new FractalCollection($transactions, $transformer, 'transactions');
$resource = new FractalCollection($transactions, $transformer, 'transactions');
$resource->setPaginator(new IlluminatePaginatorAdapter($paginator));
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);

View File

@@ -43,8 +43,6 @@ class ShowController extends Controller
/**
* CategoryController constructor.
*
*/
public function __construct()
{
@@ -65,29 +63,28 @@ class ShowController extends Controller
*
* Display a listing of the resource.
*
* @return JsonResponse
* @throws FireflyException
*/
public function index(): JsonResponse
{
$manager = $this->getManager();
$manager = $this->getManager();
// types to get, page size:
$pageSize = (int)app('preferences')->getForUser(auth()->user(), 'listPageSize', 50)->data;
$pageSize = $this->parameters->get('limit');
// get list of budgets. Count it and split it.
$collection = $this->repository->getCategories();
$count = $collection->count();
$categories = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize);
$collection = $this->repository->getCategories();
$count = $collection->count();
$categories = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize);
// make paginator:
$paginator = new LengthAwarePaginator($categories, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.categories.index') . $this->buildParams());
$paginator = new LengthAwarePaginator($categories, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.categories.index').$this->buildParams());
/** @var CategoryTransformer $transformer */
$transformer = app(CategoryTransformer::class);
$transformer->setParameters($this->parameters);
$resource = new FractalCollection($categories, $transformer, 'categories');
$resource = new FractalCollection($categories, $transformer, 'categories');
$resource->setPaginator(new IlluminatePaginatorAdapter($paginator));
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);
@@ -98,20 +95,16 @@ class ShowController extends Controller
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/categories/getCategory
*
* Show the category.
*
* @param Category $category
*
* @return JsonResponse
*/
public function show(Category $category): JsonResponse
{
$manager = $this->getManager();
$manager = $this->getManager();
/** @var CategoryTransformer $transformer */
$transformer = app(CategoryTransformer::class);
$transformer->setParameters($this->parameters);
$resource = new Item($category, $transformer, 'categories');
$resource = new Item($category, $transformer, 'categories');
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);
}

View File

@@ -40,8 +40,6 @@ class StoreController extends Controller
/**
* CategoryController constructor.
*
*/
public function __construct()
{
@@ -62,21 +60,18 @@ class StoreController extends Controller
*
* Store new category.
*
* @param StoreRequest $request
*
* @return JsonResponse
* @throws FireflyException
*/
public function store(StoreRequest $request): JsonResponse
{
$category = $this->repository->store($request->getAll());
$manager = $this->getManager();
$category = $this->repository->store($request->getAll());
$manager = $this->getManager();
/** @var CategoryTransformer $transformer */
$transformer = app(CategoryTransformer::class);
$transformer->setParameters($this->parameters);
$resource = new Item($category, $transformer, 'categories');
$resource = new Item($category, $transformer, 'categories');
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);
}

View File

@@ -40,8 +40,6 @@ class UpdateController extends Controller
/**
* CategoryController constructor.
*
*/
public function __construct()
{
@@ -61,23 +59,18 @@ class UpdateController extends Controller
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/categories/updateCategory
*
* Update the category.
*
* @param UpdateRequest $request
* @param Category $category
*
* @return JsonResponse
*/
public function update(UpdateRequest $request, Category $category): JsonResponse
{
$data = $request->getAll();
$category = $this->repository->update($category, $data);
$manager = $this->getManager();
$data = $request->getAll();
$category = $this->repository->update($category, $data);
$manager = $this->getManager();
/** @var CategoryTransformer $transformer */
$transformer = app(CategoryTransformer::class);
$transformer->setParameters($this->parameters);
$resource = new Item($category, $transformer, 'categories');
$resource = new Item($category, $transformer, 'categories');
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);
}

View File

@@ -38,8 +38,6 @@ class DestroyController extends Controller
/**
* ObjectGroupController constructor.
*
*/
public function __construct()
{
@@ -61,10 +59,6 @@ class DestroyController extends Controller
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/object_groups/deleteObjectGroup
*
* Remove the specified resource from storage.
*
* @param ObjectGroup $objectGroup
*
* @return JsonResponse
*/
public function destroy(ObjectGroup $objectGroup): JsonResponse
{

View File

@@ -44,8 +44,6 @@ class ListController extends Controller
/**
* ObjectGroupController constructor.
*
*/
public function __construct()
{
@@ -68,30 +66,27 @@ class ListController extends Controller
*
* List all bills in this object group
*
* @param ObjectGroup $objectGroup
*
* @return JsonResponse
* @throws FireflyException
*/
public function bills(ObjectGroup $objectGroup): JsonResponse
{
$manager = $this->getManager();
$manager = $this->getManager();
$pageSize = (int)app('preferences')->getForUser(auth()->user(), 'listPageSize', 50)->data;
$pageSize = $this->parameters->get('limit');
// get list of piggy banks. Count it and split it.
$collection = $this->repository->getBills($objectGroup);
$count = $collection->count();
$bills = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize);
$collection = $this->repository->getBills($objectGroup);
$count = $collection->count();
$bills = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize);
// make paginator:
$paginator = new LengthAwarePaginator($bills, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.currencies.bills', [$objectGroup->id]) . $this->buildParams());
$paginator = new LengthAwarePaginator($bills, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.currencies.bills', [$objectGroup->id]).$this->buildParams());
/** @var BillTransformer $transformer */
$transformer = app(BillTransformer::class);
$transformer->setParameters($this->parameters);
$resource = new FractalCollection($bills, $transformer, 'bills');
$resource = new FractalCollection($bills, $transformer, 'bills');
$resource->setPaginator(new IlluminatePaginatorAdapter($paginator));
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);
@@ -103,33 +98,30 @@ class ListController extends Controller
*
* List all piggies under the object group.
*
* @param ObjectGroup $objectGroup
*
* @return JsonResponse
* @throws FireflyException
*/
public function piggyBanks(ObjectGroup $objectGroup): JsonResponse
{
// create some objects:
$manager = $this->getManager();
$manager = $this->getManager();
// types to get, page size:
$pageSize = (int)app('preferences')->getForUser(auth()->user(), 'listPageSize', 50)->data;
$pageSize = $this->parameters->get('limit');
// get list of piggy banks. Count it and split it.
$collection = $this->repository->getPiggyBanks($objectGroup);
$count = $collection->count();
$piggyBanks = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize);
$collection = $this->repository->getPiggyBanks($objectGroup);
$count = $collection->count();
$piggyBanks = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize);
// 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 = new LengthAwarePaginator($piggyBanks, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.object-groups.piggy-banks', [$objectGroup->id]).$this->buildParams());
/** @var PiggyBankTransformer $transformer */
$transformer = app(PiggyBankTransformer::class);
$transformer->setParameters($this->parameters);
$resource = new FractalCollection($piggyBanks, $transformer, 'piggy_banks');
$resource = new FractalCollection($piggyBanks, $transformer, 'piggy_banks');
$resource->setPaginator(new IlluminatePaginatorAdapter($paginator));
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);

View File

@@ -24,13 +24,11 @@ declare(strict_types=1);
namespace FireflyIII\Api\V1\Controllers\Models\ObjectGroup;
use FireflyIII\Api\V1\Controllers\Controller;
use FireflyIII\Exceptions\FireflyException;
use FireflyIII\Models\ObjectGroup;
use FireflyIII\Repositories\ObjectGroup\ObjectGroupRepositoryInterface;
use FireflyIII\Transformers\ObjectGroupTransformer;
use FireflyIII\User;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Pagination\LengthAwarePaginator;
use League\Fractal\Pagination\IlluminatePaginatorAdapter;
use League\Fractal\Resource\Collection as FractalCollection;
@@ -45,8 +43,6 @@ class ShowController extends Controller
/**
* ObjectGroupController constructor.
*
*/
public function __construct()
{
@@ -68,18 +64,13 @@ class ShowController extends Controller
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/object_groups/listObjectGroups
*
* Display a listing of the resource.
*
* @param Request $request
*
* @return JsonResponse
* @throws FireflyException
*/
public function index(Request $request): JsonResponse
public function index(): JsonResponse
{
$manager = $this->getManager();
$manager = $this->getManager();
// types to get, page size:
$pageSize = (int)app('preferences')->getForUser(auth()->user(), 'listPageSize', 50)->data;
$pageSize = $this->parameters->get('limit');
$this->repository->resetOrder();
$collection = $this->repository->get();
@@ -87,14 +78,14 @@ class ShowController extends Controller
$objectGroups = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize);
// make paginator:
$paginator = new LengthAwarePaginator($objectGroups, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.object-groups.index') . $this->buildParams());
$paginator = new LengthAwarePaginator($objectGroups, $count, $pageSize, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.object-groups.index').$this->buildParams());
/** @var ObjectGroupTransformer $transformer */
$transformer = app(ObjectGroupTransformer::class);
$transformer = app(ObjectGroupTransformer::class);
$transformer->setParameters($this->parameters);
$resource = new FractalCollection($objectGroups, $transformer, 'object_groups');
$resource = new FractalCollection($objectGroups, $transformer, 'object_groups');
$resource->setPaginator(new IlluminatePaginatorAdapter($paginator));
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);
@@ -105,21 +96,17 @@ class ShowController extends Controller
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/object_groups/getObjectGroup
*
* Show single instance.
*
* @param ObjectGroup $objectGroup
*
* @return JsonResponse
*/
public function show(ObjectGroup $objectGroup): JsonResponse
{
$manager = $this->getManager();
$manager = $this->getManager();
$this->repository->resetOrder();
$objectGroup->refresh();
/** @var ObjectGroupTransformer $transformer */
$transformer = app(ObjectGroupTransformer::class);
$transformer->setParameters($this->parameters);
$resource = new Item($objectGroup, $transformer, 'object_groups');
$resource = new Item($objectGroup, $transformer, 'object_groups');
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);
}

View File

@@ -41,8 +41,6 @@ class UpdateController extends Controller
/**
* ObjectGroupController constructor.
*
*/
public function __construct()
{
@@ -62,23 +60,18 @@ class UpdateController extends Controller
/**
* This endpoint is documented at:
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/object_groups/updateObjectGroup
*
* @param UpdateRequest $request
* @param ObjectGroup $objectGroup
*
* @return JsonResponse
*/
public function update(UpdateRequest $request, ObjectGroup $objectGroup): JsonResponse
{
$data = $request->getUpdateData();
$data = $request->getUpdateData();
$this->repository->update($objectGroup, $data);
$this->repository->resetOrder();
$manager = $this->getManager();
$manager = $this->getManager();
/** @var ObjectGroupTransformer $transformer */
$transformer = app(ObjectGroupTransformer::class);
$transformer->setParameters($this->parameters);
$resource = new Item($objectGroup, $transformer, 'object_groups');
$resource = new Item($objectGroup, $transformer, 'object_groups');
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);
}

View File

@@ -37,8 +37,6 @@ class DestroyController extends Controller
/**
* Constructor.
*
*/
public function __construct()
{
@@ -58,10 +56,6 @@ class DestroyController extends Controller
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/piggy_banks/deletePiggyBank
*
* Delete the resource.
*
* @param PiggyBank $piggyBank
*
* @return JsonResponse
*/
public function destroy(PiggyBank $piggyBank): JsonResponse
{

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