mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-10-15 16:57:09 +00:00
Compare commits
33 Commits
develop-20
...
develop-20
Author | SHA1 | Date | |
---|---|---|---|
|
edd54e23c5 | ||
|
1238df8784 | ||
|
b8c62652b0 | ||
|
54b2d02f63 | ||
|
47faf89a5c | ||
|
b7fb5a3854 | ||
|
a384b4202a | ||
|
99ecac0ce4 | ||
|
6102982456 | ||
|
b88e981b4b | ||
|
827263b03e | ||
|
d44e74d334 | ||
|
911f46c590 | ||
|
7d42c4ee5d | ||
|
ea89f6177f | ||
|
74291b3870 | ||
|
2c4f2082fe | ||
|
d8d58cc29b | ||
|
85b17e4035 | ||
|
83de5667b3 | ||
|
5fffe873c6 | ||
|
78c09c82d6 | ||
|
704abc315d | ||
|
86b4965458 | ||
|
d2dc0c2bf0 | ||
|
9f4894bbb5 | ||
|
76a8675a34 | ||
|
6988301da1 | ||
|
109cd37211 | ||
|
284ff4d1b0 | ||
|
bc0ab7af99 | ||
|
a17bc7258f | ||
|
87911c2438 |
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"require": {
|
||||
"friendsofphp/php-cs-fixer": "^3.12"
|
||||
}
|
||||
"require": {
|
||||
"friendsofphp/php-cs-fixer": "^3.12"
|
||||
}
|
||||
}
|
||||
|
48
.ci/php-cs-fixer/composer.lock
generated
48
.ci/php-cs-fixer/composer.lock
generated
@@ -538,16 +538,16 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/console",
|
||||
"version": "v7.0.4",
|
||||
"version": "v7.0.6",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/console.git",
|
||||
"reference": "6b099f3306f7c9c2d2786ed736d0026b2903205f"
|
||||
"reference": "fde915cd8e7eb99b3d531d3d5c09531429c3f9e5"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/console/zipball/6b099f3306f7c9c2d2786ed736d0026b2903205f",
|
||||
"reference": "6b099f3306f7c9c2d2786ed736d0026b2903205f",
|
||||
"url": "https://api.github.com/repos/symfony/console/zipball/fde915cd8e7eb99b3d531d3d5c09531429c3f9e5",
|
||||
"reference": "fde915cd8e7eb99b3d531d3d5c09531429c3f9e5",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -611,7 +611,7 @@
|
||||
"terminal"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/console/tree/v7.0.4"
|
||||
"source": "https://github.com/symfony/console/tree/v7.0.6"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -627,7 +627,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-02-22T20:27:20+00:00"
|
||||
"time": "2024-04-01T11:04:53+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/deprecation-contracts",
|
||||
@@ -778,16 +778,16 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/event-dispatcher-contracts",
|
||||
"version": "v3.4.0",
|
||||
"version": "v3.4.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/event-dispatcher-contracts.git",
|
||||
"reference": "a76aed96a42d2b521153fb382d418e30d18b59df"
|
||||
"reference": "4e64b49bf370ade88e567de29465762e316e4224"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/a76aed96a42d2b521153fb382d418e30d18b59df",
|
||||
"reference": "a76aed96a42d2b521153fb382d418e30d18b59df",
|
||||
"url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/4e64b49bf370ade88e567de29465762e316e4224",
|
||||
"reference": "4e64b49bf370ade88e567de29465762e316e4224",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -834,7 +834,7 @@
|
||||
"standards"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.4.0"
|
||||
"source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.4.2"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -850,20 +850,20 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-05-23T14:45:45+00:00"
|
||||
"time": "2024-01-23T14:51:35+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/filesystem",
|
||||
"version": "v7.0.3",
|
||||
"version": "v7.0.6",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/filesystem.git",
|
||||
"reference": "2890e3a825bc0c0558526c04499c13f83e1b6b12"
|
||||
"reference": "408105dff4c104454100730bdfd1a9cdd993f04d"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/filesystem/zipball/2890e3a825bc0c0558526c04499c13f83e1b6b12",
|
||||
"reference": "2890e3a825bc0c0558526c04499c13f83e1b6b12",
|
||||
"url": "https://api.github.com/repos/symfony/filesystem/zipball/408105dff4c104454100730bdfd1a9cdd993f04d",
|
||||
"reference": "408105dff4c104454100730bdfd1a9cdd993f04d",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -897,7 +897,7 @@
|
||||
"description": "Provides basic utilities for the filesystem",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/filesystem/tree/v7.0.3"
|
||||
"source": "https://github.com/symfony/filesystem/tree/v7.0.6"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -913,7 +913,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-01-23T15:02:46+00:00"
|
||||
"time": "2024-03-21T19:37:36+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/finder",
|
||||
@@ -1583,16 +1583,16 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/service-contracts",
|
||||
"version": "v3.4.1",
|
||||
"version": "v3.4.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/service-contracts.git",
|
||||
"reference": "fe07cbc8d837f60caf7018068e350cc5163681a0"
|
||||
"reference": "11bbf19a0fb7b36345861e85c5768844c552906e"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/service-contracts/zipball/fe07cbc8d837f60caf7018068e350cc5163681a0",
|
||||
"reference": "fe07cbc8d837f60caf7018068e350cc5163681a0",
|
||||
"url": "https://api.github.com/repos/symfony/service-contracts/zipball/11bbf19a0fb7b36345861e85c5768844c552906e",
|
||||
"reference": "11bbf19a0fb7b36345861e85c5768844c552906e",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -1645,7 +1645,7 @@
|
||||
"standards"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/service-contracts/tree/v3.4.1"
|
||||
"source": "https://github.com/symfony/service-contracts/tree/v3.4.2"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -1661,7 +1661,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-12-26T14:02:43+00:00"
|
||||
"time": "2023-12-19T21:51:00+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/stopwatch",
|
||||
|
@@ -19,9 +19,9 @@
|
||||
~ along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
-->
|
||||
|
||||
<ruleset name="pcsg-generated-ruleset"
|
||||
<ruleset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
name="pcsg-generated-ruleset"
|
||||
xmlns="http://pmd.sf.net/ruleset/1.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd"
|
||||
xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd">
|
||||
<description>Firefly III ruleset.</description>
|
||||
|
18
.github/pull_request_template.md
vendored
18
.github/pull_request_template.md
vendored
@@ -1,13 +1,19 @@
|
||||
<!--
|
||||
Before you create a new PR, please consider:
|
||||
Thank you for submitting new code to Firefly III, or any of the related projects. Please read the following rules carefully.
|
||||
|
||||
1) Pull requests for the MAIN branch will be closed.
|
||||
2) DO NOT include translations in your PR. Only English US sentences.
|
||||
- Do not submit solutions for problems that are not already reported in an issue
|
||||
- Firefly III can't be your learning experience. If you're new to all of this, please go be new somewhere else
|
||||
- Do not open PRs to "discuss" possible solutions or to "get feedback" on your code. I don't have time for that.
|
||||
- Pull requests for the MAIN branch will be closed.
|
||||
- DO NOT include translated strings in your PR.
|
||||
|
||||
Perhaps open an issue first, before you open a PR?
|
||||
|
||||
See also: https://docs.firefly-iii.org/explanation/support/#contributing-code
|
||||
|
||||
Thanks.
|
||||
-->
|
||||
|
||||
Fixes issue # (if relevant)
|
||||
|
||||
This PR fixes issue # (if relevant).
|
||||
|
||||
Changes in this pull request:
|
||||
|
||||
|
58
.github/stale.yml
vendored
58
.github/stale.yml
vendored
@@ -1,58 +0,0 @@
|
||||
# Configuration for probot-stale - https://github.com/probot/stale
|
||||
|
||||
# Number of days of inactivity before an Issue or Pull Request becomes stale
|
||||
daysUntilStale: 14
|
||||
|
||||
# Number of days of inactivity before a stale Issue or Pull Request is closed.
|
||||
# Set to false to disable. If disabled, issues still need to be closed manually, but will remain marked as stale.
|
||||
daysUntilClose: 14
|
||||
|
||||
# Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable
|
||||
# - "[Status] Maybe Later"
|
||||
exemptLabels:
|
||||
- enhancement
|
||||
- feature
|
||||
- bug
|
||||
- announcement
|
||||
- "layout-v3"
|
||||
|
||||
# Set to true to ignore issues in a project (defaults to false)
|
||||
exemptProjects: false
|
||||
|
||||
# Set to true to ignore issues in a milestone (defaults to false)
|
||||
exemptMilestones: false
|
||||
|
||||
# Label to use when marking as stale
|
||||
staleLabel: stale
|
||||
|
||||
# Comment to post when marking as stale. Set to `false` to disable
|
||||
markComment: >
|
||||
This issue has been automatically marked as stale because it has not had
|
||||
recent activity. It will be closed if no further activity occurs. Thank you
|
||||
for your contributions.
|
||||
|
||||
# Comment to post when removing the stale label.
|
||||
# unmarkComment: >
|
||||
# Your comment here.
|
||||
|
||||
# Comment to post when closing a stale Issue or Pull Request.
|
||||
# closeComment: >
|
||||
# Your comment here.
|
||||
|
||||
# Limit the number of actions per hour, from 1-30. Default is 30
|
||||
limitPerRun: 30
|
||||
|
||||
# Limit to only `issues` or `pulls`
|
||||
# only: issues
|
||||
|
||||
# Optionally, specify configuration settings that are specific to just 'issues' or 'pulls':
|
||||
# pulls:
|
||||
# daysUntilStale: 30
|
||||
# markComment: >
|
||||
# This pull request has been automatically marked as stale because it has not had
|
||||
# recent activity. It will be closed if no further activity occurs. Thank you
|
||||
# for your contributions.
|
||||
|
||||
# issues:
|
||||
# exemptLabels:
|
||||
# - confirmed
|
2
.github/workflows/close-duplicates.yml
vendored
2
.github/workflows/close-duplicates.yml
vendored
@@ -3,7 +3,7 @@ name: "Issues - Command to close duplicate issues"
|
||||
# the workflow to execute on is comments that are newly created
|
||||
on:
|
||||
issue_comment:
|
||||
types: [created]
|
||||
types: [ created ]
|
||||
|
||||
permissions:
|
||||
issues: write
|
||||
|
4
.github/workflows/debug-info-actions.yml
vendored
4
.github/workflows/debug-info-actions.yml
vendored
@@ -3,9 +3,9 @@ name: 'Issues - Respond to hidden commands'
|
||||
# the workflow to execute on is comments that are newly created
|
||||
on:
|
||||
issues:
|
||||
types: [opened, edited]
|
||||
types: [ opened, edited ]
|
||||
issue_comment:
|
||||
types: [created]
|
||||
types: [ created ]
|
||||
|
||||
# permissions needed for reacting to IssueOps commands on issues and PRs
|
||||
permissions:
|
||||
|
6
.github/workflows/label-actions.yml
vendored
6
.github/workflows/label-actions.yml
vendored
@@ -2,11 +2,11 @@ name: 'Issues - Reply to specific labels'
|
||||
|
||||
on:
|
||||
issues:
|
||||
types: [labeled, unlabeled]
|
||||
types: [ labeled, unlabeled ]
|
||||
pull_request_target:
|
||||
types: [labeled, unlabeled]
|
||||
types: [ labeled, unlabeled ]
|
||||
discussion:
|
||||
types: [labeled, unlabeled]
|
||||
types: [ labeled, unlabeled ]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
34
.github/workflows/release.yml
vendored
34
.github/workflows/release.yml
vendored
@@ -8,7 +8,7 @@ on:
|
||||
required: true
|
||||
default: 'develop'
|
||||
schedule:
|
||||
- cron: '0 3 * * MON,THU'
|
||||
- cron: '0 3 * * MON,THU'
|
||||
|
||||
jobs:
|
||||
build:
|
||||
@@ -51,7 +51,7 @@ jobs:
|
||||
CROWDIN_TOKEN: ${{ secrets.CROWDIN_TOKEN }}
|
||||
- name: Cleanup translations
|
||||
id: cleanup-transactions
|
||||
uses: JC5/firefly-iii-dev@v36
|
||||
uses: JC5/firefly-iii-dev@v38
|
||||
with:
|
||||
action: 'ff3:crowdin-warning'
|
||||
output: ''
|
||||
@@ -60,7 +60,7 @@ jobs:
|
||||
GH_TOKEN: ''
|
||||
- name: Cleanup changelog
|
||||
id: cleanup-changelog
|
||||
uses: JC5/firefly-iii-dev@v36
|
||||
uses: JC5/firefly-iii-dev@v38
|
||||
with:
|
||||
action: 'ff3:changelog'
|
||||
output: ''
|
||||
@@ -69,7 +69,7 @@ jobs:
|
||||
GH_TOKEN: ${{ secrets.CHANGELOG_TOKEN }}
|
||||
- name: Extract changelog
|
||||
id: extract-changelog
|
||||
uses: JC5/firefly-iii-dev@v36
|
||||
uses: JC5/firefly-iii-dev@v38
|
||||
with:
|
||||
action: 'ff3:extract-changelog'
|
||||
output: 'output'
|
||||
@@ -78,7 +78,7 @@ jobs:
|
||||
GH_TOKEN: ""
|
||||
- name: Replace version
|
||||
id: replace-version
|
||||
uses: JC5/firefly-iii-dev@v36
|
||||
uses: JC5/firefly-iii-dev@v38
|
||||
with:
|
||||
action: 'ff3:version'
|
||||
output: ''
|
||||
@@ -88,7 +88,7 @@ jobs:
|
||||
FF_III_VERSION: ${{ github.event_name == 'schedule' && 'develop' || github.event.inputs.version }}
|
||||
- name: Generate JSON v1
|
||||
id: json-v1
|
||||
uses: JC5/firefly-iii-dev@v36
|
||||
uses: JC5/firefly-iii-dev@v38
|
||||
with:
|
||||
action: 'ff3:json-translations v1'
|
||||
output: ''
|
||||
@@ -97,7 +97,7 @@ jobs:
|
||||
GH_TOKEN: ''
|
||||
- name: Generate JSON v2
|
||||
id: json-v2
|
||||
uses: JC5/firefly-iii-dev@v36
|
||||
uses: JC5/firefly-iii-dev@v38
|
||||
with:
|
||||
action: 'ff3:json-translations v2'
|
||||
output: ''
|
||||
@@ -106,27 +106,19 @@ jobs:
|
||||
GH_TOKEN: ''
|
||||
- name: Code cleanup
|
||||
id: code-cleanup
|
||||
uses: JC5/firefly-iii-dev@v36
|
||||
uses: JC5/firefly-iii-dev@v38
|
||||
with:
|
||||
action: 'ff3:code'
|
||||
output: ''
|
||||
env:
|
||||
FIREFLY_III_ROOT: /github/workspace
|
||||
GH_TOKEN: ''
|
||||
- name: Build new JS
|
||||
- name: Build JS
|
||||
run: |
|
||||
npm install
|
||||
npm update
|
||||
npm run build
|
||||
- name: Build old JS
|
||||
id: old-js
|
||||
uses: JC5/firefly-iii-dev@v36
|
||||
with:
|
||||
action: 'ff3:old-js'
|
||||
output: ''
|
||||
env:
|
||||
FIREFLY_III_ROOT: /github/workspace
|
||||
GH_TOKEN: ''
|
||||
npm run prod --workspace=v1
|
||||
npm run build --workspace=v2
|
||||
- name: Run CI
|
||||
run: |
|
||||
rm -rf vendor composer.lock
|
||||
@@ -192,7 +184,7 @@ jobs:
|
||||
echo 'Zip and tar...'
|
||||
zip -rq $zipName . -x "*.git*" "*.ci*" "*.github*" "*node_modules*" "*output.txt*"
|
||||
touch $tarName
|
||||
tar --exclude=$tarName --exclude='./.git' --exclude='./.ci' --exclude='./.github' --exclude='./node_modules' --exclude='./output.txt' -czf $tarName .
|
||||
tar --exclude=$tarName --exclude=$zipName --exclude='./.git' --exclude='./.ci' --exclude='./.github' --exclude='./node_modules' --exclude='./output.txt' -czf $tarName .
|
||||
|
||||
# add sha256 sum
|
||||
echo 'Sha sum ...'
|
||||
@@ -211,7 +203,7 @@ jobs:
|
||||
echo "* Please read the installation instructions for [Docker](https://docs.firefly-iii.org/how-to/firefly-iii/installation/docker/), [Portainer](https://docs.firefly-iii.org/how-to/firefly-iii/installation/portainer/), [Kubernetes](https://docs.firefly-iii.org/how-to/firefly-iii/installation/kubernetes/) or [self-managed servers](https://docs.firefly-iii.org/how-to/firefly-iii/installation/self-managed/)" >> output.txt
|
||||
echo "* Or read the upgrade instructions for [Docker](https://docs.firefly-iii.org/how-to/firefly-iii/upgrade/docker/), [Kubernetes](https://docs.firefly-iii.org/how-to/firefly-iii/upgrade/kubernetes/) or [self-managed servers](https://docs.firefly-iii.org/how-to/firefly-iii/upgrade/self-managed/)" >> output.txt
|
||||
echo "" >> output.txt
|
||||
echo ":warning: Please be careful with this pre-release, as is may not work as expected." >> output.txt
|
||||
echo ":warning: Please be careful with this pre-release, as it may not work as expected." >> output.txt
|
||||
|
||||
# create the release:
|
||||
echo "Create nightly release."
|
||||
|
4
.github/workflows/stale.yml
vendored
4
.github/workflows/stale.yml
vendored
@@ -17,7 +17,7 @@ jobs:
|
||||
- uses: actions/stale@v9
|
||||
with:
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
stale-issue-message: >
|
||||
stale-issue-message: |
|
||||
Hi there!
|
||||
|
||||
This is an automatic reply. `Share and enjoy`
|
||||
@@ -25,7 +25,7 @@ jobs:
|
||||
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs.
|
||||
|
||||
Thank you for your contributions.
|
||||
stale-pr-message: >
|
||||
stale-pr-message: |
|
||||
Hi there!
|
||||
|
||||
This is an automatic reply. `Share and enjoy`
|
||||
|
8
.gitignore
vendored
8
.gitignore
vendored
@@ -10,3 +10,11 @@ coverage.xml
|
||||
|
||||
# ignore generated files.
|
||||
public/build
|
||||
|
||||
# ignore v1 build files
|
||||
resources/assets/v1/node_modules
|
||||
resources/assets/v1/build
|
||||
|
||||
# ignore v2 build files
|
||||
resources/assets/v2/node_modules
|
||||
resources/assets/v2/build
|
||||
|
@@ -72,6 +72,11 @@ class UpdateController extends Controller
|
||||
app('log')->debug('Now in update routine for transaction group!');
|
||||
$data = $request->getAll();
|
||||
|
||||
// Fixes 8750.
|
||||
foreach ($data['transactions'] as $index => $info) {
|
||||
unset($data['transactions'][$index]['type']);
|
||||
}
|
||||
|
||||
$transactionGroup = $this->groupRepository->update($transactionGroup, $data);
|
||||
$manager = $this->getManager();
|
||||
|
||||
|
@@ -54,17 +54,13 @@ class TestRequest extends FormRequest
|
||||
|
||||
private function getDate(string $field): ?Carbon
|
||||
{
|
||||
$value = $this->query($field);
|
||||
$value = $this->query($field);
|
||||
if (is_array($value)) {
|
||||
return null;
|
||||
}
|
||||
$value = (string)$value;
|
||||
$result = null === $this->query($field) ? null : Carbon::createFromFormat('Y-m-d', substr($value, 0, 10));
|
||||
if (false === $result) {
|
||||
return null;
|
||||
}
|
||||
$value = (string)$value;
|
||||
|
||||
return $result;
|
||||
return null === $this->query($field) ? null : Carbon::createFromFormat('Y-m-d', substr($value, 0, 10));
|
||||
}
|
||||
|
||||
private function getAccounts(): array
|
||||
|
@@ -48,17 +48,13 @@ class TriggerRequest extends FormRequest
|
||||
|
||||
private function getDate(string $field): ?Carbon
|
||||
{
|
||||
$value = $this->query($field);
|
||||
$value = $this->query($field);
|
||||
if (is_array($value)) {
|
||||
return null;
|
||||
}
|
||||
$value = (string)$value;
|
||||
$result = null === $this->query($field) ? null : Carbon::createFromFormat('Y-m-d', substr($value, 0, 10));
|
||||
if (false === $result) {
|
||||
return null;
|
||||
}
|
||||
$value = (string)$value;
|
||||
|
||||
return $result;
|
||||
return null === $this->query($field) ? null : Carbon::createFromFormat('Y-m-d', substr($value, 0, 10));
|
||||
}
|
||||
|
||||
private function getAccounts(): array
|
||||
|
@@ -48,17 +48,13 @@ class TestRequest extends FormRequest
|
||||
|
||||
private function getDate(string $field): ?Carbon
|
||||
{
|
||||
$value = $this->query($field);
|
||||
$value = $this->query($field);
|
||||
if (is_array($value)) {
|
||||
return null;
|
||||
}
|
||||
$value = (string)$value;
|
||||
$result = null === $this->query($field) ? null : Carbon::createFromFormat('Y-m-d', substr($value, 0, 10));
|
||||
if (false === $result) {
|
||||
return null;
|
||||
}
|
||||
$value = (string)$value;
|
||||
|
||||
return $result;
|
||||
return null === $this->query($field) ? null : Carbon::createFromFormat('Y-m-d', substr($value, 0, 10));
|
||||
}
|
||||
|
||||
private function getAccounts(): array
|
||||
|
@@ -48,17 +48,13 @@ class TriggerRequest extends FormRequest
|
||||
|
||||
private function getDate(string $field): ?Carbon
|
||||
{
|
||||
$value = $this->query($field);
|
||||
$value = $this->query($field);
|
||||
if (is_array($value)) {
|
||||
return null;
|
||||
}
|
||||
$value = (string)$value;
|
||||
$result = null === $this->query($field) ? null : Carbon::createFromFormat('Y-m-d', substr($value, 0, 10));
|
||||
if (false === $result) {
|
||||
return null;
|
||||
}
|
||||
$value = (string)$value;
|
||||
|
||||
return $result;
|
||||
return null === $this->query($field) ? null : Carbon::createFromFormat('Y-m-d', substr($value, 0, 10));
|
||||
}
|
||||
|
||||
private function getAccounts(): array
|
||||
|
@@ -27,6 +27,7 @@ namespace FireflyIII\Api\V2\Controllers\Chart;
|
||||
use Carbon\Carbon;
|
||||
use FireflyIII\Api\V2\Controllers\Controller;
|
||||
use FireflyIII\Api\V2\Request\Chart\DashboardChartRequest;
|
||||
use FireflyIII\Enums\UserRoleEnum;
|
||||
use FireflyIII\Exceptions\FireflyException;
|
||||
use FireflyIII\Models\Account;
|
||||
use FireflyIII\Models\AccountType;
|
||||
@@ -46,6 +47,7 @@ class AccountController extends Controller
|
||||
use ValidatesUserGroupTrait;
|
||||
|
||||
private AccountRepositoryInterface $repository;
|
||||
protected array $acceptedRoles = [UserRoleEnum::READ_ONLY];
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
@@ -54,9 +56,7 @@ class AccountController extends Controller
|
||||
function ($request, $next) {
|
||||
$this->repository = app(AccountRepositoryInterface::class);
|
||||
$userGroup = $this->validateUserGroup($request);
|
||||
if (null !== $userGroup) {
|
||||
$this->repository->setUserGroup($userGroup);
|
||||
}
|
||||
$this->repository->setUserGroup($userGroup);
|
||||
|
||||
return $next($request);
|
||||
}
|
||||
|
@@ -27,6 +27,7 @@ namespace FireflyIII\Api\V2\Controllers;
|
||||
use Carbon\Carbon;
|
||||
use Carbon\Exceptions\InvalidDateException;
|
||||
use Carbon\Exceptions\InvalidFormatException;
|
||||
use FireflyIII\Enums\UserRoleEnum;
|
||||
use FireflyIII\Support\Http\Api\ValidatesUserGroupTrait;
|
||||
use FireflyIII\Transformers\V2\AbstractTransformer;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
@@ -55,6 +56,7 @@ class Controller extends BaseController
|
||||
|
||||
protected const string CONTENT_TYPE = 'application/vnd.api+json';
|
||||
protected ParameterBag $parameters;
|
||||
protected array $acceptedRoles = [UserRoleEnum::READ_ONLY];
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
|
@@ -26,6 +26,7 @@ namespace FireflyIII\Api\V2\Controllers\Model\Account;
|
||||
use FireflyIII\Api\V2\Controllers\Controller;
|
||||
use FireflyIII\Api\V2\Request\Model\Account\IndexRequest;
|
||||
use FireflyIII\Api\V2\Request\Model\Transaction\InfiniteListRequest;
|
||||
use FireflyIII\Enums\UserRoleEnum;
|
||||
use FireflyIII\Repositories\UserGroups\Account\AccountRepositoryInterface;
|
||||
use FireflyIII\Transformers\V2\AccountTransformer;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
@@ -33,9 +34,10 @@ use Illuminate\Pagination\LengthAwarePaginator;
|
||||
|
||||
class IndexController extends Controller
|
||||
{
|
||||
public const string RESOURCE_KEY = 'accounts';
|
||||
public const string RESOURCE_KEY = 'accounts';
|
||||
|
||||
private AccountRepositoryInterface $repository;
|
||||
protected array $acceptedRoles = [UserRoleEnum::READ_ONLY, UserRoleEnum::MANAGE_TRANSACTIONS];
|
||||
|
||||
/**
|
||||
* AccountController constructor.
|
||||
@@ -48,9 +50,7 @@ class IndexController extends Controller
|
||||
$this->repository = app(AccountRepositoryInterface::class);
|
||||
// new way of user group validation
|
||||
$userGroup = $this->validateUserGroup($request);
|
||||
if (null !== $userGroup) {
|
||||
$this->repository->setUserGroup($userGroup);
|
||||
}
|
||||
$this->repository->setUserGroup($userGroup);
|
||||
|
||||
return $next($request);
|
||||
}
|
||||
|
@@ -25,7 +25,9 @@ declare(strict_types=1);
|
||||
namespace FireflyIII\Api\V2\Controllers\Model\Account;
|
||||
|
||||
use FireflyIII\Api\V2\Controllers\Controller;
|
||||
use FireflyIII\Enums\UserRoleEnum;
|
||||
use FireflyIII\Models\Account;
|
||||
use FireflyIII\Repositories\UserGroups\Account\AccountRepositoryInterface;
|
||||
use FireflyIII\Transformers\V2\AccountTransformer;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
|
||||
@@ -36,6 +38,29 @@ use Illuminate\Http\JsonResponse;
|
||||
*/
|
||||
class ShowController extends Controller
|
||||
{
|
||||
public const string RESOURCE_KEY = 'accounts';
|
||||
|
||||
private AccountRepositoryInterface $repository;
|
||||
protected array $acceptedRoles = [UserRoleEnum::READ_ONLY, UserRoleEnum::MANAGE_TRANSACTIONS];
|
||||
|
||||
/**
|
||||
* AccountController constructor.
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->middleware(
|
||||
function ($request, $next) {
|
||||
$this->repository = app(AccountRepositoryInterface::class);
|
||||
// new way of user group validation
|
||||
$userGroup = $this->validateUserGroup($request);
|
||||
$this->repository->setUserGroup($userGroup);
|
||||
|
||||
return $next($request);
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO this endpoint is not yet reachable.
|
||||
*/
|
||||
|
@@ -77,13 +77,11 @@ class BasicController extends Controller
|
||||
$this->opsRepository = app(OperationsRepositoryInterface::class);
|
||||
|
||||
$userGroup = $this->validateUserGroup($request);
|
||||
if (null !== $userGroup) {
|
||||
$this->abRepository->setUserGroup($userGroup);
|
||||
$this->accountRepository->setUserGroup($userGroup);
|
||||
$this->billRepository->setUserGroup($userGroup);
|
||||
$this->budgetRepository->setUserGroup($userGroup);
|
||||
$this->opsRepository->setUserGroup($userGroup);
|
||||
}
|
||||
$this->abRepository->setUserGroup($userGroup);
|
||||
$this->accountRepository->setUserGroup($userGroup);
|
||||
$this->billRepository->setUserGroup($userGroup);
|
||||
$this->budgetRepository->setUserGroup($userGroup);
|
||||
$this->opsRepository->setUserGroup($userGroup);
|
||||
|
||||
return $next($request);
|
||||
}
|
||||
@@ -298,7 +296,7 @@ class BasicController extends Controller
|
||||
app('log')->debug(sprintf('Amount left is %s', $left));
|
||||
|
||||
// how much left per day?
|
||||
$days = (int) $today->diffInDays($end, true) + 1;
|
||||
$days = (int)$today->diffInDays($end, true) + 1;
|
||||
$perDay = '0';
|
||||
$perDayNative = '0';
|
||||
if (0 !== $days && bccomp($left, '0') > -1) {
|
||||
|
@@ -54,14 +54,6 @@ class UpdateController extends Controller
|
||||
);
|
||||
}
|
||||
|
||||
public function useUserGroup(UserGroup $userGroup): JsonResponse
|
||||
{
|
||||
// group validation is already in place, so can just update the user.
|
||||
$this->repository->useUserGroup($userGroup);
|
||||
|
||||
return response()->json([], 204);
|
||||
}
|
||||
|
||||
public function update(UpdateRequest $request, UserGroup $userGroup): JsonResponse
|
||||
{
|
||||
$all = $request->getAll();
|
||||
@@ -87,4 +79,12 @@ class UpdateController extends Controller
|
||||
->header('Content-Type', self::CONTENT_TYPE)
|
||||
;
|
||||
}
|
||||
|
||||
public function useUserGroup(UserGroup $userGroup): JsonResponse
|
||||
{
|
||||
// group validation is already in place, so can just update the user.
|
||||
$this->repository->useUserGroup($userGroup);
|
||||
|
||||
return response()->json([], 204);
|
||||
}
|
||||
}
|
||||
|
@@ -23,6 +23,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace FireflyIII\Api\V2\Request\Chart;
|
||||
|
||||
use FireflyIII\Enums\UserRoleEnum;
|
||||
use FireflyIII\Support\Http\Api\ValidatesUserGroupTrait;
|
||||
use FireflyIII\Support\Request\ChecksLogin;
|
||||
use FireflyIII\Support\Request\ConvertsDataTypes;
|
||||
@@ -39,6 +40,8 @@ class DashboardChartRequest extends FormRequest
|
||||
use ConvertsDataTypes;
|
||||
use ValidatesUserGroupTrait;
|
||||
|
||||
protected array $acceptedRoles = [UserRoleEnum::READ_ONLY];
|
||||
|
||||
/**
|
||||
* Get all data from the request.
|
||||
*/
|
||||
|
@@ -30,20 +30,10 @@ use Symfony\Component\Console\Command\Command as CommandAlias;
|
||||
|
||||
class MigratePreferences extends Command
|
||||
{
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'firefly-iii:migrate-preferences';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'Give Firefly III preferences a user group ID so they can be made administration specific.';
|
||||
|
||||
protected $signature = 'firefly-iii:migrate-preferences';
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*/
|
||||
|
@@ -191,7 +191,7 @@ class ExportData extends Command
|
||||
$this->friendlyError(sprintf('%s date "%s" must be formatted YYYY-MM-DD. Field will be ignored.', $field, $this->option('start')));
|
||||
$error = true;
|
||||
}
|
||||
if (false === $date) {
|
||||
if (null === $date) {
|
||||
$this->friendlyError(sprintf('%s date "%s" must be formatted YYYY-MM-DD.', $field, $this->option('start')));
|
||||
|
||||
throw new FireflyException(sprintf('%s date "%s" must be formatted YYYY-MM-DD.', $field, $this->option('start')));
|
||||
|
@@ -32,24 +32,13 @@ class LaravelPassportKeys extends Command
|
||||
{
|
||||
use ShowsFriendlyMessages;
|
||||
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'firefly-iii:laravel-passport-keys';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'Calls the Laravel "passport:keys" but doesn\'t exit 1.';
|
||||
protected $signature = 'firefly-iii:laravel-passport-keys';
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*/
|
||||
public function handle()
|
||||
public function handle(): int
|
||||
{
|
||||
Artisan::call('passport:keys --no-interaction', []);
|
||||
$result = Artisan::output();
|
||||
|
@@ -285,7 +285,7 @@ class ApplyRules extends Command
|
||||
if (null !== $endString && '' !== $endString) {
|
||||
$inputEnd = Carbon::createFromFormat('Y-m-d', $endString);
|
||||
}
|
||||
if (false === $inputEnd || false === $inputStart) {
|
||||
if (null === $inputEnd || null === $inputStart) {
|
||||
Log::error('Could not parse start or end date in verifyInputDate().');
|
||||
|
||||
return;
|
||||
|
@@ -25,6 +25,7 @@ declare(strict_types=1);
|
||||
namespace FireflyIII\Exceptions;
|
||||
|
||||
use FireflyIII\Jobs\MailError;
|
||||
use Illuminate\Auth\Access\AuthorizationException;
|
||||
use Illuminate\Auth\AuthenticationException;
|
||||
use Illuminate\Database\QueryException;
|
||||
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
|
||||
@@ -98,6 +99,13 @@ class Handler extends ExceptionHandler
|
||||
return response()->json(['message' => 'Resource not found', 'exception' => 'NotFoundHttpException'], 404);
|
||||
}
|
||||
|
||||
if ($e instanceof AuthorizationException && $expectsJson) {
|
||||
// somehow Laravel handler does not catch this:
|
||||
app('log')->debug('Return JSON unauthorized error.');
|
||||
|
||||
return response()->json(['message' => $e->getMessage(), 'exception' => 'AuthorizationException'], 401);
|
||||
}
|
||||
|
||||
if ($e instanceof AuthenticationException && $expectsJson) {
|
||||
// somehow Laravel handler does not catch this:
|
||||
app('log')->debug('Return JSON unauthenticated error.');
|
||||
|
@@ -405,7 +405,7 @@ class UserEventHandler
|
||||
}
|
||||
// clean up old entries (6 months)
|
||||
$carbon = Carbon::createFromFormat('Y-m-d H:i:s', $preference[$index]['time']);
|
||||
if (false !== $carbon && $carbon->diffInMonths(today(), true) > 6) {
|
||||
if (null !== $carbon && $carbon->diffInMonths(today(), true) > 6) {
|
||||
app('log')->debug(sprintf('Entry for %s is very old, remove it.', $row['ip']));
|
||||
unset($preference[$index]);
|
||||
}
|
||||
|
@@ -128,7 +128,7 @@ class BudgetLimitController extends Controller
|
||||
$start = Carbon::createFromFormat('Y-m-d', $request->get('start'));
|
||||
$end = Carbon::createFromFormat('Y-m-d', $request->get('end'));
|
||||
|
||||
if (false === $start || false === $end) {
|
||||
if (null === $start || null === $end) {
|
||||
return response()->json([]);
|
||||
}
|
||||
|
||||
|
@@ -79,10 +79,10 @@ class HomeController extends Controller
|
||||
app('log')->error(sprintf('End could not parse date string "%s" so ignore it.', $stringEnd));
|
||||
$end = Carbon::now()->endOfMonth();
|
||||
}
|
||||
if (false === $start) {
|
||||
if (null === $start) {
|
||||
$start = Carbon::now()->startOfMonth();
|
||||
}
|
||||
if (false === $end) {
|
||||
if (null === $end) {
|
||||
$end = Carbon::now()->endOfMonth();
|
||||
}
|
||||
|
||||
@@ -120,13 +120,28 @@ class HomeController extends Controller
|
||||
*/
|
||||
public function index(AccountRepositoryInterface $repository): mixed
|
||||
{
|
||||
$types = config('firefly.accountTypesByIdentifier.asset');
|
||||
$count = $repository->count($types);
|
||||
$types = config('firefly.accountTypesByIdentifier.asset');
|
||||
$count = $repository->count($types);
|
||||
Log::channel('audit')->info('User visits homepage.');
|
||||
|
||||
if (0 === $count) {
|
||||
return redirect(route('new-user.index'));
|
||||
}
|
||||
|
||||
if ('v1' === (string)config('view.layout')) {
|
||||
return $this->indexV1($repository);
|
||||
}
|
||||
if ('v2' === (string)config('view.layout')) {
|
||||
return $this->indexV2();
|
||||
}
|
||||
|
||||
throw new FireflyException('Invalid layout configuration');
|
||||
}
|
||||
|
||||
private function indexV1(AccountRepositoryInterface $repository): mixed
|
||||
{
|
||||
$types = config('firefly.accountTypesByIdentifier.asset');
|
||||
$count = $repository->count($types);
|
||||
$subTitle = (string)trans('firefly.welcome_back');
|
||||
$transactions = [];
|
||||
$frontpage = app('preferences')->getFresh('frontpageAccounts', $repository->getAccountsByType([AccountType::ASSET])->pluck('id')->toArray());
|
||||
@@ -136,15 +151,12 @@ class HomeController extends Controller
|
||||
}
|
||||
|
||||
/** @var Carbon $start */
|
||||
$start = session('start', today(config('app.timezone'))->startOfMonth());
|
||||
|
||||
/** @var Carbon $end */
|
||||
$start = session('start', today(config('app.timezone'))->startOfMonth());
|
||||
$end = session('end', today(config('app.timezone'))->endOfMonth());
|
||||
$accounts = $repository->getAccountsById($frontpageArray);
|
||||
$today = today(config('app.timezone'));
|
||||
|
||||
// sort frontpage accounts by order
|
||||
$accounts = $accounts->sortBy('order');
|
||||
$accounts = $accounts->sortBy('order'); // sort frontpage accounts by order
|
||||
|
||||
app('log')->debug('Frontpage accounts are ', $frontpageArray);
|
||||
|
||||
@@ -166,4 +178,18 @@ class HomeController extends Controller
|
||||
|
||||
return view('index', compact('count', 'subTitle', 'transactions', 'billCount', 'start', 'end', 'today'));
|
||||
}
|
||||
|
||||
private function indexV2(): mixed
|
||||
{
|
||||
$subTitle = (string)trans('firefly.welcome_back');
|
||||
|
||||
$start = session('start', today(config('app.timezone'))->startOfMonth());
|
||||
$end = session('end', today(config('app.timezone'))->endOfMonth());
|
||||
|
||||
/** @var User $user */
|
||||
$user = auth()->user();
|
||||
event(new RequestedVersionCheckStatus($user));
|
||||
|
||||
return view('index', compact('subTitle', 'start', 'end'));
|
||||
}
|
||||
}
|
||||
|
@@ -130,7 +130,7 @@ class BoxController extends Controller
|
||||
$boxTitle = (string)trans('firefly.left_to_spend');
|
||||
$activeDaysLeft = $this->activeDaysLeft($start, $end); // see method description.
|
||||
$display = 1; // not overspent
|
||||
$leftPerDayAmount = 0 === (int) $activeDaysLeft ? $leftToSpendAmount : bcdiv($leftToSpendAmount, (string)$activeDaysLeft);
|
||||
$leftPerDayAmount = 0 === $activeDaysLeft ? $leftToSpendAmount : bcdiv($leftToSpendAmount, (string)$activeDaysLeft);
|
||||
app('log')->debug(sprintf('Left to spend per day is %s', $leftPerDayAmount));
|
||||
}
|
||||
}
|
||||
|
@@ -81,7 +81,7 @@ class RecurrenceController extends Controller
|
||||
$skip = $skip < 0 || $skip > 31 ? 0 : $skip;
|
||||
$weekend = $weekend < 1 || $weekend > 4 ? 1 : $weekend;
|
||||
|
||||
if (false === $start || false === $end || false === $firstDate || false === $endDate) {
|
||||
if (null === $start || null === $end || null === $firstDate || null === $endDate) {
|
||||
return response()->json();
|
||||
}
|
||||
|
||||
@@ -112,7 +112,7 @@ class RecurrenceController extends Controller
|
||||
$actualEnd = clone $end;
|
||||
|
||||
if ('until_date' === $endsAt) {
|
||||
$actualEnd = $endDate ?? clone $end;
|
||||
$actualEnd = $endDate;
|
||||
$occurrences = $this->recurring->getOccurrencesInRange($repetition, $actualStart, $actualEnd);
|
||||
}
|
||||
if ('times' === $endsAt) {
|
||||
@@ -155,7 +155,7 @@ class RecurrenceController extends Controller
|
||||
} catch (InvalidFormatException $e) {
|
||||
$date = Carbon::today(config('app.timezone'));
|
||||
}
|
||||
if (false === $date) {
|
||||
if (null === $date) {
|
||||
return response()->json();
|
||||
}
|
||||
$date->startOfDay();
|
||||
|
@@ -223,8 +223,8 @@ class PreferencesController extends Controller
|
||||
|
||||
// same for locale:
|
||||
if (!auth()->user()->hasRole('demo')) {
|
||||
/** @var Preference $locale */
|
||||
$locale = $request->get('locale');
|
||||
$locale = (string) $request->get('locale');
|
||||
$locale = '' === $locale ? null : $locale;
|
||||
app('preferences')->set('locale', $locale);
|
||||
}
|
||||
|
||||
|
@@ -23,7 +23,6 @@ declare(strict_types=1);
|
||||
|
||||
namespace FireflyIII\Http\Controllers;
|
||||
|
||||
use Auth;
|
||||
use FireflyIII\Events\UserChangedEmail;
|
||||
use FireflyIII\Exceptions\FireflyException;
|
||||
use FireflyIII\Exceptions\ValidationException;
|
||||
@@ -467,9 +466,7 @@ class ProfileController extends Controller
|
||||
if (is_array($secret)) {
|
||||
$secret = null;
|
||||
}
|
||||
if (is_int($secret)) {
|
||||
$secret = (string)$secret;
|
||||
}
|
||||
$secret = (string)$secret;
|
||||
|
||||
$repository->setMFACode($user, $secret);
|
||||
|
||||
|
@@ -119,7 +119,7 @@ class DownloadExchangeRates implements ShouldQueue
|
||||
return;
|
||||
}
|
||||
$date = Carbon::createFromFormat('Y-m-d', $json['date'], config('app.timezone'));
|
||||
if (false === $date) {
|
||||
if (null === $date) {
|
||||
return;
|
||||
}
|
||||
$this->saveRates($currency, $date, $json['rates']);
|
||||
|
@@ -128,7 +128,7 @@ class WarnAboutBills implements ShouldQueue
|
||||
$today = clone $this->date;
|
||||
$carbon = clone $bill->{$field};
|
||||
|
||||
return (int) $today->diffInDays($carbon);
|
||||
return (int)$today->diffInDays($carbon);
|
||||
}
|
||||
|
||||
private function sendWarning(Bill $bill, string $field): void
|
||||
|
@@ -36,13 +36,13 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
|
||||
/**
|
||||
* FireflyIII\Models\Preference
|
||||
*
|
||||
* @property int $id
|
||||
* @property null|Carbon $created_at
|
||||
* @property null|Carbon $updated_at
|
||||
* @property int $user_id
|
||||
* @property string $name
|
||||
* @property null|array|int|string $data
|
||||
* @property User $user
|
||||
* @property int $id
|
||||
* @property null|Carbon $created_at
|
||||
* @property null|Carbon $updated_at
|
||||
* @property int $user_id
|
||||
* @property string $name
|
||||
* @property null|array|bool|int|string $data
|
||||
* @property User $user
|
||||
*
|
||||
* @method static Builder|Preference newModelQuery()
|
||||
* @method static Builder|Preference newQuery()
|
||||
|
@@ -69,7 +69,10 @@ class AppServiceProvider extends ServiceProvider
|
||||
if ('' === $firstParam && str_contains($name, $route)) {
|
||||
return true;
|
||||
}
|
||||
$params = Route::getCurrentRoute()->parameters() ?? [];
|
||||
|
||||
/** @var null|array $params */
|
||||
$params = Route::getCurrentRoute()->parameters();
|
||||
$params ??= [];
|
||||
$objectType = $params['objectType'] ?? '';
|
||||
if ($objectType === $firstParam && str_contains($name, $route)) {
|
||||
return true;
|
||||
|
@@ -183,21 +183,21 @@ class BudgetRepository implements BudgetRepositoryInterface
|
||||
// |-----------|
|
||||
// |----------------|
|
||||
if ($start->gte($limit->start_date) && $end->lte($limit->end_date)) {
|
||||
return (int) $start->diffInDays($end, true) + 1; // add one day
|
||||
return (int)$start->diffInDays($end, true) + 1; // add one day
|
||||
}
|
||||
// limit starts earlier and limit ends first:
|
||||
// |-----------|
|
||||
// |-------|
|
||||
if ($limit->start_date->lte($start) && $limit->end_date->lte($end)) {
|
||||
// return days in the range $start-$limit_end
|
||||
return (int) $start->diffInDays($limit->end_date, true) + 1; // add one day, the day itself
|
||||
return (int)$start->diffInDays($limit->end_date, true) + 1; // add one day, the day itself
|
||||
}
|
||||
// limit starts later and limit ends earlier
|
||||
// |-----------|
|
||||
// |-------|
|
||||
if ($limit->start_date->gte($start) && $limit->end_date->gte($end)) {
|
||||
// return days in the range $limit_start - $end
|
||||
return (int) $limit->start_date->diffInDays($end, true) + 1; // add one day, the day itself
|
||||
return (int)$limit->start_date->diffInDays($end, true) + 1; // add one day, the day itself
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@@ -51,7 +51,7 @@ class OperationsRepository implements OperationsRepositoryInterface
|
||||
$total = '0';
|
||||
$count = 0;
|
||||
foreach ($budget->budgetlimits as $limit) {
|
||||
$diff = (int) $limit->start_date->diffInDays($limit->end_date, true);
|
||||
$diff = (int)$limit->start_date->diffInDays($limit->end_date, true);
|
||||
$diff = 0 === $diff ? 1 : $diff;
|
||||
$amount = $limit->amount;
|
||||
$perDay = bcdiv($amount, (string)$diff);
|
||||
|
@@ -301,7 +301,7 @@ class PiggyBankRepository implements PiggyBankRepositoryInterface
|
||||
if (null !== $piggyBank->targetdate && $repetition->currentamount < $piggyBank->targetamount) {
|
||||
$now = today(config('app.timezone'));
|
||||
$startDate = null !== $piggyBank->startdate && $piggyBank->startdate->gte($now) ? $piggyBank->startdate : $now;
|
||||
$diffInMonths = (int) $startDate->diffInMonths($piggyBank->targetdate);
|
||||
$diffInMonths = (int)$startDate->diffInMonths($piggyBank->targetdate);
|
||||
$remainingAmount = bcsub($piggyBank->targetamount, $repetition->currentamount);
|
||||
|
||||
// more than 1 month to go and still need money to save:
|
||||
|
@@ -473,10 +473,10 @@ class RecurringRepository implements RecurringRepositoryInterface
|
||||
if ('yearly' === $repetition->repetition_type) {
|
||||
$today = today(config('app.timezone'))->endOfYear();
|
||||
$repDate = Carbon::createFromFormat('Y-m-d', $repetition->repetition_moment);
|
||||
if (false === $repDate) {
|
||||
if (null === $repDate) {
|
||||
$repDate = clone $today;
|
||||
}
|
||||
$diffInYears = (int) $today->diffInYears($repDate, true);
|
||||
$diffInYears = (int)$today->diffInYears($repDate, true);
|
||||
$repDate->addYears($diffInYears); // technically not necessary.
|
||||
$string = $repDate->isoFormat((string)trans('config.month_and_day_no_year_js'));
|
||||
|
||||
|
@@ -242,6 +242,30 @@ class UserRepository implements UserRepositoryInterface
|
||||
return false;
|
||||
}
|
||||
|
||||
#[\Override]
|
||||
public function getUserGroups(User $user): Collection
|
||||
{
|
||||
$memberships = $user->groupMemberships()->get();
|
||||
$set = [];
|
||||
$collection = new Collection();
|
||||
|
||||
/** @var GroupMembership $membership */
|
||||
foreach ($memberships as $membership) {
|
||||
/** @var null|UserGroup $group */
|
||||
$group = $membership->userGroup()->first();
|
||||
if (null !== $group) {
|
||||
$groupId = $group->id;
|
||||
if (in_array($groupId, array_keys($set), true)) {
|
||||
continue;
|
||||
}
|
||||
$set[$groupId] = $group;
|
||||
}
|
||||
}
|
||||
$collection->push(...$set);
|
||||
|
||||
return $collection;
|
||||
}
|
||||
|
||||
public function inviteUser(null|Authenticatable|User $user, string $email): InvitedUser
|
||||
{
|
||||
$now = today(config('app.timezone'));
|
||||
@@ -392,28 +416,4 @@ class UserRepository implements UserRepositoryInterface
|
||||
|
||||
return null !== $invitee;
|
||||
}
|
||||
|
||||
#[\Override]
|
||||
public function getUserGroups(User $user): Collection
|
||||
{
|
||||
$memberships = $user->groupMemberships()->get();
|
||||
$set = [];
|
||||
$collection = new Collection();
|
||||
|
||||
/** @var GroupMembership $membership */
|
||||
foreach ($memberships as $membership) {
|
||||
/** @var null|UserGroup $group */
|
||||
$group = $membership->userGroup()->first();
|
||||
if (null !== $group) {
|
||||
$groupId = (int)$group->id;
|
||||
if (in_array($groupId, $set, true)) {
|
||||
continue;
|
||||
}
|
||||
$set[$groupId] = $group;
|
||||
}
|
||||
}
|
||||
$collection->push(...$set);
|
||||
|
||||
return $collection;
|
||||
}
|
||||
}
|
||||
|
@@ -59,8 +59,6 @@ interface UserRepositoryInterface
|
||||
|
||||
public function changeStatus(User $user, bool $isBlocked, string $code): bool;
|
||||
|
||||
public function getUserGroups(User $user): Collection;
|
||||
|
||||
/**
|
||||
* Returns a count of all users.
|
||||
*/
|
||||
@@ -96,6 +94,8 @@ interface UserRepositoryInterface
|
||||
*/
|
||||
public function getUserData(User $user): array;
|
||||
|
||||
public function getUserGroups(User $user): Collection;
|
||||
|
||||
public function hasRole(null|Authenticatable|User $user, string $role): bool;
|
||||
|
||||
public function inviteUser(null|Authenticatable|User $user, string $email): InvitedUser;
|
||||
|
@@ -106,8 +106,8 @@ class UserGroupRepository implements UserGroupRepositoryInterface
|
||||
/** @var null|UserGroup $group */
|
||||
$group = $membership->userGroup()->first();
|
||||
if (null !== $group) {
|
||||
$groupId = (int)$group->id;
|
||||
if (in_array($groupId, $set, true)) {
|
||||
$groupId = $group->id;
|
||||
if (in_array($groupId, array_keys($set), true)) {
|
||||
continue;
|
||||
}
|
||||
$set[$groupId] = $group;
|
||||
|
@@ -38,8 +38,6 @@ interface UserGroupRepositoryInterface
|
||||
|
||||
public function get(): Collection;
|
||||
|
||||
public function useUserGroup(UserGroup $userGroup): void;
|
||||
|
||||
public function getAll(): Collection;
|
||||
|
||||
public function setUser(null|Authenticatable|User $user): void;
|
||||
@@ -49,4 +47,6 @@ interface UserGroupRepositoryInterface
|
||||
public function update(UserGroup $userGroup, array $data): UserGroup;
|
||||
|
||||
public function updateMembership(UserGroup $userGroup, array $data): UserGroup;
|
||||
|
||||
public function useUserGroup(UserGroup $userGroup): void;
|
||||
}
|
||||
|
@@ -63,6 +63,8 @@ interface AccountRepositoryInterface
|
||||
*/
|
||||
public function getMetaValue(Account $account, string $field): ?string;
|
||||
|
||||
public function getUserGroup(): UserGroup;
|
||||
|
||||
/**
|
||||
* Reset order types of the mentioned accounts.
|
||||
*/
|
||||
@@ -74,7 +76,5 @@ interface AccountRepositoryInterface
|
||||
|
||||
public function setUserGroup(UserGroup $userGroup): void;
|
||||
|
||||
public function getUserGroup(): UserGroup;
|
||||
|
||||
public function update(Account $account, array $data): Account;
|
||||
}
|
||||
|
@@ -117,7 +117,7 @@ class UpdateRequest implements UpdateRequestInterface
|
||||
// parse response a bit. No message yet.
|
||||
$response = $json['firefly_iii'][$channel];
|
||||
$date = Carbon::createFromFormat('Y-m-d', $response['date']);
|
||||
if (false === $date) {
|
||||
if (null === $date) {
|
||||
$date = today(config('app.timezone'));
|
||||
}
|
||||
$return['version'] = $response['version'];
|
||||
|
@@ -54,7 +54,7 @@ class GroupCloneService
|
||||
{
|
||||
$newJournal = $journal->replicate();
|
||||
$newJournal->transaction_group_id = $newGroup->id;
|
||||
$newJournal->date = today(config('app.timezone'));
|
||||
$newJournal->date = now();
|
||||
$newJournal->save();
|
||||
|
||||
foreach ($journal->transactions as $transaction) {
|
||||
|
@@ -187,7 +187,7 @@ class JournalUpdateService
|
||||
|
||||
// make new account validator.
|
||||
$expectedType = $this->getExpectedType();
|
||||
app('log')->debug(sprintf('Expected type (new or unchanged) is %s', $expectedType));
|
||||
app('log')->debug(sprintf('(a) Expected type (new or unchanged) is %s', $expectedType));
|
||||
|
||||
// make a new validator.
|
||||
/** @var AccountValidator $validator */
|
||||
@@ -273,7 +273,7 @@ class JournalUpdateService
|
||||
|
||||
// make new account validator.
|
||||
$expectedType = $this->getExpectedType();
|
||||
app('log')->debug(sprintf('Expected type (new or unchanged) is %s', $expectedType));
|
||||
app('log')->debug(sprintf('(b) Expected type (new or unchanged) is %s', $expectedType));
|
||||
|
||||
// make a new validator.
|
||||
/** @var AccountValidator $validator */
|
||||
@@ -404,7 +404,7 @@ class JournalUpdateService
|
||||
|
||||
// make new account validator.
|
||||
$expectedType = $this->getExpectedType();
|
||||
app('log')->debug(sprintf('Expected type (new or unchanged) is %s', $expectedType));
|
||||
app('log')->debug(sprintf('(c) Expected type (new or unchanged) is %s', $expectedType));
|
||||
|
||||
try {
|
||||
$result = $this->getAccount($expectedType, 'destination', $destInfo);
|
||||
|
@@ -146,7 +146,7 @@ class RemoteUserGuard implements Guard
|
||||
return $this->user?->id;
|
||||
}
|
||||
|
||||
public function setUser(null|Authenticatable|User $user): void
|
||||
public function setUser(null|Authenticatable|User $user): void // @phpstan-ignore-line
|
||||
{
|
||||
app('log')->debug(sprintf('Now at %s', __METHOD__));
|
||||
if ($user instanceof User) {
|
||||
|
@@ -36,6 +36,14 @@ use Illuminate\Contracts\Auth\UserProvider;
|
||||
*/
|
||||
class RemoteUserProvider implements UserProvider
|
||||
{
|
||||
#[\Override]
|
||||
public function rehashPasswordIfRequired(Authenticatable $user, array $credentials, bool $force = false): void
|
||||
{
|
||||
app('log')->debug(sprintf('Now at %s', __METHOD__));
|
||||
|
||||
throw new FireflyException(sprintf('Did not implement %s', __METHOD__));
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws FireflyException
|
||||
*
|
||||
@@ -120,12 +128,4 @@ class RemoteUserProvider implements UserProvider
|
||||
|
||||
throw new FireflyException(sprintf('C) Did not implement %s', __METHOD__));
|
||||
}
|
||||
|
||||
#[\Override]
|
||||
public function rehashPasswordIfRequired(Authenticatable $user, array $credentials, bool $force = false): void
|
||||
{
|
||||
app('log')->debug(sprintf('Now at %s', __METHOD__));
|
||||
|
||||
throw new FireflyException(sprintf('Did not implement %s', __METHOD__));
|
||||
}
|
||||
}
|
||||
|
@@ -23,10 +23,12 @@ declare(strict_types=1);
|
||||
|
||||
namespace FireflyIII\Support\Http\Api;
|
||||
|
||||
use FireflyIII\Exceptions\FireflyException;
|
||||
use FireflyIII\Enums\UserRoleEnum;
|
||||
use FireflyIII\Models\GroupMembership;
|
||||
use FireflyIII\Models\UserGroup;
|
||||
use FireflyIII\User;
|
||||
use Illuminate\Auth\Access\AuthorizationException;
|
||||
use Illuminate\Auth\AuthenticationException;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
/**
|
||||
@@ -35,37 +37,68 @@ use Illuminate\Http\Request;
|
||||
trait ValidatesUserGroupTrait
|
||||
{
|
||||
/**
|
||||
* This check does not validate which rights the user has, that comes later.
|
||||
*
|
||||
* @throws FireflyException
|
||||
* @throws AuthorizationException
|
||||
* @throws AuthenticationException
|
||||
*/
|
||||
protected function validateUserGroup(Request $request): ?UserGroup
|
||||
protected function validateUserGroup(Request $request): UserGroup
|
||||
{
|
||||
app('log')->debug(sprintf('validateUserGroup: %s', static::class));
|
||||
if (!auth()->check()) {
|
||||
app('log')->debug('validateUserGroup: user is not logged in, return NULL.');
|
||||
|
||||
return null;
|
||||
throw new AuthenticationException();
|
||||
}
|
||||
|
||||
/** @var User $user */
|
||||
$user = auth()->user();
|
||||
$groupId = 0;
|
||||
if (!$request->has('user_group_id')) {
|
||||
$group = $user->userGroup;
|
||||
app('log')->debug(sprintf('validateUserGroup: no user group submitted, return default group #%d.', $group?->id));
|
||||
|
||||
return $group;
|
||||
$groupId = $user->user_group_id;
|
||||
app('log')->debug(sprintf('validateUserGroup: no user group submitted, use default group #%d.', $groupId));
|
||||
}
|
||||
if ($request->has('user_group_id')) {
|
||||
$groupId = (int)$request->get('user_group_id');
|
||||
app('log')->debug(sprintf('validateUserGroup: user group submitted, search for memberships in group #%d.', $groupId));
|
||||
}
|
||||
$groupId = (int)$request->get('user_group_id');
|
||||
|
||||
/** @var null|GroupMembership $membership */
|
||||
$membership = $user->groupMemberships()->where('user_group_id', $groupId)->first();
|
||||
|
||||
if (null === $membership) {
|
||||
app('log')->debug('validateUserGroup: user has no access to this group.');
|
||||
app('log')->debug(sprintf('validateUserGroup: user has no access to group #%d.', $groupId));
|
||||
|
||||
throw new FireflyException((string)trans('validation.belongs_user_or_user_group'));
|
||||
throw new AuthorizationException((string)trans('validation.no_access_group'));
|
||||
}
|
||||
app('log')->debug(sprintf('validateUserGroup: user has role "%s" in group #%d.', $membership->userRole->title, $membership->userGroup->id));
|
||||
|
||||
return $membership->userGroup;
|
||||
// need to get the group from the membership:
|
||||
/** @var null|UserGroup $group */
|
||||
$group = $membership->userGroup;
|
||||
if (null === $group) {
|
||||
app('log')->debug(sprintf('validateUserGroup: group #%d does not exist.', $groupId));
|
||||
|
||||
throw new AuthorizationException((string)trans('validation.belongs_user_or_user_group'));
|
||||
}
|
||||
app('log')->debug(sprintf('validateUserGroup: validate access of user to group #%d ("%s").', $groupId, $group->title));
|
||||
$roles = property_exists($this, 'acceptedRoles') ? $this->acceptedRoles : [];
|
||||
if (0 === count($roles)) {
|
||||
app('log')->debug('validateUserGroup: no roles defined, so no access.');
|
||||
|
||||
throw new AuthorizationException((string)trans('validation.no_accepted_roles_defined'));
|
||||
}
|
||||
app('log')->debug(sprintf('validateUserGroup: have %d roles to check.', count($roles)), $roles);
|
||||
|
||||
/** @var UserRoleEnum $role */
|
||||
foreach ($roles as $role) {
|
||||
if ($user->hasRoleInGroupOrOwner($group, $role)) {
|
||||
app('log')->debug(sprintf('validateUserGroup: User has role "%s" in group #%d, return the group.', $role->value, $groupId));
|
||||
|
||||
return $group;
|
||||
}
|
||||
app('log')->debug(sprintf('validateUserGroup: User does NOT have role "%s" in group #%d, continue searching.', $role->value, $groupId));
|
||||
}
|
||||
|
||||
app('log')->debug('validateUserGroup: User does NOT have enough rights to access endpoint.');
|
||||
|
||||
throw new AuthorizationException((string)trans('validation.belongs_user_or_user_group'));
|
||||
}
|
||||
}
|
||||
|
@@ -46,7 +46,7 @@ trait DateCalculation
|
||||
$difference = $today->diffInDays($end);
|
||||
}
|
||||
|
||||
return (int) (0 === $difference ? 1 : $difference);
|
||||
return (int)(0 === $difference ? 1 : $difference);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -63,7 +63,7 @@ trait DateCalculation
|
||||
$difference = $start->diffInDays($today, true) + 1;
|
||||
}
|
||||
|
||||
return (int) $difference;
|
||||
return (int)$difference;
|
||||
}
|
||||
|
||||
protected function calculateStep(Carbon $start, Carbon $end): string
|
||||
|
@@ -145,14 +145,14 @@ trait RequestInformation
|
||||
$attributes['location'] ??= '';
|
||||
$attributes['accounts'] = AccountList::routeBinder($attributes['accounts'] ?? '', new Route('get', '', []));
|
||||
$date = Carbon::createFromFormat('Ymd', $attributes['startDate']);
|
||||
if (false === $date) {
|
||||
if (null === $date) {
|
||||
$date = today(config('app.timezone'));
|
||||
}
|
||||
$date->startOfMonth();
|
||||
$attributes['startDate'] = $date;
|
||||
|
||||
$date2 = Carbon::createFromFormat('Ymd', $attributes['endDate']);
|
||||
if (false === $date2) {
|
||||
if (null === $date2) {
|
||||
$date2 = today(config('app.timezone'));
|
||||
}
|
||||
$date2->endOfDay();
|
||||
|
@@ -188,7 +188,7 @@ class Navigation
|
||||
Log::debug(sprintf('Function is ->%s()', $function));
|
||||
if (array_key_exists($function, $parameterMap)) {
|
||||
Log::debug(sprintf('Parameter map, function becomes ->%s(%s)', $function, implode(', ', $parameterMap[$function])));
|
||||
$date->{$function}($parameterMap[$function][0]);
|
||||
$date->{$function}($parameterMap[$function][0]); // @phpstan-ignore-line
|
||||
Log::debug(sprintf('Result is "%s"', $date->toIso8601String()));
|
||||
|
||||
return $date;
|
||||
@@ -274,7 +274,7 @@ class Navigation
|
||||
|
||||
/** @var Carbon $tEnd */
|
||||
$tEnd = session('end', today(config('app.timezone'))->endOfMonth());
|
||||
$diffInDays = (int) $tStart->diffInDays($tEnd, true);
|
||||
$diffInDays = (int)$tStart->diffInDays($tEnd, true);
|
||||
}
|
||||
Log::debug(sprintf('Diff in days is %d', $diffInDays));
|
||||
$currentEnd->addDays($diffInDays);
|
||||
@@ -327,7 +327,7 @@ class Navigation
|
||||
{
|
||||
$endOfMonth = $date->copy()->endOfMonth();
|
||||
|
||||
return (int) $date->diffInDays($endOfMonth, true);
|
||||
return (int)$date->diffInDays($endOfMonth, true);
|
||||
}
|
||||
|
||||
public function diffInPeriods(string $period, int $skip, Carbon $beginning, Carbon $end): int
|
||||
@@ -677,7 +677,7 @@ class Navigation
|
||||
|
||||
/** @var Carbon $tEnd */
|
||||
$tEnd = session('end', today(config('app.timezone'))->endOfMonth());
|
||||
$diffInDays = (int) $tStart->diffInDays($tEnd, true);
|
||||
$diffInDays = (int)$tStart->diffInDays($tEnd, true);
|
||||
$date->subDays($diffInDays * $subtract);
|
||||
|
||||
return $date;
|
||||
|
@@ -25,6 +25,7 @@ declare(strict_types=1);
|
||||
namespace FireflyIII\Support;
|
||||
|
||||
use Carbon\Carbon;
|
||||
use Carbon\CarbonInterface;
|
||||
use Carbon\Exceptions\InvalidFormatException;
|
||||
use FireflyIII\Exceptions\FireflyException;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
@@ -122,12 +123,12 @@ class ParseDateString
|
||||
{
|
||||
$today = today(config('app.timezone'))->startOfDay();
|
||||
|
||||
return match ($keyword) {
|
||||
return match ($keyword) { // @phpstan-ignore-line
|
||||
default => $today,
|
||||
'yesterday' => $today->subDay(),
|
||||
'tomorrow' => $today->addDay(),
|
||||
'start of this week' => $today->startOfWeek(Carbon::MONDAY),
|
||||
'end of this week' => $today->endOfWeek(Carbon::SUNDAY),
|
||||
'start of this week' => $today->startOfWeek(CarbonInterface::MONDAY),
|
||||
'end of this week' => $today->endOfWeek(CarbonInterface::SUNDAY),
|
||||
'start of this month' => $today->startOfMonth(),
|
||||
'end of this month' => $today->endOfMonth(),
|
||||
'start of this quarter' => $today->startOfQuarter(),
|
||||
|
@@ -89,6 +89,17 @@ class Preferences
|
||||
return $this->setForUser($user, $name, $default);
|
||||
}
|
||||
|
||||
private function getUserGroupId(User $user, string $preferenceName): ?int
|
||||
{
|
||||
$groupId = null;
|
||||
$items = config('firefly.admin_specific_prefs') ?? [];
|
||||
if (in_array($preferenceName, $items, true)) {
|
||||
$groupId = (int)$user->user_group_id;
|
||||
}
|
||||
|
||||
return $groupId;
|
||||
}
|
||||
|
||||
public function delete(string $name): bool
|
||||
{
|
||||
$fullName = sprintf('preference%s%s', auth()->user()->id, $name);
|
||||
@@ -215,7 +226,7 @@ class Preferences
|
||||
|
||||
public function set(string $name, null|array|bool|int|string $value): Preference
|
||||
{
|
||||
/** @var User $user */
|
||||
/** @var null|User $user */
|
||||
$user = auth()->user();
|
||||
if (null === $user) {
|
||||
// make new preference, return it:
|
||||
@@ -228,15 +239,4 @@ class Preferences
|
||||
|
||||
return $this->setForUser($user, $name, $value);
|
||||
}
|
||||
|
||||
private function getUserGroupId(User $user, string $preferenceName): ?int
|
||||
{
|
||||
$groupId = null;
|
||||
$items = config('firefly.admin_specific_prefs');
|
||||
if (in_array($preferenceName, $items, true)) {
|
||||
$groupId = (int)$user->user_group_id;
|
||||
}
|
||||
|
||||
return $groupId;
|
||||
}
|
||||
}
|
||||
|
@@ -250,7 +250,7 @@ trait ConvertsDataTypes
|
||||
|
||||
return null;
|
||||
}
|
||||
if (false === $carbon) {
|
||||
if (null === $carbon) {
|
||||
app('log')->error(sprintf('[2] "%s" is of an invalid format.', $value));
|
||||
|
||||
return null;
|
||||
|
@@ -29,7 +29,7 @@ use Symfony\Component\ExpressionLanguage\SyntaxError;
|
||||
|
||||
class ActionExpression
|
||||
{
|
||||
private static array $NAMES
|
||||
private static array $NAMES
|
||||
= [
|
||||
// 'transaction_group_id',
|
||||
// 'user_id',
|
||||
|
@@ -185,7 +185,7 @@ class AccountTransformer extends AbstractTransformer
|
||||
// try classic date:
|
||||
if (10 === strlen($monthlyPaymentDate)) {
|
||||
$object = Carbon::createFromFormat('!Y-m-d', $monthlyPaymentDate, config('app.timezone'));
|
||||
if (false === $object) {
|
||||
if (null === $object) {
|
||||
$object = today(config('app.timezone'));
|
||||
}
|
||||
$monthlyPaymentDate = $object->toAtomString();
|
||||
@@ -212,7 +212,7 @@ class AccountTransformer extends AbstractTransformer
|
||||
}
|
||||
if (null !== $openingBalanceDate) {
|
||||
$object = Carbon::createFromFormat('Y-m-d H:i:s', $openingBalanceDate, config('app.timezone'));
|
||||
if (false === $object) {
|
||||
if (null === $object) {
|
||||
$object = today(config('app.timezone'));
|
||||
}
|
||||
$openingBalanceDate = $object->toAtomString();
|
||||
|
@@ -82,7 +82,7 @@ class BillTransformer extends AbstractTransformer
|
||||
$payDatesFormatted = [];
|
||||
foreach ($paidData as $object) {
|
||||
$date = Carbon::createFromFormat('!Y-m-d', $object['date'], config('app.timezone'));
|
||||
if (false === $date) {
|
||||
if (null === $date) {
|
||||
$date = today(config('app.timezone'));
|
||||
}
|
||||
$object['date'] = $date->toAtomString();
|
||||
@@ -91,7 +91,7 @@ class BillTransformer extends AbstractTransformer
|
||||
|
||||
foreach ($payDates as $string) {
|
||||
$date = Carbon::createFromFormat('!Y-m-d', $string, config('app.timezone'));
|
||||
if (false === $date) {
|
||||
if (null === $date) {
|
||||
$date = today(config('app.timezone'));
|
||||
}
|
||||
$payDatesFormatted[] = $date->toAtomString();
|
||||
@@ -104,7 +104,7 @@ class BillTransformer extends AbstractTransformer
|
||||
|
||||
if (null !== $firstPayDate) {
|
||||
$nemDate = Carbon::createFromFormat('!Y-m-d', $firstPayDate, config('app.timezone'));
|
||||
if (false === $nemDate) {
|
||||
if (null === $nemDate) {
|
||||
$nemDate = today(config('app.timezone'));
|
||||
}
|
||||
$nem = $nemDate->toAtomString();
|
||||
@@ -129,7 +129,7 @@ class BillTransformer extends AbstractTransformer
|
||||
$current = $payDatesFormatted[0] ?? null;
|
||||
if (null !== $current && !$nemDate->isToday()) {
|
||||
$temp2 = Carbon::createFromFormat('Y-m-d\TH:i:sP', $current);
|
||||
if (false === $temp2) {
|
||||
if (null === $temp2) {
|
||||
$temp2 = today(config('app.timezone'));
|
||||
}
|
||||
$nemDiff = trans('firefly.bill_expected_date', ['date' => $temp2->diffForHumans(today(config('app.timezone')), CarbonInterface::DIFF_RELATIVE_TO_NOW)]);
|
||||
|
@@ -248,7 +248,7 @@ class PiggyBankTransformer extends AbstractTransformer
|
||||
if (bccomp($currentAmount, $targetAmount) < 1) {
|
||||
$now = today(config('app.timezone'));
|
||||
$startDate = null !== $startDate && $startDate->gte($now) ? $startDate : $now;
|
||||
$diffInMonths = (int) $startDate->diffInMonths($targetDate);
|
||||
$diffInMonths = (int)$startDate->diffInMonths($targetDate);
|
||||
$remainingAmount = bcsub($targetAmount, $currentAmount);
|
||||
|
||||
// more than 1 month to go and still need money to save:
|
||||
|
@@ -462,7 +462,7 @@ class TransactionGroupTransformer extends AbstractTransformer
|
||||
// app('log')->debug(sprintf('Now in date("%s")', $string));
|
||||
if (10 === strlen($string)) {
|
||||
$res = Carbon::createFromFormat('Y-m-d', $string, config('app.timezone'));
|
||||
if (false === $res) {
|
||||
if (null === $res) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -473,7 +473,7 @@ class TransactionGroupTransformer extends AbstractTransformer
|
||||
}
|
||||
if (19 === strlen($string) && str_contains($string, 'T')) {
|
||||
$res = Carbon::createFromFormat('Y-m-d\TH:i:s', substr($string, 0, 19), config('app.timezone'));
|
||||
if (false === $res) {
|
||||
if (null === $res) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -482,7 +482,7 @@ class TransactionGroupTransformer extends AbstractTransformer
|
||||
|
||||
// 2022-01-01 01:01:01
|
||||
$res = Carbon::createFromFormat('Y-m-d H:i:s', substr($string, 0, 19), config('app.timezone'));
|
||||
if (false === $res) {
|
||||
if (null === $res) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@@ -35,9 +35,9 @@ use Illuminate\Support\Collection;
|
||||
*/
|
||||
class UserGroupTransformer extends AbstractTransformer
|
||||
{
|
||||
private array $inUse;
|
||||
private array $memberships;
|
||||
private array $membershipsVisible;
|
||||
private array $inUse;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
@@ -84,13 +84,13 @@ class UserGroupTransformer extends AbstractTransformer
|
||||
public function transform(UserGroup $userGroup): array
|
||||
{
|
||||
return [
|
||||
'id' => $userGroup->id,
|
||||
'created_at' => $userGroup->created_at->toAtomString(),
|
||||
'updated_at' => $userGroup->updated_at->toAtomString(),
|
||||
'in_use' => $this->inUse[$userGroup->id] ?? false,
|
||||
'title' => $userGroup->title,
|
||||
'can_see_members' => $this->membershipsVisible[$userGroup->id] ?? false,
|
||||
'members' => $this->memberships[$userGroup->id] ?? [],
|
||||
'id' => $userGroup->id,
|
||||
'created_at' => $userGroup->created_at->toAtomString(),
|
||||
'updated_at' => $userGroup->updated_at->toAtomString(),
|
||||
'in_use' => $this->inUse[$userGroup->id] ?? false,
|
||||
'title' => $userGroup->title,
|
||||
'can_see_members' => $this->membershipsVisible[$userGroup->id] ?? false,
|
||||
'members' => $this->memberships[$userGroup->id] ?? [],
|
||||
];
|
||||
// if the user has a specific role in this group, then collect the memberships.
|
||||
}
|
||||
|
303
composer.lock
generated
303
composer.lock
generated
@@ -1670,16 +1670,16 @@
|
||||
},
|
||||
{
|
||||
"name": "laravel/framework",
|
||||
"version": "v11.1.1",
|
||||
"version": "v11.2.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/laravel/framework.git",
|
||||
"reference": "1437cea6d2b04cbc83743fbb208e1a01efccd9ec"
|
||||
"reference": "a1750156b671f37cba702380107e2d22161c31e3"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/laravel/framework/zipball/1437cea6d2b04cbc83743fbb208e1a01efccd9ec",
|
||||
"reference": "1437cea6d2b04cbc83743fbb208e1a01efccd9ec",
|
||||
"url": "https://api.github.com/repos/laravel/framework/zipball/a1750156b671f37cba702380107e2d22161c31e3",
|
||||
"reference": "a1750156b671f37cba702380107e2d22161c31e3",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -1871,7 +1871,7 @@
|
||||
"issues": "https://github.com/laravel/framework/issues",
|
||||
"source": "https://github.com/laravel/framework"
|
||||
},
|
||||
"time": "2024-03-28T15:07:18+00:00"
|
||||
"time": "2024-04-02T14:01:33+00:00"
|
||||
},
|
||||
{
|
||||
"name": "laravel/passport",
|
||||
@@ -3366,16 +3366,16 @@
|
||||
},
|
||||
{
|
||||
"name": "nesbot/carbon",
|
||||
"version": "3.2.3",
|
||||
"version": "3.2.4",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/briannesbitt/Carbon.git",
|
||||
"reference": "4d599a6e2351d6b6bf21737accdfe1a4ce3fdbb1"
|
||||
"reference": "82c28278c1c8f7b82dcdab25692237f052ffc8d8"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/4d599a6e2351d6b6bf21737accdfe1a4ce3fdbb1",
|
||||
"reference": "4d599a6e2351d6b6bf21737accdfe1a4ce3fdbb1",
|
||||
"url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/82c28278c1c8f7b82dcdab25692237f052ffc8d8",
|
||||
"reference": "82c28278c1c8f7b82dcdab25692237f052ffc8d8",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -3468,7 +3468,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-03-30T18:22:00+00:00"
|
||||
"time": "2024-04-05T09:58:10+00:00"
|
||||
},
|
||||
{
|
||||
"name": "nette/schema",
|
||||
@@ -5481,16 +5481,16 @@
|
||||
},
|
||||
{
|
||||
"name": "spatie/laravel-ignition",
|
||||
"version": "2.5.0",
|
||||
"version": "2.5.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/spatie/laravel-ignition.git",
|
||||
"reference": "e23f4e8ce6644dc3d68b9d8a0aed3beaca0d6ada"
|
||||
"reference": "0c864b3cbd66ce67a2096c5f743e07ce8f1d6ab9"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/e23f4e8ce6644dc3d68b9d8a0aed3beaca0d6ada",
|
||||
"reference": "e23f4e8ce6644dc3d68b9d8a0aed3beaca0d6ada",
|
||||
"url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/0c864b3cbd66ce67a2096c5f743e07ce8f1d6ab9",
|
||||
"reference": "0c864b3cbd66ce67a2096c5f743e07ce8f1d6ab9",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -5569,7 +5569,7 @@
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2024-03-29T14:14:55+00:00"
|
||||
"time": "2024-04-02T06:30:22+00:00"
|
||||
},
|
||||
{
|
||||
"name": "spatie/period",
|
||||
@@ -5627,16 +5627,16 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/cache",
|
||||
"version": "v7.0.4",
|
||||
"version": "v7.0.6",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/cache.git",
|
||||
"reference": "fc822951dd360a593224bb2cef90a087d0dff60f"
|
||||
"reference": "2d0d3f92c74c445410d05374908b03e0a1131e2b"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/cache/zipball/fc822951dd360a593224bb2cef90a087d0dff60f",
|
||||
"reference": "fc822951dd360a593224bb2cef90a087d0dff60f",
|
||||
"url": "https://api.github.com/repos/symfony/cache/zipball/2d0d3f92c74c445410d05374908b03e0a1131e2b",
|
||||
"reference": "2d0d3f92c74c445410d05374908b03e0a1131e2b",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -5703,7 +5703,7 @@
|
||||
"psr6"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/cache/tree/v7.0.4"
|
||||
"source": "https://github.com/symfony/cache/tree/v7.0.6"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -5719,20 +5719,20 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-02-22T20:27:20+00:00"
|
||||
"time": "2024-03-27T19:55:25+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/cache-contracts",
|
||||
"version": "v3.4.0",
|
||||
"version": "v3.4.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/cache-contracts.git",
|
||||
"reference": "1d74b127da04ffa87aa940abe15446fa89653778"
|
||||
"reference": "2c9db6509a1b21dad229606897639d3284f54b2a"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/cache-contracts/zipball/1d74b127da04ffa87aa940abe15446fa89653778",
|
||||
"reference": "1d74b127da04ffa87aa940abe15446fa89653778",
|
||||
"url": "https://api.github.com/repos/symfony/cache-contracts/zipball/2c9db6509a1b21dad229606897639d3284f54b2a",
|
||||
"reference": "2c9db6509a1b21dad229606897639d3284f54b2a",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -5779,7 +5779,7 @@
|
||||
"standards"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/cache-contracts/tree/v3.4.0"
|
||||
"source": "https://github.com/symfony/cache-contracts/tree/v3.4.2"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -5795,7 +5795,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-09-25T12:52:38+00:00"
|
||||
"time": "2024-01-23T14:51:35+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/clock",
|
||||
@@ -5873,16 +5873,16 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/console",
|
||||
"version": "v7.0.4",
|
||||
"version": "v7.0.6",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/console.git",
|
||||
"reference": "6b099f3306f7c9c2d2786ed736d0026b2903205f"
|
||||
"reference": "fde915cd8e7eb99b3d531d3d5c09531429c3f9e5"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/console/zipball/6b099f3306f7c9c2d2786ed736d0026b2903205f",
|
||||
"reference": "6b099f3306f7c9c2d2786ed736d0026b2903205f",
|
||||
"url": "https://api.github.com/repos/symfony/console/zipball/fde915cd8e7eb99b3d531d3d5c09531429c3f9e5",
|
||||
"reference": "fde915cd8e7eb99b3d531d3d5c09531429c3f9e5",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -5946,7 +5946,7 @@
|
||||
"terminal"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/console/tree/v7.0.4"
|
||||
"source": "https://github.com/symfony/console/tree/v7.0.6"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -5962,7 +5962,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-02-22T20:27:20+00:00"
|
||||
"time": "2024-04-01T11:04:53+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/css-selector",
|
||||
@@ -6098,16 +6098,16 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/error-handler",
|
||||
"version": "v7.0.4",
|
||||
"version": "v7.0.6",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/error-handler.git",
|
||||
"reference": "677b24759decff69e65b1e9d1471d90f95ced880"
|
||||
"reference": "46a4cc138f799886d4bd70477c55c699d3e9dfc8"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/error-handler/zipball/677b24759decff69e65b1e9d1471d90f95ced880",
|
||||
"reference": "677b24759decff69e65b1e9d1471d90f95ced880",
|
||||
"url": "https://api.github.com/repos/symfony/error-handler/zipball/46a4cc138f799886d4bd70477c55c699d3e9dfc8",
|
||||
"reference": "46a4cc138f799886d4bd70477c55c699d3e9dfc8",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -6153,7 +6153,7 @@
|
||||
"description": "Provides tools to manage errors and ease debugging PHP code",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/error-handler/tree/v7.0.4"
|
||||
"source": "https://github.com/symfony/error-handler/tree/v7.0.6"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -6169,7 +6169,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-02-22T20:27:20+00:00"
|
||||
"time": "2024-03-19T11:57:22+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/event-dispatcher",
|
||||
@@ -6253,16 +6253,16 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/event-dispatcher-contracts",
|
||||
"version": "v3.4.0",
|
||||
"version": "v3.4.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/event-dispatcher-contracts.git",
|
||||
"reference": "a76aed96a42d2b521153fb382d418e30d18b59df"
|
||||
"reference": "4e64b49bf370ade88e567de29465762e316e4224"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/a76aed96a42d2b521153fb382d418e30d18b59df",
|
||||
"reference": "a76aed96a42d2b521153fb382d418e30d18b59df",
|
||||
"url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/4e64b49bf370ade88e567de29465762e316e4224",
|
||||
"reference": "4e64b49bf370ade88e567de29465762e316e4224",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -6309,7 +6309,7 @@
|
||||
"standards"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.4.0"
|
||||
"source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.4.2"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -6325,7 +6325,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-05-23T14:45:45+00:00"
|
||||
"time": "2024-01-23T14:51:35+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/expression-language",
|
||||
@@ -6456,22 +6456,22 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/http-client",
|
||||
"version": "v7.0.5",
|
||||
"version": "v7.0.6",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/http-client.git",
|
||||
"reference": "425f462a59d8030703ee04a9e1c666575ed5db3b"
|
||||
"reference": "6e70473909f46fe5dd3b994a0f1b20ecb6b2f858"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/http-client/zipball/425f462a59d8030703ee04a9e1c666575ed5db3b",
|
||||
"reference": "425f462a59d8030703ee04a9e1c666575ed5db3b",
|
||||
"url": "https://api.github.com/repos/symfony/http-client/zipball/6e70473909f46fe5dd3b994a0f1b20ecb6b2f858",
|
||||
"reference": "6e70473909f46fe5dd3b994a0f1b20ecb6b2f858",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=8.2",
|
||||
"psr/log": "^1|^2|^3",
|
||||
"symfony/http-client-contracts": "^3",
|
||||
"symfony/http-client-contracts": "^3.4.1",
|
||||
"symfony/service-contracts": "^2.5|^3"
|
||||
},
|
||||
"conflict": {
|
||||
@@ -6489,7 +6489,7 @@
|
||||
"amphp/http-client": "^4.2.1",
|
||||
"amphp/http-tunnel": "^1.0",
|
||||
"amphp/socket": "^1.1",
|
||||
"guzzlehttp/promises": "^1.4",
|
||||
"guzzlehttp/promises": "^1.4|^2.0",
|
||||
"nyholm/psr7": "^1.0",
|
||||
"php-http/httplug": "^1.0|^2.0",
|
||||
"psr/http-client": "^1.0",
|
||||
@@ -6528,7 +6528,7 @@
|
||||
"http"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/http-client/tree/v7.0.5"
|
||||
"source": "https://github.com/symfony/http-client/tree/v7.0.6"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -6544,20 +6544,20 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-03-02T12:46:12+00:00"
|
||||
"time": "2024-04-01T20:49:44+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/http-client-contracts",
|
||||
"version": "v3.4.0",
|
||||
"version": "v3.4.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/http-client-contracts.git",
|
||||
"reference": "1ee70e699b41909c209a0c930f11034b93578654"
|
||||
"reference": "b6b5c876b3a4ed74460e2c5ac53bbce2f12e2a7e"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/1ee70e699b41909c209a0c930f11034b93578654",
|
||||
"reference": "1ee70e699b41909c209a0c930f11034b93578654",
|
||||
"url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/b6b5c876b3a4ed74460e2c5ac53bbce2f12e2a7e",
|
||||
"reference": "b6b5c876b3a4ed74460e2c5ac53bbce2f12e2a7e",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -6606,7 +6606,7 @@
|
||||
"standards"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/http-client-contracts/tree/v3.4.0"
|
||||
"source": "https://github.com/symfony/http-client-contracts/tree/v3.4.2"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -6622,20 +6622,20 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-07-30T20:28:31+00:00"
|
||||
"time": "2024-04-01T18:51:09+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/http-foundation",
|
||||
"version": "v7.0.4",
|
||||
"version": "v7.0.6",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/http-foundation.git",
|
||||
"reference": "439fdfdd344943254b1ef6278613e79040548045"
|
||||
"reference": "8789625dcf36e5fbf753014678a1e090f1bc759c"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/439fdfdd344943254b1ef6278613e79040548045",
|
||||
"reference": "439fdfdd344943254b1ef6278613e79040548045",
|
||||
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/8789625dcf36e5fbf753014678a1e090f1bc759c",
|
||||
"reference": "8789625dcf36e5fbf753014678a1e090f1bc759c",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -6683,7 +6683,7 @@
|
||||
"description": "Defines an object-oriented layer for the HTTP specification",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/http-foundation/tree/v7.0.4"
|
||||
"source": "https://github.com/symfony/http-foundation/tree/v7.0.6"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -6699,20 +6699,20 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-02-08T19:22:56+00:00"
|
||||
"time": "2024-03-19T11:46:48+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/http-kernel",
|
||||
"version": "v7.0.5",
|
||||
"version": "v7.0.6",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/http-kernel.git",
|
||||
"reference": "37c24ca28f65e3121a68f3dd4daeb36fb1fa2a72"
|
||||
"reference": "34c872391046d59af804af62d4573b829cfe4824"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/37c24ca28f65e3121a68f3dd4daeb36fb1fa2a72",
|
||||
"reference": "37c24ca28f65e3121a68f3dd4daeb36fb1fa2a72",
|
||||
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/34c872391046d59af804af62d4573b829cfe4824",
|
||||
"reference": "34c872391046d59af804af62d4573b829cfe4824",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -6795,7 +6795,7 @@
|
||||
"description": "Provides a structured process for converting a Request into a Response",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/http-kernel/tree/v7.0.5"
|
||||
"source": "https://github.com/symfony/http-kernel/tree/v7.0.6"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -6811,20 +6811,20 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-03-04T21:05:24+00:00"
|
||||
"time": "2024-04-03T06:12:25+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/mailer",
|
||||
"version": "v7.0.4",
|
||||
"version": "v7.0.6",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/mailer.git",
|
||||
"reference": "72e16d87bf50a3ce195b9470c06bb9d7b816ea85"
|
||||
"reference": "eb0c3187c7ddfde12d8aa0e1fa5fb29e730a41e0"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/mailer/zipball/72e16d87bf50a3ce195b9470c06bb9d7b816ea85",
|
||||
"reference": "72e16d87bf50a3ce195b9470c06bb9d7b816ea85",
|
||||
"url": "https://api.github.com/repos/symfony/mailer/zipball/eb0c3187c7ddfde12d8aa0e1fa5fb29e730a41e0",
|
||||
"reference": "eb0c3187c7ddfde12d8aa0e1fa5fb29e730a41e0",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -6875,7 +6875,7 @@
|
||||
"description": "Helps sending emails",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/mailer/tree/v7.0.4"
|
||||
"source": "https://github.com/symfony/mailer/tree/v7.0.6"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -6891,7 +6891,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-02-03T21:34:19+00:00"
|
||||
"time": "2024-03-28T09:20:36+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/mailgun-mailer",
|
||||
@@ -6964,16 +6964,16 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/mime",
|
||||
"version": "v7.0.3",
|
||||
"version": "v7.0.6",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/mime.git",
|
||||
"reference": "c1ffe24ba6fdc3e3f0f3fcb93519103b326a3716"
|
||||
"reference": "99362408c9abdf8c7cadcf0529b6fc8b16f5ace2"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/mime/zipball/c1ffe24ba6fdc3e3f0f3fcb93519103b326a3716",
|
||||
"reference": "c1ffe24ba6fdc3e3f0f3fcb93519103b326a3716",
|
||||
"url": "https://api.github.com/repos/symfony/mime/zipball/99362408c9abdf8c7cadcf0529b6fc8b16f5ace2",
|
||||
"reference": "99362408c9abdf8c7cadcf0529b6fc8b16f5ace2",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -6993,6 +6993,7 @@
|
||||
"league/html-to-markdown": "^5.0",
|
||||
"phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0",
|
||||
"symfony/dependency-injection": "^6.4|^7.0",
|
||||
"symfony/process": "^6.4|^7.0",
|
||||
"symfony/property-access": "^6.4|^7.0",
|
||||
"symfony/property-info": "^6.4|^7.0",
|
||||
"symfony/serializer": "^6.4|^7.0"
|
||||
@@ -7027,7 +7028,7 @@
|
||||
"mime-type"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/mime/tree/v7.0.3"
|
||||
"source": "https://github.com/symfony/mime/tree/v7.0.6"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -7043,7 +7044,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-01-30T08:34:29+00:00"
|
||||
"time": "2024-03-21T19:37:36+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-ctype",
|
||||
@@ -7819,16 +7820,16 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/psr-http-message-bridge",
|
||||
"version": "v7.0.3",
|
||||
"version": "v7.0.6",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/psr-http-message-bridge.git",
|
||||
"reference": "d9fadaf9541d7c01c307e48905d7ce1dbee6bf38"
|
||||
"reference": "fbc500cbcb64d3ea7469f019ab7aa717b320ff3f"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/d9fadaf9541d7c01c307e48905d7ce1dbee6bf38",
|
||||
"reference": "d9fadaf9541d7c01c307e48905d7ce1dbee6bf38",
|
||||
"url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/fbc500cbcb64d3ea7469f019ab7aa717b320ff3f",
|
||||
"reference": "fbc500cbcb64d3ea7469f019ab7aa717b320ff3f",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -7882,7 +7883,7 @@
|
||||
"psr-7"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/psr-http-message-bridge/tree/v7.0.3"
|
||||
"source": "https://github.com/symfony/psr-http-message-bridge/tree/v7.0.6"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -7898,20 +7899,20 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-01-23T15:02:46+00:00"
|
||||
"time": "2024-03-28T09:20:36+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/routing",
|
||||
"version": "v7.0.5",
|
||||
"version": "v7.0.6",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/routing.git",
|
||||
"reference": "ba6bf07d43289c6a4b4591ddb75bc3bc5f069c19"
|
||||
"reference": "cded64e5bbf9f31786f1055fcc76718fdd77519c"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/routing/zipball/ba6bf07d43289c6a4b4591ddb75bc3bc5f069c19",
|
||||
"reference": "ba6bf07d43289c6a4b4591ddb75bc3bc5f069c19",
|
||||
"url": "https://api.github.com/repos/symfony/routing/zipball/cded64e5bbf9f31786f1055fcc76718fdd77519c",
|
||||
"reference": "cded64e5bbf9f31786f1055fcc76718fdd77519c",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -7963,7 +7964,7 @@
|
||||
"url"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/routing/tree/v7.0.5"
|
||||
"source": "https://github.com/symfony/routing/tree/v7.0.6"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -7979,20 +7980,20 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-02-27T12:34:35+00:00"
|
||||
"time": "2024-03-28T21:02:11+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/service-contracts",
|
||||
"version": "v3.4.1",
|
||||
"version": "v3.4.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/service-contracts.git",
|
||||
"reference": "fe07cbc8d837f60caf7018068e350cc5163681a0"
|
||||
"reference": "11bbf19a0fb7b36345861e85c5768844c552906e"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/service-contracts/zipball/fe07cbc8d837f60caf7018068e350cc5163681a0",
|
||||
"reference": "fe07cbc8d837f60caf7018068e350cc5163681a0",
|
||||
"url": "https://api.github.com/repos/symfony/service-contracts/zipball/11bbf19a0fb7b36345861e85c5768844c552906e",
|
||||
"reference": "11bbf19a0fb7b36345861e85c5768844c552906e",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -8045,7 +8046,7 @@
|
||||
"standards"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/service-contracts/tree/v3.4.1"
|
||||
"source": "https://github.com/symfony/service-contracts/tree/v3.4.2"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -8061,7 +8062,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-12-26T14:02:43+00:00"
|
||||
"time": "2023-12-19T21:51:00+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/string",
|
||||
@@ -8245,16 +8246,16 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/translation-contracts",
|
||||
"version": "v3.4.1",
|
||||
"version": "v3.4.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/translation-contracts.git",
|
||||
"reference": "06450585bf65e978026bda220cdebca3f867fde7"
|
||||
"reference": "43810bdb2ddb5400e5c5e778e27b210a0ca83b6b"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/translation-contracts/zipball/06450585bf65e978026bda220cdebca3f867fde7",
|
||||
"reference": "06450585bf65e978026bda220cdebca3f867fde7",
|
||||
"url": "https://api.github.com/repos/symfony/translation-contracts/zipball/43810bdb2ddb5400e5c5e778e27b210a0ca83b6b",
|
||||
"reference": "43810bdb2ddb5400e5c5e778e27b210a0ca83b6b",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -8303,7 +8304,7 @@
|
||||
"standards"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/translation-contracts/tree/v3.4.1"
|
||||
"source": "https://github.com/symfony/translation-contracts/tree/v3.4.2"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -8319,7 +8320,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-12-26T14:02:43+00:00"
|
||||
"time": "2024-01-23T14:51:35+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/uid",
|
||||
@@ -8397,16 +8398,16 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/var-dumper",
|
||||
"version": "v7.0.4",
|
||||
"version": "v7.0.6",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/var-dumper.git",
|
||||
"reference": "e03ad7c1535e623edbb94c22cc42353e488c6670"
|
||||
"reference": "66d13dc207d5dab6b4f4c2b5460efe1bea29dbfb"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/var-dumper/zipball/e03ad7c1535e623edbb94c22cc42353e488c6670",
|
||||
"reference": "e03ad7c1535e623edbb94c22cc42353e488c6670",
|
||||
"url": "https://api.github.com/repos/symfony/var-dumper/zipball/66d13dc207d5dab6b4f4c2b5460efe1bea29dbfb",
|
||||
"reference": "66d13dc207d5dab6b4f4c2b5460efe1bea29dbfb",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -8460,7 +8461,7 @@
|
||||
"dump"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/var-dumper/tree/v7.0.4"
|
||||
"source": "https://github.com/symfony/var-dumper/tree/v7.0.6"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -8476,26 +8477,28 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-02-15T11:33:06+00:00"
|
||||
"time": "2024-03-19T11:57:22+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/var-exporter",
|
||||
"version": "v7.0.4",
|
||||
"version": "v7.0.6",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/var-exporter.git",
|
||||
"reference": "dfb0acb6803eb714f05d97dd4c5abe6d5fa9fe41"
|
||||
"reference": "c74c568d2a15a1d407cf40d61ea82bc2d521e27b"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/var-exporter/zipball/dfb0acb6803eb714f05d97dd4c5abe6d5fa9fe41",
|
||||
"reference": "dfb0acb6803eb714f05d97dd4c5abe6d5fa9fe41",
|
||||
"url": "https://api.github.com/repos/symfony/var-exporter/zipball/c74c568d2a15a1d407cf40d61ea82bc2d521e27b",
|
||||
"reference": "c74c568d2a15a1d407cf40d61ea82bc2d521e27b",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=8.2"
|
||||
},
|
||||
"require-dev": {
|
||||
"symfony/property-access": "^6.4|^7.0",
|
||||
"symfony/serializer": "^6.4|^7.0",
|
||||
"symfony/var-dumper": "^6.4|^7.0"
|
||||
},
|
||||
"type": "library",
|
||||
@@ -8534,7 +8537,7 @@
|
||||
"serialize"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/var-exporter/tree/v7.0.4"
|
||||
"source": "https://github.com/symfony/var-exporter/tree/v7.0.6"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -8550,7 +8553,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-02-26T10:35:24+00:00"
|
||||
"time": "2024-03-20T21:25:22+00:00"
|
||||
},
|
||||
{
|
||||
"name": "tijsverkoyen/css-to-inline-styles",
|
||||
@@ -8897,16 +8900,16 @@
|
||||
"packages-dev": [
|
||||
{
|
||||
"name": "barryvdh/laravel-debugbar",
|
||||
"version": "v3.13.0",
|
||||
"version": "v3.13.3",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/barryvdh/laravel-debugbar.git",
|
||||
"reference": "354a42f3e0b083cdd6f9da5a9d1c0c63b074547a"
|
||||
"reference": "241e9bddb04ab42a04a5fe8b2b9654374c864229"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/354a42f3e0b083cdd6f9da5a9d1c0c63b074547a",
|
||||
"reference": "354a42f3e0b083cdd6f9da5a9d1c0c63b074547a",
|
||||
"url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/241e9bddb04ab42a04a5fe8b2b9654374c864229",
|
||||
"reference": "241e9bddb04ab42a04a5fe8b2b9654374c864229",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -8965,7 +8968,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/barryvdh/laravel-debugbar/issues",
|
||||
"source": "https://github.com/barryvdh/laravel-debugbar/tree/v3.13.0"
|
||||
"source": "https://github.com/barryvdh/laravel-debugbar/tree/v3.13.3"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -8977,7 +8980,7 @@
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2024-04-01T16:39:30+00:00"
|
||||
"time": "2024-04-04T02:42:49+00:00"
|
||||
},
|
||||
{
|
||||
"name": "barryvdh/laravel-ide-helper",
|
||||
@@ -9606,16 +9609,16 @@
|
||||
},
|
||||
{
|
||||
"name": "maximebf/debugbar",
|
||||
"version": "v1.22.1",
|
||||
"version": "v1.22.3",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/maximebf/php-debugbar.git",
|
||||
"reference": "d7b6e1dc2dc85c01ed63ab158b00a7f46abdebcc"
|
||||
"reference": "7aa9a27a0b1158ed5ad4e7175e8d3aee9a818b96"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/d7b6e1dc2dc85c01ed63ab158b00a7f46abdebcc",
|
||||
"reference": "d7b6e1dc2dc85c01ed63ab158b00a7f46abdebcc",
|
||||
"url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/7aa9a27a0b1158ed5ad4e7175e8d3aee9a818b96",
|
||||
"reference": "7aa9a27a0b1158ed5ad4e7175e8d3aee9a818b96",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -9668,9 +9671,9 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/maximebf/php-debugbar/issues",
|
||||
"source": "https://github.com/maximebf/php-debugbar/tree/v1.22.1"
|
||||
"source": "https://github.com/maximebf/php-debugbar/tree/v1.22.3"
|
||||
},
|
||||
"time": "2024-04-01T10:44:20+00:00"
|
||||
"time": "2024-04-03T19:39:26+00:00"
|
||||
},
|
||||
{
|
||||
"name": "mockery/mockery",
|
||||
@@ -10235,16 +10238,16 @@
|
||||
},
|
||||
{
|
||||
"name": "phpstan/phpdoc-parser",
|
||||
"version": "1.27.0",
|
||||
"version": "1.28.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/phpstan/phpdoc-parser.git",
|
||||
"reference": "86e4d5a4b036f8f0be1464522f4c6b584c452757"
|
||||
"reference": "cd06d6b1a1b3c75b0b83f97577869fd85a3cd4fb"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/86e4d5a4b036f8f0be1464522f4c6b584c452757",
|
||||
"reference": "86e4d5a4b036f8f0be1464522f4c6b584c452757",
|
||||
"url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/cd06d6b1a1b3c75b0b83f97577869fd85a3cd4fb",
|
||||
"reference": "cd06d6b1a1b3c75b0b83f97577869fd85a3cd4fb",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -10276,9 +10279,9 @@
|
||||
"description": "PHPDoc parser with support for nullable, intersection and generic types",
|
||||
"support": {
|
||||
"issues": "https://github.com/phpstan/phpdoc-parser/issues",
|
||||
"source": "https://github.com/phpstan/phpdoc-parser/tree/1.27.0"
|
||||
"source": "https://github.com/phpstan/phpdoc-parser/tree/1.28.0"
|
||||
},
|
||||
"time": "2024-03-21T13:14:53+00:00"
|
||||
"time": "2024-04-03T18:51:33+00:00"
|
||||
},
|
||||
{
|
||||
"name": "phpstan/phpstan",
|
||||
@@ -10392,21 +10395,21 @@
|
||||
},
|
||||
{
|
||||
"name": "phpstan/phpstan-strict-rules",
|
||||
"version": "1.5.2",
|
||||
"version": "1.5.3",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/phpstan/phpstan-strict-rules.git",
|
||||
"reference": "7a50e9662ee9f3942e4aaaf3d603653f60282542"
|
||||
"reference": "568210bd301f94a0d4b1e5a0808c374c1b9cf11b"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/phpstan/phpstan-strict-rules/zipball/7a50e9662ee9f3942e4aaaf3d603653f60282542",
|
||||
"reference": "7a50e9662ee9f3942e4aaaf3d603653f60282542",
|
||||
"url": "https://api.github.com/repos/phpstan/phpstan-strict-rules/zipball/568210bd301f94a0d4b1e5a0808c374c1b9cf11b",
|
||||
"reference": "568210bd301f94a0d4b1e5a0808c374c1b9cf11b",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.2 || ^8.0",
|
||||
"phpstan/phpstan": "^1.10.34"
|
||||
"phpstan/phpstan": "^1.10.60"
|
||||
},
|
||||
"require-dev": {
|
||||
"nikic/php-parser": "^4.13.0",
|
||||
@@ -10435,9 +10438,9 @@
|
||||
"description": "Extra strict and opinionated rules for PHPStan",
|
||||
"support": {
|
||||
"issues": "https://github.com/phpstan/phpstan-strict-rules/issues",
|
||||
"source": "https://github.com/phpstan/phpstan-strict-rules/tree/1.5.2"
|
||||
"source": "https://github.com/phpstan/phpstan-strict-rules/tree/1.5.3"
|
||||
},
|
||||
"time": "2023-10-30T14:35:06+00:00"
|
||||
"time": "2024-04-06T07:43:25+00:00"
|
||||
},
|
||||
{
|
||||
"name": "phpunit/php-code-coverage",
|
||||
@@ -10762,16 +10765,16 @@
|
||||
},
|
||||
{
|
||||
"name": "phpunit/phpunit",
|
||||
"version": "10.5.16",
|
||||
"version": "10.5.17",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/sebastianbergmann/phpunit.git",
|
||||
"reference": "18f8d4a5f52b61fdd9370aaae3167daa0eeb69cd"
|
||||
"reference": "c1f736a473d21957ead7e94fcc029f571895abf5"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/18f8d4a5f52b61fdd9370aaae3167daa0eeb69cd",
|
||||
"reference": "18f8d4a5f52b61fdd9370aaae3167daa0eeb69cd",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c1f736a473d21957ead7e94fcc029f571895abf5",
|
||||
"reference": "c1f736a473d21957ead7e94fcc029f571895abf5",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -10843,7 +10846,7 @@
|
||||
"support": {
|
||||
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
|
||||
"security": "https://github.com/sebastianbergmann/phpunit/security/policy",
|
||||
"source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.16"
|
||||
"source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.17"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -10859,7 +10862,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-03-28T10:08:10+00:00"
|
||||
"time": "2024-04-05T04:39:01+00:00"
|
||||
},
|
||||
{
|
||||
"name": "sebastian/cli-parser",
|
||||
|
@@ -117,7 +117,7 @@ return [
|
||||
'expression_engine' => false,
|
||||
// see cer.php for exchange rates feature flag.
|
||||
],
|
||||
'version' => 'develop/2024-04-02',
|
||||
'version' => 'develop/2024-04-07',
|
||||
'api_version' => '2.0.13',
|
||||
'db_version' => 24,
|
||||
|
||||
|
302
config/translations.php
Normal file
302
config/translations.php
Normal file
@@ -0,0 +1,302 @@
|
||||
<?php
|
||||
/*
|
||||
* translations.php
|
||||
* Copyright (c) 2024 james@firefly-iii.org.
|
||||
*
|
||||
* This file is part of Firefly III (https://github.com/firefly-iii).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see https://www.gnu.org/licenses/.
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
return [
|
||||
'json' => [
|
||||
'v2' => [
|
||||
'config' => [
|
||||
'html_language',
|
||||
'date_time_fns',
|
||||
'month_and_day_fns',
|
||||
'does_not_exist', // on purpose
|
||||
'date_time_fns_short',
|
||||
],
|
||||
'form' => [
|
||||
'title',
|
||||
],
|
||||
'validation' => [
|
||||
'bad_type_source',
|
||||
'bad_type_destination',
|
||||
],
|
||||
'firefly' => [
|
||||
'spent',
|
||||
'administration_owner',
|
||||
'administration_you',
|
||||
'administration_role_owner',
|
||||
'administration_role_ro',
|
||||
'administration_role_mng_trx',
|
||||
'administration_role_mng_meta',
|
||||
'administration_role_mng_budgets',
|
||||
'administration_role_mng_piggies',
|
||||
'administration_role_mng_subscriptions',
|
||||
'administration_role_mng_rules',
|
||||
'administration_role_mng_recurring',
|
||||
'administration_role_mng_webhooks',
|
||||
'administration_role_mng_currencies',
|
||||
'administration_role_view_reports',
|
||||
'administration_role_full',
|
||||
'new_administration_created',
|
||||
'left',
|
||||
'paid',
|
||||
'errors_submission_v2',
|
||||
'unpaid',
|
||||
'default_group_title_name_plain',
|
||||
'subscriptions_in_group',
|
||||
'subscr_expected_x_times',
|
||||
'overspent',
|
||||
'money_flowing_in',
|
||||
'money_flowing_out',
|
||||
'category',
|
||||
'unknown_category_plain',
|
||||
'all_money',
|
||||
'unknown_source_plain',
|
||||
'unknown_dest_plain',
|
||||
'unknown_any_plain',
|
||||
'unknown_budget_plain',
|
||||
'stored_journal_js',
|
||||
'wait_loading_transaction',
|
||||
'nothing_found',
|
||||
'wait_loading_data',
|
||||
'Transfer',
|
||||
'Withdrawal',
|
||||
'Deposit',
|
||||
'expense_account',
|
||||
'revenue_account',
|
||||
'budget',
|
||||
'account_type_Asset account',
|
||||
'account_type_Expense account',
|
||||
'account_type_Revenue account',
|
||||
'account_type_Debt',
|
||||
'account_type_Loan',
|
||||
'account_type_Mortgage',
|
||||
'account_role_defaultAsset',
|
||||
'account_role_sharedAsset',
|
||||
'account_role_savingAsset',
|
||||
'account_role_ccAsset',
|
||||
'account_role_cashWalletAsset',
|
||||
],
|
||||
],
|
||||
'v1' => [
|
||||
'firefly' => [
|
||||
'welcome_back',
|
||||
'flash_error',
|
||||
'flash_warning',
|
||||
'flash_success',
|
||||
'close',
|
||||
'select_dest_account',
|
||||
'select_source_account',
|
||||
'split_transaction_title',
|
||||
'errors_submission',
|
||||
'split',
|
||||
'single_split',
|
||||
'transaction_stored_link',
|
||||
'webhook_stored_link',
|
||||
'webhook_updated_link',
|
||||
'transaction_updated_link',
|
||||
'transaction_new_stored_link',
|
||||
'transaction_journal_information',
|
||||
'submission_options',
|
||||
'apply_rules_checkbox',
|
||||
'fire_webhooks_checkbox',
|
||||
'no_budget_pointer',
|
||||
'no_bill_pointer',
|
||||
'source_account',
|
||||
'hidden_fields_preferences',
|
||||
'destination_account',
|
||||
'add_another_split',
|
||||
'submission',
|
||||
'stored_journal',
|
||||
'create_another',
|
||||
'reset_after',
|
||||
'submit',
|
||||
'amount',
|
||||
'date',
|
||||
'is_reconciled_fields_dropped',
|
||||
'tags',
|
||||
'no_budget',
|
||||
'no_bill',
|
||||
'category',
|
||||
'attachments',
|
||||
'notes',
|
||||
'external_url',
|
||||
'update_transaction',
|
||||
'after_update_create_another',
|
||||
'store_as_new',
|
||||
'reset_after',
|
||||
'split_title_help',
|
||||
'none_in_select_list',
|
||||
'no_piggy_bank',
|
||||
'description',
|
||||
'split_transaction_title_help',
|
||||
'destination_account_reconciliation',
|
||||
'source_account_reconciliation',
|
||||
'budget',
|
||||
'bill',
|
||||
'you_create_withdrawal',
|
||||
'you_create_transfer',
|
||||
'you_create_deposit',
|
||||
'edit',
|
||||
'delete',
|
||||
'name',
|
||||
'profile_whoops',
|
||||
'profile_something_wrong',
|
||||
'profile_try_again',
|
||||
'profile_oauth_clients',
|
||||
'profile_oauth_no_clients',
|
||||
'profile_oauth_clients_header',
|
||||
'profile_oauth_client_id',
|
||||
'profile_oauth_client_name',
|
||||
'profile_oauth_client_secret',
|
||||
'profile_oauth_create_new_client',
|
||||
'profile_oauth_create_client',
|
||||
'profile_oauth_edit_client',
|
||||
'profile_oauth_name_help',
|
||||
'profile_oauth_redirect_url',
|
||||
'profile_oauth_clients_external_auth',
|
||||
'profile_oauth_redirect_url_help',
|
||||
'profile_authorized_apps',
|
||||
'profile_authorized_clients',
|
||||
'profile_scopes',
|
||||
'profile_revoke',
|
||||
'profile_personal_access_tokens',
|
||||
'profile_personal_access_token',
|
||||
'profile_personal_access_token_explanation',
|
||||
'profile_no_personal_access_token',
|
||||
'profile_create_new_token',
|
||||
'profile_create_token',
|
||||
'profile_create',
|
||||
'profile_save_changes',
|
||||
'default_group_title_name',
|
||||
'piggy_bank',
|
||||
'profile_oauth_client_secret_title',
|
||||
'profile_oauth_client_secret_expl',
|
||||
'profile_oauth_confidential',
|
||||
'profile_oauth_confidential_help',
|
||||
'multi_account_warning_unknown',
|
||||
'multi_account_warning_withdrawal',
|
||||
'multi_account_warning_deposit',
|
||||
'multi_account_warning_transfer',
|
||||
'webhook_trigger_STORE_TRANSACTION',
|
||||
'webhook_trigger_UPDATE_TRANSACTION',
|
||||
'webhook_trigger_DESTROY_TRANSACTION',
|
||||
'webhook_response_TRANSACTIONS',
|
||||
'webhook_response_ACCOUNTS',
|
||||
'webhook_response_none_NONE',
|
||||
'webhook_delivery_JSON',
|
||||
'actions',
|
||||
'meta_data',
|
||||
'webhook_messages',
|
||||
'inactive',
|
||||
'no_webhook_messages',
|
||||
'inspect',
|
||||
'edit',
|
||||
'delete',
|
||||
'create_new_webhook',
|
||||
'webhooks',
|
||||
'webhook_trigger_form_help',
|
||||
'webhook_response_form_help',
|
||||
'webhook_delivery_form_help',
|
||||
'webhook_active_form_help',
|
||||
'edit_webhook_js',
|
||||
'webhook_was_triggered',
|
||||
'view_message',
|
||||
'view_attempts',
|
||||
'message_content_title',
|
||||
'message_content_help',
|
||||
'attempt_content_title',
|
||||
'attempt_content_help',
|
||||
'no_attempts',
|
||||
'webhook_attempt_at',
|
||||
'logs',
|
||||
'response',
|
||||
'visit_webhook_url',
|
||||
'reset_webhook_secret',
|
||||
],
|
||||
'form' => [
|
||||
'url',
|
||||
'active',
|
||||
'interest_date',
|
||||
'title',
|
||||
'book_date',
|
||||
'process_date',
|
||||
'due_date',
|
||||
'foreign_amount',
|
||||
'payment_date',
|
||||
'invoice_date',
|
||||
'internal_reference',
|
||||
'webhook_response',
|
||||
'webhook_trigger',
|
||||
'webhook_delivery',
|
||||
],
|
||||
'list' => [
|
||||
'active',
|
||||
'trigger',
|
||||
'response',
|
||||
'delivery',
|
||||
'url',
|
||||
'secret',
|
||||
],
|
||||
'config' => [
|
||||
'html_language',
|
||||
'date_time_fns',
|
||||
],
|
||||
],
|
||||
],
|
||||
|
||||
// TODO duplicate with firefly.php
|
||||
'languages' => [
|
||||
// currently enabled languages
|
||||
'bg_BG',
|
||||
'cs_CZ',
|
||||
'da_DK',
|
||||
'de_DE',
|
||||
'el_GR',
|
||||
'en_GB',
|
||||
'en_US',
|
||||
'es_ES',
|
||||
'ca_ES',
|
||||
'fi_FI',
|
||||
'fr_FR',
|
||||
'hu_HU',
|
||||
'id_ID',
|
||||
'it_IT',
|
||||
'ja_JP',
|
||||
'ko_KR',
|
||||
'nb_NO',
|
||||
'nn_NO',
|
||||
'nl_NL',
|
||||
'pl_PL',
|
||||
'pt_BR',
|
||||
'pt_PT',
|
||||
'ro_RO',
|
||||
'ru_RU',
|
||||
'sk_SK',
|
||||
'sl_SI',
|
||||
'sv_SE',
|
||||
'tr_TR',
|
||||
'uk_UA',
|
||||
'vi_VN',
|
||||
'zh_TW',
|
||||
'zh_CN',
|
||||
],
|
||||
];
|
@@ -39,7 +39,7 @@ return [
|
||||
| the usual Laravel view path has already been registered for you.
|
||||
|
|
||||
*/
|
||||
|
||||
'layout' => env('FIREFLY_III_LAYOUT', 'v1'),
|
||||
'paths' => $paths,
|
||||
|
||||
/*
|
||||
|
@@ -21,7 +21,6 @@
|
||||
*/
|
||||
declare(strict_types=1);
|
||||
|
||||
use Doctrine\DBAL\Schema\Exception\ColumnDoesNotExist;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\QueryException;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
@@ -46,7 +45,7 @@ class ExpandTransactionsTable extends Migration
|
||||
$table->dropColumn('identifier');
|
||||
}
|
||||
);
|
||||
} catch (ColumnDoesNotExist|QueryException $e) {
|
||||
} catch (QueryException $e) {
|
||||
app('log')->error(sprintf('Could not drop column "identifier": %s', $e->getMessage()));
|
||||
app('log')->error('If the column does not exist, this is not an problem. Otherwise, please open a GitHub discussion.');
|
||||
}
|
||||
|
@@ -21,7 +21,6 @@
|
||||
*/
|
||||
declare(strict_types=1);
|
||||
|
||||
use Doctrine\DBAL\Schema\Exception\ColumnDoesNotExist;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\QueryException;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
@@ -74,7 +73,7 @@ class ChangesForV431 extends Migration
|
||||
$table->renameColumn('start_date', 'startdate');
|
||||
}
|
||||
);
|
||||
} catch (ColumnDoesNotExist|QueryException $e) {
|
||||
} catch (QueryException $e) {
|
||||
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
|
||||
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
|
||||
}
|
||||
@@ -89,7 +88,7 @@ class ChangesForV431 extends Migration
|
||||
$table->dropColumn('end_date');
|
||||
}
|
||||
);
|
||||
} catch (ColumnDoesNotExist|QueryException $e) {
|
||||
} catch (QueryException $e) {
|
||||
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
|
||||
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
|
||||
}
|
||||
@@ -103,7 +102,7 @@ class ChangesForV431 extends Migration
|
||||
$table->dropColumn('decimal_places');
|
||||
}
|
||||
);
|
||||
} catch (ColumnDoesNotExist|QueryException $e) {
|
||||
} catch (QueryException $e) {
|
||||
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
|
||||
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
|
||||
}
|
||||
@@ -141,7 +140,7 @@ class ChangesForV431 extends Migration
|
||||
$table->renameColumn('startdate', 'start_date');
|
||||
}
|
||||
);
|
||||
} catch (ColumnDoesNotExist|QueryException $e) {
|
||||
} catch (QueryException $e) {
|
||||
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
|
||||
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
|
||||
}
|
||||
@@ -171,7 +170,7 @@ class ChangesForV431 extends Migration
|
||||
$table->dropColumn('repeats');
|
||||
}
|
||||
);
|
||||
} catch (ColumnDoesNotExist|QueryException $e) {
|
||||
} catch (QueryException $e) {
|
||||
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
|
||||
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
|
||||
}
|
||||
@@ -184,7 +183,7 @@ class ChangesForV431 extends Migration
|
||||
$table->dropColumn('repeat_freq');
|
||||
}
|
||||
);
|
||||
} catch (ColumnDoesNotExist|QueryException $e) {
|
||||
} catch (QueryException $e) {
|
||||
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
|
||||
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
|
||||
}
|
||||
|
@@ -21,7 +21,6 @@
|
||||
*/
|
||||
declare(strict_types=1);
|
||||
|
||||
use Doctrine\DBAL\Schema\Exception\ColumnDoesNotExist;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\QueryException;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
@@ -53,7 +52,7 @@ class ChangesForV440 extends Migration
|
||||
}
|
||||
}
|
||||
);
|
||||
} catch (ColumnDoesNotExist|QueryException $e) {
|
||||
} catch (QueryException $e) {
|
||||
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
|
||||
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
|
||||
}
|
||||
|
@@ -21,7 +21,6 @@
|
||||
*/
|
||||
declare(strict_types=1);
|
||||
|
||||
use Doctrine\DBAL\Schema\Exception\ColumnDoesNotExist;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\QueryException;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
@@ -47,7 +46,7 @@ class ChangesForV450 extends Migration
|
||||
$table->dropColumn('foreign_amount');
|
||||
}
|
||||
);
|
||||
} catch (ColumnDoesNotExist|QueryException $e) {
|
||||
} catch (QueryException $e) {
|
||||
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
|
||||
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
|
||||
}
|
||||
@@ -75,7 +74,7 @@ class ChangesForV450 extends Migration
|
||||
$table->dropColumn('foreign_currency_id');
|
||||
}
|
||||
);
|
||||
} catch (ColumnDoesNotExist|QueryException $e) {
|
||||
} catch (QueryException $e) {
|
||||
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
|
||||
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
|
||||
}
|
||||
|
@@ -21,7 +21,6 @@
|
||||
*/
|
||||
declare(strict_types=1);
|
||||
|
||||
use Doctrine\DBAL\Schema\Exception\ColumnDoesNotExist;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\QueryException;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
@@ -47,7 +46,7 @@ class ChangesForV470a extends Migration
|
||||
$table->dropColumn('reconciled');
|
||||
}
|
||||
);
|
||||
} catch (ColumnDoesNotExist|QueryException $e) {
|
||||
} catch (QueryException $e) {
|
||||
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
|
||||
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
|
||||
}
|
||||
|
@@ -22,7 +22,6 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use Doctrine\DBAL\Schema\Exception\ColumnDoesNotExist;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\QueryException;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
@@ -61,7 +60,7 @@ class ChangesForV472 extends Migration
|
||||
$table->dropColumn('order');
|
||||
}
|
||||
);
|
||||
} catch (ColumnDoesNotExist|QueryException $e) {
|
||||
} catch (QueryException $e) {
|
||||
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
|
||||
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
|
||||
}
|
||||
@@ -83,7 +82,7 @@ class ChangesForV472 extends Migration
|
||||
$table->dropColumn('notes');
|
||||
}
|
||||
);
|
||||
} catch (ColumnDoesNotExist|QueryException $e) {
|
||||
} catch (QueryException $e) {
|
||||
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
|
||||
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
|
||||
}
|
||||
|
@@ -22,7 +22,6 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use Doctrine\DBAL\Schema\Exception\ColumnDoesNotExist;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\QueryException;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
@@ -52,7 +51,7 @@ class ChangesForV473 extends Migration
|
||||
$table->dropColumn('transaction_currency_id');
|
||||
}
|
||||
);
|
||||
} catch (ColumnDoesNotExist|QueryException $e) {
|
||||
} catch (QueryException $e) {
|
||||
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
|
||||
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
|
||||
}
|
||||
@@ -66,7 +65,7 @@ class ChangesForV473 extends Migration
|
||||
$table->dropColumn('strict');
|
||||
}
|
||||
);
|
||||
} catch (ColumnDoesNotExist|QueryException $e) {
|
||||
} catch (QueryException $e) {
|
||||
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
|
||||
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
|
||||
}
|
||||
|
@@ -22,7 +22,6 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use Doctrine\DBAL\Schema\Exception\ColumnDoesNotExist;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\QueryException;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
@@ -52,7 +51,7 @@ class ChangesForV477 extends Migration
|
||||
$table->dropColumn(['transaction_currency_id']);
|
||||
}
|
||||
);
|
||||
} catch (ColumnDoesNotExist|QueryException $e) {
|
||||
} catch (QueryException $e) {
|
||||
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
|
||||
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
|
||||
}
|
||||
|
@@ -22,7 +22,6 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use Doctrine\DBAL\Schema\Exception\ColumnDoesNotExist;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\QueryException;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
@@ -47,7 +46,7 @@ class ChangesForV479 extends Migration
|
||||
$table->dropColumn(['enabled']);
|
||||
}
|
||||
);
|
||||
} catch (ColumnDoesNotExist|QueryException $e) {
|
||||
} catch (QueryException $e) {
|
||||
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
|
||||
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
|
||||
}
|
||||
|
@@ -21,7 +21,6 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use Doctrine\DBAL\Schema\Exception\ColumnDoesNotExist;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\QueryException;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
@@ -47,7 +46,7 @@ class FixLdapConfiguration extends Migration
|
||||
$table->dropColumn(['objectguid']);
|
||||
}
|
||||
);
|
||||
} catch (ColumnDoesNotExist|QueryException $e) {
|
||||
} catch (QueryException $e) {
|
||||
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
|
||||
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
|
||||
}
|
||||
|
@@ -21,7 +21,6 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use Doctrine\DBAL\Schema\Exception\ColumnDoesNotExist;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\QueryException;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
@@ -57,7 +56,7 @@ class ChangesForV480 extends Migration
|
||||
|
||||
try {
|
||||
$table->dropColumn('transaction_group_id');
|
||||
} catch (ColumnDoesNotExist|QueryException $e) {
|
||||
} catch (QueryException $e) {
|
||||
app('log')->error(sprintf('Could not drop column: %s', $e->getMessage()));
|
||||
app('log')->error('If the column does not exist, this is not an problem. Otherwise, please open a GitHub discussion.');
|
||||
}
|
||||
@@ -77,7 +76,7 @@ class ChangesForV480 extends Migration
|
||||
static function (Blueprint $table): void {
|
||||
try {
|
||||
$table->dropColumn('stop_processing');
|
||||
} catch (ColumnDoesNotExist|QueryException $e) {
|
||||
} catch (QueryException $e) {
|
||||
app('log')->error(sprintf('Could not drop column: %s', $e->getMessage()));
|
||||
app('log')->error('If the column does not exist, this is not an problem. Otherwise, please open a GitHub discussion.');
|
||||
}
|
||||
@@ -97,7 +96,7 @@ class ChangesForV480 extends Migration
|
||||
static function (Blueprint $table): void {
|
||||
try {
|
||||
$table->dropColumn('mfa_secret');
|
||||
} catch (ColumnDoesNotExist|QueryException $e) {
|
||||
} catch (QueryException $e) {
|
||||
app('log')->error(sprintf('Could not drop column: %s', $e->getMessage()));
|
||||
app('log')->error('If the column does not exist, this is not an problem. Otherwise, please open a GitHub discussion.');
|
||||
}
|
||||
|
@@ -22,7 +22,6 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use Doctrine\DBAL\Schema\Exception\ColumnDoesNotExist;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\QueryException;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
@@ -48,7 +47,7 @@ class ChangesForV530a extends Migration
|
||||
$table->dropColumn('order');
|
||||
}
|
||||
);
|
||||
} catch (ColumnDoesNotExist|QueryException $e) {
|
||||
} catch (QueryException $e) {
|
||||
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
|
||||
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
|
||||
}
|
||||
|
@@ -22,7 +22,6 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use Doctrine\DBAL\Schema\Exception\ColumnDoesNotExist;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\QueryException;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
@@ -48,7 +47,7 @@ class ChangesForV540 extends Migration
|
||||
$table->dropColumn('provider');
|
||||
}
|
||||
);
|
||||
} catch (ColumnDoesNotExist|QueryException $e) {
|
||||
} catch (QueryException $e) {
|
||||
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
|
||||
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
|
||||
}
|
||||
@@ -62,7 +61,7 @@ class ChangesForV540 extends Migration
|
||||
$table->dropColumn('order');
|
||||
}
|
||||
);
|
||||
} catch (ColumnDoesNotExist|QueryException $e) {
|
||||
} catch (QueryException $e) {
|
||||
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
|
||||
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
|
||||
}
|
||||
@@ -76,7 +75,7 @@ class ChangesForV540 extends Migration
|
||||
$table->dropColumn('end_date');
|
||||
}
|
||||
);
|
||||
} catch (ColumnDoesNotExist|QueryException $e) {
|
||||
} catch (QueryException $e) {
|
||||
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
|
||||
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
|
||||
}
|
||||
@@ -89,7 +88,7 @@ class ChangesForV540 extends Migration
|
||||
$table->dropColumn('extension_date');
|
||||
}
|
||||
);
|
||||
} catch (ColumnDoesNotExist|QueryException $e) {
|
||||
} catch (QueryException $e) {
|
||||
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
|
||||
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
|
||||
}
|
||||
|
@@ -22,7 +22,6 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use Doctrine\DBAL\Schema\Exception\ColumnDoesNotExist;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\QueryException;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
@@ -76,7 +75,7 @@ class ChangesForV550 extends Migration
|
||||
$table->dropColumn('budget_limit_id');
|
||||
}
|
||||
);
|
||||
} catch (ColumnDoesNotExist|QueryException $e) {
|
||||
} catch (QueryException $e) {
|
||||
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
|
||||
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
|
||||
}
|
||||
@@ -95,7 +94,7 @@ class ChangesForV550 extends Migration
|
||||
$table->dropColumn('period');
|
||||
}
|
||||
);
|
||||
} catch (ColumnDoesNotExist|QueryException $e) {
|
||||
} catch (QueryException $e) {
|
||||
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
|
||||
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
|
||||
}
|
||||
@@ -108,7 +107,7 @@ class ChangesForV550 extends Migration
|
||||
$table->dropColumn('generated');
|
||||
}
|
||||
);
|
||||
} catch (ColumnDoesNotExist|QueryException $e) {
|
||||
} catch (QueryException $e) {
|
||||
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
|
||||
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
|
||||
}
|
||||
|
@@ -22,7 +22,6 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use Doctrine\DBAL\Schema\Exception\ColumnDoesNotExist;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\QueryException;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
@@ -51,7 +50,7 @@ class ChangesForV550b2 extends Migration
|
||||
}
|
||||
}
|
||||
);
|
||||
} catch (ColumnDoesNotExist|QueryException $e) {
|
||||
} catch (QueryException $e) {
|
||||
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
|
||||
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
|
||||
}
|
||||
|
@@ -22,7 +22,6 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use Doctrine\DBAL\Schema\Exception\ColumnDoesNotExist;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\QueryException;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
@@ -43,7 +42,7 @@ class AddLdapColumnsToUsersTable extends Migration
|
||||
$table->dropColumn(['domain']);
|
||||
}
|
||||
);
|
||||
} catch (ColumnDoesNotExist|QueryException $e) {
|
||||
} catch (QueryException $e) {
|
||||
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
|
||||
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
|
||||
}
|
||||
|
@@ -22,7 +22,6 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use Doctrine\DBAL\Schema\Exception\ColumnDoesNotExist;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\QueryException;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
@@ -72,7 +71,7 @@ class UserGroups extends Migration
|
||||
}
|
||||
}
|
||||
);
|
||||
} catch (ColumnDoesNotExist|QueryException $e) {
|
||||
} catch (QueryException $e) {
|
||||
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
|
||||
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
|
||||
}
|
||||
@@ -92,7 +91,7 @@ class UserGroups extends Migration
|
||||
}
|
||||
}
|
||||
);
|
||||
} catch (ColumnDoesNotExist|QueryException $e) {
|
||||
} catch (QueryException $e) {
|
||||
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
|
||||
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
|
||||
}
|
||||
|
@@ -22,7 +22,6 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use Doctrine\DBAL\Schema\Exception\ColumnDoesNotExist;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\QueryException;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
@@ -69,7 +68,7 @@ return new class () extends Migration {
|
||||
}
|
||||
}
|
||||
);
|
||||
} catch (ColumnDoesNotExist|QueryException $e) {
|
||||
} catch (QueryException $e) {
|
||||
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
|
||||
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
|
||||
}
|
||||
|
@@ -22,7 +22,6 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use Doctrine\DBAL\Schema\Exception\ColumnDoesNotExist;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\QueryException;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
@@ -71,7 +70,7 @@ return new class () extends Migration {
|
||||
}
|
||||
}
|
||||
);
|
||||
} catch (ColumnDoesNotExist|QueryException $e) {
|
||||
} catch (QueryException $e) {
|
||||
app('log')->error(sprintf('Could not execute query: %s', $e->getMessage()));
|
||||
app('log')->error('If the column or index already exists (see error), this is not an problem. Otherwise, please open a GitHub discussion.');
|
||||
}
|
||||
|
9013
package-lock.json
generated
9013
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
41
package.json
41
package.json
@@ -1,40 +1,9 @@
|
||||
{
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
"build": "vite build",
|
||||
"postinstall": "patch-package"
|
||||
"postinstall": "patch-package --error-on-fail"
|
||||
},
|
||||
"devDependencies": {
|
||||
"axios": "^1.6.8",
|
||||
"laravel-vite-plugin": "^0.8.1",
|
||||
"patch-package": "^8.0.0",
|
||||
"sass": "^1.72.0",
|
||||
"vite": "^4.5.3",
|
||||
"vite-plugin-manifest-sri": "^0.1.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@ag-grid-community/client-side-row-model": "^31.0.3",
|
||||
"@ag-grid-community/core": "^31.0.3",
|
||||
"@ag-grid-community/infinite-row-model": "^31.0.3",
|
||||
"@ag-grid-community/styles": "^31.0.3",
|
||||
"@fortawesome/fontawesome-free": "^6.4.0",
|
||||
"@popperjs/core": "^2.11.8",
|
||||
"admin-lte": "^4.0.0-alpha3",
|
||||
"alpinejs": "^3.13.7",
|
||||
"bootstrap": "^5.3.0",
|
||||
"bootstrap5-autocomplete": "^1.1.22",
|
||||
"bootstrap5-tags": "^1.6.15",
|
||||
"chart.js": "^4.4.0",
|
||||
"chartjs-adapter-date-fns": "^3.0.0",
|
||||
"chartjs-chart-sankey": "^0.12.0",
|
||||
"date-fns": "^3.6.0",
|
||||
"i18next": "^23.10.1",
|
||||
"i18next-chained-backend": "^4.6.2",
|
||||
"i18next-http-backend": "^2.4.2",
|
||||
"i18next-localstorage-backend": "^4.2.0",
|
||||
"leaflet": "^1.9.4",
|
||||
"store": "^2.0.12"
|
||||
}
|
||||
"workspaces": [
|
||||
"resources/assets/v1",
|
||||
"resources/assets/v2"
|
||||
]
|
||||
}
|
||||
|
0
public/v1/js/.gitkeep
Normal file
0
public/v1/js/.gitkeep
Normal file
@@ -3,14 +3,34 @@
|
||||
"html_language": "bg",
|
||||
"date_time_fns": "MMMM do, yyyy @ HH:mm:ss",
|
||||
"month_and_day_fns": "d MMMM y",
|
||||
"does_not_exist": "(config.does_not_exist)",
|
||||
"date_time_fns_short": "MMMM do, yyyy @ HH:mm"
|
||||
},
|
||||
"form": {
|
||||
"title": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435"
|
||||
},
|
||||
"validation": {
|
||||
"bad_type_source": "Firefly III can't determine the transaction type based on this source account.",
|
||||
"bad_type_destination": "Firefly III can't determine the transaction type based on this destination account."
|
||||
},
|
||||
"firefly": {
|
||||
"spent": "\u041f\u043e\u0445\u0430\u0440\u0447\u0435\u043d\u0438",
|
||||
"administration_owner": "Administration owner: {{email}}",
|
||||
"administration_you": "Your role: {{role}}",
|
||||
"administration_role_owner": "Owner",
|
||||
"administration_role_ro": "Read-only",
|
||||
"administration_role_mng_trx": "Manage transactions",
|
||||
"administration_role_mng_meta": "Manage classification and meta-data",
|
||||
"administration_role_mng_budgets": "Manage budgets",
|
||||
"administration_role_mng_piggies": "Manage piggy banks",
|
||||
"administration_role_mng_subscriptions": "Manage subscriptions",
|
||||
"administration_role_mng_rules": "Manage rules",
|
||||
"administration_role_mng_recurring": "Manage recurring transactions ",
|
||||
"administration_role_mng_webhooks": "Manage webhooks",
|
||||
"administration_role_mng_currencies": "Manage currencies",
|
||||
"administration_role_view_reports": "View reports",
|
||||
"administration_role_full": "Full access",
|
||||
"new_administration_created": "New financial administration \"{{title}}\" has been created",
|
||||
"left": "\u041e\u0441\u0442\u0430\u043d\u0430\u043b\u0438",
|
||||
"paid": "\u041f\u043b\u0430\u0442\u0435\u043d\u0438",
|
||||
"errors_submission_v2": "There was something wrong with your submission. Please check out the errors below: {{errorMessage}}",
|
||||
|
@@ -3,14 +3,34 @@
|
||||
"html_language": "bg",
|
||||
"date_time_fns": "MMMM do, yyyy @ HH:mm:ss",
|
||||
"month_and_day_fns": "d MMMM y",
|
||||
"does_not_exist": "(config.does_not_exist)",
|
||||
"date_time_fns_short": "MMMM do, yyyy @ HH:mm"
|
||||
},
|
||||
"form": {
|
||||
"title": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435"
|
||||
},
|
||||
"validation": {
|
||||
"bad_type_source": "Firefly III can't determine the transaction type based on this source account.",
|
||||
"bad_type_destination": "Firefly III can't determine the transaction type based on this destination account."
|
||||
},
|
||||
"firefly": {
|
||||
"spent": "\u041f\u043e\u0445\u0430\u0440\u0447\u0435\u043d\u0438",
|
||||
"administration_owner": "Administration owner: {{email}}",
|
||||
"administration_you": "Your role: {{role}}",
|
||||
"administration_role_owner": "Owner",
|
||||
"administration_role_ro": "Read-only",
|
||||
"administration_role_mng_trx": "Manage transactions",
|
||||
"administration_role_mng_meta": "Manage classification and meta-data",
|
||||
"administration_role_mng_budgets": "Manage budgets",
|
||||
"administration_role_mng_piggies": "Manage piggy banks",
|
||||
"administration_role_mng_subscriptions": "Manage subscriptions",
|
||||
"administration_role_mng_rules": "Manage rules",
|
||||
"administration_role_mng_recurring": "Manage recurring transactions ",
|
||||
"administration_role_mng_webhooks": "Manage webhooks",
|
||||
"administration_role_mng_currencies": "Manage currencies",
|
||||
"administration_role_view_reports": "View reports",
|
||||
"administration_role_full": "Full access",
|
||||
"new_administration_created": "New financial administration \"{{title}}\" has been created",
|
||||
"left": "\u041e\u0441\u0442\u0430\u043d\u0430\u043b\u0438",
|
||||
"paid": "\u041f\u043b\u0430\u0442\u0435\u043d\u0438",
|
||||
"errors_submission_v2": "There was something wrong with your submission. Please check out the errors below: {{errorMessage}}",
|
||||
|
@@ -3,14 +3,34 @@
|
||||
"html_language": "ca",
|
||||
"date_time_fns": "D [de\/d'] MMMM yyyy [a les] HH:mm:ss",
|
||||
"month_and_day_fns": "d MMMM y",
|
||||
"does_not_exist": "(config.does_not_exist)",
|
||||
"date_time_fns_short": "MMMM do, yyyy @ HH:mm"
|
||||
},
|
||||
"form": {
|
||||
"title": "T\u00edtol"
|
||||
},
|
||||
"validation": {
|
||||
"bad_type_source": "Firefly III no pot determinar el tipus de transacci\u00f3 a partir d'aquest compte font.",
|
||||
"bad_type_destination": "Firefly III no pot determinar el tipus de transacci\u00f3 a partir d'aquest compte de dest\u00ed."
|
||||
},
|
||||
"firefly": {
|
||||
"spent": "Gastat",
|
||||
"administration_owner": "Administration owner: {{email}}",
|
||||
"administration_you": "Your role: {{role}}",
|
||||
"administration_role_owner": "Owner",
|
||||
"administration_role_ro": "Read-only",
|
||||
"administration_role_mng_trx": "Manage transactions",
|
||||
"administration_role_mng_meta": "Manage classification and meta-data",
|
||||
"administration_role_mng_budgets": "Manage budgets",
|
||||
"administration_role_mng_piggies": "Manage piggy banks",
|
||||
"administration_role_mng_subscriptions": "Manage subscriptions",
|
||||
"administration_role_mng_rules": "Manage rules",
|
||||
"administration_role_mng_recurring": "Manage recurring transactions ",
|
||||
"administration_role_mng_webhooks": "Manage webhooks",
|
||||
"administration_role_mng_currencies": "Manage currencies",
|
||||
"administration_role_view_reports": "View reports",
|
||||
"administration_role_full": "Full access",
|
||||
"new_administration_created": "New financial administration \"{{title}}\" has been created",
|
||||
"left": "Queda",
|
||||
"paid": "Pagat",
|
||||
"errors_submission_v2": "Hi ha hagut un error amb el teu enviament. Per favor, comprova els seg\u00fcents errors: {{errorMessage}}",
|
||||
|
@@ -3,14 +3,34 @@
|
||||
"html_language": "ca",
|
||||
"date_time_fns": "D [de\/d'] MMMM yyyy [a les] HH:mm:ss",
|
||||
"month_and_day_fns": "d MMMM y",
|
||||
"does_not_exist": "(config.does_not_exist)",
|
||||
"date_time_fns_short": "MMMM do, yyyy @ HH:mm"
|
||||
},
|
||||
"form": {
|
||||
"title": "T\u00edtol"
|
||||
},
|
||||
"validation": {
|
||||
"bad_type_source": "Firefly III no pot determinar el tipus de transacci\u00f3 a partir d'aquest compte font.",
|
||||
"bad_type_destination": "Firefly III no pot determinar el tipus de transacci\u00f3 a partir d'aquest compte de dest\u00ed."
|
||||
},
|
||||
"firefly": {
|
||||
"spent": "Gastat",
|
||||
"administration_owner": "Administration owner: {{email}}",
|
||||
"administration_you": "Your role: {{role}}",
|
||||
"administration_role_owner": "Owner",
|
||||
"administration_role_ro": "Read-only",
|
||||
"administration_role_mng_trx": "Manage transactions",
|
||||
"administration_role_mng_meta": "Manage classification and meta-data",
|
||||
"administration_role_mng_budgets": "Manage budgets",
|
||||
"administration_role_mng_piggies": "Manage piggy banks",
|
||||
"administration_role_mng_subscriptions": "Manage subscriptions",
|
||||
"administration_role_mng_rules": "Manage rules",
|
||||
"administration_role_mng_recurring": "Manage recurring transactions ",
|
||||
"administration_role_mng_webhooks": "Manage webhooks",
|
||||
"administration_role_mng_currencies": "Manage currencies",
|
||||
"administration_role_view_reports": "View reports",
|
||||
"administration_role_full": "Full access",
|
||||
"new_administration_created": "New financial administration \"{{title}}\" has been created",
|
||||
"left": "Queda",
|
||||
"paid": "Pagat",
|
||||
"errors_submission_v2": "Hi ha hagut un error amb el teu enviament. Per favor, comprova els seg\u00fcents errors: {{errorMessage}}",
|
||||
|
@@ -3,14 +3,34 @@
|
||||
"html_language": "cs",
|
||||
"date_time_fns": "MMMM do, yyyy @ HH:mm:ss",
|
||||
"month_and_day_fns": "d MMMM, y",
|
||||
"does_not_exist": "(config.does_not_exist)",
|
||||
"date_time_fns_short": "MMMM do, yyyy @ HH:mm"
|
||||
},
|
||||
"form": {
|
||||
"title": "N\u00e1zev"
|
||||
},
|
||||
"validation": {
|
||||
"bad_type_source": "Firefly III can't determine the transaction type based on this source account.",
|
||||
"bad_type_destination": "Firefly III can't determine the transaction type based on this destination account."
|
||||
},
|
||||
"firefly": {
|
||||
"spent": "Utraceno",
|
||||
"administration_owner": "Administration owner: {{email}}",
|
||||
"administration_you": "Your role: {{role}}",
|
||||
"administration_role_owner": "Owner",
|
||||
"administration_role_ro": "Read-only",
|
||||
"administration_role_mng_trx": "Manage transactions",
|
||||
"administration_role_mng_meta": "Manage classification and meta-data",
|
||||
"administration_role_mng_budgets": "Manage budgets",
|
||||
"administration_role_mng_piggies": "Manage piggy banks",
|
||||
"administration_role_mng_subscriptions": "Manage subscriptions",
|
||||
"administration_role_mng_rules": "Manage rules",
|
||||
"administration_role_mng_recurring": "Manage recurring transactions ",
|
||||
"administration_role_mng_webhooks": "Manage webhooks",
|
||||
"administration_role_mng_currencies": "Manage currencies",
|
||||
"administration_role_view_reports": "View reports",
|
||||
"administration_role_full": "Full access",
|
||||
"new_administration_created": "New financial administration \"{{title}}\" has been created",
|
||||
"left": "Zb\u00fdv\u00e1",
|
||||
"paid": "Zaplaceno",
|
||||
"errors_submission_v2": "There was something wrong with your submission. Please check out the errors below: {{errorMessage}}",
|
||||
|
@@ -3,14 +3,34 @@
|
||||
"html_language": "cs",
|
||||
"date_time_fns": "MMMM do, yyyy @ HH:mm:ss",
|
||||
"month_and_day_fns": "d MMMM, y",
|
||||
"does_not_exist": "(config.does_not_exist)",
|
||||
"date_time_fns_short": "MMMM do, yyyy @ HH:mm"
|
||||
},
|
||||
"form": {
|
||||
"title": "N\u00e1zev"
|
||||
},
|
||||
"validation": {
|
||||
"bad_type_source": "Firefly III can't determine the transaction type based on this source account.",
|
||||
"bad_type_destination": "Firefly III can't determine the transaction type based on this destination account."
|
||||
},
|
||||
"firefly": {
|
||||
"spent": "Utraceno",
|
||||
"administration_owner": "Administration owner: {{email}}",
|
||||
"administration_you": "Your role: {{role}}",
|
||||
"administration_role_owner": "Owner",
|
||||
"administration_role_ro": "Read-only",
|
||||
"administration_role_mng_trx": "Manage transactions",
|
||||
"administration_role_mng_meta": "Manage classification and meta-data",
|
||||
"administration_role_mng_budgets": "Manage budgets",
|
||||
"administration_role_mng_piggies": "Manage piggy banks",
|
||||
"administration_role_mng_subscriptions": "Manage subscriptions",
|
||||
"administration_role_mng_rules": "Manage rules",
|
||||
"administration_role_mng_recurring": "Manage recurring transactions ",
|
||||
"administration_role_mng_webhooks": "Manage webhooks",
|
||||
"administration_role_mng_currencies": "Manage currencies",
|
||||
"administration_role_view_reports": "View reports",
|
||||
"administration_role_full": "Full access",
|
||||
"new_administration_created": "New financial administration \"{{title}}\" has been created",
|
||||
"left": "Zb\u00fdv\u00e1",
|
||||
"paid": "Zaplaceno",
|
||||
"errors_submission_v2": "There was something wrong with your submission. Please check out the errors below: {{errorMessage}}",
|
||||
|
@@ -3,14 +3,34 @@
|
||||
"html_language": "da",
|
||||
"date_time_fns": "MMMM g\u00f8r, yyyy @ HH:mm:ss",
|
||||
"month_and_day_fns": "d MMMM y",
|
||||
"does_not_exist": "(config.does_not_exist)",
|
||||
"date_time_fns_short": "MMMM do, yyyy @ HH:mm"
|
||||
},
|
||||
"form": {
|
||||
"title": "Titel"
|
||||
},
|
||||
"validation": {
|
||||
"bad_type_source": "Firefly III kan ikke bestemme transaktionstypen baseret p\u00e5 denne kildekonto.",
|
||||
"bad_type_destination": "Firefly III kan ikke bestemme transaktionstypen baseret p\u00e5 denne destinationskonto."
|
||||
},
|
||||
"firefly": {
|
||||
"spent": "Spent",
|
||||
"administration_owner": "Administration owner: {{email}}",
|
||||
"administration_you": "Your role: {{role}}",
|
||||
"administration_role_owner": "Owner",
|
||||
"administration_role_ro": "Read-only",
|
||||
"administration_role_mng_trx": "Manage transactions",
|
||||
"administration_role_mng_meta": "Manage classification and meta-data",
|
||||
"administration_role_mng_budgets": "Manage budgets",
|
||||
"administration_role_mng_piggies": "Manage piggy banks",
|
||||
"administration_role_mng_subscriptions": "Manage subscriptions",
|
||||
"administration_role_mng_rules": "Manage rules",
|
||||
"administration_role_mng_recurring": "Manage recurring transactions ",
|
||||
"administration_role_mng_webhooks": "Manage webhooks",
|
||||
"administration_role_mng_currencies": "Manage currencies",
|
||||
"administration_role_view_reports": "View reports",
|
||||
"administration_role_full": "Full access",
|
||||
"new_administration_created": "New financial administration \"{{title}}\" has been created",
|
||||
"left": "Left",
|
||||
"paid": "Paid",
|
||||
"errors_submission_v2": "There was something wrong with your submission. Please check out the errors below: {{errorMessage}}",
|
||||
|
@@ -3,14 +3,34 @@
|
||||
"html_language": "da",
|
||||
"date_time_fns": "MMMM g\u00f8r, yyyy @ HH:mm:ss",
|
||||
"month_and_day_fns": "d MMMM y",
|
||||
"does_not_exist": "(config.does_not_exist)",
|
||||
"date_time_fns_short": "MMMM do, yyyy @ HH:mm"
|
||||
},
|
||||
"form": {
|
||||
"title": "Titel"
|
||||
},
|
||||
"validation": {
|
||||
"bad_type_source": "Firefly III kan ikke bestemme transaktionstypen baseret p\u00e5 denne kildekonto.",
|
||||
"bad_type_destination": "Firefly III kan ikke bestemme transaktionstypen baseret p\u00e5 denne destinationskonto."
|
||||
},
|
||||
"firefly": {
|
||||
"spent": "Spent",
|
||||
"administration_owner": "Administration owner: {{email}}",
|
||||
"administration_you": "Your role: {{role}}",
|
||||
"administration_role_owner": "Owner",
|
||||
"administration_role_ro": "Read-only",
|
||||
"administration_role_mng_trx": "Manage transactions",
|
||||
"administration_role_mng_meta": "Manage classification and meta-data",
|
||||
"administration_role_mng_budgets": "Manage budgets",
|
||||
"administration_role_mng_piggies": "Manage piggy banks",
|
||||
"administration_role_mng_subscriptions": "Manage subscriptions",
|
||||
"administration_role_mng_rules": "Manage rules",
|
||||
"administration_role_mng_recurring": "Manage recurring transactions ",
|
||||
"administration_role_mng_webhooks": "Manage webhooks",
|
||||
"administration_role_mng_currencies": "Manage currencies",
|
||||
"administration_role_view_reports": "View reports",
|
||||
"administration_role_full": "Full access",
|
||||
"new_administration_created": "New financial administration \"{{title}}\" has been created",
|
||||
"left": "Left",
|
||||
"paid": "Paid",
|
||||
"errors_submission_v2": "There was something wrong with your submission. Please check out the errors below: {{errorMessage}}",
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user