Update various things. I know, great description.

This commit is contained in:
James Cole
2023-11-30 17:28:44 +01:00
parent 627db2c2df
commit 271e4271eb
100 changed files with 488 additions and 409 deletions

View File

@@ -539,43 +539,46 @@
},
{
"name": "symfony/console",
"version": "v6.3.8",
"version": "v7.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
"reference": "0d14a9f6d04d4ac38a8cea1171f4554e325dae92"
"reference": "64e06788686633deb8d9a7c75ab31bcf4b233a26"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/console/zipball/0d14a9f6d04d4ac38a8cea1171f4554e325dae92",
"reference": "0d14a9f6d04d4ac38a8cea1171f4554e325dae92",
"url": "https://api.github.com/repos/symfony/console/zipball/64e06788686633deb8d9a7c75ab31bcf4b233a26",
"reference": "64e06788686633deb8d9a7c75ab31bcf4b233a26",
"shasum": ""
},
"require": {
"php": ">=8.1",
"symfony/deprecation-contracts": "^2.5|^3",
"php": ">=8.2",
"symfony/polyfill-mbstring": "~1.0",
"symfony/service-contracts": "^2.5|^3",
"symfony/string": "^5.4|^6.0"
"symfony/string": "^6.4|^7.0"
},
"conflict": {
"symfony/dependency-injection": "<5.4",
"symfony/dotenv": "<5.4",
"symfony/event-dispatcher": "<5.4",
"symfony/lock": "<5.4",
"symfony/process": "<5.4"
"symfony/dependency-injection": "<6.4",
"symfony/dotenv": "<6.4",
"symfony/event-dispatcher": "<6.4",
"symfony/lock": "<6.4",
"symfony/process": "<6.4"
},
"provide": {
"psr/log-implementation": "1.0|2.0|3.0"
},
"require-dev": {
"psr/log": "^1|^2|^3",
"symfony/config": "^5.4|^6.0",
"symfony/dependency-injection": "^5.4|^6.0",
"symfony/event-dispatcher": "^5.4|^6.0",
"symfony/lock": "^5.4|^6.0",
"symfony/process": "^5.4|^6.0",
"symfony/var-dumper": "^5.4|^6.0"
"symfony/config": "^6.4|^7.0",
"symfony/dependency-injection": "^6.4|^7.0",
"symfony/event-dispatcher": "^6.4|^7.0",
"symfony/http-foundation": "^6.4|^7.0",
"symfony/http-kernel": "^6.4|^7.0",
"symfony/lock": "^6.4|^7.0",
"symfony/messenger": "^6.4|^7.0",
"symfony/process": "^6.4|^7.0",
"symfony/stopwatch": "^6.4|^7.0",
"symfony/var-dumper": "^6.4|^7.0"
},
"type": "library",
"autoload": {
@@ -609,7 +612,7 @@
"terminal"
],
"support": {
"source": "https://github.com/symfony/console/tree/v6.3.8"
"source": "https://github.com/symfony/console/tree/v7.0.0"
},
"funding": [
{
@@ -625,7 +628,7 @@
"type": "tidelift"
}
],
"time": "2023-10-31T08:09:35+00:00"
"time": "2023-11-20T16:43:42+00:00"
},
{
"name": "symfony/deprecation-contracts",
@@ -696,24 +699,24 @@
},
{
"name": "symfony/event-dispatcher",
"version": "v6.3.2",
"version": "v7.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
"reference": "adb01fe097a4ee930db9258a3cc906b5beb5cf2e"
"reference": "c459b40ffe67c49af6fd392aac374c9edf8a027e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/adb01fe097a4ee930db9258a3cc906b5beb5cf2e",
"reference": "adb01fe097a4ee930db9258a3cc906b5beb5cf2e",
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/c459b40ffe67c49af6fd392aac374c9edf8a027e",
"reference": "c459b40ffe67c49af6fd392aac374c9edf8a027e",
"shasum": ""
},
"require": {
"php": ">=8.1",
"php": ">=8.2",
"symfony/event-dispatcher-contracts": "^2.5|^3"
},
"conflict": {
"symfony/dependency-injection": "<5.4",
"symfony/dependency-injection": "<6.4",
"symfony/service-contracts": "<2.5"
},
"provide": {
@@ -722,13 +725,13 @@
},
"require-dev": {
"psr/log": "^1|^2|^3",
"symfony/config": "^5.4|^6.0",
"symfony/dependency-injection": "^5.4|^6.0",
"symfony/error-handler": "^5.4|^6.0",
"symfony/expression-language": "^5.4|^6.0",
"symfony/http-foundation": "^5.4|^6.0",
"symfony/config": "^6.4|^7.0",
"symfony/dependency-injection": "^6.4|^7.0",
"symfony/error-handler": "^6.4|^7.0",
"symfony/expression-language": "^6.4|^7.0",
"symfony/http-foundation": "^6.4|^7.0",
"symfony/service-contracts": "^2.5|^3",
"symfony/stopwatch": "^5.4|^6.0"
"symfony/stopwatch": "^6.4|^7.0"
},
"type": "library",
"autoload": {
@@ -756,7 +759,7 @@
"description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/event-dispatcher/tree/v6.3.2"
"source": "https://github.com/symfony/event-dispatcher/tree/v7.0.0"
},
"funding": [
{
@@ -772,7 +775,7 @@
"type": "tidelift"
}
],
"time": "2023-07-06T06:56:43+00:00"
"time": "2023-07-27T16:29:09+00:00"
},
{
"name": "symfony/event-dispatcher-contracts",
@@ -852,20 +855,20 @@
},
{
"name": "symfony/filesystem",
"version": "v6.3.1",
"version": "v7.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
"reference": "edd36776956f2a6fcf577edb5b05eb0e3bdc52ae"
"reference": "7da8ea2362a283771478c5f7729cfcb43a76b8b7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/filesystem/zipball/edd36776956f2a6fcf577edb5b05eb0e3bdc52ae",
"reference": "edd36776956f2a6fcf577edb5b05eb0e3bdc52ae",
"url": "https://api.github.com/repos/symfony/filesystem/zipball/7da8ea2362a283771478c5f7729cfcb43a76b8b7",
"reference": "7da8ea2362a283771478c5f7729cfcb43a76b8b7",
"shasum": ""
},
"require": {
"php": ">=8.1",
"php": ">=8.2",
"symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-mbstring": "~1.8"
},
@@ -895,7 +898,7 @@
"description": "Provides basic utilities for the filesystem",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/filesystem/tree/v6.3.1"
"source": "https://github.com/symfony/filesystem/tree/v7.0.0"
},
"funding": [
{
@@ -911,27 +914,27 @@
"type": "tidelift"
}
],
"time": "2023-06-01T08:30:39+00:00"
"time": "2023-07-27T06:33:22+00:00"
},
{
"name": "symfony/finder",
"version": "v6.3.5",
"version": "v7.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
"reference": "a1b31d88c0e998168ca7792f222cbecee47428c4"
"reference": "6e5688d69f7cfc4ed4a511e96007e06c2d34ce56"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/finder/zipball/a1b31d88c0e998168ca7792f222cbecee47428c4",
"reference": "a1b31d88c0e998168ca7792f222cbecee47428c4",
"url": "https://api.github.com/repos/symfony/finder/zipball/6e5688d69f7cfc4ed4a511e96007e06c2d34ce56",
"reference": "6e5688d69f7cfc4ed4a511e96007e06c2d34ce56",
"shasum": ""
},
"require": {
"php": ">=8.1"
"php": ">=8.2"
},
"require-dev": {
"symfony/filesystem": "^6.0"
"symfony/filesystem": "^6.4|^7.0"
},
"type": "library",
"autoload": {
@@ -959,7 +962,7 @@
"description": "Finds files and directories via an intuitive fluent interface",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/finder/tree/v6.3.5"
"source": "https://github.com/symfony/finder/tree/v7.0.0"
},
"funding": [
{
@@ -975,24 +978,24 @@
"type": "tidelift"
}
],
"time": "2023-09-26T12:56:25+00:00"
"time": "2023-10-31T17:59:56+00:00"
},
{
"name": "symfony/options-resolver",
"version": "v6.3.0",
"version": "v7.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/options-resolver.git",
"reference": "a10f19f5198d589d5c33333cffe98dc9820332dd"
"reference": "700ff4096e346f54cb628ea650767c8130f1001f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/options-resolver/zipball/a10f19f5198d589d5c33333cffe98dc9820332dd",
"reference": "a10f19f5198d589d5c33333cffe98dc9820332dd",
"url": "https://api.github.com/repos/symfony/options-resolver/zipball/700ff4096e346f54cb628ea650767c8130f1001f",
"reference": "700ff4096e346f54cb628ea650767c8130f1001f",
"shasum": ""
},
"require": {
"php": ">=8.1",
"php": ">=8.2",
"symfony/deprecation-contracts": "^2.5|^3"
},
"type": "library",
@@ -1026,7 +1029,7 @@
"options"
],
"support": {
"source": "https://github.com/symfony/options-resolver/tree/v6.3.0"
"source": "https://github.com/symfony/options-resolver/tree/v7.0.0"
},
"funding": [
{
@@ -1042,7 +1045,7 @@
"type": "tidelift"
}
],
"time": "2023-05-12T14:21:09+00:00"
"time": "2023-08-08T10:20:21+00:00"
},
{
"name": "symfony/polyfill-ctype",
@@ -1538,20 +1541,20 @@
},
{
"name": "symfony/process",
"version": "v6.3.4",
"version": "v7.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
"reference": "0b5c29118f2e980d455d2e34a5659f4579847c54"
"reference": "13bdb1670c7f510494e04fcb2bfa29af63db9c0d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/process/zipball/0b5c29118f2e980d455d2e34a5659f4579847c54",
"reference": "0b5c29118f2e980d455d2e34a5659f4579847c54",
"url": "https://api.github.com/repos/symfony/process/zipball/13bdb1670c7f510494e04fcb2bfa29af63db9c0d",
"reference": "13bdb1670c7f510494e04fcb2bfa29af63db9c0d",
"shasum": ""
},
"require": {
"php": ">=8.1"
"php": ">=8.2"
},
"type": "library",
"autoload": {
@@ -1579,7 +1582,7 @@
"description": "Executes commands in sub-processes",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/process/tree/v6.3.4"
"source": "https://github.com/symfony/process/tree/v7.0.0"
},
"funding": [
{
@@ -1595,7 +1598,7 @@
"type": "tidelift"
}
],
"time": "2023-08-07T10:39:22+00:00"
"time": "2023-11-20T16:43:42+00:00"
},
{
"name": "symfony/service-contracts",
@@ -1681,20 +1684,20 @@
},
{
"name": "symfony/stopwatch",
"version": "v6.3.0",
"version": "v7.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/stopwatch.git",
"reference": "fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2"
"reference": "7bbfa3dd564a0ce12eb4acaaa46823c740f9cb7a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/stopwatch/zipball/fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2",
"reference": "fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2",
"url": "https://api.github.com/repos/symfony/stopwatch/zipball/7bbfa3dd564a0ce12eb4acaaa46823c740f9cb7a",
"reference": "7bbfa3dd564a0ce12eb4acaaa46823c740f9cb7a",
"shasum": ""
},
"require": {
"php": ">=8.1",
"php": ">=8.2",
"symfony/service-contracts": "^2.5|^3"
},
"type": "library",
@@ -1723,7 +1726,7 @@
"description": "Provides a way to profile code",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/stopwatch/tree/v6.3.0"
"source": "https://github.com/symfony/stopwatch/tree/v7.0.0"
},
"funding": [
{
@@ -1739,24 +1742,24 @@
"type": "tidelift"
}
],
"time": "2023-02-16T10:14:28+00:00"
"time": "2023-07-05T13:06:06+00:00"
},
{
"name": "symfony/string",
"version": "v6.3.8",
"version": "v7.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
"reference": "13880a87790c76ef994c91e87efb96134522577a"
"reference": "92bd2bfbba476d4a1838e5e12168bef2fd1e6620"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/string/zipball/13880a87790c76ef994c91e87efb96134522577a",
"reference": "13880a87790c76ef994c91e87efb96134522577a",
"url": "https://api.github.com/repos/symfony/string/zipball/92bd2bfbba476d4a1838e5e12168bef2fd1e6620",
"reference": "92bd2bfbba476d4a1838e5e12168bef2fd1e6620",
"shasum": ""
},
"require": {
"php": ">=8.1",
"php": ">=8.2",
"symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-intl-grapheme": "~1.0",
"symfony/polyfill-intl-normalizer": "~1.0",
@@ -1766,11 +1769,11 @@
"symfony/translation-contracts": "<2.5"
},
"require-dev": {
"symfony/error-handler": "^5.4|^6.0",
"symfony/http-client": "^5.4|^6.0",
"symfony/intl": "^6.2",
"symfony/error-handler": "^6.4|^7.0",
"symfony/http-client": "^6.4|^7.0",
"symfony/intl": "^6.4|^7.0",
"symfony/translation-contracts": "^2.5|^3.0",
"symfony/var-exporter": "^5.4|^6.0"
"symfony/var-exporter": "^6.4|^7.0"
},
"type": "library",
"autoload": {
@@ -1809,7 +1812,7 @@
"utf8"
],
"support": {
"source": "https://github.com/symfony/string/tree/v6.3.8"
"source": "https://github.com/symfony/string/tree/v7.0.0"
},
"funding": [
{
@@ -1825,7 +1828,7 @@
"type": "tidelift"
}
],
"time": "2023-11-09T08:28:21+00:00"
"time": "2023-11-29T08:40:23+00:00"
}
],
"packages-dev": [],

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

@@ -146,23 +146,24 @@
},
{
"name": "pdepend/pdepend",
"version": "2.15.1",
"version": "2.16.0",
"source": {
"type": "git",
"url": "https://github.com/pdepend/pdepend.git",
"reference": "d12f25bcdfb7754bea458a4a5cb159d55e9950d0"
"reference": "8dfc0c46529e2073fa97986552f80646eedac562"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/pdepend/pdepend/zipball/d12f25bcdfb7754bea458a4a5cb159d55e9950d0",
"reference": "d12f25bcdfb7754bea458a4a5cb159d55e9950d0",
"url": "https://api.github.com/repos/pdepend/pdepend/zipball/8dfc0c46529e2073fa97986552f80646eedac562",
"reference": "8dfc0c46529e2073fa97986552f80646eedac562",
"shasum": ""
},
"require": {
"php": ">=5.3.7",
"symfony/config": "^2.3.0|^3|^4|^5|^6.0",
"symfony/dependency-injection": "^2.3.0|^3|^4|^5|^6.0",
"symfony/filesystem": "^2.3.0|^3|^4|^5|^6.0"
"symfony/config": "^2.3.0|^3|^4|^5|^6.0|^7.0",
"symfony/dependency-injection": "^2.3.0|^3|^4|^5|^6.0|^7.0",
"symfony/filesystem": "^2.3.0|^3|^4|^5|^6.0|^7.0",
"symfony/polyfill-mbstring": "^1.19"
},
"require-dev": {
"easy-doc/easy-doc": "0.0.0|^1.2.3",
@@ -197,7 +198,7 @@
],
"support": {
"issues": "https://github.com/pdepend/pdepend/issues",
"source": "https://github.com/pdepend/pdepend/tree/2.15.1"
"source": "https://github.com/pdepend/pdepend/tree/2.16.0"
},
"funding": [
{
@@ -205,7 +206,7 @@
"type": "tidelift"
}
],
"time": "2023-09-28T12:00:56+00:00"
"time": "2023-11-29T08:52:35+00:00"
},
{
"name": "phpmd/phpmd",
@@ -396,34 +397,34 @@
},
{
"name": "symfony/config",
"version": "v6.3.8",
"version": "v7.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/config.git",
"reference": "b7a63887960359e5b59b15826fa9f9be10acbe88"
"reference": "8789646600f4e7e451dde9e1dc81cfa429f3857a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/config/zipball/b7a63887960359e5b59b15826fa9f9be10acbe88",
"reference": "b7a63887960359e5b59b15826fa9f9be10acbe88",
"url": "https://api.github.com/repos/symfony/config/zipball/8789646600f4e7e451dde9e1dc81cfa429f3857a",
"reference": "8789646600f4e7e451dde9e1dc81cfa429f3857a",
"shasum": ""
},
"require": {
"php": ">=8.1",
"php": ">=8.2",
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/filesystem": "^5.4|^6.0",
"symfony/filesystem": "^6.4|^7.0",
"symfony/polyfill-ctype": "~1.8"
},
"conflict": {
"symfony/finder": "<5.4",
"symfony/finder": "<6.4",
"symfony/service-contracts": "<2.5"
},
"require-dev": {
"symfony/event-dispatcher": "^5.4|^6.0",
"symfony/finder": "^5.4|^6.0",
"symfony/messenger": "^5.4|^6.0",
"symfony/event-dispatcher": "^6.4|^7.0",
"symfony/finder": "^6.4|^7.0",
"symfony/messenger": "^6.4|^7.0",
"symfony/service-contracts": "^2.5|^3",
"symfony/yaml": "^5.4|^6.0"
"symfony/yaml": "^6.4|^7.0"
},
"type": "library",
"autoload": {
@@ -451,7 +452,7 @@
"description": "Helps you find, load, combine, autofill and validate configuration values of any kind",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/config/tree/v6.3.8"
"source": "https://github.com/symfony/config/tree/v7.0.0"
},
"funding": [
{
@@ -467,44 +468,43 @@
"type": "tidelift"
}
],
"time": "2023-11-09T08:28:21+00:00"
"time": "2023-11-09T08:30:23+00:00"
},
{
"name": "symfony/dependency-injection",
"version": "v6.3.8",
"version": "v7.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/dependency-injection.git",
"reference": "1f30f545c4151f611148fc19e28d54d39e0a00bc"
"reference": "71c053f3284a57d611e11bd7d7f1a76de8514a07"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/dependency-injection/zipball/1f30f545c4151f611148fc19e28d54d39e0a00bc",
"reference": "1f30f545c4151f611148fc19e28d54d39e0a00bc",
"url": "https://api.github.com/repos/symfony/dependency-injection/zipball/71c053f3284a57d611e11bd7d7f1a76de8514a07",
"reference": "71c053f3284a57d611e11bd7d7f1a76de8514a07",
"shasum": ""
},
"require": {
"php": ">=8.1",
"php": ">=8.2",
"psr/container": "^1.1|^2.0",
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/service-contracts": "^2.5|^3.0",
"symfony/var-exporter": "^6.2.10"
"symfony/service-contracts": "^3.3",
"symfony/var-exporter": "^6.4|^7.0"
},
"conflict": {
"ext-psr": "<1.1|>=2",
"symfony/config": "<6.1",
"symfony/finder": "<5.4",
"symfony/proxy-manager-bridge": "<6.3",
"symfony/yaml": "<5.4"
"symfony/config": "<6.4",
"symfony/finder": "<6.4",
"symfony/yaml": "<6.4"
},
"provide": {
"psr/container-implementation": "1.1|2.0",
"symfony/service-implementation": "1.1|2.0|3.0"
},
"require-dev": {
"symfony/config": "^6.1",
"symfony/expression-language": "^5.4|^6.0",
"symfony/yaml": "^5.4|^6.0"
"symfony/config": "^6.4|^7.0",
"symfony/expression-language": "^6.4|^7.0",
"symfony/yaml": "^6.4|^7.0"
},
"type": "library",
"autoload": {
@@ -532,7 +532,7 @@
"description": "Allows you to standardize and centralize the way objects are constructed in your application",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/dependency-injection/tree/v6.3.8"
"source": "https://github.com/symfony/dependency-injection/tree/v7.0.0"
},
"funding": [
{
@@ -548,7 +548,7 @@
"type": "tidelift"
}
],
"time": "2023-10-31T08:07:48+00:00"
"time": "2023-11-15T15:38:56+00:00"
},
{
"name": "symfony/deprecation-contracts",
@@ -619,20 +619,20 @@
},
{
"name": "symfony/filesystem",
"version": "v6.3.1",
"version": "v7.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
"reference": "edd36776956f2a6fcf577edb5b05eb0e3bdc52ae"
"reference": "7da8ea2362a283771478c5f7729cfcb43a76b8b7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/filesystem/zipball/edd36776956f2a6fcf577edb5b05eb0e3bdc52ae",
"reference": "edd36776956f2a6fcf577edb5b05eb0e3bdc52ae",
"url": "https://api.github.com/repos/symfony/filesystem/zipball/7da8ea2362a283771478c5f7729cfcb43a76b8b7",
"reference": "7da8ea2362a283771478c5f7729cfcb43a76b8b7",
"shasum": ""
},
"require": {
"php": ">=8.1",
"php": ">=8.2",
"symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-mbstring": "~1.8"
},
@@ -662,7 +662,7 @@
"description": "Provides basic utilities for the filesystem",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/filesystem/tree/v6.3.1"
"source": "https://github.com/symfony/filesystem/tree/v7.0.0"
},
"funding": [
{
@@ -678,7 +678,7 @@
"type": "tidelift"
}
],
"time": "2023-06-01T08:30:39+00:00"
"time": "2023-07-27T06:33:22+00:00"
},
{
"name": "symfony/polyfill-ctype",
@@ -929,23 +929,23 @@
},
{
"name": "symfony/var-exporter",
"version": "v6.3.6",
"version": "v7.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-exporter.git",
"reference": "374d289c13cb989027274c86206ddc63b16a2441"
"reference": "d97726e8d254a2d5512b2b4ba204735d84e7167d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/var-exporter/zipball/374d289c13cb989027274c86206ddc63b16a2441",
"reference": "374d289c13cb989027274c86206ddc63b16a2441",
"url": "https://api.github.com/repos/symfony/var-exporter/zipball/d97726e8d254a2d5512b2b4ba204735d84e7167d",
"reference": "d97726e8d254a2d5512b2b4ba204735d84e7167d",
"shasum": ""
},
"require": {
"php": ">=8.1"
"php": ">=8.2"
},
"require-dev": {
"symfony/var-dumper": "^5.4|^6.0"
"symfony/var-dumper": "^6.4|^7.0"
},
"type": "library",
"autoload": {
@@ -983,7 +983,7 @@
"serialize"
],
"support": {
"source": "https://github.com/symfony/var-exporter/tree/v6.3.6"
"source": "https://github.com/symfony/var-exporter/tree/v7.0.0"
},
"funding": [
{
@@ -999,7 +999,7 @@
"type": "tidelift"
}
],
"time": "2023-10-13T09:16:49+00:00"
"time": "2023-11-29T08:40:23+00:00"
}
],
"aliases": [],

View File

@@ -30,6 +30,7 @@ use FireflyIII\Api\V1\Requests\Data\DateRequest;
use FireflyIII\Exceptions\FireflyException;
use FireflyIII\Models\Account;
use FireflyIII\Models\AccountType;
use FireflyIII\Models\Preference;
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
use FireflyIII\Support\Http\Api\ApiSupport;
use FireflyIII\User;
@@ -90,6 +91,7 @@ class AccountController extends Controller
// user's preferences
$defaultSet = $this->repository->getAccountsByType([AccountType::ASSET])->pluck('id')->toArray();
/** @var Preference $frontPage */
$frontPage = app('preferences')->get('frontPageAccounts', $defaultSet);
$default = app('amount')->getDefaultCurrency();

View File

@@ -27,6 +27,8 @@ namespace FireflyIII\Api\V1\Controllers;
use Carbon\Carbon;
use Carbon\Exceptions\InvalidDateException;
use Carbon\Exceptions\InvalidFormatException;
use FireflyIII\Models\Preference;
use FireflyIII\User;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Foundation\Validation\ValidatesRequests;
@@ -141,7 +143,10 @@ abstract class Controller extends BaseController
'limit' === $integer && // @phpstan-ignore-line
auth()->check()) {
// set default for user:
$pageSize = (int)app('preferences')->getForUser(auth()->user(), 'listPageSize', 50)->data;
/** @var User $user */
$user = auth()->user();
/** @var Preference $pageSize */
$pageSize = (int)app('preferences')->getForUser($user, 'listPageSize', 50)->data;
$bag->set($integer, $pageSize);
}
}

View File

@@ -35,6 +35,7 @@ use FireflyIII\Models\RuleGroup;
use FireflyIII\Models\Tag;
use FireflyIII\Models\TransactionGroup;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\User;
use Illuminate\Http\JsonResponse;
/**
@@ -51,6 +52,7 @@ class PurgeController extends Controller
*/
public function purge(): JsonResponse
{
/** @var User $user */
$user = auth()->user();
// some manual code, too lazy to call all repositories.

View File

@@ -82,75 +82,75 @@ class StoreRequest extends FormRequest
foreach ($this->get('transactions') as $transaction) {
$object = new NullArrayObject($transaction);
$return[] = [
'type' => $this->clearString($object['type'], false),
'type' => $this->clearString($object['type']),
'date' => $this->dateFromValue($object['date']),
'order' => $this->integerFromValue((string)$object['order']),
'currency_id' => $this->integerFromValue((string)$object['currency_id']),
'currency_code' => $this->clearString((string)$object['currency_code'], false),
'currency_code' => $this->clearString((string)$object['currency_code']),
// foreign currency info:
'foreign_currency_id' => $this->integerFromValue((string)$object['foreign_currency_id']),
'foreign_currency_code' => $this->clearString((string)$object['foreign_currency_code'], false),
'foreign_currency_code' => $this->clearString((string)$object['foreign_currency_code']),
// amount and foreign amount. Cannot be 0.
'amount' => $this->clearString((string)$object['amount'], false),
'foreign_amount' => $this->clearString((string)$object['foreign_amount'], false),
'amount' => $this->clearString((string)$object['amount']),
'foreign_amount' => $this->clearString((string)$object['foreign_amount']),
// description.
'description' => $this->clearString($object['description'], false),
// source of transaction. If everything is null, assume cash account.
'source_id' => $this->integerFromValue((string)$object['source_id']),
'source_name' => $this->clearString((string)$object['source_name'], false),
'source_iban' => $this->clearString((string)$object['source_iban'], false),
'source_number' => $this->clearString((string)$object['source_number'], false),
'source_bic' => $this->clearString((string)$object['source_bic'], false),
'source_name' => $this->clearString((string)$object['source_name']),
'source_iban' => $this->clearString((string)$object['source_iban']),
'source_number' => $this->clearString((string)$object['source_number']),
'source_bic' => $this->clearString((string)$object['source_bic']),
// destination of transaction. If everything is null, assume cash account.
'destination_id' => $this->integerFromValue((string)$object['destination_id']),
'destination_name' => $this->clearString((string)$object['destination_name'], false),
'destination_iban' => $this->clearString((string)$object['destination_iban'], false),
'destination_number' => $this->clearString((string)$object['destination_number'], false),
'destination_bic' => $this->clearString((string)$object['destination_bic'], false),
'destination_name' => $this->clearString((string)$object['destination_name']),
'destination_iban' => $this->clearString((string)$object['destination_iban']),
'destination_number' => $this->clearString((string)$object['destination_number']),
'destination_bic' => $this->clearString((string)$object['destination_bic']),
// budget info
'budget_id' => $this->integerFromValue((string)$object['budget_id']),
'budget_name' => $this->clearString((string)$object['budget_name'], false),
'budget_name' => $this->clearString((string)$object['budget_name']),
// category info
'category_id' => $this->integerFromValue((string)$object['category_id']),
'category_name' => $this->clearString((string)$object['category_name'], false),
'category_name' => $this->clearString((string)$object['category_name']),
// journal bill reference. Optional. Will only work for withdrawals
'bill_id' => $this->integerFromValue((string)$object['bill_id']),
'bill_name' => $this->clearString((string)$object['bill_name'], false),
'bill_name' => $this->clearString((string)$object['bill_name']),
// piggy bank reference. Optional. Will only work for transfers
'piggy_bank_id' => $this->integerFromValue((string)$object['piggy_bank_id']),
'piggy_bank_name' => $this->clearString((string)$object['piggy_bank_name'], false),
'piggy_bank_name' => $this->clearString((string)$object['piggy_bank_name']),
// some other interesting properties
'reconciled' => $this->convertBoolean((string)$object['reconciled']),
'notes' => $this->clearString((string)$object['notes']),
'notes' => $this->clearStringKeepNewlines((string)$object['notes']),
'tags' => $this->arrayFromValue($object['tags']),
// all custom fields:
'internal_reference' => $this->clearString((string)$object['internal_reference'], false),
'external_id' => $this->clearString((string)$object['external_id'], false),
'internal_reference' => $this->clearString((string)$object['internal_reference']),
'external_id' => $this->clearString((string)$object['external_id']),
'original_source' => sprintf('ff3-v%s|api-v%s', config('firefly.version'), config('firefly.api_version')),
'recurrence_id' => $this->integerFromValue($object['recurrence_id']),
'bunq_payment_id' => $this->clearString((string)$object['bunq_payment_id'], false),
'external_url' => $this->clearString((string)$object['external_url'], false),
'bunq_payment_id' => $this->clearString((string)$object['bunq_payment_id']),
'external_url' => $this->clearString((string)$object['external_url']),
'sepa_cc' => $this->clearString((string)$object['sepa_cc'], false),
'sepa_ct_op' => $this->clearString((string)$object['sepa_ct_op'], false),
'sepa_ct_id' => $this->clearString((string)$object['sepa_ct_id'], false),
'sepa_db' => $this->clearString((string)$object['sepa_db'], false),
'sepa_country' => $this->clearString((string)$object['sepa_country'], false),
'sepa_ep' => $this->clearString((string)$object['sepa_ep'], false),
'sepa_ci' => $this->clearString((string)$object['sepa_ci'], false),
'sepa_batch_id' => $this->clearString((string)$object['sepa_batch_id'], false),
'sepa_cc' => $this->clearString((string)$object['sepa_cc']),
'sepa_ct_op' => $this->clearString((string)$object['sepa_ct_op']),
'sepa_ct_id' => $this->clearString((string)$object['sepa_ct_id']),
'sepa_db' => $this->clearString((string)$object['sepa_db']),
'sepa_country' => $this->clearString((string)$object['sepa_country']),
'sepa_ep' => $this->clearString((string)$object['sepa_ep']),
'sepa_ci' => $this->clearString((string)$object['sepa_ci']),
'sepa_batch_id' => $this->clearString((string)$object['sepa_batch_id']),
// custom date fields. Must be Carbon objects. Presence is optional.
'interest_date' => $this->dateFromValue($object['interest_date']),
'book_date' => $this->dateFromValue($object['book_date']),

View File

@@ -215,7 +215,7 @@ class UpdateRequest extends FormRequest
{
foreach ($this->stringFields as $fieldName) {
if (array_key_exists($fieldName, $transaction)) {
$current[$fieldName] = $this->clearString((string)$transaction[$fieldName], false);
$current[$fieldName] = $this->clearString((string)$transaction[$fieldName]);
}
}
@@ -232,7 +232,7 @@ class UpdateRequest extends FormRequest
{
foreach ($this->textareaFields as $fieldName) {
if (array_key_exists($fieldName, $transaction)) {
$current[$fieldName] = $this->clearString((string)$transaction[$fieldName]);
$current[$fieldName] = $this->clearStringKeepNewlines((string)$transaction[$fieldName]); // keep newlines
}
}

View File

@@ -65,8 +65,9 @@ class DestroyController extends Controller
{
/** @var User $user */
$user = auth()->user();
// to access this function: must be group owner or sysadmin.
// need owner role or system owner role to delete user group.
$access = $user->hasRoleInGroup($userGroup, UserRoleEnum::OWNER, false, true);
$access = $user->hasSpecificRoleInGroup($userGroup, UserRoleEnum::OWNER) || $user->hasRole('owner');
if (false === $access) {
throw new NotFoundHttpException();
}

View File

@@ -93,75 +93,75 @@ class StoreRequest extends FormRequest
foreach ($this->get('transactions') as $transaction) {
$object = new NullArrayObject($transaction);
$return[] = [
'type' => $this->clearString($object['type'], false),
'type' => $this->clearString($object['type']),
'date' => $this->dateFromValue($object['date']),
'order' => $this->integerFromValue((string)$object['order']),
'currency_id' => $this->integerFromValue((string)$object['currency_id']),
'currency_code' => $this->clearString((string)$object['currency_code'], false),
'currency_code' => $this->clearString((string)$object['currency_code']),
// foreign currency info:
'foreign_currency_id' => $this->integerFromValue((string)$object['foreign_currency_id']),
'foreign_currency_code' => $this->clearString((string)$object['foreign_currency_code'], false),
'foreign_currency_code' => $this->clearString((string)$object['foreign_currency_code']),
// amount and foreign amount. Cannot be 0.
'amount' => $this->clearString((string)$object['amount'], false),
'foreign_amount' => $this->clearString((string)$object['foreign_amount'], false),
'amount' => $this->clearString((string)$object['amount']),
'foreign_amount' => $this->clearString((string)$object['foreign_amount']),
// description.
'description' => $this->clearString($object['description'], false),
'description' => $this->clearString($object['description']),
// source of transaction. If everything is null, assume cash account.
'source_id' => $this->integerFromValue((string)$object['source_id']),
'source_name' => $this->clearString((string)$object['source_name'], false),
'source_iban' => $this->clearString((string)$object['source_iban'], false),
'source_number' => $this->clearString((string)$object['source_number'], false),
'source_bic' => $this->clearString((string)$object['source_bic'], false),
'source_name' => $this->clearString((string)$object['source_name']),
'source_iban' => $this->clearString((string)$object['source_iban']),
'source_number' => $this->clearString((string)$object['source_number']),
'source_bic' => $this->clearString((string)$object['source_bic']),
// destination of transaction. If everything is null, assume cash account.
'destination_id' => $this->integerFromValue((string)$object['destination_id']),
'destination_name' => $this->clearString((string)$object['destination_name'], false),
'destination_iban' => $this->clearString((string)$object['destination_iban'], false),
'destination_number' => $this->clearString((string)$object['destination_number'], false),
'destination_bic' => $this->clearString((string)$object['destination_bic'], false),
'destination_name' => $this->clearString((string)$object['destination_name']),
'destination_iban' => $this->clearString((string)$object['destination_iban']),
'destination_number' => $this->clearString((string)$object['destination_number']),
'destination_bic' => $this->clearString((string)$object['destination_bic']),
// budget info
'budget_id' => $this->integerFromValue((string)$object['budget_id']),
'budget_name' => $this->clearString((string)$object['budget_name'], false),
'budget_name' => $this->clearString((string)$object['budget_name']),
// category info
'category_id' => $this->integerFromValue((string)$object['category_id']),
'category_name' => $this->clearString((string)$object['category_name'], false),
'category_name' => $this->clearString((string)$object['category_name']),
// journal bill reference. Optional. Will only work for withdrawals
'bill_id' => $this->integerFromValue((string)$object['bill_id']),
'bill_name' => $this->clearString((string)$object['bill_name'], false),
'bill_name' => $this->clearString((string)$object['bill_name']),
// piggy bank reference. Optional. Will only work for transfers
'piggy_bank_id' => $this->integerFromValue((string)$object['piggy_bank_id']),
'piggy_bank_name' => $this->clearString((string)$object['piggy_bank_name'], false),
'piggy_bank_name' => $this->clearString((string)$object['piggy_bank_name']),
// some other interesting properties
'reconciled' => $this->convertBoolean((string)$object['reconciled']),
'notes' => $this->clearString((string)$object['notes']),
'notes' => $this->clearStringKeepNewlines((string)$object['notes']),
'tags' => $this->arrayFromValue($object['tags']),
// all custom fields:
'internal_reference' => $this->clearString((string)$object['internal_reference'], false),
'external_id' => $this->clearString((string)$object['external_id'], false),
'internal_reference' => $this->clearString((string)$object['internal_reference']),
'external_id' => $this->clearString((string)$object['external_id']),
'original_source' => sprintf('ff3-v%s|api-v%s', config('firefly.version'), config('firefly.api_version')),
'recurrence_id' => $this->integerFromValue($object['recurrence_id']),
'bunq_payment_id' => $this->clearString((string)$object['bunq_payment_id'], false),
'external_url' => $this->clearString((string)$object['external_url'], false),
'bunq_payment_id' => $this->clearString((string)$object['bunq_payment_id']),
'external_url' => $this->clearString((string)$object['external_url']),
'sepa_cc' => $this->clearString((string)$object['sepa_cc'], false),
'sepa_ct_op' => $this->clearString((string)$object['sepa_ct_op'], false),
'sepa_ct_id' => $this->clearString((string)$object['sepa_ct_id'], false),
'sepa_db' => $this->clearString((string)$object['sepa_db'], false),
'sepa_country' => $this->clearString((string)$object['sepa_country'], false),
'sepa_ep' => $this->clearString((string)$object['sepa_ep'], false),
'sepa_ci' => $this->clearString((string)$object['sepa_ci'], false),
'sepa_batch_id' => $this->clearString((string)$object['sepa_batch_id'], false),
'sepa_cc' => $this->clearString((string)$object['sepa_cc']),
'sepa_ct_op' => $this->clearString((string)$object['sepa_ct_op']),
'sepa_ct_id' => $this->clearString((string)$object['sepa_ct_id']),
'sepa_db' => $this->clearString((string)$object['sepa_db']),
'sepa_country' => $this->clearString((string)$object['sepa_country']),
'sepa_ep' => $this->clearString((string)$object['sepa_ep']),
'sepa_ci' => $this->clearString((string)$object['sepa_ci']),
'sepa_batch_id' => $this->clearString((string)$object['sepa_batch_id']),
// custom date fields. Must be Carbon objects. Presence is optional.
'interest_date' => $this->dateFromValue($object['interest_date']),
'book_date' => $this->dateFromValue($object['book_date']),

View File

@@ -42,6 +42,7 @@ class TriggeredAuditLog extends Event
/**
* Create a new event instance.
* @SuppressWarnings(PHPMD.ExcessiveParameterList)
*/
public function __construct(Model $changer, Model $auditable, string $field, mixed $before, mixed $after)
{

View File

@@ -117,7 +117,8 @@ class UserGroup extends Model
}
// need at least ready only to be aware of the user group's existence,
// but owner/full role (in the group) or global owner role may overrule this.
if ($user->hasRoleInGroup($userGroup, UserRoleEnum::READ_ONLY, true, true)) {
$access = $user->hasRoleInGroupOrOwner($userGroup, UserRoleEnum::READ_ONLY) || $user->hasRole('owner');
if ($access) {
return $userGroup;
}
}

View File

@@ -41,6 +41,7 @@ class AuthServiceProvider extends ServiceProvider
/**
* Register any authentication / authorization services.
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*
* @return void
*/

View File

@@ -120,7 +120,6 @@ class JournalCLIRepository implements JournalCLIRepositoryInterface
$cache->addProperty($field);
if ($cache->has()) {
$result = null;
return new Carbon($cache->get());
}

View File

@@ -40,6 +40,8 @@ class IsAssetAccountId implements ValidationRule
* @param Closure $fail
*
* @return void
*
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
public function validate(string $attribute, mixed $value, Closure $fail): void
{

View File

@@ -38,6 +38,8 @@ class IsBoolean implements ValidationRule
* @param Closure $fail
*
* @return void
*
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
public function validate(string $attribute, mixed $value, Closure $fail): void
{

View File

@@ -41,6 +41,8 @@ class IsDateOrTime implements ValidationRule
* @param Closure $fail
*
* @return void
*
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
public function validate(string $attribute, mixed $value, Closure $fail): void
{

View File

@@ -40,6 +40,8 @@ class IsTransferAccount implements ValidationRule
* @param Closure $fail
*
* @return void
*
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
public function validate(string $attribute, mixed $value, Closure $fail): void
{

View File

@@ -82,6 +82,8 @@ class IsValidAttachmentModel implements ValidationRule
* @param Closure $fail
*
* @return void
*
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
public function validate(string $attribute, mixed $value, Closure $fail): void
{
@@ -89,25 +91,18 @@ class IsValidAttachmentModel implements ValidationRule
$fail('validation.model_id_invalid')->translate();
return;
}
$methods = [
Account::class => 'validateAccount',
Bill::class => 'validateBill',
Budget::class => 'validateBudget',
Category::class => 'validateCategory',
PiggyBank::class => 'validatePiggyBank',
Tag::class => 'validateTag',
Transaction::class => 'validateTransaction',
TransactionJournal::class => 'validateJournal',
];
if (!array_key_exists($this->model, $methods)) {
app('log')->error(sprintf('Cannot validate model "%s" in %s.', substr($this->model, 0, 20), __METHOD__));
$result = match ($this->model) {
Account::class => $this->validateAccount((int)$value),
Bill::class => $this->validateBill((int)$value),
Budget::class => $this->validateBudget((int)$value),
Category::class => $this->validateCategory((int)$value),
PiggyBank::class => $this->validatePiggyBank((int)$value),
Tag::class => $this->validateTag((int)$value),
Transaction::class => $this->validateTransaction((int)$value),
TransactionJournal::class => $this->validateJournal((int)$value),
default => false,
};
$fail('validation.model_id_invalid')->translate();
return;
}
$method = $methods[$this->model];
$result = $this->$method((int)$value); // @phpstan-ignore-line
if (false === $result) {
$fail('validation.model_id_invalid')->translate();
}

View File

@@ -60,6 +60,8 @@ class IsValidBulkClause implements ValidationRule
* @param Closure $fail
*
* @return void
*
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
public function validate(string $attribute, mixed $value, Closure $fail): void
{

View File

@@ -48,6 +48,8 @@ class LessThanPiggyTarget implements ValidationRule
* @param Closure $fail
*
* @return void
*
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
public function validate(string $attribute, mixed $value, Closure $fail): void
{

View File

@@ -79,6 +79,8 @@ class UniqueAccountNumber implements ValidationRule
* @param Closure $fail
*
* @return void
*
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
public function validate(string $attribute, mixed $value, Closure $fail): void
{

View File

@@ -95,6 +95,8 @@ class UniqueIban implements ValidationRule
*
* @return bool
*
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*
*/
public function passes($attribute, $value): bool
{

View File

@@ -41,6 +41,8 @@ class ValidJournals implements ValidationRule
* @param Closure $fail
*
* @return void
*
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
public function validate(string $attribute, mixed $value, Closure $fail): void
{

View File

@@ -39,6 +39,8 @@ class ValidRecurrenceRepetitionType implements ValidationRule
* @param string $attribute
* @param mixed $value
* @param Closure $fail
*
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
public function validate(string $attribute, mixed $value, Closure $fail): void
{

View File

@@ -41,6 +41,8 @@ class ValidRecurrenceRepetitionValue implements ValidationRule
* @param Closure $fail
*
* @return void
*
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
public function validate(string $attribute, mixed $value, Closure $fail): void
{

View File

@@ -273,7 +273,6 @@ class CreditRecalculateService
$journal = $transaction->transactionJournal;
$foreignCurrency = $transaction->foreignCurrency;
$accountCurrency = $this->repository->getAccountCurrency($account);
$groupId = $journal->transaction_group_id;
$decimals = $accountCurrency->decimal_places;
$type = $journal->transactionType->type;
/** @var Transaction $destTransaction */

View File

@@ -156,6 +156,7 @@ class RemoteUserGuard implements Guard
/**
* @inheritDoc
* @SuppressWarnings(PHPMD.ShortMethodName)
*/
public function id(): int | string | null
{

View File

@@ -45,6 +45,7 @@ class DynamicConfigKey
*
* @return string
* @throws NotFoundHttpException
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
public static function routeBinder(string $value, Route $route): string
{

View File

@@ -62,6 +62,8 @@ class EitherConfigKey
*
* @return string
* @throws NotFoundHttpException
*
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
public static function routeBinder(string $value, Route $route): string
{

View File

@@ -935,7 +935,7 @@ class ExportDataGenerator
$journal['budget_name'],
$journal['bill_name'],
$this->mergeTags($journal['tags']),
$this->clearString($journal['notes'], true),
$this->clearStringKeepNewlines($journal['notes']),
// export also the optional fields (ALL)

View File

@@ -32,7 +32,7 @@ trait ReturnsIntegerIdTrait
{
/**
* Get the ID
*
* @SuppressWarnings(PHPMD.ShortMethodName)
* @return Attribute
*/
protected function id(): Attribute

View File

@@ -178,6 +178,7 @@ trait AppendsLocationData
* @param bool $default
*
* @return mixed
* @SuppressWarnings(PHPMD.BooleanArgumentFlag)
*/
abstract public function boolean($key = null, $default = false);

View File

@@ -60,7 +60,8 @@ trait ChecksLogin
/** @var UserRoleEnum $role */
foreach ($this->acceptedRoles as $role) {
// system owner cannot overrule this, MUST be member of the group.
if ($user->hasRoleInGroup($userGroup, $role, true, false)) {
$access = $user->hasRoleInGroupOrOwner($userGroup, $role);
if ($access) {
return true;
}
}

View File

@@ -34,60 +34,8 @@ use Illuminate\Support\Collection;
*/
trait ConvertsDataTypes
{
/**
* Return integer value.
*
* @param string $field
*
* @return int
*/
public function convertInteger(string $field): int
{
return (int)$this->get($field);
}
/**
* Abstract method that always exists in the Request classes that use this
* trait, OR a stub needs to be added by any other class that uses this train.
*
* @param string $key
* @param mixed|null $default
*
* @return mixed
*/
abstract public function get(string $key, mixed $default = null): mixed;
/**
* Return string value.
*
* @param string $field
*
* @return string
*/
public function convertString(string $field): string
{
$entry = $this->get($field);
if (!is_scalar($entry)) {
return '';
}
return (string) $this->clearString((string)$entry, false);
}
/**
* @param string|null $string
* @param bool $keepNewlines
*
* @return string|null
*/
public function clearString(?string $string, bool $keepNewlines = true): ?string
{
if (null === $string) {
return null;
}
if ('' === $string) {
return '';
}
$search = [
private array $characters
= [
"\0", // NUL
"\f", // form feed
"\v", // vertical tab
@@ -136,24 +84,91 @@ trait ConvertsDataTypes
"\u{202F}", // narrow no-break space
"\u{3000}", // ideographic space
"\u{FEFF}", // zero width no -break space
"\r", // carriage return
];
$replace = "\x20"; // plain old normal space
$string = str_replace($search, $replace, $string);
$secondSearch = $keepNewlines ? ["\r"] : ["\r", "\n", "\t", "\036", "\025"];
$string = str_replace($secondSearch, '', $string);
/**
* Return integer value.
*
* @param string $field
*
* @return int
*/
public function convertInteger(string $field): int
{
return (int)$this->get($field);
}
/**
* Abstract method that always exists in the Request classes that use this
* trait, OR a stub needs to be added by any other class that uses this train.
*
* @param string $key
* @param mixed|null $default
*
* @return mixed
*/
abstract public function get(string $key, mixed $default = null): mixed;
/**
* Return string value.
*
* @param string $field
*
* @return string
*/
public function convertString(string $field): string
{
$entry = $this->get($field);
if (!is_scalar($entry)) {
return '';
}
return (string)$this->clearString((string)$entry);
}
/**
* @param string|null $string
*
* @return string|null
*/
public function clearString(?string $string): ?string
{
$string = $this->clearStringKeepNewlines($string);
// clear zalgo text (TODO also in API v2)
$string = preg_replace('/(\pM{2})\pM+/u', '\1', $string);
if (null === $string) {
return null;
}
if ('' === $string) {
return '';
}
// then remove newlines too:
$string = str_replace(["\r", "\n", "\t", "\036", "\025"], '', $string);
return trim($string);
}
/**
* @param string|null $string
*
* @return string|null
*/
public function clearStringKeepNewlines(?string $string): ?string
{
if (null === $string) {
return null;
}
if ('' === $string) {
return '';
}
$string = str_replace($this->characters, "\x20", $string);
// clear zalgo text (TODO also in API v2)
$string = preg_replace('/(\pM{2})\pM+/u', '\1', $string);
return trim((string)$string);
}
/**
* TODO duplicate, see SelectTransactionsRequest
*
@@ -166,7 +181,8 @@ trait ConvertsDataTypes
/** @var AccountRepositoryInterface $repository */
$repository = app(AccountRepositoryInterface::class);
if (method_exists($this, 'validateUserGroup')) { /** @phpstan-ignore-line */
if (method_exists($this, 'validateUserGroup')) {
/** @phpstan-ignore-line */
$userGroup = $this->validateUserGroup($this);
if (null !== $userGroup) {
$repository->setUserGroup($userGroup);
@@ -199,7 +215,7 @@ trait ConvertsDataTypes
*/
public function stringWithNewlines(string $field): string
{
return (string) $this->clearString((string)($this->get($field) ?? ''));
return (string)$this->clearStringKeepNewlines((string)($this->get($field) ?? ''));
}
/**

View File

@@ -1363,6 +1363,7 @@ class OperatorQuerySearch implements SearchInterface
* @param int $searchDirection
* @param int $stringPosition
* @param bool $prohibited
* @SuppressWarnings(PHPMD.BooleanArgumentFlag)
*/
private function searchAccount(string $value, int $searchDirection, int $stringPosition, bool $prohibited = false): void
{
@@ -1432,6 +1433,7 @@ class OperatorQuerySearch implements SearchInterface
}
/**
* TODO make enums
* searchDirection: 1 = source (default), 2 = destination, 3 = both
* stringPosition: 1 = start (default), 2 = end, 3 = contains, 4 = is
*
@@ -1439,6 +1441,7 @@ class OperatorQuerySearch implements SearchInterface
* @param int $searchDirection
* @param int $stringPosition
* @param bool $prohibited
* @SuppressWarnings(PHPMD.BooleanArgumentFlag)
*/
private function searchAccountNr(string $value, int $searchDirection, int $stringPosition, bool $prohibited = false): void
{
@@ -1580,6 +1583,7 @@ class OperatorQuerySearch implements SearchInterface
/**
*
* @throws FireflyException
* @SuppressWarnings(PHPMD.BooleanArgumentFlag)
*/
private function setExactDateParams(array $range, bool $prohibited = false): void
{
@@ -1654,6 +1658,7 @@ class OperatorQuerySearch implements SearchInterface
/**
*
* @throws FireflyException
* @SuppressWarnings(PHPMD.BooleanArgumentFlag)
*/
private function setDateBeforeParams(array $range, bool $prohibited = false): void
{
@@ -1700,6 +1705,7 @@ class OperatorQuerySearch implements SearchInterface
/**
*
* @throws FireflyException
* @SuppressWarnings(PHPMD.BooleanArgumentFlag)
*/
private function setDateAfterParams(array $range, bool $prohibited = false): void
{
@@ -1745,6 +1751,7 @@ class OperatorQuerySearch implements SearchInterface
/**
* @throws FireflyException
* @SuppressWarnings(PHPMD.BooleanArgumentFlag)
*/
private function setExactMetaDateParams(string $field, array $range, bool $prohibited = false): void
{
@@ -1820,6 +1827,7 @@ class OperatorQuerySearch implements SearchInterface
/**
* @throws FireflyException
* @SuppressWarnings(PHPMD.BooleanArgumentFlag)
*/
private function setMetaDateBeforeParams(string $field, array $range, bool $prohibited = false): void
{
@@ -1865,6 +1873,7 @@ class OperatorQuerySearch implements SearchInterface
/**
* @throws FireflyException
* @SuppressWarnings(PHPMD.BooleanArgumentFlag)
*/
private function setMetaDateAfterParams(string $field, array $range, bool $prohibited = false): void
{
@@ -1910,6 +1919,7 @@ class OperatorQuerySearch implements SearchInterface
/**
* @throws FireflyException
* @SuppressWarnings(PHPMD.BooleanArgumentFlag)
*/
private function setExactObjectDateParams(string $field, array $range, bool $prohibited = false): void
{
@@ -1985,6 +1995,7 @@ class OperatorQuerySearch implements SearchInterface
/**
*
* @throws FireflyException
* @SuppressWarnings(PHPMD.BooleanArgumentFlag)
*/
private function setObjectDateBeforeParams(string $field, array $range, bool $prohibited = false): void
{
@@ -2031,6 +2042,7 @@ class OperatorQuerySearch implements SearchInterface
/**
*
* @throws FireflyException
* @SuppressWarnings(PHPMD.BooleanArgumentFlag)
*/
private function setObjectDateAfterParams(string $field, array $range, bool $prohibited = false): void
{

View File

@@ -449,7 +449,7 @@ class Steam
// but we need to convert each transaction separately because the date difference may
// incur huge currency changes.
$converter = new ExchangeRateConverter();
foreach ($new as $index => $set) {
foreach ($new as $set) {
foreach ($set as $transaction) {
$date = Carbon::createFromFormat('Y-m-d H:i:s', $transaction['date']);
if(false === $date) {

View File

@@ -73,7 +73,7 @@ class AppendNotesToDescription implements ActionInterface
// only append if there is something to append
if ('' !== $note->text) {
$before = $object->description;
$object->description = trim(sprintf('%s %s', $object->description, (string)$this->clearString($note->text, false)));
$object->description = trim(sprintf('%s %s', $object->description, (string)$this->clearString($note->text)));
$object->save();
app('log')->debug(sprintf('Journal description is updated to "%s".', $object->description));

View File

@@ -80,7 +80,7 @@ class MoveNotesToDescription implements ActionInterface
}
$before = $object->description;
$beforeNote = $note->text;
$object->description = (string)$this->clearString($note->text, false);
$object->description = (string)$this->clearString($note->text);
$object->save();
$note->delete();

View File

@@ -510,15 +510,11 @@ class SearchRuleEngine implements RuleEngineInterface
*/
private function fireGroup(RuleGroup $group): void
{
$all = false;
app('log')->debug(sprintf('Going to fire group #%d with %d rule(s)', $group->id, $group->rules->count()));
/** @var Rule $rule */
foreach ($group->rules as $rule) {
app('log')->debug(sprintf('Going to fire rule #%d from group #%d', $rule->id, $group->id));
$result = $this->fireRule($rule);
if (true === $result) {
$all = true;
}
if (true === $result && true === $rule->stop_processing) {
app('log')->debug(sprintf('The rule was triggered and rule->stop_processing = true, so group #%d will stop processing further rules.', $group->id));

View File

@@ -382,8 +382,8 @@ class TransactionGroupTransformer extends AbstractTransformer
$destination = $this->getDestinationTransaction($journal);
$type = $journal->transactionType->type;
$currency = $source->transactionCurrency;
$amount = app('steam')->bcround($this->getAmount($type, $source->amount), $currency->decimal_places ?? 0);
$foreignAmount = $this->getForeignAmount($type, null === $source->foreign_amount ? null : $source->foreign_amount);
$amount = app('steam')->bcround($this->getAmount($source->amount), $currency->decimal_places ?? 0);
$foreignAmount = $this->getForeignAmount(null === $source->foreign_amount ? null : $source->foreign_amount);
$metaFieldData = $this->groupRepos->getMetaFields($journal->id, $this->metaFields);
$metaDates = $this->getDates($this->groupRepos->getMetaDateFields($journal->id, $this->metaDateFields));
$foreignCurrency = $this->getForeignCurrency($source->foreignCurrency);
@@ -521,23 +521,21 @@ class TransactionGroupTransformer extends AbstractTransformer
}
/**
* @param string $type
* @param string $amount
*
* @return string
*/
private function getAmount(string $type, string $amount): string
private function getAmount(string $amount): string
{
return app('steam')->positive($amount);
}
/**
* @param string $type
* @param string|null $foreignAmount
*
* @return string|null
*/
private function getForeignAmount(string $type, ?string $foreignAmount): ?string
private function getForeignAmount(?string $foreignAmount): ?string
{
$result = null;
if (null !== $foreignAmount && '' !== $foreignAmount && bccomp('0', $foreignAmount) !== 0) {

View File

@@ -65,8 +65,8 @@ class BudgetTransformer extends AbstractTransformer
public function transform(Budget $budget): array
{
//$this->opsRepository->setUser($budget->user);
$start = $this->parameters->get('start');
$end = $this->parameters->get('end');
//$start = $this->parameters->get('start');
//$end = $this->parameters->get('end');
//$autoBudget = $this->repository->getAutoBudget($budget);
// $spent = [];
// if (null !== $start && null !== $end) {

View File

@@ -58,7 +58,7 @@ class UserGroupTransformer extends AbstractTransformer
/** @var UserGroup $userGroup */
foreach ($objects as $userGroup) {
$userGroupId = $userGroup->id;
$access = $user->hasRoleInGroup($userGroup, UserRoleEnum::VIEW_MEMBERSHIPS, true, true);
$access = $user->hasRoleInGroupOrOwner($userGroup, UserRoleEnum::VIEW_MEMBERSHIPS) || $user->hasRole('owner');
if ($access) {
$groupMemberships = $userGroup->groupMemberships()->get();
/** @var GroupMembership $groupMembership */

View File

@@ -360,32 +360,47 @@ class User extends Authenticatable
return 'objectguid';
}
/**
* Does the user have role X in group Y?
*
* @param UserGroup $userGroup
* @param UserRoleEnum $role
*
* @return bool
*/
public function hasSpecificRoleInGroup(UserGroup $userGroup, UserRoleEnum $role): bool
{
return $this->hasAnyRoleInGroup($userGroup, [$role]);
}
/**
* Does the user have role X in group Y, or is the user the group owner of has full rights to the group?
*
* If $allowOverride is set to true, then the roles FULL or OWNER will also be checked,
* which means that in most cases the user DOES have access, regardless of the original role submitted in $role.
*
* @param UserGroup $userGroup
* @param UserRoleEnum $role
* @param bool $allowGroupOverride
* @param bool $allowSystemOverride
*
* @return bool
*/
public function hasRoleInGroup(UserGroup $userGroup, UserRoleEnum $role, bool $allowGroupOverride = false, bool $allowSystemOverride = false): bool
public function hasRoleInGroupOrOwner(UserGroup $userGroup, UserRoleEnum $role): bool
{
if ($allowSystemOverride && $this->hasRole('owner')) {
app('log')->debug(sprintf('hasRoleInGroup: user "#%d %s" is system owner and allowSystemOverride = true, return true', $this->id, $this->email));
return true;
$roles = [$role->value, UserRoleEnum::OWNER->value, UserRoleEnum::FULL->value];
return $this->hasAnyRoleInGroup($userGroup, $roles);
}
$roles = [$role->value];
if ($allowGroupOverride) {
$roles[] = UserRoleEnum::OWNER->value;
$roles[] = UserRoleEnum::FULL->value;
}
app('log')->debug(sprintf('in hasRoleInGroup(%s)', implode(', ', $roles)));
/**
* Does the user have role X, Y or Z in group A?
*
* @param UserGroup $userGroup
* @param array $roles
*
* @return bool
*/
private function hasAnyRoleInGroup(UserGroup $userGroup, array $roles): bool
{
app('log')->debug(sprintf('in hasAnyRoleInGroup(%s)', implode(', ', $roles)));
/** @var Collection $dbRoles */
$dbRoles = UserRole::whereIn('title', $roles)->get();
if (0 === $dbRoles->count()) {
@@ -433,15 +448,12 @@ class User extends Authenticatable
$userGroup->title
));
return false;
// // not necessary, should always return true:
// $result = $groupMembership->userRole->title === $role->value;
// app('log')->error(sprintf('Does user #%d "%s" have role "%s" in user group #%d "%s"? %s',
// $this->id, $this->email,
// $role->value, $userGroup->id, $userGroup->title, var_export($result, true)));
// return $result;
}
/**
* This method refers to the "global" role a user can have, outside of any group they may be part of.
*
* @param string $role
*
* @return bool

View File

@@ -127,7 +127,7 @@ trait DepositValidation
// if there is an iban, it can only be in use by a valid source type, or we will fail.
if (null !== $accountIban && '' !== $accountIban) {
app('log')->debug('Check if there is not already an account with this IBAN');
app('log')->debug('Check if there is not already another account with this IBAN');
$existing = $this->findExistingAccount($validTypes, ['iban' => $accountIban], true);
if (null !== $existing) {
$this->sourceError = (string)trans('validation.deposit_src_iban_exists');

View File

@@ -265,6 +265,7 @@ class AccountValidator
* @param bool $inverse
*
* @return Account|null
* @SuppressWarnings(PHPMD.BooleanArgumentFlag)
*/
protected function findExistingAccount(array $validTypes, array $data, bool $inverse = false): ?Account
{

View File

@@ -563,7 +563,7 @@ trait TransactionValidation
return;
}
$transactions = $this->getTransactionsArray($validator);
foreach ($transactions as $key => $value) {
foreach (array_keys($transactions) as $key) {
if (!is_int($key)) {
$validator->errors()->add('transactions.0.description', (string)trans('validation.at_least_one_transaction'));
app('log')->debug('Added error: at_least_one_transaction.');

View File

@@ -54,7 +54,7 @@ class CreateSupportTables extends Migration
/**
* Run the migrations.
*
* @SuppressWarnings(PHPMD.ShortMethodName)
*/
public function up(): void
{

View File

@@ -45,6 +45,7 @@ class CreateUsersTable extends Migration
/**
* Run the migrations.
* @SuppressWarnings(PHPMD.ShortMethodName)
*
*/
public function up(): void

View File

@@ -72,6 +72,7 @@ class CreateMainTables extends Migration
/**
* Run the migrations.
* @SuppressWarnings(PHPMD.ShortMethodName)
*
*/
public function up(): void

View File

@@ -33,15 +33,12 @@ class ChangesFor3101 extends Migration
/**
* Reverse the migrations.
*/
public function down(): void
{
}
public function down(): void {}
/**
* Run the migrations.
* @SuppressWarnings(PHPMD.ShortMethodName)
*
*/
public function up(): void
{
}
public function up(): void {}
}

View File

@@ -38,12 +38,11 @@ class FixNullables extends Migration
/**
* Reverse the migrations.
*/
public function down(): void
{
}
public function down(): void {}
/**
* Run the migrations.
* @SuppressWarnings(PHPMD.ShortMethodName)
*
*/
public function up(): void

View File

@@ -55,6 +55,7 @@ class ExpandTransactionsTable extends Migration
/**
* Run the migrations.
* @SuppressWarnings(PHPMD.ShortMethodName)
*
*/
public function up(): void

View File

@@ -42,7 +42,7 @@ class ChangesForV410 extends Migration
/**
* Run the migrations.
*
* @SuppressWarnings(PHPMD.ShortMethodName)
*/
public function up(): void
{

View File

@@ -54,6 +54,7 @@ class ChangesForV420 extends Migration
/**
* Run the migrations.
* @SuppressWarnings(PHPMD.ShortMethodName)
*
*/
public function up(): void

View File

@@ -42,7 +42,7 @@ class ChangesForV430 extends Migration
/**
* Run the migrations.
*
* @SuppressWarnings(PHPMD.ShortMethodName)
*/
public function up(): void
{

View File

@@ -112,7 +112,7 @@ class ChangesForV431 extends Migration
/**
* Run the migrations.
*
* @SuppressWarnings(PHPMD.ShortMethodName)
*/
public function up(): void
{

View File

@@ -60,7 +60,7 @@ class ChangesForV440 extends Migration
/**
* Run the migrations.
*
* @SuppressWarnings(PHPMD.ShortMethodName)
*/
public function up(): void
{

View File

@@ -84,7 +84,7 @@ class ChangesForV450 extends Migration
/**
* Run the migrations.
*
* @SuppressWarnings(PHPMD.ShortMethodName)
*/
public function up(): void
{

View File

@@ -44,7 +44,7 @@ class ChangesForV470 extends Migration
/**
* Run the migrations.
*
* @SuppressWarnings(PHPMD.ShortMethodName)
*/
public function up(): void
{

View File

@@ -56,7 +56,7 @@ class ChangesForV470a extends Migration
/**
* Run the migrations.
*
* @SuppressWarnings(PHPMD.ShortMethodName)
*/
public function up(): void
{

View File

@@ -44,6 +44,7 @@ class CreateOauthAuthCodesTable extends Migration
/**
* Run the migrations.
* @SuppressWarnings(PHPMD.ShortMethodName)
*/
public function up(): void
{

View File

@@ -44,6 +44,7 @@ class CreateOauthAccessTokensTable extends Migration
/**
* Run the migrations.
* @SuppressWarnings(PHPMD.ShortMethodName)
*/
public function up(): void
{

View File

@@ -44,6 +44,7 @@ class CreateOauthRefreshTokensTable extends Migration
/**
* Run the migrations.
* @SuppressWarnings(PHPMD.ShortMethodName)
*/
public function up(): void
{

View File

@@ -44,6 +44,7 @@ class CreateOauthClientsTable extends Migration
/**
* Run the migrations.
* @SuppressWarnings(PHPMD.ShortMethodName)
*/
public function up(): void
{

View File

@@ -44,6 +44,7 @@ class CreateOauthPersonalAccessClientsTable extends Migration
/**
* Run the migrations.
* @SuppressWarnings(PHPMD.ShortMethodName)
*/
public function up(): void
{

View File

@@ -74,6 +74,7 @@ class ChangesForV472 extends Migration
* Run the migrations.
*
* @return void
* @SuppressWarnings(PHPMD.ShortMethodName)
*/
public function up(): void
{

View File

@@ -77,7 +77,7 @@ class ChangesForV473 extends Migration
/**
* Run the migrations.
*
* @SuppressWarnings(PHPMD.ShortMethodName)
* @return void
*/
public function up(): void

View File

@@ -36,16 +36,13 @@ class ChangesForV474 extends Migration
*
* @return void
*/
public function down(): void
{
}
public function down(): void {}
/**
* Run the migrations.
*
* @return void
* @SuppressWarnings(PHPMD.ShortMethodName)
*/
public function up(): void
{
}
public function up(): void {}
}

View File

@@ -49,7 +49,7 @@ class ChangesForV475 extends Migration
/**
* Run the migrations.
*
* @SuppressWarnings(PHPMD.ShortMethodName)
* @return void
*/
public function up(): void

View File

@@ -63,7 +63,7 @@ class ChangesForV477 extends Migration
/**
* Run the migrations.
*
* @SuppressWarnings(PHPMD.ShortMethodName)
* @return void
*/
public function up(): void

View File

@@ -58,7 +58,7 @@ class ChangesForV479 extends Migration
/**
* Run the migrations.
*
* @SuppressWarnings(PHPMD.ShortMethodName)
* @return void
*/
public function up(): void

View File

@@ -47,7 +47,7 @@ class ChangesForV4710 extends Migration
/**
* Run the migrations.
*
* @SuppressWarnings(PHPMD.ShortMethodName)
* @return void
*/
public function up(): void

View File

@@ -46,7 +46,7 @@ class ChangesForV4711 extends Migration
/**
* Run the migrations.
*
* @SuppressWarnings(PHPMD.ShortMethodName)
* @return void
*/
public function up(): void

View File

@@ -45,7 +45,7 @@ class ChangesForV4712 extends Migration
/**
* Run the migrations.
*
* @SuppressWarnings(PHPMD.ShortMethodName)
* @return void
*/
public function up(): void

View File

@@ -58,7 +58,7 @@ class FixLdapConfiguration extends Migration
/**
* Run the migrations.
*
* @SuppressWarnings(PHPMD.ShortMethodName)
* @return void
*/
public function up(): void

View File

@@ -113,7 +113,7 @@ class ChangesForV480 extends Migration
/**
* Run the migrations.
*
* @SuppressWarnings(PHPMD.ShortMethodName)
* @return void
*/
public function up(): void

View File

@@ -46,7 +46,7 @@ class MakeLocationsTable extends Migration
/**
* Run the migrations.
*
* @SuppressWarnings(PHPMD.ShortMethodName)
* @return void
*/
public function up(): void

View File

@@ -45,7 +45,7 @@ class ChangesForV520 extends Migration
/**
* Run the migrations.
*
* @SuppressWarnings(PHPMD.ShortMethodName)
* @return void
*/
public function up(): void

View File

@@ -46,7 +46,7 @@ class ChangesForV530 extends Migration
/**
* Run the migrations.
*
* @SuppressWarnings(PHPMD.ShortMethodName)
* @return void
*/
public function up(): void

View File

@@ -59,7 +59,7 @@ class ChangesForV530a extends Migration
/**
* Run the migrations.
*
* @SuppressWarnings(PHPMD.ShortMethodName)
* @return void
*/
public function up(): void

View File

@@ -100,7 +100,7 @@ class ChangesForV540 extends Migration
/**
* Run the migrations.
*
* @SuppressWarnings(PHPMD.ShortMethodName)
* @return void
*/
public function up(): void

View File

@@ -124,7 +124,7 @@ class ChangesForV550 extends Migration
/**
* Run the migrations.
*
* @SuppressWarnings(PHPMD.ShortMethodName)
* @return void
*/
public function up(): void

View File

@@ -62,7 +62,7 @@ class ChangesForV550b2 extends Migration
/**
* Run the migrations.
*
* @SuppressWarnings(PHPMD.ShortMethodName)
* @return void
*/
public function up(): void

View File

@@ -52,6 +52,7 @@ class AddLdapColumnsToUsersTable extends Migration
/**
* Run the migrations.
* @SuppressWarnings(PHPMD.ShortMethodName)
*/
public function up(): void
{

View File

@@ -44,7 +44,7 @@ class ExtendCurrencyInfo extends Migration
/**
* Run the migrations.
*
* @SuppressWarnings(PHPMD.ShortMethodName)
* @return void
*/
public function up(): void

View File

@@ -42,7 +42,7 @@ class DropTeleTable extends Migration
/**
* Run the migrations.
*
* @SuppressWarnings(PHPMD.ShortMethodName)
* @return void
*/
public function up(): void

View File

@@ -107,7 +107,7 @@ class UserGroups extends Migration
/**
* Run the migrations.
*
* @SuppressWarnings(PHPMD.ShortMethodName)
* @return void
*/
public function up(): void

View File

@@ -44,7 +44,7 @@ class CreateLocalPersonalAccessTokensTable extends Migration
/**
* Run the migrations.
*
* @SuppressWarnings(PHPMD.ShortMethodName)
* @return void
*/
public function up(): void

View File

@@ -34,7 +34,7 @@ use Illuminate\Support\Facades\Schema;
return new class () extends Migration {
/**
* Run the migrations.
*
* @SuppressWarnings(PHPMD.ShortMethodName)
* @return void
*/
public function up(): void

View File

@@ -30,7 +30,7 @@ use Illuminate\Support\Facades\Schema;
return new class () extends Migration {
/**
* Run the migrations.
*
* @SuppressWarnings(PHPMD.ShortMethodName)
* @return void
*/
public function up(): void

View File

@@ -30,7 +30,7 @@ use Illuminate\Support\Facades\Schema;
return new class () extends Migration {
/**
* Run the migrations.
*
* @SuppressWarnings(PHPMD.ShortMethodName)
* @return void
*/
public function up(): void

View File

@@ -30,7 +30,7 @@ use Illuminate\Support\Facades\Schema;
return new class () extends Migration {
/**
* Run the migrations.
*
* @SuppressWarnings(PHPMD.ShortMethodName)
* @return void
*/
public function up(): void

View File

@@ -35,6 +35,7 @@ use Illuminate\Support\Facades\Schema;
return new class () extends Migration {
/**
* Run the migrations.
* @SuppressWarnings(PHPMD.ShortMethodName)
*/
public function up(): void
{

View File

@@ -30,6 +30,7 @@ use Illuminate\Support\Facades\Schema;
return new class () extends Migration {
/**
* @SuppressWarnings(PHPMD.ShortMethodName)
* Run the migrations.
*/
public function up(): void

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -863,7 +863,10 @@ export default {
// console.log('Length == 1, set date to today.');
// set first date.
let today = new Date();
this.transactions[0].date = today.getFullYear() + '-' + ("0" + (today.getMonth() + 1)).slice(-2) + '-' + ("0" + today.getDate()).slice(-2);
this.transactions[0].date = today.getFullYear() + '-' + ("0" + (today.getMonth() + 1)).slice(-2) + '-' + ("0" + today.getDate()).slice(-2)
+ 'T00:00';
//console.log(this.transactions[0].date);
// call for extra clear thing:
// this.clearSource(0);
//this.clearDestination(0);

View File

@@ -451,11 +451,10 @@ export default {
if (typeof window.expectedSourceTypes === 'undefined') {
console.error('window.expectedSourceTypes is unexpectedly empty.')
}
this.transactions.push({
transaction_journal_id: transaction.transaction_journal_id,
description: transaction.description,
date: transaction.date.substr(0, 10),
date: transaction.date.substring(0, 16),
amount: this.roundNumber(this.positiveAmount(transaction.amount), transaction.currency_decimal_places),
category: transaction.category_name,
errors: {

View File

@@ -200,7 +200,7 @@ export default {
this.getCurrencies(1);
},
getCurrencies: function(page) {
console.log('loadCurrencies on page ' + page);
// console.log('loadCurrencies on page ' + page);
let url = document.getElementsByTagName('base')[0].href + "api/v1/currencies?page=" + page;
axios.get(url, {}).then((res) => {

View File

@@ -32,8 +32,7 @@
autocomplete="off"
class="form-control"
name="date[]"
type="date"
type="datetime-local"
v-bind:placeholder="$t('firefly.date')"
v-bind:title="$t('firefly.date')" @input="handleInput"
>