mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2026-06-27 02:23:36 -07:00
Compare commits
109 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 78a21856f8 | |||
| bbca9b66ec | |||
| bd41dd48d6 | |||
| a90e01dcca | |||
| 93a0828fab | |||
| 4a75fc7c5e | |||
| 2e9beac6a4 | |||
| 6cbf2d337f | |||
| 5f1ff01215 | |||
| 753c2c37ec | |||
| d26261c5b7 | |||
| ced96f3d5d | |||
| 2e75c24b45 | |||
| 677e952b45 | |||
| ff5a7a8d22 | |||
| f6af04ff4b | |||
| 2f6ab2ef96 | |||
| 439994f64c | |||
| 1336b05f48 | |||
| 0885fb6319 | |||
| 7a28365f7f | |||
| 1b68b592c8 | |||
| d37f6ad6b7 | |||
| ac54acfdde | |||
| b7eef25635 | |||
| 9dcd6bc516 | |||
| 11ac6dd090 | |||
| 05fd28e147 | |||
| 72fe670289 | |||
| 377123d41f | |||
| c421315465 | |||
| 8805e05e07 | |||
| 2ba082c787 | |||
| b1f32406cc | |||
| 17839d9a34 | |||
| 3d8f059f38 | |||
| 24af9f0e24 | |||
| ce0d785819 | |||
| 3534367662 | |||
| 028a6fdd75 | |||
| 8d442ae1a4 | |||
| b275e80571 | |||
| 92ea572151 | |||
| 9cc7747123 | |||
| 344bac5af0 | |||
| e7cccd6aa1 | |||
| f3f69ac95e | |||
| 40a308779a | |||
| 51cbe00d20 | |||
| 9e7013f498 | |||
| 41ca780790 | |||
| 4475a52f20 | |||
| 4865123d59 | |||
| 30fd28b928 | |||
| 88b74a4aab | |||
| 891f5cb42b | |||
| 502b0bb74b | |||
| 51b9802862 | |||
| 66af080b09 | |||
| 6192454c5a | |||
| c9e533097c | |||
| 3c6d3069d9 | |||
| 11694d2667 | |||
| 6541ac6f34 | |||
| 0fd42ea43f | |||
| db73ae39d1 | |||
| 972d75dc41 | |||
| 7891c24f5c | |||
| 7fa4d67a3f | |||
| bd2e830637 | |||
| b1bb0b1e84 | |||
| 673e3a21f9 | |||
| a240074343 | |||
| 12baa27de9 | |||
| 9e60d0ca0d | |||
| a86039aa78 | |||
| 2c14a605e4 | |||
| 3b94e0479a | |||
| c08e3c8797 | |||
| 1678c15905 | |||
| 37a3444816 | |||
| 008c9b4d8f | |||
| 1c21154799 | |||
| b8c05d6f26 | |||
| 85998cd3d7 | |||
| 67a048c279 | |||
| b81943fad6 | |||
| 9ee1b4587c | |||
| 7579ae2615 | |||
| c002cb795d | |||
| f00852aa6a | |||
| 3e26f21bc4 | |||
| 195fb6cdb7 | |||
| 034280ca17 | |||
| c5ce9fd1e2 | |||
| 3d64f7fe08 | |||
| f2efb69b76 | |||
| 7499a414f4 | |||
| 8b0f790a56 | |||
| b70ed32952 | |||
| 9e511c822e | |||
| fa6c123595 | |||
| ec1dfca2b5 | |||
| bebd3b189e | |||
| e3319dca5d | |||
| a38cb85f55 | |||
| 0226673a01 | |||
| 7816f1be9b | |||
| 5878173e80 |
Generated
+219
-130
@@ -72,28 +72,29 @@
|
||||
},
|
||||
{
|
||||
"name": "composer/pcre",
|
||||
"version": "3.3.2",
|
||||
"version": "3.4.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/composer/pcre.git",
|
||||
"reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e"
|
||||
"reference": "d5a341b3fb61f3001970940afb1d332968a183ed"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/composer/pcre/zipball/b2bed4734f0cc156ee1fe9c0da2550420d99a21e",
|
||||
"reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e",
|
||||
"url": "https://api.github.com/repos/composer/pcre/zipball/d5a341b3fb61f3001970940afb1d332968a183ed",
|
||||
"reference": "d5a341b3fb61f3001970940afb1d332968a183ed",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.4 || ^8.0"
|
||||
},
|
||||
"conflict": {
|
||||
"phpstan/phpstan": "<1.11.10"
|
||||
"phpstan/phpstan": "<2.2.2"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpstan/phpstan": "^1.12 || ^2",
|
||||
"phpstan/phpstan-strict-rules": "^1 || ^2",
|
||||
"phpunit/phpunit": "^8 || ^9"
|
||||
"phpstan/phpstan": "^2",
|
||||
"phpstan/phpstan-deprecation-rules": "^2",
|
||||
"phpstan/phpstan-strict-rules": "^2",
|
||||
"phpunit/phpunit": "^9"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
@@ -131,7 +132,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/composer/pcre/issues",
|
||||
"source": "https://github.com/composer/pcre/tree/3.3.2"
|
||||
"source": "https://github.com/composer/pcre/tree/3.4.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -141,13 +142,9 @@
|
||||
{
|
||||
"url": "https://github.com/composer",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/composer/composer",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-11-12T16:29:46+00:00"
|
||||
"time": "2026-06-07T11:47:49+00:00"
|
||||
},
|
||||
{
|
||||
"name": "composer/semver",
|
||||
@@ -471,23 +468,23 @@
|
||||
},
|
||||
{
|
||||
"name": "friendsofphp/php-cs-fixer",
|
||||
"version": "v3.95.2",
|
||||
"version": "v3.95.10",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git",
|
||||
"reference": "a28d88a5e172b27e78d0816992b15a9df3da20f1"
|
||||
"reference": "93e1ab3e1f153024bd3ab23c8a349556063c6f17"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/a28d88a5e172b27e78d0816992b15a9df3da20f1",
|
||||
"reference": "a28d88a5e172b27e78d0816992b15a9df3da20f1",
|
||||
"url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/93e1ab3e1f153024bd3ab23c8a349556063c6f17",
|
||||
"reference": "93e1ab3e1f153024bd3ab23c8a349556063c6f17",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"clue/ndjson-react": "^1.3",
|
||||
"composer/semver": "^3.4",
|
||||
"composer/xdebug-handler": "^3.0.5",
|
||||
"ergebnis/agent-detector": "^1.1.1",
|
||||
"ergebnis/agent-detector": "^1.2",
|
||||
"ext-filter": "*",
|
||||
"ext-hash": "*",
|
||||
"ext-json": "*",
|
||||
@@ -498,32 +495,32 @@
|
||||
"react/event-loop": "^1.5",
|
||||
"react/socket": "^1.16",
|
||||
"react/stream": "^1.4",
|
||||
"sebastian/diff": "^4.0.6 || ^5.1.1 || ^6.0.2 || ^7.0 || ^8.0",
|
||||
"sebastian/diff": "^4.0.6 || ^5.1.1 || ^6.0.2 || ^7.0 || ^8.0 || ^9.0",
|
||||
"symfony/console": "^5.4.47 || ^6.4.24 || ^7.0 || ^8.0",
|
||||
"symfony/event-dispatcher": "^5.4.45 || ^6.4.24 || ^7.0 || ^8.0",
|
||||
"symfony/filesystem": "^5.4.45 || ^6.4.24 || ^7.0 || ^8.0",
|
||||
"symfony/finder": "^5.4.45 || ^6.4.24 || ^7.0 || ^8.0",
|
||||
"symfony/options-resolver": "^5.4.45 || ^6.4.24 || ^7.0 || ^8.0",
|
||||
"symfony/polyfill-mbstring": "^1.33",
|
||||
"symfony/polyfill-php80": "^1.33",
|
||||
"symfony/polyfill-php81": "^1.33",
|
||||
"symfony/polyfill-php84": "^1.33",
|
||||
"symfony/polyfill-mbstring": "^1.37",
|
||||
"symfony/polyfill-php80": "^1.37",
|
||||
"symfony/polyfill-php81": "^1.37",
|
||||
"symfony/polyfill-php84": "^1.37",
|
||||
"symfony/process": "^5.4.47 || ^6.4.24 || ^7.2 || ^8.0",
|
||||
"symfony/stopwatch": "^5.4.45 || ^6.4.24 || ^7.0 || ^8.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"facile-it/paraunit": "^1.3.1 || ^2.11.0",
|
||||
"infection/infection": "^0.32.7",
|
||||
"justinrainbow/json-schema": "^6.8.0",
|
||||
"justinrainbow/json-schema": "^6.9.0",
|
||||
"keradus/cli-executor": "^2.3",
|
||||
"mikey179/vfsstream": "^1.6.12",
|
||||
"php-coveralls/php-coveralls": "^2.9.1",
|
||||
"php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.8",
|
||||
"php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.8",
|
||||
"phpunit/phpunit": "^9.6.34 || ^10.5.63 || ^11.5.55",
|
||||
"symfony/polyfill-php85": "^1.33",
|
||||
"symfony/var-dumper": "^5.4.48 || ^6.4.32 || ^7.4.4 || ^8.0.8",
|
||||
"symfony/yaml": "^5.4.45 || ^6.4.30 || ^7.4.1 || ^8.0.8"
|
||||
"symfony/polyfill-php85": "^1.38",
|
||||
"symfony/var-dumper": "^5.4.48 || ^6.4.36 || ^7.4.8 || ^8.1.0",
|
||||
"symfony/yaml": "^5.4.53 || ^6.4.41 || ^7.4.13 || ^8.1.0"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-dom": "For handling output formats in XML",
|
||||
@@ -564,7 +561,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.95.2"
|
||||
"source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.95.10"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -572,7 +569,7 @@
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2026-05-15T09:20:44+00:00"
|
||||
"time": "2026-06-19T14:45:22+00:00"
|
||||
},
|
||||
{
|
||||
"name": "psr/container",
|
||||
@@ -1255,29 +1252,29 @@
|
||||
},
|
||||
{
|
||||
"name": "sebastian/diff",
|
||||
"version": "8.3.0",
|
||||
"version": "9.0.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/sebastianbergmann/diff.git",
|
||||
"reference": "b36d33b6e796513de7cb7df053afb3f55eefcd47"
|
||||
"reference": "a3fb6a298a265ff487a91bbea46e03cd01dbb226"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/b36d33b6e796513de7cb7df053afb3f55eefcd47",
|
||||
"reference": "b36d33b6e796513de7cb7df053afb3f55eefcd47",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/a3fb6a298a265ff487a91bbea46e03cd01dbb226",
|
||||
"reference": "a3fb6a298a265ff487a91bbea46e03cd01dbb226",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=8.4"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^13.0",
|
||||
"symfony/process": "^7.2"
|
||||
"phpunit/phpunit": "^13.2",
|
||||
"symfony/process": "^7.4.13"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-main": "8.3-dev"
|
||||
"dev-main": "9.0-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
@@ -1310,7 +1307,7 @@
|
||||
"support": {
|
||||
"issues": "https://github.com/sebastianbergmann/diff/issues",
|
||||
"security": "https://github.com/sebastianbergmann/diff/security/policy",
|
||||
"source": "https://github.com/sebastianbergmann/diff/tree/8.3.0"
|
||||
"source": "https://github.com/sebastianbergmann/diff/tree/9.0.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -1330,27 +1327,33 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2026-05-15T04:58:09+00:00"
|
||||
"time": "2026-06-05T03:04:51+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/console",
|
||||
"version": "v8.0.11",
|
||||
"version": "v8.1.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/console.git",
|
||||
"reference": "3156577f46a38aa1b9323aad223de7a9cd426782"
|
||||
"reference": "f5a856c6ecb56b3c21ed94a5b7bf940d857d110a"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/console/zipball/3156577f46a38aa1b9323aad223de7a9cd426782",
|
||||
"reference": "3156577f46a38aa1b9323aad223de7a9cd426782",
|
||||
"url": "https://api.github.com/repos/symfony/console/zipball/f5a856c6ecb56b3c21ed94a5b7bf940d857d110a",
|
||||
"reference": "f5a856c6ecb56b3c21ed94a5b7bf940d857d110a",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=8.4",
|
||||
"php": ">=8.4.1",
|
||||
"symfony/deprecation-contracts": "^2.5|^3",
|
||||
"symfony/polyfill-mbstring": "^1.0",
|
||||
"symfony/polyfill-php85": "^1.32",
|
||||
"symfony/service-contracts": "^2.5|^3",
|
||||
"symfony/string": "^7.4|^8.0"
|
||||
"symfony/string": "^7.4.6|^8.0.6"
|
||||
},
|
||||
"conflict": {
|
||||
"symfony/dependency-injection": "<8.1",
|
||||
"symfony/event-dispatcher": "<8.1"
|
||||
},
|
||||
"provide": {
|
||||
"psr/log-implementation": "1.0|2.0|3.0"
|
||||
@@ -1358,14 +1361,18 @@
|
||||
"require-dev": {
|
||||
"psr/log": "^1|^2|^3",
|
||||
"symfony/config": "^7.4|^8.0",
|
||||
"symfony/dependency-injection": "^7.4|^8.0",
|
||||
"symfony/event-dispatcher": "^7.4|^8.0",
|
||||
"symfony/dependency-injection": "^8.1",
|
||||
"symfony/event-dispatcher": "^8.1",
|
||||
"symfony/filesystem": "^7.4|^8.0",
|
||||
"symfony/http-foundation": "^7.4|^8.0",
|
||||
"symfony/http-kernel": "^7.4|^8.0",
|
||||
"symfony/lock": "^7.4|^8.0",
|
||||
"symfony/messenger": "^7.4|^8.0",
|
||||
"symfony/mime": "^7.4|^8.0",
|
||||
"symfony/process": "^7.4|^8.0",
|
||||
"symfony/stopwatch": "^7.4|^8.0",
|
||||
"symfony/uid": "^7.4|^8.0",
|
||||
"symfony/validator": "^7.4|^8.0",
|
||||
"symfony/var-dumper": "^7.4|^8.0"
|
||||
},
|
||||
"type": "library",
|
||||
@@ -1400,7 +1407,7 @@
|
||||
"terminal"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/console/tree/v8.0.11"
|
||||
"source": "https://github.com/symfony/console/tree/v8.1.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -1420,7 +1427,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2026-05-13T12:07:53+00:00"
|
||||
"time": "2026-05-29T05:06:50+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/deprecation-contracts",
|
||||
@@ -1495,20 +1502,21 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/event-dispatcher",
|
||||
"version": "v8.0.9",
|
||||
"version": "v8.1.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/event-dispatcher.git",
|
||||
"reference": "0c3c1a17604c4dbbec4b93fe162c538482096e1f"
|
||||
"reference": "f249ae3f680958b6f1f9dd76e5747cf0695b4102"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/0c3c1a17604c4dbbec4b93fe162c538482096e1f",
|
||||
"reference": "0c3c1a17604c4dbbec4b93fe162c538482096e1f",
|
||||
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/f249ae3f680958b6f1f9dd76e5747cf0695b4102",
|
||||
"reference": "f249ae3f680958b6f1f9dd76e5747cf0695b4102",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=8.4",
|
||||
"php": ">=8.4.1",
|
||||
"symfony/deprecation-contracts": "^2.5|^3",
|
||||
"symfony/event-dispatcher-contracts": "^2.5|^3"
|
||||
},
|
||||
"conflict": {
|
||||
@@ -1556,7 +1564,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/v8.0.9"
|
||||
"source": "https://github.com/symfony/event-dispatcher/tree/v8.1.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -1576,7 +1584,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2026-04-18T13:51:42+00:00"
|
||||
"time": "2026-05-29T05:06:50+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/event-dispatcher-contracts",
|
||||
@@ -1660,20 +1668,21 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/filesystem",
|
||||
"version": "v8.0.11",
|
||||
"version": "v8.1.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/filesystem.git",
|
||||
"reference": "224db910898ce1317b892a9a1338f1f8f17eb7c7"
|
||||
"reference": "99aec13b82b4967ec5088222c4a3ecca955949c2"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/filesystem/zipball/224db910898ce1317b892a9a1338f1f8f17eb7c7",
|
||||
"reference": "224db910898ce1317b892a9a1338f1f8f17eb7c7",
|
||||
"url": "https://api.github.com/repos/symfony/filesystem/zipball/99aec13b82b4967ec5088222c4a3ecca955949c2",
|
||||
"reference": "99aec13b82b4967ec5088222c4a3ecca955949c2",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=8.4",
|
||||
"php": ">=8.4.1",
|
||||
"symfony/deprecation-contracts": "^2.5|^3",
|
||||
"symfony/polyfill-ctype": "~1.8",
|
||||
"symfony/polyfill-mbstring": "~1.8"
|
||||
},
|
||||
@@ -1706,7 +1715,7 @@
|
||||
"description": "Provides basic utilities for the filesystem",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/filesystem/tree/v8.0.11"
|
||||
"source": "https://github.com/symfony/filesystem/tree/v8.1.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -1726,24 +1735,24 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2026-05-11T16:39:47+00:00"
|
||||
"time": "2026-05-29T05:06:50+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/finder",
|
||||
"version": "v8.0.8",
|
||||
"version": "v8.1.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/finder.git",
|
||||
"reference": "8da41214757b87d97f181e3d14a4179286151007"
|
||||
"reference": "58d2e767a66052c1487356f953445634a8194c64"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/finder/zipball/8da41214757b87d97f181e3d14a4179286151007",
|
||||
"reference": "8da41214757b87d97f181e3d14a4179286151007",
|
||||
"url": "https://api.github.com/repos/symfony/finder/zipball/58d2e767a66052c1487356f953445634a8194c64",
|
||||
"reference": "58d2e767a66052c1487356f953445634a8194c64",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=8.4"
|
||||
"php": ">=8.4.1"
|
||||
},
|
||||
"require-dev": {
|
||||
"symfony/filesystem": "^7.4|^8.0"
|
||||
@@ -1774,7 +1783,7 @@
|
||||
"description": "Finds files and directories via an intuitive fluent interface",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/finder/tree/v8.0.8"
|
||||
"source": "https://github.com/symfony/finder/tree/v8.1.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -1794,24 +1803,24 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2026-03-30T15:14:47+00:00"
|
||||
"time": "2026-05-29T05:06:50+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/options-resolver",
|
||||
"version": "v8.0.8",
|
||||
"version": "v8.1.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/options-resolver.git",
|
||||
"reference": "b48bce0a70b914f6953dafbd10474df232ed4de8"
|
||||
"reference": "88f9c561f678a02d54b897014049fa839e33ff82"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/options-resolver/zipball/b48bce0a70b914f6953dafbd10474df232ed4de8",
|
||||
"reference": "b48bce0a70b914f6953dafbd10474df232ed4de8",
|
||||
"url": "https://api.github.com/repos/symfony/options-resolver/zipball/88f9c561f678a02d54b897014049fa839e33ff82",
|
||||
"reference": "88f9c561f678a02d54b897014049fa839e33ff82",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=8.4",
|
||||
"php": ">=8.4.1",
|
||||
"symfony/deprecation-contracts": "^2.5|^3"
|
||||
},
|
||||
"type": "library",
|
||||
@@ -1845,7 +1854,7 @@
|
||||
"options"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/options-resolver/tree/v8.0.8"
|
||||
"source": "https://github.com/symfony/options-resolver/tree/v8.1.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -1865,7 +1874,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2026-03-30T15:14:47+00:00"
|
||||
"time": "2026-05-29T05:06:50+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-ctype",
|
||||
@@ -1952,16 +1961,16 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-intl-grapheme",
|
||||
"version": "v1.37.0",
|
||||
"version": "v1.38.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/polyfill-intl-grapheme.git",
|
||||
"reference": "4864388bfbd3001ce88e234fab652acd91fdc57e"
|
||||
"reference": "e9247d281d694a5120554d9afaf54e070e88a603"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/4864388bfbd3001ce88e234fab652acd91fdc57e",
|
||||
"reference": "4864388bfbd3001ce88e234fab652acd91fdc57e",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/e9247d281d694a5120554d9afaf54e070e88a603",
|
||||
"reference": "e9247d281d694a5120554d9afaf54e070e88a603",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -2010,7 +2019,7 @@
|
||||
"shim"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.37.0"
|
||||
"source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.38.1"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -2030,20 +2039,20 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2026-04-26T13:13:48+00:00"
|
||||
"time": "2026-05-26T05:58:03+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-intl-normalizer",
|
||||
"version": "v1.37.0",
|
||||
"version": "v1.38.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
|
||||
"reference": "3833d7255cc303546435cb650316bff708a1c75c"
|
||||
"reference": "2d446c214bdbe5b71bde5011b060a05fece3ae6b"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c",
|
||||
"reference": "3833d7255cc303546435cb650316bff708a1c75c",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/2d446c214bdbe5b71bde5011b060a05fece3ae6b",
|
||||
"reference": "2d446c214bdbe5b71bde5011b060a05fece3ae6b",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -2095,7 +2104,7 @@
|
||||
"shim"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.37.0"
|
||||
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.38.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -2115,20 +2124,20 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-09-09T11:45:10+00:00"
|
||||
"time": "2026-05-25T13:48:31+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-mbstring",
|
||||
"version": "v1.37.0",
|
||||
"version": "v1.38.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/polyfill-mbstring.git",
|
||||
"reference": "6a21eb99c6973357967f6ce3708cd55a6bec6315"
|
||||
"reference": "d3d318bad5e7a1bfbd026009c8bfb8d8f99ae6b6"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6a21eb99c6973357967f6ce3708cd55a6bec6315",
|
||||
"reference": "6a21eb99c6973357967f6ce3708cd55a6bec6315",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/d3d318bad5e7a1bfbd026009c8bfb8d8f99ae6b6",
|
||||
"reference": "d3d318bad5e7a1bfbd026009c8bfb8d8f99ae6b6",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -2180,7 +2189,7 @@
|
||||
"shim"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.37.0"
|
||||
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.38.2"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -2200,7 +2209,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2026-04-10T17:25:58+00:00"
|
||||
"time": "2026-05-27T06:59:30+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-php80",
|
||||
@@ -2288,16 +2297,16 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-php81",
|
||||
"version": "v1.37.0",
|
||||
"version": "v1.38.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/polyfill-php81.git",
|
||||
"reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c"
|
||||
"reference": "6bfb9c766cacffbc8e118cb87217d08ed84e5cd7"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c",
|
||||
"reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/6bfb9c766cacffbc8e118cb87217d08ed84e5cd7",
|
||||
"reference": "6bfb9c766cacffbc8e118cb87217d08ed84e5cd7",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -2344,7 +2353,7 @@
|
||||
"shim"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/polyfill-php81/tree/v1.37.0"
|
||||
"source": "https://github.com/symfony/polyfill-php81/tree/v1.38.1"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -2364,20 +2373,20 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-09-09T11:45:10+00:00"
|
||||
"time": "2026-05-26T12:45:58+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-php84",
|
||||
"version": "v1.37.0",
|
||||
"version": "v1.38.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/polyfill-php84.git",
|
||||
"reference": "88486db2c389b290bf87ff1de7ebc1e13e42bb06"
|
||||
"reference": "f4e1dfaee5b74aba5964fe1fd4dfc7ba5e3085fa"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/88486db2c389b290bf87ff1de7ebc1e13e42bb06",
|
||||
"reference": "88486db2c389b290bf87ff1de7ebc1e13e42bb06",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/f4e1dfaee5b74aba5964fe1fd4dfc7ba5e3085fa",
|
||||
"reference": "f4e1dfaee5b74aba5964fe1fd4dfc7ba5e3085fa",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -2424,7 +2433,7 @@
|
||||
"shim"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/polyfill-php84/tree/v1.37.0"
|
||||
"source": "https://github.com/symfony/polyfill-php84/tree/v1.38.1"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -2444,24 +2453,104 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2026-04-10T18:47:49+00:00"
|
||||
"time": "2026-05-26T12:51:13+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/process",
|
||||
"version": "v8.0.11",
|
||||
"name": "symfony/polyfill-php85",
|
||||
"version": "v1.38.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/process.git",
|
||||
"reference": "26d89e459f037d2873300605d0a07e7a8ef84db0"
|
||||
"url": "https://github.com/symfony/polyfill-php85.git",
|
||||
"reference": "ba2ba04f3352cfa2dcbbcb90aee13ed967f505b1"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/process/zipball/26d89e459f037d2873300605d0a07e7a8ef84db0",
|
||||
"reference": "26d89e459f037d2873300605d0a07e7a8ef84db0",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-php85/zipball/ba2ba04f3352cfa2dcbbcb90aee13ed967f505b1",
|
||||
"reference": "ba2ba04f3352cfa2dcbbcb90aee13ed967f505b1",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=8.4"
|
||||
"php": ">=7.2"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"thanks": {
|
||||
"url": "https://github.com/symfony/polyfill",
|
||||
"name": "symfony/polyfill"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"files": [
|
||||
"bootstrap.php"
|
||||
],
|
||||
"psr-4": {
|
||||
"Symfony\\Polyfill\\Php85\\": ""
|
||||
},
|
||||
"classmap": [
|
||||
"Resources/stubs"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Nicolas Grekas",
|
||||
"email": "p@tchwork.com"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "https://symfony.com/contributors"
|
||||
}
|
||||
],
|
||||
"description": "Symfony polyfill backporting some PHP 8.5+ features to lower PHP versions",
|
||||
"homepage": "https://symfony.com",
|
||||
"keywords": [
|
||||
"compatibility",
|
||||
"polyfill",
|
||||
"portable",
|
||||
"shim"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/polyfill-php85/tree/v1.38.1"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://symfony.com/sponsor",
|
||||
"type": "custom"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/fabpot",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/nicolas-grekas",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2026-05-26T02:25:22+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/process",
|
||||
"version": "v8.1.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/process.git",
|
||||
"reference": "c4a9e58f235a6bf7f97ffbfedae2687353ac79e5"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/process/zipball/c4a9e58f235a6bf7f97ffbfedae2687353ac79e5",
|
||||
"reference": "c4a9e58f235a6bf7f97ffbfedae2687353ac79e5",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=8.4.1"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
@@ -2489,7 +2578,7 @@
|
||||
"description": "Executes commands in sub-processes",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/process/tree/v8.0.11"
|
||||
"source": "https://github.com/symfony/process/tree/v8.1.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -2509,7 +2598,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2026-05-11T16:56:32+00:00"
|
||||
"time": "2026-05-29T05:06:50+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/service-contracts",
|
||||
@@ -2600,20 +2689,20 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/stopwatch",
|
||||
"version": "v8.0.8",
|
||||
"version": "v8.1.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/stopwatch.git",
|
||||
"reference": "85954ed72d5440ea4dc9a10b7e49e01df766ffa3"
|
||||
"reference": "21c07b026905d596e8379caeb115d87aa479499d"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/stopwatch/zipball/85954ed72d5440ea4dc9a10b7e49e01df766ffa3",
|
||||
"reference": "85954ed72d5440ea4dc9a10b7e49e01df766ffa3",
|
||||
"url": "https://api.github.com/repos/symfony/stopwatch/zipball/21c07b026905d596e8379caeb115d87aa479499d",
|
||||
"reference": "21c07b026905d596e8379caeb115d87aa479499d",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=8.4",
|
||||
"php": ">=8.4.1",
|
||||
"symfony/service-contracts": "^2.5|^3"
|
||||
},
|
||||
"type": "library",
|
||||
@@ -2642,7 +2731,7 @@
|
||||
"description": "Provides a way to profile code",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/stopwatch/tree/v8.0.8"
|
||||
"source": "https://github.com/symfony/stopwatch/tree/v8.1.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -2662,24 +2751,24 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2026-03-30T15:14:47+00:00"
|
||||
"time": "2026-05-29T05:06:50+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/string",
|
||||
"version": "v8.0.11",
|
||||
"version": "v8.1.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/string.git",
|
||||
"reference": "39be2ad058a3c0bd558edca23e65f009865d75ff"
|
||||
"reference": "afd5944f4005862d961efb85c8bbd5c523c4e3c9"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/string/zipball/39be2ad058a3c0bd558edca23e65f009865d75ff",
|
||||
"reference": "39be2ad058a3c0bd558edca23e65f009865d75ff",
|
||||
"url": "https://api.github.com/repos/symfony/string/zipball/afd5944f4005862d961efb85c8bbd5c523c4e3c9",
|
||||
"reference": "afd5944f4005862d961efb85c8bbd5c523c4e3c9",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=8.4",
|
||||
"php": ">=8.4.1",
|
||||
"symfony/polyfill-ctype": "^1.8",
|
||||
"symfony/polyfill-intl-grapheme": "^1.33",
|
||||
"symfony/polyfill-intl-normalizer": "^1.0",
|
||||
@@ -2732,7 +2821,7 @@
|
||||
"utf8"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/string/tree/v8.0.11"
|
||||
"source": "https://github.com/symfony/string/tree/v8.1.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -2752,7 +2841,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2026-05-13T12:07:53+00:00"
|
||||
"time": "2026-05-29T05:06:50+00:00"
|
||||
}
|
||||
],
|
||||
"packages-dev": [],
|
||||
|
||||
@@ -21,7 +21,7 @@ jobs:
|
||||
discussions: write
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: JC5/lock-threads@v6.0.6
|
||||
- uses: dessant/lock-threads@main
|
||||
with:
|
||||
issue-inactive-days: 21
|
||||
pr-inactive-days: 21
|
||||
|
||||
@@ -18,14 +18,14 @@ jobs:
|
||||
steps:
|
||||
- run: |
|
||||
BODY=$(gh pr view $NUMBER --json body)
|
||||
AUTHOR=$(gh pr view $NUMBER --json author)
|
||||
|
||||
# I used AI assistance for:
|
||||
# - [ ] Code generation (e.g., when writing an implementation or fixing a bug)
|
||||
# - [ ] Test/benchmark generation
|
||||
# - [ ] Documentation (including examples)
|
||||
# - [ ] Research and understanding
|
||||
|
||||
if [[ $AUTHOR == *"app/dependabot"* ]]; then
|
||||
echo "Is dependabot, stop"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "Not dependabot!"
|
||||
|
||||
# $BODY must contain one of these four uses.
|
||||
if [[ $BODY != *"Code generation"* &&
|
||||
@@ -54,7 +54,8 @@ jobs:
|
||||
echo "Triggered on AI disclosure missing."
|
||||
exit 0
|
||||
fi
|
||||
echo "It has the disclosure"
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
GH_REPO: ${{ github.repository }}
|
||||
NUMBER: ${{ github.event.pull_request.number }}
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
GH_REPO: ${{ github.repository }}
|
||||
|
||||
@@ -4,6 +4,7 @@ Over time, many people have contributed to Firefly III. Their efforts are not al
|
||||
Please find below all the people who contributed to the Firefly III code. Their names are mentioned in the year of their first contribution.
|
||||
|
||||
## 2026
|
||||
- iaohkut
|
||||
- tasnim0tantawi
|
||||
- Joe Longendyke
|
||||
- Daniel Holøien
|
||||
|
||||
@@ -87,8 +87,7 @@ final class BalanceController extends Controller
|
||||
|
||||
// get journals for entire period:
|
||||
|
||||
$this->collector
|
||||
->setRange($queryParameters['start'], $queryParameters['end'])
|
||||
$this->collector->setRange($queryParameters['start'], $queryParameters['end'])
|
||||
->withAccountInformation()
|
||||
->setXorAccounts($accounts)
|
||||
->setTypes([
|
||||
|
||||
@@ -87,7 +87,7 @@ final class PurgeController extends Controller
|
||||
Rule::whereUserId($user->id)->onlyTrashed()->forceDelete();
|
||||
|
||||
// notes (this will actually purge EVERYBODY's deleted notes)
|
||||
Note::onlyTrashed()->forceDelete();
|
||||
Note::query()->onlyTrashed()->forceDelete();
|
||||
|
||||
// recurring transactions
|
||||
Recurrence::whereUserId($user->id)->onlyTrashed()->forceDelete();
|
||||
|
||||
@@ -158,10 +158,7 @@ final class TagController extends Controller
|
||||
'currency_id' => (string) $foreignCurrencyId,
|
||||
'currency_code' => $journal['foreign_currency_code'],
|
||||
];
|
||||
$response[$foreignKey]['difference'] = bcadd(
|
||||
(string) $response[$foreignKey]['difference'],
|
||||
Steam::positive($journal['foreign_amount'])
|
||||
);
|
||||
$response[$foreignKey]['difference'] = bcadd((string) $response[$foreignKey]['difference'], Steam::positive($journal['foreign_amount']));
|
||||
$response[$foreignKey]['difference_float'] = (float) $response[$foreignKey]['difference'];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -155,10 +155,7 @@ final class TagController extends Controller
|
||||
'currency_id' => (string) $foreignCurrencyId,
|
||||
'currency_code' => $journal['foreign_currency_code'],
|
||||
];
|
||||
$response[$foreignKey]['difference'] = bcadd(
|
||||
(string) $response[$foreignKey]['difference'],
|
||||
Steam::positive($journal['foreign_amount'])
|
||||
);
|
||||
$response[$foreignKey]['difference'] = bcadd((string) $response[$foreignKey]['difference'], Steam::positive($journal['foreign_amount']));
|
||||
$response[$foreignKey]['difference_float'] = (float) $response[$foreignKey]['difference']; // intentional float
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ use FireflyIII\Enums\WebhookResponse;
|
||||
use FireflyIII\Enums\WebhookTrigger;
|
||||
use FireflyIII\Exceptions\FireflyException;
|
||||
use FireflyIII\Support\Binder\EitherConfigKey;
|
||||
use FireflyIII\Support\Facades\FireflyConfig;
|
||||
use FireflyIII\Support\Facades\AppConfiguration;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Illuminate\Validation\ValidationException;
|
||||
@@ -128,7 +128,7 @@ final class ConfigurationController extends Controller
|
||||
$data = $request->getAll();
|
||||
$shortName = str_replace('configuration.', '', $name);
|
||||
|
||||
FireflyConfig::set($shortName, $data['value']);
|
||||
AppConfiguration::set($shortName, $data['value']);
|
||||
|
||||
// get updated config:
|
||||
$newConfig = $this->getDynamicConfiguration();
|
||||
@@ -148,17 +148,17 @@ final class ConfigurationController extends Controller
|
||||
*/
|
||||
private function getDynamicConfiguration(): array
|
||||
{
|
||||
$isDemoSite = FireflyConfig::get('is_demo_site', false);
|
||||
$updateCheck = FireflyConfig::get('permission_update_check', -1);
|
||||
$singleUser = FireflyConfig::get('single_user_mode', true);
|
||||
$lastCheck = FireflyConfig::get('last_update_check', 1);
|
||||
$enableExchangeRates = FireflyConfig::get('enable_exchange_rates', config('cer.enabled'));
|
||||
$useRunningBalance = FireflyConfig::get('use_running_balance', true);
|
||||
$enableExternalMap = FireflyConfig::get('enable_external_map', false);
|
||||
$enableExternalRates = FireflyConfig::get('enable_external_rates', false);
|
||||
$allowWebhooks = FireflyConfig::get('allow_webhooks', false);
|
||||
$enableBatchProcessing = FireflyConfig::get('enable_batch_processing', false);
|
||||
$validUrlProtocols = FireflyConfig::get('valid_url_protocols', config('firefly.valid_url_protocols'));
|
||||
$isDemoSite = AppConfiguration::get('is_demo_site', false);
|
||||
$updateCheck = AppConfiguration::get('permission_update_check', -1);
|
||||
$singleUser = AppConfiguration::get('single_user_mode', true);
|
||||
$lastCheck = AppConfiguration::get('last_update_check', 1);
|
||||
$enableExchangeRates = AppConfiguration::get('enable_exchange_rates', config('cer.enabled'));
|
||||
$useRunningBalance = AppConfiguration::get('use_running_balance', true);
|
||||
$enableExternalMap = AppConfiguration::get('enable_external_map', false);
|
||||
$enableExternalRates = AppConfiguration::get('enable_external_rates', false);
|
||||
$allowWebhooks = AppConfiguration::get('allow_webhooks', false);
|
||||
$enableBatchProcessing = AppConfiguration::get('enable_batch_processing', false);
|
||||
$validUrlProtocols = AppConfiguration::get('valid_url_protocols', config('firefly.valid_url_protocols'));
|
||||
|
||||
return [
|
||||
'is_demo_site' => $isDemoSite?->data,
|
||||
|
||||
@@ -26,7 +26,7 @@ namespace FireflyIII\Api\V1\Controllers\System;
|
||||
|
||||
use FireflyIII\Api\V1\Controllers\Controller;
|
||||
use FireflyIII\Api\V1\Requests\System\CronRequest;
|
||||
use FireflyIII\Support\Facades\FireflyConfig;
|
||||
use FireflyIII\Support\Facades\AppConfiguration;
|
||||
use FireflyIII\Support\Http\Controllers\CronRunner;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
@@ -51,7 +51,7 @@ final class CronController extends Controller
|
||||
$return = [];
|
||||
$return['recurring_transactions'] = $this->runRecurring($config['force'], $config['date']);
|
||||
$return['auto_budgets'] = $this->runAutoBudget($config['force'], $config['date']);
|
||||
if (true === FireflyConfig::get('enable_external_rates', config('cer.download_enabled'))->data) {
|
||||
if (true === AppConfiguration::get('enable_external_rates', config('cer.download_enabled'))->data) {
|
||||
$return['exchange_rates'] = $this->exchangeRatesCronJob($config['force'], $config['date']);
|
||||
}
|
||||
$return['bill_notifications'] = $this->billWarningCronJob($config['force'], $config['date']);
|
||||
|
||||
@@ -30,7 +30,7 @@ use FireflyIII\Models\Webhook;
|
||||
use FireflyIII\Models\WebhookAttempt;
|
||||
use FireflyIII\Models\WebhookMessage;
|
||||
use FireflyIII\Repositories\Webhook\WebhookRepositoryInterface;
|
||||
use FireflyIII\Support\Facades\FireflyConfig;
|
||||
use FireflyIII\Support\Facades\AppConfiguration;
|
||||
use FireflyIII\Transformers\WebhookAttemptTransformer;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Pagination\LengthAwarePaginator;
|
||||
@@ -71,7 +71,7 @@ final class AttemptController extends Controller
|
||||
if ($message->webhook_id !== $webhook->id) {
|
||||
throw new FireflyException('200040: Webhook and webhook message are no match');
|
||||
}
|
||||
if (false === FireflyConfig::get('allow_webhooks', config('firefly.allow_webhooks'))->data) {
|
||||
if (false === AppConfiguration::get('allow_webhooks', config('firefly.allow_webhooks'))->data) {
|
||||
Log::channel('audit')->warning(sprintf(
|
||||
'User lists webhook attempts of webhook #%d and message #%d, but webhooks are DISABLED.',
|
||||
$webhook->id,
|
||||
@@ -119,7 +119,7 @@ final class AttemptController extends Controller
|
||||
throw new FireflyException('200041: Webhook message and webhook attempt are no match');
|
||||
}
|
||||
|
||||
if (false === FireflyConfig::get('allow_webhooks', config('firefly.allow_webhooks'))->data) {
|
||||
if (false === AppConfiguration::get('allow_webhooks', config('firefly.allow_webhooks'))->data) {
|
||||
Log::channel('audit')->warning(sprintf(
|
||||
'User views single webhook attempt #%d of webhook #%d and message #%d, but webhooks are DISABLED',
|
||||
$attempt->id,
|
||||
|
||||
@@ -30,7 +30,7 @@ use FireflyIII\Models\Webhook;
|
||||
use FireflyIII\Models\WebhookAttempt;
|
||||
use FireflyIII\Models\WebhookMessage;
|
||||
use FireflyIII\Repositories\Webhook\WebhookRepositoryInterface;
|
||||
use FireflyIII\Support\Facades\FireflyConfig;
|
||||
use FireflyIII\Support\Facades\AppConfiguration;
|
||||
use FireflyIII\Support\Facades\Preferences;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
@@ -62,7 +62,7 @@ final class DestroyController extends Controller
|
||||
*/
|
||||
public function destroy(Webhook $webhook): JsonResponse
|
||||
{
|
||||
if (false === FireflyConfig::get('allow_webhooks', config('firefly.allow_webhooks'))->data) {
|
||||
if (false === AppConfiguration::get('allow_webhooks', config('firefly.allow_webhooks'))->data) {
|
||||
Log::channel('audit')->warning(sprintf('User tries to destroy webhook #%d. but webhooks are DISABLED.', $webhook->id));
|
||||
|
||||
throw new NotFoundHttpException('Webhooks are not enabled.');
|
||||
@@ -92,7 +92,7 @@ final class DestroyController extends Controller
|
||||
throw new FireflyException('200041: Webhook message and webhook attempt are no match');
|
||||
}
|
||||
|
||||
if (false === FireflyConfig::get('allow_webhooks', config('firefly.allow_webhooks'))->data) {
|
||||
if (false === AppConfiguration::get('allow_webhooks', config('firefly.allow_webhooks'))->data) {
|
||||
Log::channel('audit')->warning(sprintf(
|
||||
'User tries to destroy webhook #%d, message #%d, attempt #%d, but webhooks are DISABLED.',
|
||||
$webhook->id,
|
||||
@@ -125,7 +125,7 @@ final class DestroyController extends Controller
|
||||
throw new FireflyException('200040: Webhook and webhook message are no match');
|
||||
}
|
||||
|
||||
if (false === FireflyConfig::get('allow_webhooks', config('firefly.allow_webhooks'))->data) {
|
||||
if (false === AppConfiguration::get('allow_webhooks', config('firefly.allow_webhooks'))->data) {
|
||||
Log::channel('audit')->warning(sprintf('User tries to destroy webhook #%d, message #%d, but webhooks are DISABLED.', $webhook->id, $message->id));
|
||||
|
||||
throw new NotFoundHttpException('Webhooks are not enabled.');
|
||||
|
||||
@@ -29,7 +29,7 @@ use FireflyIII\Exceptions\FireflyException;
|
||||
use FireflyIII\Models\Webhook;
|
||||
use FireflyIII\Models\WebhookMessage;
|
||||
use FireflyIII\Repositories\Webhook\WebhookRepositoryInterface;
|
||||
use FireflyIII\Support\Facades\FireflyConfig;
|
||||
use FireflyIII\Support\Facades\AppConfiguration;
|
||||
use FireflyIII\Transformers\WebhookMessageTransformer;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Pagination\LengthAwarePaginator;
|
||||
@@ -65,7 +65,7 @@ final class MessageController extends Controller
|
||||
*/
|
||||
public function index(Webhook $webhook): JsonResponse
|
||||
{
|
||||
if (false === FireflyConfig::get('allow_webhooks', config('firefly.allow_webhooks'))->data) {
|
||||
if (false === AppConfiguration::get('allow_webhooks', config('firefly.allow_webhooks'))->data) {
|
||||
Log::channel('audit')->warning(sprintf('User tries to view messages of webhook #%d, but webhooks are DISABLED.', $webhook->id));
|
||||
|
||||
throw new NotFoundHttpException('Webhooks are not enabled.');
|
||||
@@ -105,7 +105,7 @@ final class MessageController extends Controller
|
||||
if ($message->webhook_id !== $webhook->id) {
|
||||
throw new FireflyException('200040: Webhook and webhook message are no match');
|
||||
}
|
||||
if (false === FireflyConfig::get('allow_webhooks', config('firefly.allow_webhooks'))->data) {
|
||||
if (false === AppConfiguration::get('allow_webhooks', config('firefly.allow_webhooks'))->data) {
|
||||
Log::channel('audit')->warning(sprintf('User tries to view message #%d of webhook #%d, but webhooks are DISABLED.', $message->id, $webhook->id));
|
||||
|
||||
throw new NotFoundHttpException('Webhooks are not enabled.');
|
||||
|
||||
@@ -31,7 +31,7 @@ use FireflyIII\Generator\Webhook\MessageGeneratorInterface;
|
||||
use FireflyIII\Models\TransactionGroup;
|
||||
use FireflyIII\Models\Webhook;
|
||||
use FireflyIII\Repositories\Webhook\WebhookRepositoryInterface;
|
||||
use FireflyIII\Support\Facades\FireflyConfig;
|
||||
use FireflyIII\Support\Facades\AppConfiguration;
|
||||
use FireflyIII\Support\JsonApi\Enrichments\WebhookEnrichment;
|
||||
use FireflyIII\Transformers\WebhookTransformer;
|
||||
use FireflyIII\User;
|
||||
@@ -72,7 +72,7 @@ final class ShowController extends Controller
|
||||
*/
|
||||
public function index(): JsonResponse
|
||||
{
|
||||
if (false === FireflyConfig::get('allow_webhooks', config('firefly.allow_webhooks'))->data) {
|
||||
if (false === AppConfiguration::get('allow_webhooks', config('firefly.allow_webhooks'))->data) {
|
||||
Log::channel('audit')->info('User tries to view all webhooks, but webhooks are DISABLED.');
|
||||
|
||||
throw new NotFoundHttpException('Webhooks are not enabled.');
|
||||
@@ -114,7 +114,7 @@ final class ShowController extends Controller
|
||||
*/
|
||||
public function show(Webhook $webhook): JsonResponse
|
||||
{
|
||||
if (false === FireflyConfig::get('allow_webhooks', config('firefly.allow_webhooks'))->data) {
|
||||
if (false === AppConfiguration::get('allow_webhooks', config('firefly.allow_webhooks'))->data) {
|
||||
Log::channel('audit')->info(sprintf('User tries to view webhook #%d, but webhooks are DISABLED.', $webhook->id));
|
||||
|
||||
throw new NotFoundHttpException('Webhooks are not enabled.');
|
||||
@@ -146,7 +146,7 @@ final class ShowController extends Controller
|
||||
*/
|
||||
public function triggerTransaction(Webhook $webhook, TransactionGroup $group): JsonResponse
|
||||
{
|
||||
if (false === FireflyConfig::get('allow_webhooks', config('firefly.allow_webhooks'))->data) {
|
||||
if (false === AppConfiguration::get('allow_webhooks', config('firefly.allow_webhooks'))->data) {
|
||||
Log::channel('audit')->info(sprintf(
|
||||
'User tries to trigger webhook #%d on transaction group #%d, but webhooks are DISABLED.',
|
||||
$webhook->id,
|
||||
|
||||
@@ -27,7 +27,7 @@ namespace FireflyIII\Api\V1\Controllers\Webhook;
|
||||
use FireflyIII\Api\V1\Controllers\Controller;
|
||||
use FireflyIII\Api\V1\Requests\Models\Webhook\CreateRequest;
|
||||
use FireflyIII\Repositories\Webhook\WebhookRepositoryInterface;
|
||||
use FireflyIII\Support\Facades\FireflyConfig;
|
||||
use FireflyIII\Support\Facades\AppConfiguration;
|
||||
use FireflyIII\Support\JsonApi\Enrichments\WebhookEnrichment;
|
||||
use FireflyIII\Transformers\WebhookTransformer;
|
||||
use FireflyIII\User;
|
||||
@@ -63,7 +63,7 @@ final class StoreController extends Controller
|
||||
public function store(CreateRequest $request): JsonResponse
|
||||
{
|
||||
$data = $request->getData();
|
||||
if (false === FireflyConfig::get('allow_webhooks', config('firefly.allow_webhooks'))->data) {
|
||||
if (false === AppConfiguration::get('allow_webhooks', config('firefly.allow_webhooks'))->data) {
|
||||
Log::channel('audit')->info('User tries to store new webhook, but webhooks are DISABLED.', $data);
|
||||
|
||||
throw new NotFoundHttpException('Webhooks are not enabled.');
|
||||
|
||||
@@ -28,7 +28,7 @@ use FireflyIII\Api\V1\Controllers\Controller;
|
||||
use FireflyIII\Jobs\SendWebhookMessage;
|
||||
use FireflyIII\Models\Webhook;
|
||||
use FireflyIII\Repositories\Webhook\WebhookRepositoryInterface;
|
||||
use FireflyIII\Support\Facades\FireflyConfig;
|
||||
use FireflyIII\Support\Facades\AppConfiguration;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
|
||||
@@ -57,7 +57,7 @@ final class SubmitController extends Controller
|
||||
*/
|
||||
public function submit(Webhook $webhook): JsonResponse
|
||||
{
|
||||
if (false === FireflyConfig::get('allow_webhooks', config('firefly.allow_webhooks'))->data) {
|
||||
if (false === AppConfiguration::get('allow_webhooks', config('firefly.allow_webhooks'))->data) {
|
||||
Log::channel('audit')->info(sprintf('User tries to submit webhook #%d, but webhooks are DISABLED.', $webhook->id));
|
||||
|
||||
throw new NotFoundHttpException('Webhooks are not enabled.');
|
||||
|
||||
@@ -28,7 +28,7 @@ use FireflyIII\Api\V1\Controllers\Controller;
|
||||
use FireflyIII\Api\V1\Requests\Models\Webhook\UpdateRequest;
|
||||
use FireflyIII\Models\Webhook;
|
||||
use FireflyIII\Repositories\Webhook\WebhookRepositoryInterface;
|
||||
use FireflyIII\Support\Facades\FireflyConfig;
|
||||
use FireflyIII\Support\Facades\AppConfiguration;
|
||||
use FireflyIII\Support\JsonApi\Enrichments\WebhookEnrichment;
|
||||
use FireflyIII\Transformers\WebhookTransformer;
|
||||
use FireflyIII\User;
|
||||
@@ -62,7 +62,7 @@ final class UpdateController extends Controller
|
||||
public function update(Webhook $webhook, UpdateRequest $request): JsonResponse
|
||||
{
|
||||
$data = $request->getData();
|
||||
if (false === FireflyConfig::get('allow_webhooks', config('firefly.allow_webhooks'))->data) {
|
||||
if (false === AppConfiguration::get('allow_webhooks', config('firefly.allow_webhooks'))->data) {
|
||||
Log::channel('audit')->info(sprintf('User tries to update webhook #%d, but webhooks are DISABLED.', $webhook->id), $data);
|
||||
|
||||
throw new NotFoundHttpException('Webhooks are not enabled.');
|
||||
|
||||
@@ -59,6 +59,6 @@ class AutocompleteRequest extends FormRequest
|
||||
|
||||
public function rules(): array
|
||||
{
|
||||
return ['date' => 'date|after:1970-01-02|before:2038-01-17'];
|
||||
return ['date' => ['date', 'after:1970-01-02', 'before:2038-01-17']];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,11 +60,11 @@ class ChartRequest extends FormRequest
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'start' => 'required|date|after:1970-01-02|before:2038-01-17|before_or_equal:end',
|
||||
'end' => 'required|date|after:1970-01-02|before:2038-01-17|after_or_equal:start',
|
||||
'start' => ['required', 'date', 'after:1970-01-02', 'before:2038-01-17', 'before_or_equal:end'],
|
||||
'end' => ['required', 'date', 'after:1970-01-02', 'before:2038-01-17', 'after_or_equal:start'],
|
||||
'preselected' => sprintf('nullable|in:%s', implode(',', config('firefly.preselected_accounts'))),
|
||||
'period' => sprintf('nullable|in:%s', implode(',', config('firefly.valid_view_ranges'))),
|
||||
'accounts' => 'nullable|array',
|
||||
'accounts' => ['nullable', 'array'],
|
||||
'accounts.*' => 'exists:accounts,id',
|
||||
];
|
||||
}
|
||||
|
||||
@@ -46,14 +46,11 @@ class MoveTransactionsRequest extends FormRequest
|
||||
return ['original_account' => $this->convertInteger('original_account'), 'destination_account' => $this->convertInteger('destination_account')];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string[]
|
||||
*/
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'original_account' => 'required|different:destination_account|belongsToUser:accounts,id',
|
||||
'destination_account' => 'required|different:original_account|belongsToUser:accounts,id',
|
||||
'original_account' => ['required', 'different:destination_account', 'belongsToUser:accounts,id'],
|
||||
'destination_account' => ['required', 'different:original_account', 'belongsToUser:accounts,id'],
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@@ -72,6 +72,6 @@ class ExportRequest extends FormRequest
|
||||
*/
|
||||
public function rules(): array
|
||||
{
|
||||
return ['type' => 'in:csv', 'accounts' => 'min:1|max:32768', 'start' => 'date|before:end', 'end' => 'date|after:start'];
|
||||
return ['type' => 'in:csv', 'accounts' => ['min:1', 'max:32768'], 'start' => ['date', 'before:end'], 'end' => ['date', 'after:start']];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -55,6 +55,6 @@ class SameDateRequest extends FormRequest
|
||||
*/
|
||||
public function rules(): array
|
||||
{
|
||||
return ['start' => 'required|date', 'end' => 'required|date|after_or_equal:start'];
|
||||
return ['start' => ['required', 'date'], 'end' => ['required', 'date', 'after_or_equal:start']];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -56,6 +56,6 @@ class SingleDateRequest extends FormRequest
|
||||
*/
|
||||
public function rules(): array
|
||||
{
|
||||
return ['date' => 'required|date|after:1970-01-02|before:2038-01-17'];
|
||||
return ['date' => ['required', 'date', 'after:1970-01-02', 'before:2038-01-17']];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -169,7 +169,7 @@ class GenericRequest extends FormRequest
|
||||
$this->bills = new Collection();
|
||||
$this->tags = new Collection();
|
||||
|
||||
return ['start' => 'required|date', 'end' => 'required|date|after_or_equal:start'];
|
||||
return ['start' => ['required', 'date'], 'end' => ['required', 'date', 'after_or_equal:start']];
|
||||
}
|
||||
|
||||
private function parseAccounts(): void
|
||||
|
||||
@@ -99,29 +99,29 @@ class StoreRequest extends FormRequest
|
||||
$ccPaymentTypes = implode(',', array_keys(config('firefly.ccTypes')));
|
||||
$type = $this->convertString('type');
|
||||
$rules = [
|
||||
'name' => 'required|max:1024|min:1|uniqueAccountForUser',
|
||||
'name' => ['required', 'max:1024', 'min:1', 'uniqueAccountForUser'],
|
||||
'type' => sprintf('required|max:1024|min:1|in:%s', $types),
|
||||
'iban' => ['iban', 'nullable', new UniqueIban(null, $type)],
|
||||
'bic' => 'bic|nullable',
|
||||
'bic' => ['bic', 'nullable'],
|
||||
'account_number' => ['min:1', 'max:255', 'nullable', new UniqueAccountNumber(null, $type)],
|
||||
'opening_balance' => 'numeric|required_with:opening_balance_date|nullable',
|
||||
'opening_balance_date' => 'date|required_with:opening_balance|nullable',
|
||||
'virtual_balance' => 'numeric|nullable',
|
||||
'order' => 'numeric|nullable',
|
||||
'currency_id' => 'numeric|exists:transaction_currencies,id',
|
||||
'currency_code' => 'min:3|max:3|exists:transaction_currencies,code',
|
||||
'opening_balance' => ['numeric', 'required_with:opening_balance_date', 'nullable'],
|
||||
'opening_balance_date' => ['date', 'required_with:opening_balance', 'nullable'],
|
||||
'virtual_balance' => ['numeric', 'nullable'],
|
||||
'order' => ['numeric', 'nullable'],
|
||||
'currency_id' => ['numeric', 'exists:transaction_currencies,id'],
|
||||
'currency_code' => ['min:3', 'max:3', 'exists:transaction_currencies,code'],
|
||||
'active' => [new IsBoolean()],
|
||||
'include_net_worth' => [new IsBoolean()],
|
||||
'account_role' => sprintf('nullable|in:%s|required_if:type,asset', $accountRoles),
|
||||
'credit_card_type' => sprintf('nullable|in:%s|required_if:account_role,ccAsset', $ccPaymentTypes),
|
||||
'monthly_payment_date' => 'nullable|date|required_if:account_role,ccAsset|required_if:credit_card_type,monthlyFull',
|
||||
'liability_type' => 'nullable|required_if:type,liability|required_if:type,liabilities|in:loan,debt,mortgage',
|
||||
'monthly_payment_date' => ['nullable', 'date', 'required_if:account_role,ccAsset', 'required_if:credit_card_type,monthlyFull'],
|
||||
'liability_type' => ['nullable', 'required_if:type,liability', 'required_if:type,liabilities', 'in:loan,debt,mortgage'],
|
||||
'liability_amount' => ['required_with:liability_start_date', new IsValidPositiveAmount()],
|
||||
'liability_start_date' => 'required_with:liability_amount|date',
|
||||
'liability_direction' => 'nullable|required_if:type,liability|required_if:type,liabilities|in:credit,debit',
|
||||
'interest' => 'min:0|max:100|numeric',
|
||||
'liability_start_date' => ['required_with:liability_amount', 'date'],
|
||||
'liability_direction' => ['nullable', 'required_if:type,liability', 'required_if:type,liabilities', 'in:credit,debit'],
|
||||
'interest' => ['min:0', 'max:100', 'numeric'],
|
||||
'interest_period' => sprintf('nullable|in:%s', implode(',', config('firefly.interest_periods'))),
|
||||
'notes' => 'min:0|max:32768',
|
||||
'notes' => ['min:0', 'max:32768'],
|
||||
];
|
||||
|
||||
return Location::requestRules($rules);
|
||||
|
||||
@@ -95,24 +95,24 @@ class UpdateRequest extends FormRequest
|
||||
'name' => sprintf('min:1|max:1024|uniqueAccountForUser:%d', $account->id),
|
||||
'type' => sprintf('in:%s', $types),
|
||||
'iban' => ['iban', 'nullable', new UniqueIban($account, $this->convertString('type'))],
|
||||
'bic' => 'bic|nullable',
|
||||
'bic' => ['bic', 'nullable'],
|
||||
'account_number' => ['min:1', 'max:255', 'nullable', new UniqueAccountNumber($account, $this->convertString('type'))],
|
||||
'opening_balance' => 'numeric|required_with:opening_balance_date|nullable',
|
||||
'opening_balance_date' => 'date|required_with:opening_balance|nullable',
|
||||
'virtual_balance' => 'numeric|nullable',
|
||||
'order' => 'numeric|nullable',
|
||||
'currency_id' => 'numeric|exists:transaction_currencies,id',
|
||||
'currency_code' => 'min:3|max:51|exists:transaction_currencies,code',
|
||||
'opening_balance' => ['numeric', 'required_with:opening_balance_date', 'nullable'],
|
||||
'opening_balance_date' => ['date', 'required_with:opening_balance', 'nullable'],
|
||||
'virtual_balance' => ['numeric', 'nullable'],
|
||||
'order' => ['numeric', 'nullable'],
|
||||
'currency_id' => ['numeric', 'exists:transaction_currencies,id'],
|
||||
'currency_code' => ['min:3', 'max:51', 'exists:transaction_currencies,code'],
|
||||
'active' => [new IsBoolean()],
|
||||
'include_net_worth' => [new IsBoolean()],
|
||||
'account_role' => sprintf('in:%s|nullable|required_if:type,asset', $accountRoles),
|
||||
'credit_card_type' => sprintf('in:%s|nullable|required_if:account_role,ccAsset', $ccPaymentTypes),
|
||||
'monthly_payment_date' => 'date|nullable|required_if:account_role,ccAsset|required_if:credit_card_type,monthlyFull',
|
||||
'liability_type' => 'required_if:type,liability|in:loan,debt,mortgage',
|
||||
'liability_direction' => 'required_if:type,liability|in:credit,debit',
|
||||
'interest' => 'required_if:type,liability|min:0|max:100|numeric',
|
||||
'interest_period' => 'required_if:type,liability|in:daily,monthly,yearly',
|
||||
'notes' => 'min:0|max:32768',
|
||||
'monthly_payment_date' => ['date', 'nullable', 'required_if:account_role,ccAsset', 'required_if:credit_card_type,monthlyFull'],
|
||||
'liability_type' => ['required_if:type,liability', 'in:loan,debt,mortgage'],
|
||||
'liability_direction' => ['required_if:type,liability', 'in:credit,debit'],
|
||||
'interest' => ['required_if:type,liability', 'min:0', 'max:100', 'numeric'],
|
||||
'interest_period' => ['required_if:type,liability', 'in:daily,monthly,yearly'],
|
||||
'notes' => ['min:0', 'max:32768'],
|
||||
];
|
||||
|
||||
return Location::requestRules($rules);
|
||||
|
||||
@@ -64,9 +64,9 @@ class StoreRequest extends FormRequest
|
||||
$model = $this->convertString('attachable_type');
|
||||
|
||||
return [
|
||||
'filename' => 'required|min:1|max:255',
|
||||
'filename' => ['required', 'min:1', 'max:255'],
|
||||
'title' => ['min:1', 'max:255'],
|
||||
'notes' => 'min:1|max:32768',
|
||||
'notes' => ['min:1', 'max:32768'],
|
||||
'attachable_type' => sprintf('required|in:%s', $models),
|
||||
'attachable_id' => ['required', 'numeric', new IsValidAttachmentModel($model)],
|
||||
];
|
||||
|
||||
@@ -68,7 +68,7 @@ class UpdateRequest extends FormRequest
|
||||
return [
|
||||
'filename' => ['min:1', 'max:255'],
|
||||
'title' => ['min:1', 'max:255'],
|
||||
'notes' => 'min:1|max:32768',
|
||||
'notes' => ['min:1', 'max:32768'],
|
||||
'attachable_type' => sprintf('in:%s', $models),
|
||||
'attachable_id' => ['numeric', new IsValidAttachmentModel($model)],
|
||||
];
|
||||
|
||||
@@ -65,11 +65,11 @@ class Request extends FormRequest
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'currency_id' => 'numeric|exists:transaction_currencies,id',
|
||||
'currency_code' => 'min:3|max:51|exists:transaction_currencies,code',
|
||||
'currency_id' => ['numeric', 'exists:transaction_currencies,id'],
|
||||
'currency_code' => ['min:3', 'max:51', 'exists:transaction_currencies,code'],
|
||||
'amount' => ['nullable', new IsValidPositiveAmount()],
|
||||
'start' => 'date|after:1970-01-02|before:2038-01-17',
|
||||
'end' => 'date|after:1970-01-02|before:2038-01-17',
|
||||
'start' => ['date', 'after:1970-01-02', 'before:2038-01-17'],
|
||||
'end' => ['date', 'after:1970-01-02', 'before:2038-01-17'],
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@@ -77,18 +77,18 @@ class StoreRequest extends FormRequest
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'name' => 'min:1|max:255|uniqueObjectForUser:bills,name',
|
||||
'name' => ['min:1', 'max:255', 'uniqueObjectForUser:bills,name'],
|
||||
'amount_min' => ['required', new IsValidPositiveAmount()],
|
||||
'amount_max' => ['required', new IsValidPositiveAmount()],
|
||||
'currency_id' => 'numeric|exists:transaction_currencies,id',
|
||||
'currency_code' => 'min:3|max:51|exists:transaction_currencies,code',
|
||||
'date' => 'date|required|after:1970-01-02|before:2038-01-17',
|
||||
'end_date' => 'nullable|date|after:date|after:1970-01-02|before:2038-01-17',
|
||||
'extension_date' => 'nullable|date|after:date|after:1970-01-02|before:2038-01-17',
|
||||
'repeat_freq' => 'in:weekly,monthly,quarterly,half-year,yearly|required',
|
||||
'skip' => 'min:0|max:31|numeric',
|
||||
'currency_id' => ['numeric', 'exists:transaction_currencies,id'],
|
||||
'currency_code' => ['min:3', 'max:51', 'exists:transaction_currencies,code'],
|
||||
'date' => ['date', 'required', 'after:1970-01-02', 'before:2038-01-17'],
|
||||
'end_date' => ['nullable', 'date', 'after:date', 'after:1970-01-02', 'before:2038-01-17'],
|
||||
'extension_date' => ['nullable', 'date', 'after:date', 'after:1970-01-02', 'before:2038-01-17'],
|
||||
'repeat_freq' => ['in:weekly,monthly,quarterly,half-year,yearly', 'required'],
|
||||
'skip' => ['min:0', 'max:31', 'numeric'],
|
||||
'active' => [new IsBoolean()],
|
||||
'notes' => 'nullable|min:1|max:32768',
|
||||
'notes' => ['nullable', 'min:1', 'max:32768'],
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@@ -81,15 +81,15 @@ class UpdateRequest extends FormRequest
|
||||
'name' => sprintf('min:1|max:255|uniqueObjectForUser:bills,name,%d', $bill->id),
|
||||
'amount_min' => ['nullable', new IsValidPositiveAmount()],
|
||||
'amount_max' => ['nullable', new IsValidPositiveAmount()],
|
||||
'currency_id' => 'numeric|exists:transaction_currencies,id',
|
||||
'currency_code' => 'min:3|max:51|exists:transaction_currencies,code',
|
||||
'date' => 'date|after:1970-01-02|before:2038-01-17',
|
||||
'end_date' => 'date|after:date|after:1970-01-02|before:2038-01-17',
|
||||
'extension_date' => 'date|after:date|after:1970-01-02|before:2038-01-17',
|
||||
'currency_id' => ['numeric', 'exists:transaction_currencies,id'],
|
||||
'currency_code' => ['min:3', 'max:51', 'exists:transaction_currencies,code'],
|
||||
'date' => ['date', 'after:1970-01-02', 'before:2038-01-17'],
|
||||
'end_date' => ['date', 'after:date', 'after:1970-01-02', 'before:2038-01-17'],
|
||||
'extension_date' => ['date', 'after:date', 'after:1970-01-02', 'before:2038-01-17'],
|
||||
'repeat_freq' => 'in:weekly,monthly,quarterly,half-year,yearly',
|
||||
'skip' => 'min:0|max:31|numeric',
|
||||
'skip' => ['min:0', 'max:31', 'numeric'],
|
||||
'active' => [new IsBoolean()],
|
||||
'notes' => 'min:1|max:32768',
|
||||
'notes' => ['min:1', 'max:32768'],
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@@ -75,11 +75,11 @@ class StoreRequest extends FormRequest
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'name' => 'required|min:1|max:255|uniqueObjectForUser:budgets,name',
|
||||
'name' => ['required', 'min:1', 'max:255', 'uniqueObjectForUser:budgets,name'],
|
||||
'active' => [new IsBoolean()],
|
||||
'currency_id' => 'exists:transaction_currencies,id',
|
||||
'currency_code' => 'exists:transaction_currencies,code',
|
||||
'notes' => 'nullable|min:1|max:32768',
|
||||
'notes' => ['nullable', 'min:1', 'max:32768'],
|
||||
// auto budget info
|
||||
'auto_budget_type' => 'in:reset,rollover,adjusted,none',
|
||||
'auto_budget_amount' => [
|
||||
@@ -88,7 +88,12 @@ class StoreRequest extends FormRequest
|
||||
'required_if:auto_budget_type,adjusted',
|
||||
new IsValidPositiveAmount(),
|
||||
],
|
||||
'auto_budget_period' => 'in:daily,weekly,monthly,quarterly,half_year,yearly|required_if:auto_budget_type,reset|required_if:auto_budget_type,rollover|required_if:auto_budget_type,adjusted',
|
||||
'auto_budget_period' => [
|
||||
'in:daily,weekly,monthly,quarterly,half_year,yearly',
|
||||
'required_if:auto_budget_type,reset',
|
||||
'required_if:auto_budget_type,rollover',
|
||||
'required_if:auto_budget_type,adjusted',
|
||||
],
|
||||
|
||||
// webhooks
|
||||
'fire_webhooks' => [new IsBoolean()],
|
||||
|
||||
@@ -85,7 +85,7 @@ class UpdateRequest extends FormRequest
|
||||
return [
|
||||
'name' => sprintf('min:1|max:100|uniqueObjectForUser:budgets,name,%d', $budget->id),
|
||||
'active' => [new IsBoolean()],
|
||||
'notes' => 'nullable|min:1|max:32768',
|
||||
'notes' => ['nullable', 'min:1', 'max:32768'],
|
||||
'auto_budget_type' => 'in:reset,rollover,adjusted,none',
|
||||
'auto_budget_currency_id' => 'exists:transaction_currencies,id',
|
||||
'auto_budget_currency_code' => 'exists:transaction_currencies,code',
|
||||
|
||||
@@ -71,12 +71,12 @@ class StoreRequest extends FormRequest
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'start' => 'required|before:end|date',
|
||||
'end' => 'required|after:start|date',
|
||||
'start' => ['required', 'before:end', 'date'],
|
||||
'end' => ['required', 'after:start', 'date'],
|
||||
'amount' => ['required', new IsValidPositiveAmount()],
|
||||
'currency_id' => 'numeric|exists:transaction_currencies,id',
|
||||
'currency_code' => 'min:3|max:51|exists:transaction_currencies,code',
|
||||
'notes' => 'nullable|min:0|max:32768',
|
||||
'currency_id' => ['numeric', 'exists:transaction_currencies,id'],
|
||||
'currency_code' => ['min:3', 'max:51', 'exists:transaction_currencies,code'],
|
||||
'notes' => ['nullable', 'min:0', 'max:32768'],
|
||||
|
||||
// webhooks
|
||||
'fire_webhooks' => [new IsBoolean()],
|
||||
|
||||
@@ -73,12 +73,12 @@ class UpdateRequest extends FormRequest
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'start' => 'date|after:1970-01-02|before:2038-01-17',
|
||||
'end' => 'date|after:1970-01-02|before:2038-01-17',
|
||||
'start' => ['date', 'after:1970-01-02', 'before:2038-01-17'],
|
||||
'end' => ['date', 'after:1970-01-02', 'before:2038-01-17'],
|
||||
'amount' => ['nullable', new IsValidPositiveAmount()],
|
||||
'currency_id' => 'numeric|exists:transaction_currencies,id',
|
||||
'currency_code' => 'min:3|max:51|exists:transaction_currencies,code',
|
||||
'notes' => 'nullable|min:0|max:32768',
|
||||
'currency_id' => ['numeric', 'exists:transaction_currencies,id'],
|
||||
'currency_code' => ['min:3', 'max:51', 'exists:transaction_currencies,code'],
|
||||
'notes' => ['nullable', 'min:0', 'max:32768'],
|
||||
|
||||
// webhooks
|
||||
'fire_webhooks' => [new IsBoolean()],
|
||||
|
||||
@@ -51,6 +51,6 @@ class StoreRequest extends FormRequest
|
||||
*/
|
||||
public function rules(): array
|
||||
{
|
||||
return ['name' => 'required|min:1|max:100|uniqueObjectForUser:categories,name'];
|
||||
return ['name' => ['required', 'min:1', 'max:100', 'uniqueObjectForUser:categories,name']];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,7 +48,7 @@ class StoreByCurrenciesRequest extends FormRequest
|
||||
*/
|
||||
public function rules(): array
|
||||
{
|
||||
return ['*' => 'required|numeric|min:0.0000000001'];
|
||||
return ['*' => ['required', 'numeric', 'min:0.0000000001']];
|
||||
}
|
||||
|
||||
public function withValidator(Validator $validator): void
|
||||
|
||||
@@ -54,12 +54,14 @@ class StoreByDateRequest extends FormRequest
|
||||
|
||||
/**
|
||||
* The rules that the incoming request must be matched against.
|
||||
*
|
||||
* @return array<string, string>
|
||||
*/
|
||||
public function rules(): array
|
||||
{
|
||||
return ['from' => 'required|exists:transaction_currencies,code', 'rates' => 'required|array', 'rates.*' => 'required|numeric|min:0.0000000001'];
|
||||
return [
|
||||
'from' => ['required', 'exists:transaction_currencies,code'],
|
||||
'rates' => ['required', 'array'],
|
||||
'rates.*' => ['required', 'numeric', 'min:0.0000000001'],
|
||||
];
|
||||
}
|
||||
|
||||
public function withValidator(Validator $validator): void
|
||||
|
||||
@@ -64,10 +64,10 @@ class StoreRequest extends FormRequest
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'date' => 'required|date|after:1970-01-02|before:2038-01-17',
|
||||
'rate' => 'required|numeric|gt:0',
|
||||
'from' => 'required|exists:transaction_currencies,code',
|
||||
'to' => 'required|exists:transaction_currencies,code',
|
||||
'date' => ['required', 'date', 'after:1970-01-02', 'before:2038-01-17'],
|
||||
'rate' => ['required', 'numeric', 'gt:0'],
|
||||
'from' => ['required', 'exists:transaction_currencies,code'],
|
||||
'to' => ['required', 'exists:transaction_currencies,code'],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -52,10 +52,10 @@ class UpdateRequest extends FormRequest
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'date' => 'date|after:1970-01-02|before:2038-01-17',
|
||||
'rate' => 'required|numeric|gt:0',
|
||||
'from' => 'nullable|exists:transaction_currencies,code',
|
||||
'to' => 'nullable|exists:transaction_currencies,code',
|
||||
'date' => ['date', 'after:1970-01-02', 'before:2038-01-17'],
|
||||
'rate' => ['required', 'numeric', 'gt:0'],
|
||||
'from' => ['nullable', 'exists:transaction_currencies,code'],
|
||||
'to' => ['nullable', 'exists:transaction_currencies,code'],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -71,18 +71,18 @@ class StoreRequest extends FormRequest
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'name' => 'required|min:1|max:255|uniquePiggyBankForUser',
|
||||
'name' => ['required', 'min:1', 'max:255', 'uniquePiggyBankForUser'],
|
||||
'accounts' => 'required',
|
||||
'accounts.*' => 'array|required',
|
||||
'accounts.*.account_id' => 'required|numeric|belongsToUser:accounts,id',
|
||||
'accounts.*' => ['array', 'required'],
|
||||
'accounts.*.account_id' => ['required', 'numeric', 'belongsToUser:accounts,id'],
|
||||
'accounts.*.current_amount' => ['numeric', new IsValidZeroOrMoreAmount()],
|
||||
'object_group_id' => 'numeric|belongsToUser:object_groups,id',
|
||||
'object_group_id' => ['numeric', 'belongsToUser:object_groups,id'],
|
||||
'object_group_title' => ['min:1', 'max:255'],
|
||||
'target_amount' => ['required', new IsValidZeroOrMoreAmount()],
|
||||
'start_date' => 'required|date|after:1970-01-01|before:2038-01-17',
|
||||
'transaction_currency_id' => 'exists:transaction_currencies,id|required_without:transaction_currency_code',
|
||||
'transaction_currency_code' => 'exists:transaction_currencies,code|required_without:transaction_currency_id',
|
||||
'target_date' => 'date|nullable|after:start_date',
|
||||
'start_date' => ['required', 'date', 'after:1970-01-01', 'before:2038-01-17'],
|
||||
'transaction_currency_id' => ['exists:transaction_currencies,id', 'required_without:transaction_currency_code'],
|
||||
'transaction_currency_code' => ['exists:transaction_currencies,code', 'required_without:transaction_currency_id'],
|
||||
'target_date' => ['date', 'nullable', 'after:start_date'],
|
||||
'notes' => 'max:65000',
|
||||
];
|
||||
}
|
||||
|
||||
@@ -79,17 +79,17 @@ class UpdateRequest extends FormRequest
|
||||
'name' => 'min:1|max:255|uniquePiggyBankForUser:'.$piggyBank->id,
|
||||
'current_amount' => ['nullable', new LessThanPiggyTarget(), new IsValidPositiveAmount()],
|
||||
'target_amount' => ['nullable', new IsValidZeroOrMoreAmount()],
|
||||
'start_date' => 'date|nullable',
|
||||
'target_date' => 'date|nullable|after:start_date',
|
||||
'start_date' => ['date', 'nullable'],
|
||||
'target_date' => ['date', 'nullable', 'after:start_date'],
|
||||
'notes' => 'max:65000',
|
||||
'accounts' => 'array',
|
||||
'accounts.*' => 'array',
|
||||
'accounts.*.account_id' => ['required', 'numeric', 'belongsToUser:accounts,id'],
|
||||
'accounts.*.current_amount' => ['numeric', 'nullable', new IsValidZeroOrMoreAmount(true), new IsEnoughInAccounts($piggyBank, $this->getAll())],
|
||||
'object_group_id' => 'numeric|belongsToUser:object_groups,id',
|
||||
'object_group_id' => ['numeric', 'belongsToUser:object_groups,id'],
|
||||
'object_group_title' => ['min:1', 'max:255'],
|
||||
'transaction_currency_id' => 'exists:transaction_currencies,id|nullable',
|
||||
'transaction_currency_code' => 'exists:transaction_currencies,code|nullable',
|
||||
'transaction_currency_id' => ['exists:transaction_currencies,id', 'nullable'],
|
||||
'transaction_currency_code' => ['exists:transaction_currencies,code', 'nullable'],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -78,40 +78,40 @@ class StoreRequest extends FormRequest
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'type' => 'required|in:withdrawal,transfer,deposit',
|
||||
'title' => 'required|min:1|max:255|uniqueObjectForUser:recurrences,title',
|
||||
'description' => 'min:1|max:32768',
|
||||
'first_date' => 'required|date',
|
||||
'type' => ['required', 'in:withdrawal,transfer,deposit'],
|
||||
'title' => ['required', 'min:1', 'max:255', 'uniqueObjectForUser:recurrences,title'],
|
||||
'description' => ['min:1', 'max:32768'],
|
||||
'first_date' => ['required', 'date'],
|
||||
'apply_rules' => [new IsBoolean()],
|
||||
'active' => [new IsBoolean()],
|
||||
'repeat_until' => 'nullable|date',
|
||||
'nr_of_repetitions' => 'nullable|numeric|min:1|max:31',
|
||||
'repeat_until' => ['nullable', 'date'],
|
||||
'nr_of_repetitions' => ['nullable', 'numeric', 'min:1', 'max:255'],
|
||||
|
||||
'repetitions.*.type' => 'required|in:daily,weekly,ndom,monthly,yearly',
|
||||
'repetitions.*.moment' => 'min:0|max:10',
|
||||
'repetitions.*.skip' => 'nullable|numeric|min:0|max:31',
|
||||
'repetitions.*.weekend' => 'numeric|min:1|max:4',
|
||||
'repetitions.*.type' => ['required', 'in:daily,weekly,ndom,monthly,yearly'],
|
||||
'repetitions.*.moment' => ['min:0', 'max:10'],
|
||||
'repetitions.*.skip' => ['nullable', 'numeric', 'min:0', 'max:31'],
|
||||
'repetitions.*.weekend' => ['numeric', 'min:1', 'max:4'],
|
||||
|
||||
'transactions.*.description' => 'required|min:1|max:255',
|
||||
'transactions.*.description' => ['required', 'min:1', 'max:255'],
|
||||
'transactions.*.amount' => ['required', new IsValidPositiveAmount()],
|
||||
'transactions.*.foreign_amount' => ['nullable', new IsValidPositiveAmount()],
|
||||
'transactions.*.currency_id' => 'nullable|numeric|exists:transaction_currencies,id',
|
||||
'transactions.*.currency_code' => 'nullable|min:3|max:51|exists:transaction_currencies,code',
|
||||
'transactions.*.foreign_currency_id' => 'nullable|numeric|exists:transaction_currencies,id',
|
||||
'transactions.*.foreign_currency_code' => 'nullable|min:3|max:51|exists:transaction_currencies,code',
|
||||
'transactions.*.currency_id' => ['nullable', 'numeric', 'exists:transaction_currencies,id'],
|
||||
'transactions.*.currency_code' => ['nullable', 'min:3', 'max:51', 'exists:transaction_currencies,code'],
|
||||
'transactions.*.foreign_currency_id' => ['nullable', 'numeric', 'exists:transaction_currencies,id'],
|
||||
'transactions.*.foreign_currency_code' => ['nullable', 'min:3', 'max:51', 'exists:transaction_currencies,code'],
|
||||
'transactions.*.source_id' => ['numeric', 'nullable', new BelongsUser()],
|
||||
'transactions.*.source_name' => 'min:1|max:255|nullable',
|
||||
'transactions.*.source_name' => ['min:1', 'max:255', 'nullable'],
|
||||
'transactions.*.destination_id' => ['numeric', 'nullable', new BelongsUser()],
|
||||
'transactions.*.destination_name' => 'min:1|max:255|nullable',
|
||||
'transactions.*.destination_name' => ['min:1', 'max:255', 'nullable'],
|
||||
|
||||
// new and updated fields:
|
||||
'transactions.*.budget_id' => ['nullable', 'mustExist:budgets,id', new BelongsUser()],
|
||||
'transactions.*.budget_name' => ['min:1', 'max:255', 'nullable', new BelongsUser()],
|
||||
'transactions.*.category_id' => ['nullable', 'mustExist:categories,id', new BelongsUser()],
|
||||
'transactions.*.category_name' => 'min:1|max:255|nullable',
|
||||
'transactions.*.category_name' => ['min:1', 'max:255', 'nullable'],
|
||||
'transactions.*.piggy_bank_id' => ['nullable', 'numeric', 'mustExist:piggy_banks,id', new BelongsUser()],
|
||||
'transactions.*.piggy_bank_name' => ['min:1', 'max:255', 'nullable', new BelongsUser()],
|
||||
'transactions.*.tags' => 'nullable|min:1|max:255',
|
||||
'transactions.*.tags' => ['nullable', 'min:1', 'max:255'],
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@@ -89,38 +89,38 @@ class UpdateRequest extends FormRequest
|
||||
|
||||
return [
|
||||
'title' => sprintf('min:1|max:255|uniqueObjectForUser:recurrences,title,%d', $recurrence->id),
|
||||
'description' => 'min:1|max:32768',
|
||||
'first_date' => 'date|after:1970-01-02|before:2038-01-17',
|
||||
'description' => ['min:1', 'max:32768'],
|
||||
'first_date' => ['date', 'after:1970-01-02', 'before:2038-01-17'],
|
||||
'apply_rules' => [new IsBoolean()],
|
||||
'active' => [new IsBoolean()],
|
||||
'repeat_until' => 'nullable|date',
|
||||
'nr_of_repetitions' => 'nullable|numeric|min:1|max:31',
|
||||
'repeat_until' => ['nullable', 'date'],
|
||||
'nr_of_repetitions' => ['nullable', 'numeric', 'min:1', 'max:255'],
|
||||
|
||||
'repetitions.*.type' => 'in:daily,weekly,ndom,monthly,yearly',
|
||||
'repetitions.*.moment' => 'min:0|max:10|numeric',
|
||||
'repetitions.*.skip' => 'nullable|numeric|min:0|max:31',
|
||||
'repetitions.*.weekend' => 'nullable|numeric|min:1|max:4',
|
||||
'repetitions.*.moment' => ['min:0', 'max:10', 'numeric'],
|
||||
'repetitions.*.skip' => ['nullable', 'numeric', 'min:0', 'max:31'],
|
||||
'repetitions.*.weekend' => ['nullable', 'numeric', 'min:1', 'max:4'],
|
||||
|
||||
'transactions.*.description' => ['min:1', 'max:255'],
|
||||
'transactions.*.amount' => [new IsValidPositiveAmount()],
|
||||
'transactions.*.foreign_amount' => ['nullable', new IsValidPositiveAmount()],
|
||||
'transactions.*.currency_id' => 'nullable|numeric|exists:transaction_currencies,id',
|
||||
'transactions.*.currency_code' => 'nullable|min:3|max:51|exists:transaction_currencies,code',
|
||||
'transactions.*.foreign_currency_id' => 'nullable|numeric|exists:transaction_currencies,id',
|
||||
'transactions.*.foreign_currency_code' => 'nullable|min:3|max:51|exists:transaction_currencies,code',
|
||||
'transactions.*.currency_id' => ['nullable', 'numeric', 'exists:transaction_currencies,id'],
|
||||
'transactions.*.currency_code' => ['nullable', 'min:3', 'max:51', 'exists:transaction_currencies,code'],
|
||||
'transactions.*.foreign_currency_id' => ['nullable', 'numeric', 'exists:transaction_currencies,id'],
|
||||
'transactions.*.foreign_currency_code' => ['nullable', 'min:3', 'max:51', 'exists:transaction_currencies,code'],
|
||||
'transactions.*.source_id' => ['numeric', 'nullable', new BelongsUser()],
|
||||
'transactions.*.source_name' => 'min:1|max:255|nullable',
|
||||
'transactions.*.source_name' => ['min:1', 'max:255', 'nullable'],
|
||||
'transactions.*.destination_id' => ['numeric', 'nullable', new BelongsUser()],
|
||||
'transactions.*.destination_name' => 'min:1|max:255|nullable',
|
||||
'transactions.*.destination_name' => ['min:1', 'max:255', 'nullable'],
|
||||
|
||||
// new and updated fields:
|
||||
'transactions.*.budget_id' => ['nullable', 'mustExist:budgets,id', new BelongsUser()],
|
||||
'transactions.*.budget_name' => ['min:1', 'max:255', 'nullable', new BelongsUser()],
|
||||
'transactions.*.category_id' => ['nullable', 'mustExist:categories,id', new BelongsUser()],
|
||||
'transactions.*.category_name' => 'min:1|max:255|nullable',
|
||||
'transactions.*.category_name' => ['min:1', 'max:255', 'nullable'],
|
||||
'transactions.*.piggy_bank_id' => ['nullable', 'numeric', 'mustExist:piggy_banks,id', new BelongsUser()],
|
||||
'transactions.*.piggy_bank_name' => ['min:1', 'max:255', 'nullable', new BelongsUser()],
|
||||
'transactions.*.tags' => 'nullable|min:1|max:255',
|
||||
'transactions.*.tags' => ['nullable', 'min:1', 'max:255'],
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@@ -80,11 +80,11 @@ class StoreRequest extends FormRequest
|
||||
$contextActions = implode(',', config('firefly.context-rule-actions'));
|
||||
|
||||
return [
|
||||
'title' => 'required|min:1|max:100|uniqueObjectForUser:rules,title',
|
||||
'description' => 'min:1|max:32768|nullable',
|
||||
'rule_group_id' => 'belongsToUser:rule_groups|required_without:rule_group_title',
|
||||
'rule_group_title' => 'nullable|min:1|max:255|required_without:rule_group_id|belongsToUser:rule_groups,title',
|
||||
'trigger' => 'required|in:store-journal,update-journal,manual-activation',
|
||||
'title' => ['required', 'min:1', 'max:100', 'uniqueObjectForUser:rules,title'],
|
||||
'description' => ['min:1', 'max:32768', 'nullable'],
|
||||
'rule_group_id' => ['belongsToUser:rule_groups', 'required_without:rule_group_title'],
|
||||
'rule_group_title' => ['nullable', 'min:1', 'max:255', 'required_without:rule_group_id', 'belongsToUser:rule_groups,title'],
|
||||
'trigger' => ['required', 'in:store-journal,update-journal,manual-activation'],
|
||||
'triggers.*.type' => 'required|in:'.implode(',', $validTriggers),
|
||||
'triggers.*.value' => 'required_if:actions.*.type,'.$contextTriggers.'|min:1|ruleTriggerValue|max:1024',
|
||||
'triggers.*.stop_processing' => [new IsBoolean()],
|
||||
|
||||
@@ -47,10 +47,10 @@ class TestRequest extends FormRequest
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'start' => 'date|after:1970-01-02|before:2038-01-17',
|
||||
'end' => 'date|after_or_equal:start|after:1970-01-02|before:2038-01-17',
|
||||
'start' => ['date', 'after:1970-01-02', 'before:2038-01-17'],
|
||||
'end' => ['date', 'after_or_equal:start', 'after:1970-01-02', 'before:2038-01-17'],
|
||||
'accounts' => '',
|
||||
'accounts.*' => 'required|exists:accounts,id|belongsToUser:accounts',
|
||||
'accounts.*' => ['required', 'exists:accounts,id', 'belongsToUser:accounts'],
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@@ -47,10 +47,10 @@ class TriggerRequest extends FormRequest
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'start' => 'date|after:1970-01-02|before:2038-01-17',
|
||||
'end' => 'date|after_or_equal:start|after:1970-01-02|before:2038-01-17',
|
||||
'start' => ['date', 'after:1970-01-02', 'before:2038-01-17'],
|
||||
'end' => ['date', 'after_or_equal:start', 'after:1970-01-02', 'before:2038-01-17'],
|
||||
'accounts' => '',
|
||||
'accounts.*' => 'exists:accounts,id|belongsToUser:accounts',
|
||||
'accounts.*' => ['exists:accounts,id', 'belongsToUser:accounts'],
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@@ -91,9 +91,9 @@ class UpdateRequest extends FormRequest
|
||||
|
||||
return [
|
||||
'title' => sprintf('min:1|max:100|uniqueObjectForUser:rules,title,%d', $rule->id),
|
||||
'description' => 'min:1|max:32768|nullable',
|
||||
'description' => ['min:1', 'max:32768', 'nullable'],
|
||||
'rule_group_id' => 'belongsToUser:rule_groups',
|
||||
'rule_group_title' => 'nullable|min:1|max:255|belongsToUser:rule_groups,title',
|
||||
'rule_group_title' => ['nullable', 'min:1', 'max:255', 'belongsToUser:rule_groups,title'],
|
||||
'trigger' => 'in:store-journal,update-journal,manual-activation',
|
||||
'triggers.*.type' => 'required|in:'.implode(',', $validTriggers),
|
||||
'triggers.*.value' => 'required_if:actions.*.type,'.$contextTriggers.'|min:1|ruleTriggerValue|max:1024',
|
||||
@@ -106,7 +106,7 @@ class UpdateRequest extends FormRequest
|
||||
'strict' => [new IsBoolean()],
|
||||
'stop_processing' => [new IsBoolean()],
|
||||
'active' => [new IsBoolean()],
|
||||
'order' => 'numeric|min:1|max:2048',
|
||||
'order' => ['numeric', 'min:1', 'max:2048'],
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@@ -67,8 +67,8 @@ class StoreRequest extends FormRequest
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'title' => 'required|min:1|max:100|uniqueObjectForUser:rule_groups,title',
|
||||
'description' => 'min:1|max:32768|nullable',
|
||||
'title' => ['required', 'min:1', 'max:100', 'uniqueObjectForUser:rule_groups,title'],
|
||||
'description' => ['min:1', 'max:32768', 'nullable'],
|
||||
'active' => [new IsBoolean()],
|
||||
];
|
||||
}
|
||||
|
||||
@@ -47,10 +47,10 @@ class TestRequest extends FormRequest
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'start' => 'date|after:1970-01-02|before:2038-01-17',
|
||||
'end' => 'date|after_or_equal:start|after:1970-01-02|before:2038-01-17',
|
||||
'start' => ['date', 'after:1970-01-02', 'before:2038-01-17'],
|
||||
'end' => ['date', 'after_or_equal:start', 'after:1970-01-02', 'before:2038-01-17'],
|
||||
'accounts' => '',
|
||||
'accounts.*' => 'exists:accounts,id|belongsToUser:accounts',
|
||||
'accounts.*' => ['exists:accounts,id', 'belongsToUser:accounts'],
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@@ -46,7 +46,10 @@ class TriggerRequest extends FormRequest
|
||||
|
||||
public function rules(): array
|
||||
{
|
||||
return ['start' => 'date|after:1970-01-02|before:2038-01-17', 'end' => 'date|after_or_equal:start|after:1970-01-02|before:2038-01-17'];
|
||||
return [
|
||||
'start' => ['date', 'after:1970-01-02', 'before:2038-01-17'],
|
||||
'end' => ['date', 'after_or_equal:start', 'after:1970-01-02', 'before:2038-01-17'],
|
||||
];
|
||||
}
|
||||
|
||||
private function getAccounts(): array
|
||||
|
||||
@@ -66,7 +66,7 @@ class UpdateRequest extends FormRequest
|
||||
|
||||
return [
|
||||
'title' => 'min:1|max:100|uniqueObjectForUser:rule_groups,title,'.$ruleGroup->id,
|
||||
'description' => 'min:1|max:32768|nullable',
|
||||
'description' => ['min:1', 'max:32768', 'nullable'],
|
||||
'active' => [new IsBoolean()],
|
||||
];
|
||||
}
|
||||
|
||||
@@ -62,9 +62,9 @@ class StoreRequest extends FormRequest
|
||||
public function rules(): array
|
||||
{
|
||||
$rules = [
|
||||
'tag' => 'required|min:1|uniqueObjectForUser:tags,tag|max:1024',
|
||||
'description' => 'min:1|nullable|max:32768',
|
||||
'date' => 'date|nullable|after:1970-01-02|before:2038-01-17',
|
||||
'tag' => ['required', 'min:1', 'uniqueObjectForUser:tags,tag', 'max:1024'],
|
||||
'description' => ['min:1', 'nullable', 'max:32768'],
|
||||
'date' => ['date', 'nullable', 'after:1970-01-02', 'before:2038-01-17'],
|
||||
];
|
||||
|
||||
return Location::requestRules($rules);
|
||||
|
||||
@@ -63,8 +63,8 @@ class UpdateRequest extends FormRequest
|
||||
$tag = $this->route()->parameter('tagOrId');
|
||||
$rules = [
|
||||
'tag' => 'min:1|max:1024|uniqueObjectForUser:tags,tag,'.$tag->id,
|
||||
'description' => 'min:1|nullable|max:32768',
|
||||
'date' => 'date|nullable|after:1970-01-02|before:2038-01-17',
|
||||
'description' => ['min:1', 'nullable', 'max:32768'],
|
||||
'date' => ['date', 'nullable', 'after:1970-01-02', 'before:2038-01-17'],
|
||||
];
|
||||
|
||||
return Location::requestRules($rules);
|
||||
|
||||
@@ -30,7 +30,7 @@ use FireflyIII\Rules\IsBoolean;
|
||||
use FireflyIII\Rules\IsDateOrTime;
|
||||
use FireflyIII\Rules\IsValidPositiveAmount;
|
||||
use FireflyIII\Rules\IsValidZeroOrMoreAmount;
|
||||
use FireflyIII\Support\Facades\FireflyConfig;
|
||||
use FireflyIII\Support\Facades\AppConfiguration;
|
||||
use FireflyIII\Support\NullArrayObject;
|
||||
use FireflyIII\Support\Request\AppendsLocationData;
|
||||
use FireflyIII\Support\Request\ChecksLogin;
|
||||
@@ -81,12 +81,12 @@ class StoreRequest extends FormRequest
|
||||
public function rules(): array
|
||||
{
|
||||
Log::debug('Collect rules of TransactionStoreRequest');
|
||||
$validProtocols = FireflyConfig::get('valid_url_protocols', config('firefly.valid_url_protocols'))->data;
|
||||
$validProtocols = AppConfiguration::get('valid_url_protocols', config('firefly.valid_url_protocols'))->data;
|
||||
$locationRules = Location::requestRules([]);
|
||||
|
||||
return [
|
||||
// basic fields for group:
|
||||
'group_title' => 'min:1|max:1000|nullable',
|
||||
'group_title' => ['min:1', 'max:1000', 'nullable'],
|
||||
'error_if_duplicate_hash' => [new IsBoolean()],
|
||||
'fire_webhooks' => [new IsBoolean()],
|
||||
'apply_rules' => [new IsBoolean()],
|
||||
@@ -97,42 +97,42 @@ class StoreRequest extends FormRequest
|
||||
'transactions.*.zoom_level' => $locationRules['zoom_level'],
|
||||
|
||||
// transaction rules (in array for splits):
|
||||
'transactions.*.type' => 'required|in:withdrawal,deposit,transfer,opening-balance,reconciliation',
|
||||
'transactions.*.type' => ['required', 'in:withdrawal,deposit,transfer,opening-balance,reconciliation'],
|
||||
'transactions.*.date' => ['required', new IsDateOrTime()],
|
||||
'transactions.*.order' => 'numeric|min:0',
|
||||
'transactions.*.order' => ['numeric', 'min:0'],
|
||||
|
||||
// currency info
|
||||
'transactions.*.currency_id' => 'numeric|exists:transaction_currencies,id|nullable',
|
||||
'transactions.*.currency_code' => 'min:3|max:51|exists:transaction_currencies,code|nullable',
|
||||
'transactions.*.foreign_currency_id' => 'numeric|exists:transaction_currencies,id|nullable',
|
||||
'transactions.*.foreign_currency_code' => 'min:3|max:51|exists:transaction_currencies,code|nullable',
|
||||
'transactions.*.currency_id' => ['numeric', 'exists:transaction_currencies,id', 'nullable'],
|
||||
'transactions.*.currency_code' => ['min:3', 'max:51', 'exists:transaction_currencies,code', 'nullable'],
|
||||
'transactions.*.foreign_currency_id' => ['numeric', 'exists:transaction_currencies,id', 'nullable'],
|
||||
'transactions.*.foreign_currency_code' => ['min:3', 'max:51', 'exists:transaction_currencies,code', 'nullable'],
|
||||
|
||||
// amount
|
||||
'transactions.*.amount' => ['required', new IsValidPositiveAmount()],
|
||||
'transactions.*.foreign_amount' => ['nullable', new IsValidZeroOrMoreAmount()],
|
||||
|
||||
// description
|
||||
'transactions.*.description' => 'nullable|min:1|max:1000',
|
||||
'transactions.*.description' => ['nullable', 'min:1', 'max:1000'],
|
||||
|
||||
// source of transaction
|
||||
'transactions.*.source_id' => ['numeric', 'nullable', new BelongsUser()],
|
||||
'transactions.*.source_name' => 'min:1|max:255|nullable',
|
||||
'transactions.*.source_iban' => 'min:1|max:255|nullable|iban',
|
||||
'transactions.*.source_number' => 'min:1|max:255|nullable',
|
||||
'transactions.*.source_bic' => 'min:1|max:255|nullable|bic',
|
||||
'transactions.*.source_name' => ['min:1', 'max:255', 'nullable'],
|
||||
'transactions.*.source_iban' => ['min:1', 'max:255', 'nullable', 'iban'],
|
||||
'transactions.*.source_number' => ['min:1', 'max:255', 'nullable'],
|
||||
'transactions.*.source_bic' => ['min:1', 'max:255', 'nullable', 'bic'],
|
||||
|
||||
// destination of transaction
|
||||
'transactions.*.destination_id' => ['numeric', 'nullable', new BelongsUser()],
|
||||
'transactions.*.destination_name' => 'min:1|max:255|nullable',
|
||||
'transactions.*.destination_iban' => 'min:1|max:255|nullable|iban',
|
||||
'transactions.*.destination_number' => 'min:1|max:255|nullable',
|
||||
'transactions.*.destination_bic' => 'min:1|max:255|nullable|bic',
|
||||
'transactions.*.destination_name' => ['min:1', 'max:255', 'nullable'],
|
||||
'transactions.*.destination_iban' => ['min:1', 'max:255', 'nullable', 'iban'],
|
||||
'transactions.*.destination_number' => ['min:1', 'max:255', 'nullable'],
|
||||
'transactions.*.destination_bic' => ['min:1', 'max:255', 'nullable', 'bic'],
|
||||
|
||||
// budget, category, bill and piggy
|
||||
'transactions.*.budget_id' => ['mustExist:budgets,id', new BelongsUser()],
|
||||
'transactions.*.budget_name' => ['min:1', 'max:255', 'nullable', new BelongsUser()],
|
||||
'transactions.*.category_id' => ['mustExist:categories,id', new BelongsUser(), 'nullable'],
|
||||
'transactions.*.category_name' => 'min:1|max:255|nullable',
|
||||
'transactions.*.category_name' => ['min:1', 'max:255', 'nullable'],
|
||||
'transactions.*.bill_id' => ['numeric', 'nullable', 'mustExist:bills,id', new BelongsUser()],
|
||||
'transactions.*.bill_name' => ['min:1', 'max:255', 'nullable', new BelongsUser()],
|
||||
'transactions.*.piggy_bank_id' => ['numeric', 'nullable', 'mustExist:piggy_banks,id', new BelongsUser()],
|
||||
@@ -140,34 +140,34 @@ class StoreRequest extends FormRequest
|
||||
|
||||
// other interesting fields
|
||||
'transactions.*.reconciled' => [new IsBoolean()],
|
||||
'transactions.*.notes' => 'min:1|max:32768|nullable',
|
||||
'transactions.*.tags' => 'min:0|max:255',
|
||||
'transactions.*.tags.*' => 'min:0|max:255',
|
||||
'transactions.*.notes' => ['min:1', 'max:32768', 'nullable'],
|
||||
'transactions.*.tags' => ['min:0', 'max:255'],
|
||||
'transactions.*.tags.*' => ['min:0', 'max:255'],
|
||||
|
||||
// meta info fields
|
||||
'transactions.*.internal_reference' => 'min:1|max:255|nullable',
|
||||
'transactions.*.external_id' => 'min:1|max:255|nullable',
|
||||
'transactions.*.recurrence_id' => 'min:1|max:255|nullable',
|
||||
'transactions.*.bunq_payment_id' => 'min:1|max:255|nullable',
|
||||
'transactions.*.internal_reference' => ['min:1', 'max:255', 'nullable'],
|
||||
'transactions.*.external_id' => ['min:1', 'max:255', 'nullable'],
|
||||
'transactions.*.recurrence_id' => ['min:1', 'max:255', 'nullable'],
|
||||
'transactions.*.bunq_payment_id' => ['min:1', 'max:255', 'nullable'],
|
||||
'transactions.*.external_url' => sprintf('min:1|max:255|nullable|url:%s', $validProtocols),
|
||||
|
||||
// SEPA fields:
|
||||
'transactions.*.sepa_cc' => 'min:1|max:255|nullable',
|
||||
'transactions.*.sepa_ct_op' => 'min:1|max:255|nullable',
|
||||
'transactions.*.sepa_ct_id' => 'min:1|max:255|nullable',
|
||||
'transactions.*.sepa_db' => 'min:1|max:255|nullable',
|
||||
'transactions.*.sepa_country' => 'min:1|max:255|nullable',
|
||||
'transactions.*.sepa_ep' => 'min:1|max:255|nullable',
|
||||
'transactions.*.sepa_ci' => 'min:1|max:255|nullable',
|
||||
'transactions.*.sepa_batch_id' => 'min:1|max:255|nullable',
|
||||
'transactions.*.sepa_cc' => ['min:1', 'max:255', 'nullable'],
|
||||
'transactions.*.sepa_ct_op' => ['min:1', 'max:255', 'nullable'],
|
||||
'transactions.*.sepa_ct_id' => ['min:1', 'max:255', 'nullable'],
|
||||
'transactions.*.sepa_db' => ['min:1', 'max:255', 'nullable'],
|
||||
'transactions.*.sepa_country' => ['min:1', 'max:255', 'nullable'],
|
||||
'transactions.*.sepa_ep' => ['min:1', 'max:255', 'nullable'],
|
||||
'transactions.*.sepa_ci' => ['min:1', 'max:255', 'nullable'],
|
||||
'transactions.*.sepa_batch_id' => ['min:1', 'max:255', 'nullable'],
|
||||
|
||||
// dates
|
||||
'transactions.*.interest_date' => 'date|nullable|after:1970-01-02|before:2038-01-17',
|
||||
'transactions.*.book_date' => 'date|nullable|after:1970-01-02|before:2038-01-17',
|
||||
'transactions.*.process_date' => 'date|nullable|after:1970-01-02|before:2038-01-17',
|
||||
'transactions.*.due_date' => 'date|nullable|after:1970-01-02|before:2038-01-17',
|
||||
'transactions.*.payment_date' => 'date|nullable|after:1970-01-02|before:2038-01-17',
|
||||
'transactions.*.invoice_date' => 'date|nullable|after:1970-01-02|before:2038-01-17',
|
||||
'transactions.*.interest_date' => ['date', 'nullable', 'after:1970-01-02', 'before:2038-01-17'],
|
||||
'transactions.*.book_date' => ['date', 'nullable', 'after:1970-01-02', 'before:2038-01-17'],
|
||||
'transactions.*.process_date' => ['date', 'nullable', 'after:1970-01-02', 'before:2038-01-17'],
|
||||
'transactions.*.due_date' => ['date', 'nullable', 'after:1970-01-02', 'before:2038-01-17'],
|
||||
'transactions.*.payment_date' => ['date', 'nullable', 'after:1970-01-02', 'before:2038-01-17'],
|
||||
'transactions.*.invoice_date' => ['date', 'nullable', 'after:1970-01-02', 'before:2038-01-17'],
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ use FireflyIII\Rules\IsBoolean;
|
||||
use FireflyIII\Rules\IsDateOrTime;
|
||||
use FireflyIII\Rules\IsValidPositiveAmount;
|
||||
use FireflyIII\Rules\IsValidZeroOrMoreAmount;
|
||||
use FireflyIII\Support\Facades\FireflyConfig;
|
||||
use FireflyIII\Support\Facades\AppConfiguration;
|
||||
use FireflyIII\Support\Request\ChecksLogin;
|
||||
use FireflyIII\Support\Request\ConvertsDataTypes;
|
||||
use FireflyIII\Validation\GroupValidation;
|
||||
@@ -141,80 +141,80 @@ class UpdateRequest extends FormRequest
|
||||
public function rules(): array
|
||||
{
|
||||
Log::debug(sprintf('Now in %s', __METHOD__));
|
||||
$validProtocols = FireflyConfig::get('valid_url_protocols', config('firefly.valid_url_protocols'))->data;
|
||||
$validProtocols = AppConfiguration::get('valid_url_protocols', config('firefly.valid_url_protocols'))->data;
|
||||
|
||||
return [
|
||||
// basic fields for group:
|
||||
'group_title' => 'min:1|max:1000|nullable',
|
||||
'group_title' => ['min:1', 'max:1000', 'nullable'],
|
||||
'apply_rules' => [new IsBoolean()],
|
||||
|
||||
// transaction rules (in array for splits):
|
||||
'transactions.*.type' => 'in:withdrawal,deposit,transfer,opening-balance,reconciliation',
|
||||
'transactions.*.date' => [new IsDateOrTime()],
|
||||
'transactions.*.order' => 'numeric|min:0',
|
||||
'transactions.*.order' => ['numeric', 'min:0'],
|
||||
|
||||
// group id:
|
||||
'transactions.*.transaction_journal_id' => ['nullable', 'numeric', new BelongsUser()],
|
||||
|
||||
// currency info
|
||||
'transactions.*.currency_id' => 'numeric|exists:transaction_currencies,id|nullable',
|
||||
'transactions.*.currency_code' => 'min:3|max:51|exists:transaction_currencies,code|nullable',
|
||||
'transactions.*.foreign_currency_id' => 'nullable|numeric|exists:transaction_currencies,id',
|
||||
'transactions.*.foreign_currency_code' => 'nullable|min:3|max:51|exists:transaction_currencies,code',
|
||||
'transactions.*.currency_id' => ['numeric', 'exists:transaction_currencies,id', 'nullable'],
|
||||
'transactions.*.currency_code' => ['min:3', 'max:51', 'exists:transaction_currencies,code', 'nullable'],
|
||||
'transactions.*.foreign_currency_id' => ['nullable', 'numeric', 'exists:transaction_currencies,id'],
|
||||
'transactions.*.foreign_currency_code' => ['nullable', 'min:3', 'max:51', 'exists:transaction_currencies,code'],
|
||||
|
||||
// amount
|
||||
'transactions.*.amount' => [new IsValidPositiveAmount()],
|
||||
'transactions.*.foreign_amount' => ['nullable', new IsValidZeroOrMoreAmount()],
|
||||
|
||||
// description
|
||||
'transactions.*.description' => 'nullable|min:1|max:1000',
|
||||
'transactions.*.description' => ['nullable', 'min:1', 'max:1000'],
|
||||
|
||||
// source of transaction
|
||||
'transactions.*.source_id' => ['numeric', 'nullable', new BelongsUser()],
|
||||
'transactions.*.source_name' => 'min:1|max:255|nullable',
|
||||
'transactions.*.source_name' => ['min:1', 'max:255', 'nullable'],
|
||||
|
||||
// destination of transaction
|
||||
'transactions.*.destination_id' => ['numeric', 'nullable', new BelongsUser()],
|
||||
'transactions.*.destination_name' => 'min:1|max:255|nullable',
|
||||
'transactions.*.destination_name' => ['min:1', 'max:255', 'nullable'],
|
||||
|
||||
// budget, category, bill and piggy
|
||||
'transactions.*.budget_id' => ['mustExist:budgets,id', new BelongsUser(), 'nullable'],
|
||||
'transactions.*.budget_name' => ['min:1', 'max:255', 'nullable', new BelongsUser()],
|
||||
'transactions.*.category_id' => ['mustExist:categories,id', new BelongsUser(), 'nullable'],
|
||||
'transactions.*.category_name' => 'min:1|max:255|nullable',
|
||||
'transactions.*.category_name' => ['min:1', 'max:255', 'nullable'],
|
||||
'transactions.*.bill_id' => ['numeric', 'nullable', 'mustExist:bills,id', new BelongsUser()],
|
||||
'transactions.*.bill_name' => ['min:1', 'max:255', 'nullable', new BelongsUser()],
|
||||
|
||||
// other interesting fields
|
||||
'transactions.*.reconciled' => [new IsBoolean()],
|
||||
'transactions.*.notes' => 'min:1|max:32768|nullable',
|
||||
'transactions.*.tags' => 'min:0|max:255|nullable',
|
||||
'transactions.*.tags.*' => 'min:0|max:255',
|
||||
'transactions.*.notes' => ['min:1', 'max:32768', 'nullable'],
|
||||
'transactions.*.tags' => ['min:0', 'max:255', 'nullable'],
|
||||
'transactions.*.tags.*' => ['min:0', 'max:255'],
|
||||
|
||||
// meta info fields
|
||||
'transactions.*.internal_reference' => 'min:1|max:255|nullable',
|
||||
'transactions.*.external_id' => 'min:1|max:255|nullable',
|
||||
'transactions.*.recurrence_id' => 'min:1|max:255|nullable',
|
||||
'transactions.*.bunq_payment_id' => 'min:1|max:255|nullable',
|
||||
'transactions.*.internal_reference' => ['min:1', 'max:255', 'nullable'],
|
||||
'transactions.*.external_id' => ['min:1', 'max:255', 'nullable'],
|
||||
'transactions.*.recurrence_id' => ['min:1', 'max:255', 'nullable'],
|
||||
'transactions.*.bunq_payment_id' => ['min:1', 'max:255', 'nullable'],
|
||||
'transactions.*.external_url' => sprintf('min:1|max:255|nullable|url:%s', $validProtocols),
|
||||
|
||||
// SEPA fields:
|
||||
'transactions.*.sepa_cc' => 'min:1|max:255|nullable',
|
||||
'transactions.*.sepa_ct_op' => 'min:1|max:255|nullable',
|
||||
'transactions.*.sepa_ct_id' => 'min:1|max:255|nullable',
|
||||
'transactions.*.sepa_db' => 'min:1|max:255|nullable',
|
||||
'transactions.*.sepa_country' => 'min:1|max:255|nullable',
|
||||
'transactions.*.sepa_ep' => 'min:1|max:255|nullable',
|
||||
'transactions.*.sepa_ci' => 'min:1|max:255|nullable',
|
||||
'transactions.*.sepa_batch_id' => 'min:1|max:255|nullable',
|
||||
'transactions.*.sepa_cc' => ['min:1', 'max:255', 'nullable'],
|
||||
'transactions.*.sepa_ct_op' => ['min:1', 'max:255', 'nullable'],
|
||||
'transactions.*.sepa_ct_id' => ['min:1', 'max:255', 'nullable'],
|
||||
'transactions.*.sepa_db' => ['min:1', 'max:255', 'nullable'],
|
||||
'transactions.*.sepa_country' => ['min:1', 'max:255', 'nullable'],
|
||||
'transactions.*.sepa_ep' => ['min:1', 'max:255', 'nullable'],
|
||||
'transactions.*.sepa_ci' => ['min:1', 'max:255', 'nullable'],
|
||||
'transactions.*.sepa_batch_id' => ['min:1', 'max:255', 'nullable'],
|
||||
|
||||
// dates
|
||||
'transactions.*.interest_date' => 'date|nullable|after:1970-01-02|before:2038-01-17',
|
||||
'transactions.*.book_date' => 'date|nullable|after:1970-01-02|before:2038-01-17',
|
||||
'transactions.*.process_date' => 'date|nullable|after:1970-01-02|before:2038-01-17',
|
||||
'transactions.*.due_date' => 'date|nullable|after:1970-01-02|before:2038-01-17',
|
||||
'transactions.*.payment_date' => 'date|nullable|after:1970-01-02|before:2038-01-17',
|
||||
'transactions.*.invoice_date' => 'date|nullable|after:1970-01-02|before:2038-01-17',
|
||||
'transactions.*.interest_date' => ['date', 'nullable', 'after:1970-01-02', 'before:2038-01-17'],
|
||||
'transactions.*.book_date' => ['date', 'nullable', 'after:1970-01-02', 'before:2038-01-17'],
|
||||
'transactions.*.process_date' => ['date', 'nullable', 'after:1970-01-02', 'before:2038-01-17'],
|
||||
'transactions.*.due_date' => ['date', 'nullable', 'after:1970-01-02', 'before:2038-01-17'],
|
||||
'transactions.*.payment_date' => ['date', 'nullable', 'after:1970-01-02', 'before:2038-01-17'],
|
||||
'transactions.*.invoice_date' => ['date', 'nullable', 'after:1970-01-02', 'before:2038-01-17'],
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@@ -69,10 +69,10 @@ class StoreRequest extends FormRequest
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'name' => 'required|min:1|max:255|unique:transaction_currencies,name',
|
||||
'code' => 'required|min:3|max:32|unique:transaction_currencies,code',
|
||||
'symbol' => 'required|min:1|max:32|unique:transaction_currencies,symbol',
|
||||
'decimal_places' => 'numeric|min:0|max:12',
|
||||
'name' => ['required', 'min:1', 'max:255', 'unique:transaction_currencies,name'],
|
||||
'code' => ['required', 'min:3', 'max:32', 'unique:transaction_currencies,code'],
|
||||
'symbol' => ['required', 'min:1', 'max:32', 'unique:transaction_currencies,symbol'],
|
||||
'decimal_places' => ['numeric', 'min:0', 'max:12'],
|
||||
'enabled' => [new IsBoolean()],
|
||||
'default' => [new IsBoolean()],
|
||||
];
|
||||
|
||||
@@ -82,7 +82,7 @@ class UpdateRequest extends FormRequest
|
||||
'name' => sprintf('min:1|max:255|unique:transaction_currencies,name,%d', $currency->id),
|
||||
'code' => sprintf('min:3|max:32|unique:transaction_currencies,code,%d', $currency->id),
|
||||
'symbol' => sprintf('min:1|max:32|unique:transaction_currencies,symbol,%d', $currency->id),
|
||||
'decimal_places' => 'numeric|min:0|max:12',
|
||||
'decimal_places' => ['numeric', 'min:0', 'max:12'],
|
||||
'enabled' => [new IsBoolean()],
|
||||
'default' => [new IsBoolean()],
|
||||
];
|
||||
|
||||
@@ -63,11 +63,11 @@ class StoreRequest extends FormRequest
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'link_type_id' => 'exists:link_types,id|required_without:link_type_name',
|
||||
'link_type_name' => 'exists:link_types,name|required_without:link_type_id',
|
||||
'inward_id' => 'required|belongsToUser:transaction_journals,id|different:outward_id',
|
||||
'outward_id' => 'required|belongsToUser:transaction_journals,id|different:inward_id',
|
||||
'notes' => 'min:1|max:32768|nullable',
|
||||
'link_type_id' => ['exists:link_types,id', 'required_without:link_type_name'],
|
||||
'link_type_name' => ['exists:link_types,name', 'required_without:link_type_id'],
|
||||
'inward_id' => ['required', 'belongsToUser:transaction_journals,id', 'different:outward_id'],
|
||||
'outward_id' => ['required', 'belongsToUser:transaction_journals,id', 'different:inward_id'],
|
||||
'notes' => ['min:1', 'max:32768', 'nullable'],
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@@ -65,9 +65,9 @@ class UpdateRequest extends FormRequest
|
||||
return [
|
||||
'link_type_id' => 'exists:link_types,id',
|
||||
'link_type_name' => 'exists:link_types,name',
|
||||
'inward_id' => 'belongsToUser:transaction_journals,id|different:outward_id',
|
||||
'outward_id' => 'belongsToUser:transaction_journals,id|different:inward_id',
|
||||
'notes' => 'min:1|max:32768|nullable',
|
||||
'inward_id' => ['belongsToUser:transaction_journals,id', 'different:outward_id'],
|
||||
'outward_id' => ['belongsToUser:transaction_journals,id', 'different:inward_id'],
|
||||
'notes' => ['min:1', 'max:32768', 'nullable'],
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@@ -52,9 +52,9 @@ class StoreRequest extends FormRequest
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'name' => 'required|unique:link_types,name|min:1|max:1024',
|
||||
'outward' => 'required|unique:link_types,outward|min:1|different:inward|max:1024',
|
||||
'inward' => 'required|unique:link_types,inward|min:1|different:outward|max:1024',
|
||||
'name' => ['required', 'unique:link_types,name', 'min:1', 'max:1024'],
|
||||
'outward' => ['required', 'unique:link_types,outward', 'min:1', 'different:inward', 'max:1024'],
|
||||
'inward' => ['required', 'unique:link_types,inward', 'min:1', 'different:outward', 'max:1024'],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@ use FireflyIII\Exceptions\FireflyException;
|
||||
use FireflyIII\Models\Webhook;
|
||||
use FireflyIII\Rules\IsBoolean;
|
||||
use FireflyIII\Rules\Webhook\IsValidWebhookUrl;
|
||||
use FireflyIII\Support\Facades\FireflyConfig;
|
||||
use FireflyIII\Support\Facades\AppConfiguration;
|
||||
use FireflyIII\Support\Request\ChecksLogin;
|
||||
use FireflyIII\Support\Request\ConvertsDataTypes;
|
||||
use FireflyIII\Support\Request\ValidatesWebhooks;
|
||||
@@ -72,19 +72,19 @@ class CreateRequest extends FormRequest
|
||||
$triggers = implode(',', array_values(Webhook::getTriggers()));
|
||||
$responses = implode(',', array_values(Webhook::getResponses()));
|
||||
$deliveries = implode(',', array_values(Webhook::getDeliveries()));
|
||||
$validProtocols = FireflyConfig::get('valid_url_protocols', config('firefly.valid_url_protocols'))->data;
|
||||
$validProtocols = AppConfiguration::get('valid_url_protocols', config('firefly.valid_url_protocols'))->data;
|
||||
|
||||
return [
|
||||
'title' => 'required|min:1|max:255|uniqueObjectForUser:webhooks,title',
|
||||
'title' => ['required', 'min:1', 'max:255', 'uniqueObjectForUser:webhooks,title'],
|
||||
'active' => [new IsBoolean()],
|
||||
'trigger' => 'prohibited',
|
||||
'triggers' => 'required|array|min:1|max:10',
|
||||
'triggers' => ['required', 'array', 'min:1', 'max:10'],
|
||||
'triggers.*' => sprintf('required|in:%s', $triggers),
|
||||
'response' => 'prohibited',
|
||||
'responses' => 'required|array|min:1|max:1',
|
||||
'responses' => ['required', 'array', 'min:1', 'max:1'],
|
||||
'responses.*' => sprintf('required|in:%s', $responses),
|
||||
'delivery' => 'prohibited',
|
||||
'deliveries' => 'required|array|min:1|max:1',
|
||||
'deliveries' => ['required', 'array', 'min:1', 'max:1'],
|
||||
'deliveries.*' => sprintf('required|in:%s', $deliveries),
|
||||
'url' => ['required', sprintf('url:%s', $validProtocols), new IsValidWebhookUrl()],
|
||||
];
|
||||
|
||||
@@ -28,7 +28,7 @@ use FireflyIII\Exceptions\FireflyException;
|
||||
use FireflyIII\Models\Webhook;
|
||||
use FireflyIII\Rules\IsBoolean;
|
||||
use FireflyIII\Rules\Webhook\IsValidWebhookUrl;
|
||||
use FireflyIII\Support\Facades\FireflyConfig;
|
||||
use FireflyIII\Support\Facades\AppConfiguration;
|
||||
use FireflyIII\Support\Request\ChecksLogin;
|
||||
use FireflyIII\Support\Request\ConvertsDataTypes;
|
||||
use FireflyIII\Support\Request\ValidatesWebhooks;
|
||||
@@ -73,7 +73,7 @@ class UpdateRequest extends FormRequest
|
||||
$triggers = implode(',', array_values(Webhook::getTriggers()));
|
||||
$responses = implode(',', array_values(Webhook::getResponses()));
|
||||
$deliveries = implode(',', array_values(Webhook::getDeliveries()));
|
||||
$validProtocols = FireflyConfig::get('valid_url_protocols', config('firefly.valid_url_protocols'))->data;
|
||||
$validProtocols = AppConfiguration::get('valid_url_protocols', config('firefly.valid_url_protocols'))->data;
|
||||
|
||||
/** @var Webhook $webhook */
|
||||
$webhook = $this->route()->parameter('webhook');
|
||||
@@ -82,13 +82,13 @@ class UpdateRequest extends FormRequest
|
||||
'title' => sprintf('min:1|max:255|uniqueObjectForUser:webhooks,title,%d', $webhook->id),
|
||||
'active' => [new IsBoolean()],
|
||||
'trigger' => 'prohibited',
|
||||
'triggers' => 'required|array|min:1|max:10',
|
||||
'triggers' => ['required', 'array', 'min:1', 'max:10'],
|
||||
'triggers.*' => sprintf('required|in:%s', $triggers),
|
||||
'response' => 'prohibited',
|
||||
'responses' => 'required|array|min:1|max:1',
|
||||
'responses' => ['required', 'array', 'min:1', 'max:1'],
|
||||
'responses.*' => sprintf('required|in:%s', $responses),
|
||||
'delivery' => 'prohibited',
|
||||
'deliveries' => 'required|array|min:1|max:1',
|
||||
'deliveries' => ['required', 'array', 'min:1', 'max:1'],
|
||||
'deliveries.*' => sprintf('required|in:%s', $deliveries),
|
||||
'url' => [sprintf('url:%s', $validProtocols), sprintf('uniqueExistingWebhook:%d', $webhook->id), new IsValidWebhookUrl()],
|
||||
];
|
||||
|
||||
@@ -50,8 +50,8 @@ class PaginationRequest extends ApiRequest
|
||||
{
|
||||
return [
|
||||
'sort' => ['nullable', new IsValidSortInstruction((string) $this->sortClass)],
|
||||
'limit' => 'numeric|min:1|max:131337',
|
||||
'page' => 'numeric|min:1|max:131337',
|
||||
'limit' => ['numeric', 'min:1', 'max:131337'],
|
||||
'page' => ['numeric', 'min:1', 'max:131337'],
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@@ -34,10 +34,10 @@ class CountRequest extends AggregateFormRequest
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'notes' => 'string|min:1|max:255',
|
||||
'external_identifier' => 'string|min:1|max:255',
|
||||
'description' => 'string|min:1|max:255',
|
||||
'internal_reference' => 'string|min:1|max:255',
|
||||
'notes' => ['string', 'min:1', 'max:255'],
|
||||
'external_identifier' => ['string', 'min:1', 'max:255'],
|
||||
'description' => ['string', 'min:1', 'max:255'],
|
||||
'internal_reference' => ['string', 'min:1', 'max:255'],
|
||||
'include_deleted' => new IsBoolean(),
|
||||
];
|
||||
}
|
||||
|
||||
@@ -68,6 +68,6 @@ class CronRequest extends FormRequest
|
||||
*/
|
||||
public function rules(): array
|
||||
{
|
||||
return ['force' => 'in:true,false', 'date' => 'nullable|date|after:1970-01-02|before:2038-01-17'];
|
||||
return ['force' => 'in:true,false', 'date' => ['nullable', 'date', 'after:1970-01-02', 'before:2038-01-17']];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -77,10 +77,10 @@ class UpdateRequest extends FormRequest
|
||||
return ['value' => ['required', new IsBoolean()]];
|
||||
}
|
||||
if ('configuration.permission_update_check' === $name) {
|
||||
return ['value' => 'required|numeric|min:-1|max:1'];
|
||||
return ['value' => ['required', 'numeric', 'min:-1', 'max:1']];
|
||||
}
|
||||
if (in_array($name, $this->integers, strict: true)) {
|
||||
return ['value' => 'required|numeric|min:464272080'];
|
||||
return ['value' => ['required', 'numeric', 'min:464272080']];
|
||||
}
|
||||
|
||||
return ['value' => 'required'];
|
||||
|
||||
@@ -71,7 +71,7 @@ class UserStoreRequest extends FormRequest
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'email' => 'required|email|unique:users,email',
|
||||
'email' => ['required', 'email', 'unique:users,email'],
|
||||
'blocked' => [new IsBoolean()],
|
||||
'blocked_code' => 'in:email_changed',
|
||||
'role' => 'in:owner,demo',
|
||||
|
||||
@@ -52,15 +52,15 @@ class ClearsEmptyForeignAmounts extends Command
|
||||
public function handle(): int
|
||||
{
|
||||
// transaction: has no amount, but reference to currency.
|
||||
$count = Transaction::whereNull('foreign_amount')->whereNotNull('foreign_currency_id')->count();
|
||||
$count = Transaction::query()->whereNull('foreign_amount')->whereNotNull('foreign_currency_id')->count();
|
||||
if ($count > 0) {
|
||||
Transaction::whereNull('foreign_amount')->whereNotNull('foreign_currency_id')->update(['foreign_currency_id' => null]);
|
||||
Transaction::query()->whereNull('foreign_amount')->whereNotNull('foreign_currency_id')->update(['foreign_currency_id' => null]);
|
||||
$this->friendlyInfo(sprintf('Corrected %d invalid foreign amount reference(s)', $count));
|
||||
}
|
||||
// transaction: has amount, but no currency.
|
||||
$count = Transaction::whereNull('foreign_currency_id')->whereNotNull('foreign_amount')->count();
|
||||
$count = Transaction::query()->whereNull('foreign_currency_id')->whereNotNull('foreign_amount')->count();
|
||||
if ($count > 0) {
|
||||
Transaction::whereNull('foreign_currency_id')->whereNotNull('foreign_amount')->update(['foreign_amount' => null]);
|
||||
Transaction::query()->whereNull('foreign_currency_id')->whereNotNull('foreign_amount')->update(['foreign_amount' => null]);
|
||||
$this->friendlyInfo(sprintf('Corrected %d invalid foreign amount reference(s)', $count));
|
||||
}
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ namespace FireflyIII\Console\Commands\Correction;
|
||||
|
||||
use Carbon\Carbon;
|
||||
use FireflyIII\Console\Commands\ShowsFriendlyMessages;
|
||||
use FireflyIII\Support\Facades\FireflyConfig;
|
||||
use FireflyIII\Support\Facades\AppConfiguration;
|
||||
use Illuminate\Console\Command;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\QueryException;
|
||||
@@ -58,7 +58,7 @@ class ConvertsDatesToUTC extends Command
|
||||
$this->ConvertModeltoUTC($model, $fields);
|
||||
}
|
||||
// tell the system we are now in UTC mode.
|
||||
FireflyConfig::set('utc', true);
|
||||
AppConfiguration::set('utc', true);
|
||||
|
||||
return Command::SUCCESS;
|
||||
}
|
||||
|
||||
@@ -88,7 +88,7 @@ class CorrectsAmounts extends Command
|
||||
|
||||
/** @var AccountRepositoryInterface $repository */
|
||||
$repository = app(AccountRepositoryInterface::class);
|
||||
$type = TransactionType::where('type', TransactionTypeEnum::TRANSFER->value)->first();
|
||||
$type = TransactionType::query()->where('type', TransactionTypeEnum::TRANSFER->value)->first();
|
||||
$journals = TransactionJournal::leftJoin('transactions', 'transactions.transaction_journal_id', '=', 'transaction_journals.id')
|
||||
->whereNotNull('transactions.foreign_amount')
|
||||
->where('transaction_journals.transaction_type_id', $type->id)
|
||||
@@ -188,7 +188,10 @@ class CorrectsAmounts extends Command
|
||||
|
||||
private function fixAutoBudgets(): void
|
||||
{
|
||||
$count = AutoBudget::where('amount', '<', 0)->update(['amount' => DB::raw('amount * -1')]);
|
||||
$count = AutoBudget::query()
|
||||
->where('amount', '<', 0)
|
||||
->update(['amount' => DB::raw('amount * -1')])
|
||||
;
|
||||
if (0 === $count) {
|
||||
return;
|
||||
}
|
||||
@@ -197,7 +200,10 @@ class CorrectsAmounts extends Command
|
||||
|
||||
private function fixAvailableBudgets(): void
|
||||
{
|
||||
$count = AvailableBudget::where('amount', '<', 0)->update(['amount' => DB::raw('amount * -1')]);
|
||||
$count = AvailableBudget::query()
|
||||
->where('amount', '<', 0)
|
||||
->update(['amount' => DB::raw('amount * -1')])
|
||||
;
|
||||
if (0 === $count) {
|
||||
return;
|
||||
}
|
||||
@@ -207,8 +213,14 @@ class CorrectsAmounts extends Command
|
||||
private function fixBills(): void
|
||||
{
|
||||
$count = 0;
|
||||
$count += Bill::where('amount_max', '<', 0)->update(['amount_max' => DB::raw('amount_max * -1')]);
|
||||
$count += Bill::where('amount_min', '<', 0)->update(['amount_min' => DB::raw('amount_min * -1')]);
|
||||
$count += Bill::query()
|
||||
->where('amount_max', '<', 0)
|
||||
->update(['amount_max' => DB::raw('amount_max * -1')])
|
||||
;
|
||||
$count += Bill::query()
|
||||
->where('amount_min', '<', 0)
|
||||
->update(['amount_min' => DB::raw('amount_min * -1')])
|
||||
;
|
||||
if (0 === $count) {
|
||||
return;
|
||||
}
|
||||
@@ -217,7 +229,10 @@ class CorrectsAmounts extends Command
|
||||
|
||||
private function fixBudgetLimits(): void
|
||||
{
|
||||
$count = BudgetLimit::where('amount', '<', 0)->update(['amount' => DB::raw('amount * -1')]);
|
||||
$count = BudgetLimit::query()
|
||||
->where('amount', '<', 0)
|
||||
->update(['amount' => DB::raw('amount * -1')])
|
||||
;
|
||||
if (0 === $count) {
|
||||
return;
|
||||
}
|
||||
@@ -226,7 +241,10 @@ class CorrectsAmounts extends Command
|
||||
|
||||
private function fixExchangeRates(): void
|
||||
{
|
||||
$count = CurrencyExchangeRate::where('rate', '<', 0)->update(['rate' => DB::raw('rate * -1')]);
|
||||
$count = CurrencyExchangeRate::query()
|
||||
->where('rate', '<', 0)
|
||||
->update(['rate' => DB::raw('rate * -1')])
|
||||
;
|
||||
if (0 === $count) {
|
||||
return;
|
||||
}
|
||||
@@ -235,7 +253,10 @@ class CorrectsAmounts extends Command
|
||||
|
||||
private function fixPiggyBanks(): void
|
||||
{
|
||||
$count = PiggyBank::where('target_amount', '<', 0)->update(['target_amount' => DB::raw('target_amount * -1')]);
|
||||
$count = PiggyBank::query()
|
||||
->where('target_amount', '<', 0)
|
||||
->update(['target_amount' => DB::raw('target_amount * -1')])
|
||||
;
|
||||
if (0 === $count) {
|
||||
return;
|
||||
}
|
||||
@@ -245,8 +266,14 @@ class CorrectsAmounts extends Command
|
||||
private function fixRecurrences(): void
|
||||
{
|
||||
$count = 0;
|
||||
$count += RecurrenceTransaction::where('amount', '<', 0)->update(['amount' => DB::raw('amount * -1')]);
|
||||
$count += RecurrenceTransaction::where('foreign_amount', '<', 0)->update(['foreign_amount' => DB::raw('foreign_amount * -1')]);
|
||||
$count += RecurrenceTransaction::query()
|
||||
->where('amount', '<', 0)
|
||||
->update(['amount' => DB::raw('amount * -1')])
|
||||
;
|
||||
$count += RecurrenceTransaction::query()
|
||||
->where('foreign_amount', '<', 0)
|
||||
->update(['foreign_amount' => DB::raw('foreign_amount * -1')])
|
||||
;
|
||||
if (0 === $count) {
|
||||
return;
|
||||
}
|
||||
@@ -285,7 +312,7 @@ class CorrectsAmounts extends Command
|
||||
*/
|
||||
private function fixRuleTriggers(): void
|
||||
{
|
||||
$set = RuleTrigger::whereIn('trigger_type', ['amount_less', 'amount_more', 'amount_is'])->get();
|
||||
$set = RuleTrigger::query()->whereIn('trigger_type', ['amount_less', 'amount_more', 'amount_is'])->get();
|
||||
$fixed = 0;
|
||||
|
||||
/** @var RuleTrigger $item */
|
||||
|
||||
@@ -81,7 +81,7 @@ class CorrectsCurrencies extends Command
|
||||
}
|
||||
|
||||
// get all from journals:
|
||||
$journals = TransactionJournal::where('user_group_id', $userGroup->id)->groupBy('transaction_currency_id')->get(['transaction_currency_id']);
|
||||
$journals = TransactionJournal::query()->where('user_group_id', $userGroup->id)->groupBy('transaction_currency_id')->get(['transaction_currency_id']);
|
||||
foreach ($journals as $entry) {
|
||||
$found[] = (int) $entry->transaction_currency_id;
|
||||
}
|
||||
|
||||
@@ -49,7 +49,10 @@ class CorrectsGroupAccounts extends Command
|
||||
{
|
||||
Log::debug('Start of correction:group-accounts');
|
||||
$groups = [];
|
||||
$res = TransactionJournal::groupBy('transaction_group_id')->get(['transaction_group_id', DB::raw('COUNT(transaction_group_id) as the_count')]);
|
||||
$res = TransactionJournal::query()->groupBy('transaction_group_id')->get([
|
||||
'transaction_group_id',
|
||||
DB::raw('COUNT(transaction_group_id) as the_count'),
|
||||
]);
|
||||
|
||||
/** @var TransactionJournal $journal */
|
||||
foreach ($res as $journal) {
|
||||
|
||||
@@ -44,7 +44,7 @@ class CorrectsIbans extends Command
|
||||
*/
|
||||
public function handle(): int
|
||||
{
|
||||
$accounts = Account::with('accountMeta')->get();
|
||||
$accounts = Account::query()->with('accountMeta')->get();
|
||||
$this->filterIbans($accounts);
|
||||
$this->countAndCorrectIbans($accounts);
|
||||
|
||||
|
||||
@@ -53,7 +53,7 @@ class CorrectsInvertedBudgetLimits extends Command
|
||||
*/
|
||||
public function handle(): int
|
||||
{
|
||||
$set = BudgetLimit::where('start_date', '>', DB::raw('end_date'))->get();
|
||||
$set = BudgetLimit::query()->where('start_date', '>', DB::raw('end_date'))->get();
|
||||
if (0 === $set->count()) {
|
||||
Log::debug('No inverted budget limits found.');
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@ class CorrectsLongDescriptions extends Command
|
||||
*/
|
||||
public function handle(): int
|
||||
{
|
||||
$journals = TransactionJournal::where(DB::raw('LENGTH(description)'), '>', self::MAX_LENGTH)->get(['id', 'description']);
|
||||
$journals = TransactionJournal::query()->where(DB::raw('LENGTH(description)'), '>', self::MAX_LENGTH)->get(['id', 'description']);
|
||||
$count = 0;
|
||||
|
||||
/** @var TransactionJournal $journal */
|
||||
@@ -57,7 +57,7 @@ class CorrectsLongDescriptions extends Command
|
||||
}
|
||||
}
|
||||
|
||||
$groups = TransactionGroup::where(DB::raw('LENGTH(title)'), '>', self::MAX_LENGTH)->get(['id', 'title']);
|
||||
$groups = TransactionGroup::query()->where(DB::raw('LENGTH(title)'), '>', self::MAX_LENGTH)->get(['id', 'title']);
|
||||
|
||||
/** @var TransactionGroup $group */
|
||||
foreach ($groups as $group) {
|
||||
|
||||
@@ -42,7 +42,7 @@ class CorrectsPiggyBanks extends Command
|
||||
public function handle(): int
|
||||
{
|
||||
$count = 0;
|
||||
$set = PiggyBankEvent::with(['PiggyBank', 'TransactionJournal'])->get();
|
||||
$set = PiggyBankEvent::query()->with(['PiggyBank', 'TransactionJournal'])->get();
|
||||
|
||||
/** @var PiggyBankEvent $event */
|
||||
foreach ($set as $event) {
|
||||
|
||||
@@ -47,7 +47,7 @@ class CorrectsPreferences extends Command
|
||||
foreach ($users as $user) {
|
||||
$count = 0;
|
||||
foreach ($items as $item) {
|
||||
$preference = Preference::where('name', $item)->where('user_id', $user->id)->first();
|
||||
$preference = Preference::query()->where('name', $item)->where('user_id', $user->id)->first();
|
||||
if (null === $preference) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@ namespace FireflyIII\Console\Commands\Correction;
|
||||
|
||||
use FireflyIII\Console\Commands\ShowsFriendlyMessages;
|
||||
use FireflyIII\Services\Internal\Recalculate\PrimaryAmountRecalculationService;
|
||||
use FireflyIII\Support\Facades\FireflyConfig;
|
||||
use FireflyIII\Support\Facades\AppConfiguration;
|
||||
use Illuminate\Console\Command;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
|
||||
@@ -43,7 +43,7 @@ class CorrectsPrimaryCurrencyAmounts extends Command
|
||||
*/
|
||||
public function handle(): int
|
||||
{
|
||||
if (false === FireflyConfig::get('enable_exchange_rates', config('cer.enabled'))->data) {
|
||||
if (false === AppConfiguration::get('enable_exchange_rates', config('cer.enabled'))->data) {
|
||||
$this->friendlyInfo('This command will not run because currency exchange rates are disabled.');
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -36,7 +36,7 @@ use FireflyIII\Models\PiggyBankRepetition;
|
||||
use FireflyIII\Models\Recurrence;
|
||||
use FireflyIII\Models\Tag;
|
||||
use FireflyIII\Models\TransactionJournal;
|
||||
use FireflyIII\Support\Facades\FireflyConfig;
|
||||
use FireflyIII\Support\Facades\AppConfiguration;
|
||||
use Illuminate\Console\Command;
|
||||
use Illuminate\Database\QueryException;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
@@ -71,7 +71,7 @@ class CorrectsTimezoneInformation extends Command
|
||||
$this->addTimezoneToModel($model, $fields);
|
||||
}
|
||||
// not yet in UTC mode
|
||||
FireflyConfig::set('utc', false);
|
||||
AppConfiguration::set('utc', false);
|
||||
}
|
||||
|
||||
private function addTimezoneToModel(string $model, array $fields): void
|
||||
|
||||
@@ -81,7 +81,7 @@ class CorrectsTransactionTypes extends Command
|
||||
*/
|
||||
private function collectJournals(): Collection
|
||||
{
|
||||
return TransactionJournal::with(['transactionType', 'transactions', 'transactions.account', 'transactions.account.accountType'])->get();
|
||||
return TransactionJournal::query()->with(['transactionType', 'transactions', 'transactions.account', 'transactions.account.accountType'])->get();
|
||||
}
|
||||
|
||||
private function fixJournal(TransactionJournal $journal): bool
|
||||
|
||||
@@ -42,7 +42,8 @@ class CorrectsTransferBudgets extends Command
|
||||
*/
|
||||
public function handle(): int
|
||||
{
|
||||
$set = TransactionJournal::distinct()
|
||||
$set = TransactionJournal::query()
|
||||
->distinct()
|
||||
->leftJoin('transaction_types', 'transaction_types.id', '=', 'transaction_journals.transaction_type_id')
|
||||
->leftJoin('budget_transaction_journal', 'transaction_journals.id', '=', 'budget_transaction_journal.transaction_journal_id')
|
||||
->whereNotIn('transaction_types.type', [TransactionTypeEnum::WITHDRAWAL->value])
|
||||
|
||||
@@ -30,7 +30,7 @@ use FireflyIII\Enums\TransactionTypeEnum;
|
||||
use FireflyIII\Models\Transaction;
|
||||
use FireflyIII\Models\TransactionJournal;
|
||||
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
|
||||
use FireflyIII\Support\Facades\FireflyConfig;
|
||||
use FireflyIII\Support\Facades\AppConfiguration;
|
||||
use FireflyIII\Support\Facades\Steam;
|
||||
use FireflyIII\Support\Models\AccountBalanceCalculator;
|
||||
use Illuminate\Console\Command;
|
||||
@@ -61,7 +61,7 @@ class CorrectsUnevenAmount extends Command
|
||||
|
||||
$this->fixUnevenAmounts();
|
||||
$this->matchCurrencies();
|
||||
if (true === FireflyConfig::get('use_running_balance', config('firefly.feature_flags.running_balance_column'))->data) {
|
||||
if (true === AppConfiguration::get('use_running_balance', config('firefly.feature_flags.running_balance_column'))->data) {
|
||||
$this->friendlyInfo('Will recalculate transaction running balance columns. This may take a LONG time. Please be patient.');
|
||||
AccountBalanceCalculator::recalculateAll(false);
|
||||
$this->friendlyInfo('Done recalculating transaction running balance columns.');
|
||||
@@ -76,7 +76,8 @@ class CorrectsUnevenAmount extends Command
|
||||
$repository = app(AccountRepositoryInterface::class);
|
||||
Log::debug('convertOldStyleTransactions()');
|
||||
$count = 0;
|
||||
$transactions = Transaction::distinct()
|
||||
$transactions = Transaction::query()
|
||||
->distinct()
|
||||
->leftJoin('transaction_journals', 'transaction_journals.id', 'transactions.transaction_journal_id')
|
||||
->leftJoin('transaction_types', 'transaction_types.id', 'transaction_journals.transaction_type_id')
|
||||
->leftJoin('accounts', 'accounts.id', 'transactions.account_id')
|
||||
@@ -188,7 +189,8 @@ class CorrectsUnevenAmount extends Command
|
||||
{
|
||||
Log::debug('convertOldStyleTransfers()');
|
||||
// select transactions with a foreign amount and a foreign currency. and it's a transfer. and they are different.
|
||||
$transactions = Transaction::distinct()
|
||||
$transactions = Transaction::query()
|
||||
->distinct()
|
||||
->leftJoin('transaction_journals', 'transaction_journals.id', 'transactions.transaction_journal_id')
|
||||
->leftJoin('transaction_types', 'transaction_types.id', 'transaction_journals.transaction_type_id')
|
||||
->where('transaction_types.type', TransactionTypeEnum::TRANSFER->value)
|
||||
@@ -262,8 +264,14 @@ class CorrectsUnevenAmount extends Command
|
||||
$journal->id ?? 0,
|
||||
$journal->description ?? ''
|
||||
));
|
||||
Transaction::where('transaction_journal_id', $journal->id ?? 0)->forceDelete();
|
||||
TransactionJournal::where('id', $journal->id ?? 0)->forceDelete();
|
||||
Transaction::query()
|
||||
->where('transaction_journal_id', $journal->id ?? 0)
|
||||
->forceDelete()
|
||||
;
|
||||
TransactionJournal::query()
|
||||
->where('id', $journal->id ?? 0)
|
||||
->forceDelete()
|
||||
;
|
||||
++$this->count;
|
||||
|
||||
return;
|
||||
@@ -282,8 +290,14 @@ class CorrectsUnevenAmount extends Command
|
||||
$journal->description ?? ''
|
||||
));
|
||||
|
||||
Transaction::where('transaction_journal_id', $journal->id ?? 0)->forceDelete();
|
||||
TransactionJournal::where('id', $journal->id ?? 0)->forceDelete();
|
||||
Transaction::query()
|
||||
->where('transaction_journal_id', $journal->id ?? 0)
|
||||
->forceDelete()
|
||||
;
|
||||
TransactionJournal::query()
|
||||
->where('id', $journal->id ?? 0)
|
||||
->forceDelete()
|
||||
;
|
||||
++$this->count;
|
||||
|
||||
return;
|
||||
@@ -430,7 +444,7 @@ class CorrectsUnevenAmount extends Command
|
||||
/** @var TransactionJournal $journal */
|
||||
foreach ($journals as $journal) {
|
||||
if (!$this->isForeignCurrencyTransfer($journal) && !$this->isBetweenAssetAndLiability($journal)) {
|
||||
Transaction::where('transaction_journal_id', $journal->id)->update(['transaction_currency_id' => $journal->transaction_currency_id]);
|
||||
Transaction::query()->where('transaction_journal_id', $journal->id)->update(['transaction_currency_id' => $journal->transaction_currency_id]);
|
||||
++$count;
|
||||
|
||||
continue;
|
||||
|
||||
@@ -50,17 +50,22 @@ class CreatesGroupMemberships extends Command
|
||||
public static function createGroupMembership(User $user): void
|
||||
{
|
||||
// check if membership exists
|
||||
$userGroup = UserGroup::where('title', $user->email)->first();
|
||||
$userGroup = UserGroup::query()->where('title', $user->email)->first();
|
||||
if (null === $userGroup) {
|
||||
$userGroup = UserGroup::create(['title' => $user->email]);
|
||||
}
|
||||
|
||||
$userRole = UserRole::where('title', UserRoleEnum::OWNER->value)->first();
|
||||
$userRole = UserRole::query()->where('title', UserRoleEnum::OWNER->value)->first();
|
||||
|
||||
if (null === $userRole) {
|
||||
throw new FireflyException('Firefly III could not find a user role. Please make sure all migrations have run.');
|
||||
}
|
||||
$membership = GroupMembership::where('user_id', $user->id)->where('user_group_id', $userGroup->id)->where('user_role_id', $userRole->id)->first();
|
||||
$membership = GroupMembership::query()
|
||||
->where('user_id', $user->id)
|
||||
->where('user_group_id', $userGroup->id)
|
||||
->where('user_role_id', $userRole->id)
|
||||
->first()
|
||||
;
|
||||
if (null === $membership) {
|
||||
GroupMembership::create(['user_id' => $user->id, 'user_role_id' => $userRole->id, 'user_group_id' => $userGroup->id]);
|
||||
}
|
||||
|
||||
@@ -49,7 +49,7 @@ class CreatesLinkTypes extends Command
|
||||
'Reimbursement' => ['(partially) reimburses', 'is (partially) reimbursed by'],
|
||||
];
|
||||
foreach ($set as $name => $values) {
|
||||
$link = LinkType::where('name', $name)->first();
|
||||
$link = LinkType::query()->where('name', $name)->first();
|
||||
if (null === $link) {
|
||||
$link = new LinkType();
|
||||
$link->name = $name;
|
||||
|
||||
@@ -43,11 +43,11 @@ class RemovesBills extends Command
|
||||
public function handle(): int
|
||||
{
|
||||
/** @var null|TransactionType $withdrawal */
|
||||
$withdrawal = TransactionType::where('type', TransactionTypeEnum::WITHDRAWAL->value)->first();
|
||||
$withdrawal = TransactionType::query()->where('type', TransactionTypeEnum::WITHDRAWAL->value)->first();
|
||||
if (null === $withdrawal) {
|
||||
return 0;
|
||||
}
|
||||
$journals = TransactionJournal::whereNotNull('bill_id')->where('transaction_type_id', '!=', $withdrawal->id)->get();
|
||||
$journals = TransactionJournal::query()->whereNotNull('bill_id')->where('transaction_type_id', '!=', $withdrawal->id)->get();
|
||||
|
||||
/** @var TransactionJournal $journal */
|
||||
foreach ($journals as $journal) {
|
||||
|
||||
@@ -57,7 +57,7 @@ class RemovesEmptyGroups extends Command
|
||||
// again, chunks for SQLite.
|
||||
$chunks = array_chunk($groupIds, 500);
|
||||
foreach ($chunks as $chunk) {
|
||||
TransactionGroup::whereNull('deleted_at')->whereIn('id', $chunk)->delete();
|
||||
TransactionGroup::query()->whereNull('deleted_at')->whereIn('id', $chunk)->delete();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -80,10 +80,14 @@ class RemovesEmptyJournals extends Command
|
||||
*/
|
||||
private function deleteUnevenJournals(): void
|
||||
{
|
||||
$set = Transaction::whereNull('deleted_at')->groupBy('transactions.transaction_journal_id')->get([
|
||||
DB::raw('COUNT(transactions.transaction_journal_id) as the_count'),
|
||||
'transaction_journal_id',
|
||||
]);
|
||||
$set = Transaction::query()
|
||||
->whereNull('deleted_at')
|
||||
->groupBy('transactions.transaction_journal_id')
|
||||
->get([
|
||||
DB::raw('COUNT(transactions.transaction_journal_id) as the_count'),
|
||||
'transaction_journal_id',
|
||||
])
|
||||
;
|
||||
$total = 0;
|
||||
|
||||
/** @var Transaction $row */
|
||||
@@ -100,7 +104,7 @@ class RemovesEmptyJournals extends Command
|
||||
Log::error($e->getTraceAsString());
|
||||
}
|
||||
|
||||
Transaction::where('transaction_journal_id', $row->transaction_journal_id)->delete();
|
||||
Transaction::query()->where('transaction_journal_id', $row->transaction_journal_id)->delete();
|
||||
$this->friendlyWarning(sprintf(
|
||||
'Deleted transaction journal #%d because it had an uneven number of transactions.',
|
||||
$row->transaction_journal_id
|
||||
|
||||
@@ -57,10 +57,34 @@ class RemovesLinksToDeletedObjects extends Command
|
||||
*/
|
||||
public function handle(): void
|
||||
{
|
||||
$deletedTags = Tag::withTrashed()->whereNotNull('deleted_at')->get('tags.id')->pluck('id')->toArray();
|
||||
$deletedJournals = TransactionJournal::withTrashed()->whereNotNull('deleted_at')->get('transaction_journals.id')->pluck('id')->toArray();
|
||||
$deletedBudgets = Budget::withTrashed()->whereNotNull('deleted_at')->get('budgets.id')->pluck('id')->toArray();
|
||||
$deletedCategories = Category::withTrashed()->whereNotNull('deleted_at')->get('categories.id')->pluck('id')->toArray();
|
||||
$deletedTags = Tag::query()
|
||||
->withTrashed()
|
||||
->whereNotNull('deleted_at')
|
||||
->get('tags.id')
|
||||
->pluck('id')
|
||||
->toArray()
|
||||
;
|
||||
$deletedJournals = TransactionJournal::query()
|
||||
->withTrashed()
|
||||
->whereNotNull('deleted_at')
|
||||
->get('transaction_journals.id')
|
||||
->pluck('id')
|
||||
->toArray()
|
||||
;
|
||||
$deletedBudgets = Budget::query()
|
||||
->withTrashed()
|
||||
->whereNotNull('deleted_at')
|
||||
->get('budgets.id')
|
||||
->pluck('id')
|
||||
->toArray()
|
||||
;
|
||||
$deletedCategories = Category::query()
|
||||
->withTrashed()
|
||||
->whereNotNull('deleted_at')
|
||||
->get('categories.id')
|
||||
->pluck('id')
|
||||
->toArray()
|
||||
;
|
||||
|
||||
if (count($deletedTags) > 0) {
|
||||
$this->cleanupTags($deletedTags);
|
||||
|
||||
@@ -67,7 +67,7 @@ class RemovesOrphanedTransactions extends Command
|
||||
/** @var null|TransactionJournal $journal */
|
||||
$journal = TransactionJournal::find($transaction->transaction_journal_id);
|
||||
$journal?->delete();
|
||||
Transaction::where('transaction_journal_id', $transaction->transaction_journal_id)->delete();
|
||||
Transaction::query()->where('transaction_journal_id', $transaction->transaction_journal_id)->delete();
|
||||
$this->friendlyWarning(sprintf(
|
||||
'Deleted transaction journal #%d because account #%d was already deleted.',
|
||||
$transaction->transaction_journal_id,
|
||||
@@ -93,7 +93,7 @@ class RemovesOrphanedTransactions extends Command
|
||||
$this->friendlyInfo(sprintf('Found %d orphaned journal(s).', $count));
|
||||
foreach ($set as $entry) {
|
||||
/** @var null|TransactionJournal $journal */
|
||||
$journal = TransactionJournal::withTrashed()->find($entry->id);
|
||||
$journal = TransactionJournal::query()->withTrashed()->find($entry->id);
|
||||
if (null !== $journal) {
|
||||
$journal->delete();
|
||||
$this->friendlyWarning(sprintf(
|
||||
|
||||
@@ -42,16 +42,16 @@ class RemovesZeroAmount extends Command
|
||||
*/
|
||||
public function handle(): int
|
||||
{
|
||||
$set = Transaction::where('amount', 0)->get(['transaction_journal_id'])->pluck('transaction_journal_id')->toArray();
|
||||
$set = Transaction::query()->where('amount', 0)->get(['transaction_journal_id'])->pluck('transaction_journal_id')->toArray();
|
||||
$set = array_unique($set);
|
||||
$journals = TransactionJournal::whereIn('id', $set)->get();
|
||||
$journals = TransactionJournal::query()->whereIn('id', $set)->get();
|
||||
|
||||
/** @var TransactionJournal $journal */
|
||||
foreach ($journals as $journal) {
|
||||
$this->friendlyWarning(sprintf('Deleted transaction journal #%d because the amount is zero (0.00).', $journal->id));
|
||||
$journal->delete();
|
||||
|
||||
Transaction::where('transaction_journal_id', $journal->id)->delete();
|
||||
Transaction::query()->where('transaction_journal_id', $journal->id)->delete();
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -26,7 +26,7 @@ namespace FireflyIII\Console\Commands;
|
||||
|
||||
use FireflyIII\Events\Test\OwnerTestsNotificationChannel;
|
||||
use FireflyIII\Notifications\Notifiables\OwnerNotifiable;
|
||||
use FireflyIII\Support\Facades\FireflyConfig;
|
||||
use FireflyIII\Support\Facades\AppConfiguration;
|
||||
use Illuminate\Console\Command;
|
||||
|
||||
class SendTestEmail extends Command
|
||||
@@ -63,7 +63,7 @@ class SendTestEmail extends Command
|
||||
}
|
||||
|
||||
/** @var int $lastNotification */
|
||||
$lastNotification = FireflyConfig::get('last_test_notification', 123)->data;
|
||||
$lastNotification = AppConfiguration::get('last_test_notification', 123)->data;
|
||||
if ((time() - $lastNotification) < 120) {
|
||||
$this->friendlyError((string) trans('firefly.test_rate_limited'));
|
||||
|
||||
@@ -72,7 +72,7 @@ class SendTestEmail extends Command
|
||||
|
||||
$owner = new OwnerNotifiable();
|
||||
event(new OwnerTestsNotificationChannel('email', $owner));
|
||||
FireflyConfig::set('last_test_notification', time());
|
||||
AppConfiguration::set('last_test_notification', time());
|
||||
|
||||
return Command::SUCCESS;
|
||||
}
|
||||
|
||||
@@ -490,11 +490,14 @@ class ForcesDecimalSize extends Command
|
||||
{
|
||||
// select all transactions with this currency and issue.
|
||||
/** @var Builder $query */
|
||||
$query = Transaction::where('transaction_currency_id', $currency->id)->where(
|
||||
DB::raw(sprintf('CAST(amount as %s)', $this->cast)),
|
||||
$this->operator,
|
||||
DB::raw(sprintf($this->regularExpression, $currency->decimal_places))
|
||||
);
|
||||
$query = Transaction::query()
|
||||
->where('transaction_currency_id', $currency->id)
|
||||
->where(
|
||||
DB::raw(sprintf('CAST(amount as %s)', $this->cast)),
|
||||
$this->operator,
|
||||
DB::raw(sprintf($this->regularExpression, $currency->decimal_places))
|
||||
)
|
||||
;
|
||||
|
||||
$result = $query->get(['transactions.*']);
|
||||
if (0 === $result->count()) {
|
||||
@@ -519,11 +522,14 @@ class ForcesDecimalSize extends Command
|
||||
|
||||
// select all transactions with this FOREIGN currency and issue.
|
||||
/** @var Builder $query */
|
||||
$query = Transaction::where('foreign_currency_id', $currency->id)->where(
|
||||
DB::raw(sprintf('CAST(foreign_amount as %s)', $this->cast)),
|
||||
$this->operator,
|
||||
DB::raw(sprintf($this->regularExpression, $currency->decimal_places))
|
||||
);
|
||||
$query = Transaction::query()
|
||||
->where('foreign_currency_id', $currency->id)
|
||||
->where(
|
||||
DB::raw(sprintf('CAST(foreign_amount as %s)', $this->cast)),
|
||||
$this->operator,
|
||||
DB::raw(sprintf($this->regularExpression, $currency->decimal_places))
|
||||
)
|
||||
;
|
||||
|
||||
$result = $query->get();
|
||||
if (0 === $result->count()) {
|
||||
|
||||
@@ -25,7 +25,7 @@ declare(strict_types=1);
|
||||
namespace FireflyIII\Console\Commands\System;
|
||||
|
||||
use FireflyIII\Console\Commands\ShowsFriendlyMessages;
|
||||
use FireflyIII\Support\Facades\FireflyConfig;
|
||||
use FireflyIII\Support\Facades\AppConfiguration;
|
||||
use FireflyIII\Support\Models\AccountBalanceCalculator;
|
||||
use Illuminate\Console\Command;
|
||||
|
||||
@@ -52,7 +52,7 @@ class RecalculatesRunningBalance extends Command
|
||||
*/
|
||||
public function handle(): int
|
||||
{
|
||||
if (true === FireflyConfig::get('use_running_balance', config('firefly.feature_flags.running_balance_column'))->data) {
|
||||
if (true === AppConfiguration::get('use_running_balance', config('firefly.feature_flags.running_balance_column'))->data) {
|
||||
$this->friendlyInfo('Will recalculate account balances. This may take a LONG time. Please be patient.');
|
||||
$this->correctBalanceAmounts($this->option('force'));
|
||||
$this->friendlyInfo('Done recalculating account balances.');
|
||||
|
||||
@@ -25,7 +25,7 @@ declare(strict_types=1);
|
||||
namespace FireflyIII\Console\Commands\System;
|
||||
|
||||
use FireflyIII\Console\Commands\ShowsFriendlyMessages;
|
||||
use FireflyIII\Support\Facades\FireflyConfig;
|
||||
use FireflyIII\Support\Facades\AppConfiguration;
|
||||
use Illuminate\Console\Command;
|
||||
|
||||
class SetsLatestVersion extends Command
|
||||
@@ -46,7 +46,7 @@ class SetsLatestVersion extends Command
|
||||
|
||||
return 0;
|
||||
}
|
||||
FireflyConfig::set('ff3_build_time', (int) config('firefly.build_time'));
|
||||
AppConfiguration::set('ff3_build_time', (int) config('firefly.build_time'));
|
||||
$this->friendlyInfo('Updated version.');
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -25,7 +25,7 @@ declare(strict_types=1);
|
||||
namespace FireflyIII\Console\Commands\System;
|
||||
|
||||
use FireflyIII\Console\Commands\ShowsFriendlyMessages;
|
||||
use FireflyIII\Support\Facades\FireflyConfig;
|
||||
use FireflyIII\Support\Facades\AppConfiguration;
|
||||
use Illuminate\Console\Command;
|
||||
use Illuminate\Database\QueryException;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
@@ -108,8 +108,8 @@ class VerifySecurityAlerts extends Command
|
||||
private function removeOldAdvisory(): void
|
||||
{
|
||||
try {
|
||||
FireflyConfig::delete('upgrade_security_message');
|
||||
FireflyConfig::delete('upgrade_security_level');
|
||||
AppConfiguration::delete('upgrade_security_message');
|
||||
AppConfiguration::delete('upgrade_security_level');
|
||||
} catch (QueryException $e) {
|
||||
Log::debug(sprintf('Could not delete old security advisory, but thats OK: %s', $e->getMessage()));
|
||||
}
|
||||
@@ -118,8 +118,8 @@ class VerifySecurityAlerts extends Command
|
||||
private function saveSecurityAdvisory(array $array): void
|
||||
{
|
||||
try {
|
||||
FireflyConfig::set('upgrade_security_message', $array['message']);
|
||||
FireflyConfig::set('upgrade_security_level', $array['level']);
|
||||
AppConfiguration::set('upgrade_security_message', $array['message']);
|
||||
AppConfiguration::set('upgrade_security_level', $array['level']);
|
||||
} catch (QueryException $e) {
|
||||
Log::debug(sprintf('Could not save new security advisory, but thats OK: %s', $e->getMessage()));
|
||||
}
|
||||
|
||||
@@ -27,7 +27,7 @@ namespace FireflyIII\Console\Commands\Tools;
|
||||
use Carbon\Carbon;
|
||||
use FireflyIII\Console\Commands\ShowsFriendlyMessages;
|
||||
use FireflyIII\Services\FireflyIIIOrg\Update\UpdateRequestInterface;
|
||||
use FireflyIII\Support\Facades\FireflyConfig;
|
||||
use FireflyIII\Support\Facades\AppConfiguration;
|
||||
use Illuminate\Console\Command;
|
||||
|
||||
class ChecksForUpdates extends Command
|
||||
@@ -57,7 +57,7 @@ class ChecksForUpdates extends Command
|
||||
$version = config('firefly.version');
|
||||
|
||||
$this->friendlyLine(sprintf('You are running version "%s", built on %s', $version, $build->format('Y-m-d H:i')));
|
||||
$permission = FireflyConfig::get('permission_update_check', -1)->data;
|
||||
$permission = AppConfiguration::get('permission_update_check', -1)->data;
|
||||
if (1 !== $permission && false === $this->option('force')) {
|
||||
$this->friendlyWarning('Checking for updates is disabled. To overrule, use --force.');
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ use FireflyIII\Support\Cronjobs\ExchangeRatesCronjob;
|
||||
use FireflyIII\Support\Cronjobs\RecurringCronjob;
|
||||
use FireflyIII\Support\Cronjobs\UpdateCheckCronjob;
|
||||
use FireflyIII\Support\Cronjobs\WebhookCronjob;
|
||||
use FireflyIII\Support\Facades\FireflyConfig;
|
||||
use FireflyIII\Support\Facades\AppConfiguration;
|
||||
use Illuminate\Console\Command;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use InvalidArgumentException;
|
||||
@@ -74,7 +74,7 @@ class Cron extends Command
|
||||
$force = (bool) $this->option('force');
|
||||
|
||||
// Fire exchange rates cron job.
|
||||
if (true === FireflyConfig::get('enable_external_rates', config('cer.download_enabled'))->data && ($doAll || $this->option('download-cer'))) {
|
||||
if (true === AppConfiguration::get('enable_external_rates', config('cer.download_enabled'))->data && ($doAll || $this->option('download-cer'))) {
|
||||
try {
|
||||
$this->exchangeRatesCronJob($force, $date);
|
||||
} catch (FireflyException $e) {
|
||||
|
||||
@@ -28,7 +28,7 @@ use FireflyIII\Console\Commands\ShowsFriendlyMessages;
|
||||
use FireflyIII\Models\Transaction;
|
||||
use FireflyIII\Models\TransactionJournal;
|
||||
use FireflyIII\Repositories\Journal\JournalCLIRepositoryInterface;
|
||||
use FireflyIII\Support\Facades\FireflyConfig;
|
||||
use FireflyIII\Support\Facades\AppConfiguration;
|
||||
use Illuminate\Console\Command;
|
||||
use Illuminate\Database\QueryException;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
@@ -93,7 +93,8 @@ class AddsTransactionIdentifiers extends Command
|
||||
|
||||
try {
|
||||
/** @var Transaction $opposing */
|
||||
$opposing = Transaction::where('transaction_journal_id', $transaction->transaction_journal_id)
|
||||
$opposing = Transaction::query()
|
||||
->where('transaction_journal_id', $transaction->transaction_journal_id)
|
||||
->where('amount', $amount)
|
||||
->where('identifier', '=', 0)
|
||||
->whereNotIn('id', $exclude)
|
||||
@@ -114,14 +115,14 @@ class AddsTransactionIdentifiers extends Command
|
||||
|
||||
private function isExecuted(): bool
|
||||
{
|
||||
$configVar = FireflyConfig::get(self::CONFIG_NAME, false);
|
||||
$configVar = AppConfiguration::get(self::CONFIG_NAME, false);
|
||||
|
||||
return (bool) $configVar?->data;
|
||||
}
|
||||
|
||||
private function markAsExecuted(): void
|
||||
{
|
||||
FireflyConfig::set(self::CONFIG_NAME, true);
|
||||
AppConfiguration::set(self::CONFIG_NAME, true);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -27,7 +27,7 @@ namespace FireflyIII\Console\Commands\Upgrade;
|
||||
use FireflyIII\Console\Commands\ShowsFriendlyMessages;
|
||||
use FireflyIII\Exceptions\FireflyException;
|
||||
use FireflyIII\Models\Preference;
|
||||
use FireflyIII\Support\Facades\FireflyConfig;
|
||||
use FireflyIII\Support\Facades\AppConfiguration;
|
||||
use Illuminate\Console\Command;
|
||||
use Illuminate\Contracts\Encryption\DecryptException;
|
||||
use Illuminate\Support\Facades\Crypt;
|
||||
@@ -145,7 +145,7 @@ class RemovesDatabaseDecryption extends Command
|
||||
$this->friendlyPositive(sprintf('Decrypted the data in table "%s".', $table));
|
||||
// mark as decrypted:
|
||||
$configName = sprintf('is_decrypted_%s', $table);
|
||||
FireflyConfig::set($configName, true);
|
||||
AppConfiguration::set($configName, true);
|
||||
}
|
||||
|
||||
private function isDecrypted(string $table): bool
|
||||
@@ -154,7 +154,7 @@ class RemovesDatabaseDecryption extends Command
|
||||
$configVar = null;
|
||||
|
||||
try {
|
||||
$configVar = FireflyConfig::get($configName, false);
|
||||
$configVar = AppConfiguration::get($configName, false);
|
||||
} catch (FireflyException $e) {
|
||||
Log::error($e->getMessage());
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user