Merge branch 'release/4.6.12'

This commit is contained in:
James Cole 2017-12-29 20:06:56 +01:00
commit 59d732cba7
989 changed files with 20722 additions and 6165 deletions

View File

@ -3,7 +3,7 @@ APP_DEBUG=false
APP_NAME=FireflyIII APP_NAME=FireflyIII
APP_KEY=SomeRandomStringOf32CharsExactly APP_KEY=SomeRandomStringOf32CharsExactly
APP_LOG=daily APP_LOG=daily
APP_LOG_LEVEL=warning APP_LOG_LEVEL=notice
APP_URL=http://localhost APP_URL=http://localhost
TRUSTED_PROXIES= TRUSTED_PROXIES=

View File

@ -4,7 +4,7 @@
## Feature requests ## Feature requests
I am always interested in expanding Firefly III's many features. If you are requesting a new feature, please check out the list of [often requested features](https://firefly-iii.github.io/requested-features/). I am always interested in expanding Firefly III's many features. If you are requesting a new feature, please check out the list of [often requested features](https://firefly-iii.org/requested-features/).
## Pull requests ## Pull requests

View File

@ -8,4 +8,4 @@ I am running Firefly III version x.x.x
#### Other important details (log files, system info): #### Other important details (log files, system info):
Please visit the /debug page to get extra debug information. Please click the version number in the right corner of any Firefly III page to get debug information.

4
.github/SUPPORT.md vendored
View File

@ -4,8 +4,8 @@
## Bugs ## Bugs
First of all: thank you for reporting a bug instead of ditching the tool altogether. If you find a bug, please take the time and see if the [demo site](https://firefly-iii.nder.be/) is also suffering from this bug. Include as many log files and details as you think are necessary. Bugs have a lot of priority! First of all: thank you for reporting a bug instead of ditching the tool altogether. If you find a bug, please take the time and see if the [demo site](https://demo.firefly-iii.org/) is also suffering from this bug. Include as many log files and details as you think are necessary. Bugs have a lot of priority!
## Installation problems ## Installation problems
Please take the time to read the [installation guide FAQ](https://firefly-iii.github.io/installation-guide-faq/) and make sure you search through closed issues for the problems other people have had. Your problem may be among them! If not, open an issue and I will help where I can. Please take the time to read the [installation guide FAQ](https://firefly-iii.org/installation-guide-faq/) and make sure you search through closed issues for the problems other people have had. Your problem may be among them! If not, open an issue and I will help where I can.

View File

@ -1,5 +1,24 @@
# 4.6.1.1
# 4.6.12
- Support for Indonesian.
- New report, see [issue 384](https://github.com/firefly-iii/firefly-iii/issues/384)
- [Issue 964](https://github.com/firefly-iii/firefly-iii/issues/964) as suggested by [gavu](https://github.com/gavu)
- Greatly improved Docker support and documentation.
- [Issue 1046](https://github.com/firefly-iii/firefly-iii/issues/1046), as reported by [pkoziol](https://github.com/pkoziol)
- [Issue 1047](https://github.com/firefly-iii/firefly-iii/issues/1047), as reported by [pkoziol](https://github.com/pkoziol)
- [Issue 1048](https://github.com/firefly-iii/firefly-iii/issues/1048), as reported by [webence](https://github.com/webence)
- [Issue 1049](https://github.com/firefly-iii/firefly-iii/issues/1049), as reported by [nicoschreiner](https://github.com/nicoschreiner)
- [Issue 1015](https://github.com/firefly-iii/firefly-iii/issues/1015), as reporterd by a user on Tweakers.net
- [Issue 1056](https://github.com/firefly-iii/firefly-iii/issues/1056), as reported by [repercussion](https://github.com/repercussion)
- [Issue 1061](https://github.com/firefly-iii/firefly-iii/issues/1061), as reported by [Meizikyn](https://github.com/Meizikyn)
- [Issue 1045](https://github.com/firefly-iii/firefly-iii/issues/1045), as reported by [gavu](https://github.com/gavu)
- First code for [issue 1040](https://github.com/firefly-iii/firefly-iii/issues/1040) ([simonsmiley](https://github.com/simonsmiley))
- [Issue 1059](https://github.com/firefly-iii/firefly-iii/issues/1059), as reported by [4oo4](https://github.com/4oo4)
- [Issue 1063](https://github.com/firefly-iii/firefly-iii/issues/1063), as reported by [pkoziol](https://github.com/pkoziol)
- [Issue 1064](https://github.com/firefly-iii/firefly-iii/issues/1064), as reported by [pkoziol](https://github.com/pkoziol)
- [Issue 1066](https://github.com/firefly-iii/firefly-iii/issues/1066), reported by [wtercato](https://github.com/wtercato)
# 4.6.1.1
- Import routine can scan for matching bills, [issue 956](https://github.com/firefly-iii/firefly-iii/issues/956) - Import routine can scan for matching bills, [issue 956](https://github.com/firefly-iii/firefly-iii/issues/956)
- Import will no longer scan for rules, this has become optional. Originally suggested in [issue 956](https://github.com/firefly-iii/firefly-iii/issues/956) by [gavu](https://github.com/gavu) - Import will no longer scan for rules, this has become optional. Originally suggested in [issue 956](https://github.com/firefly-iii/firefly-iii/issues/956) by [gavu](https://github.com/gavu)
- [Issue 1033](https://github.com/firefly-iii/firefly-iii/issues/1033), as reported by [Jumanjii](https://github.com/Jumanjii) - [Issue 1033](https://github.com/firefly-iii/firefly-iii/issues/1033), as reported by [Jumanjii](https://github.com/Jumanjii)

View File

@ -208,14 +208,6 @@ opt/app/.env.heroku
opt/app/.env.sandstorm opt/app/.env.sandstorm
opt/app/.gitattributes opt/app/.gitattributes
opt/app/.sandstorm/.gitattributes opt/app/.sandstorm/.gitattributes
opt/app/.sandstorm/.vagrant/machines/default/virtualbox/action_provision
opt/app/.sandstorm/.vagrant/machines/default/virtualbox/action_set_name
opt/app/.sandstorm/.vagrant/machines/default/virtualbox/creator_uid
opt/app/.sandstorm/.vagrant/machines/default/virtualbox/id
opt/app/.sandstorm/.vagrant/machines/default/virtualbox/index_uuid
opt/app/.sandstorm/.vagrant/machines/default/virtualbox/private_key
opt/app/.sandstorm/.vagrant/machines/default/virtualbox/synced_folders
opt/app/.sandstorm/.vagrant/machines/default/virtualbox/vagrant_cwd
opt/app/.sandstorm/Vagrantfile opt/app/.sandstorm/Vagrantfile
opt/app/.sandstorm/app-graphics/firefly-iii-128.png opt/app/.sandstorm/app-graphics/firefly-iii-128.png
opt/app/.sandstorm/app-graphics/firefly-iii-150.png opt/app/.sandstorm/app-graphics/firefly-iii-150.png
@ -260,6 +252,7 @@ opt/app/app/Events/AdminRequestedTestMessage.php
opt/app/app/Events/Event.php opt/app/app/Events/Event.php
opt/app/app/Events/RegisteredUser.php opt/app/app/Events/RegisteredUser.php
opt/app/app/Events/RequestedNewPassword.php opt/app/app/Events/RequestedNewPassword.php
opt/app/app/Events/RequestedVersionCheckStatus.php
opt/app/app/Events/StoredTransactionJournal.php opt/app/app/Events/StoredTransactionJournal.php
opt/app/app/Events/UpdatedTransactionJournal.php opt/app/app/Events/UpdatedTransactionJournal.php
opt/app/app/Events/UserChangedEmail.php opt/app/app/Events/UserChangedEmail.php
@ -279,6 +272,9 @@ opt/app/app/Export/Exporter/ExporterInterface.php
opt/app/app/Export/ProcessorInterface.php opt/app/app/Export/ProcessorInterface.php
opt/app/app/Generator/Chart/Basic/ChartJsGenerator.php opt/app/app/Generator/Chart/Basic/ChartJsGenerator.php
opt/app/app/Generator/Chart/Basic/GeneratorInterface.php opt/app/app/Generator/Chart/Basic/GeneratorInterface.php
opt/app/app/Generator/Report/Account/MonthReportGenerator.php
opt/app/app/Generator/Report/Account/MultiYearReportGenerator.php
opt/app/app/Generator/Report/Account/YearReportGenerator.php
opt/app/app/Generator/Report/Audit/MonthReportGenerator.php opt/app/app/Generator/Report/Audit/MonthReportGenerator.php
opt/app/app/Generator/Report/Audit/MultiYearReportGenerator.php opt/app/app/Generator/Report/Audit/MultiYearReportGenerator.php
opt/app/app/Generator/Report/Audit/YearReportGenerator.php opt/app/app/Generator/Report/Audit/YearReportGenerator.php
@ -301,6 +297,7 @@ opt/app/app/Handlers/Events/AdminEventHandler.php
opt/app/app/Handlers/Events/StoredJournalEventHandler.php opt/app/app/Handlers/Events/StoredJournalEventHandler.php
opt/app/app/Handlers/Events/UpdatedJournalEventHandler.php opt/app/app/Handlers/Events/UpdatedJournalEventHandler.php
opt/app/app/Handlers/Events/UserEventHandler.php opt/app/app/Handlers/Events/UserEventHandler.php
opt/app/app/Handlers/Events/VersionCheckEventHandler.php
opt/app/app/Helpers/Attachments/AttachmentHelper.php opt/app/app/Helpers/Attachments/AttachmentHelper.php
opt/app/app/Helpers/Attachments/AttachmentHelperInterface.php opt/app/app/Helpers/Attachments/AttachmentHelperInterface.php
opt/app/app/Helpers/Chart/MetaPieChart.php opt/app/app/Helpers/Chart/MetaPieChart.php
@ -339,6 +336,7 @@ opt/app/app/Http/Controllers/AccountController.php
opt/app/app/Http/Controllers/Admin/ConfigurationController.php opt/app/app/Http/Controllers/Admin/ConfigurationController.php
opt/app/app/Http/Controllers/Admin/HomeController.php opt/app/app/Http/Controllers/Admin/HomeController.php
opt/app/app/Http/Controllers/Admin/LinkController.php opt/app/app/Http/Controllers/Admin/LinkController.php
opt/app/app/Http/Controllers/Admin/UpdateController.php
opt/app/app/Http/Controllers/Admin/UserController.php opt/app/app/Http/Controllers/Admin/UserController.php
opt/app/app/Http/Controllers/AttachmentController.php opt/app/app/Http/Controllers/AttachmentController.php
opt/app/app/Http/Controllers/Auth/ForgotPasswordController.php opt/app/app/Http/Controllers/Auth/ForgotPasswordController.php
@ -355,6 +353,7 @@ opt/app/app/Http/Controllers/Chart/BudgetController.php
opt/app/app/Http/Controllers/Chart/BudgetReportController.php opt/app/app/Http/Controllers/Chart/BudgetReportController.php
opt/app/app/Http/Controllers/Chart/CategoryController.php opt/app/app/Http/Controllers/Chart/CategoryController.php
opt/app/app/Http/Controllers/Chart/CategoryReportController.php opt/app/app/Http/Controllers/Chart/CategoryReportController.php
opt/app/app/Http/Controllers/Chart/ExpenseReportController.php
opt/app/app/Http/Controllers/Chart/PiggyBankController.php opt/app/app/Http/Controllers/Chart/PiggyBankController.php
opt/app/app/Http/Controllers/Chart/ReportController.php opt/app/app/Http/Controllers/Chart/ReportController.php
opt/app/app/Http/Controllers/Chart/TagReportController.php opt/app/app/Http/Controllers/Chart/TagReportController.php
@ -363,9 +362,10 @@ opt/app/app/Http/Controllers/CurrencyController.php
opt/app/app/Http/Controllers/ExportController.php opt/app/app/Http/Controllers/ExportController.php
opt/app/app/Http/Controllers/HelpController.php opt/app/app/Http/Controllers/HelpController.php
opt/app/app/Http/Controllers/HomeController.php opt/app/app/Http/Controllers/HomeController.php
opt/app/app/Http/Controllers/Import/BankController.php opt/app/app/Http/Controllers/Import/ConfigurationController.php
opt/app/app/Http/Controllers/Import/FileController.php opt/app/app/Http/Controllers/Import/IndexController.php
opt/app/app/Http/Controllers/ImportController.php opt/app/app/Http/Controllers/Import/PrerequisitesController.php
opt/app/app/Http/Controllers/Import/StatusController.php
opt/app/app/Http/Controllers/JavascriptController.php opt/app/app/Http/Controllers/JavascriptController.php
opt/app/app/Http/Controllers/Json/AutoCompleteController.php opt/app/app/Http/Controllers/Json/AutoCompleteController.php
opt/app/app/Http/Controllers/Json/BoxController.php opt/app/app/Http/Controllers/Json/BoxController.php
@ -382,6 +382,7 @@ opt/app/app/Http/Controllers/Report/AccountController.php
opt/app/app/Http/Controllers/Report/BalanceController.php opt/app/app/Http/Controllers/Report/BalanceController.php
opt/app/app/Http/Controllers/Report/BudgetController.php opt/app/app/Http/Controllers/Report/BudgetController.php
opt/app/app/Http/Controllers/Report/CategoryController.php opt/app/app/Http/Controllers/Report/CategoryController.php
opt/app/app/Http/Controllers/Report/ExpenseController.php
opt/app/app/Http/Controllers/Report/OperationsController.php opt/app/app/Http/Controllers/Report/OperationsController.php
opt/app/app/Http/Controllers/ReportController.php opt/app/app/Http/Controllers/ReportController.php
opt/app/app/Http/Controllers/RuleController.php opt/app/app/Http/Controllers/RuleController.php
@ -400,7 +401,8 @@ opt/app/app/Http/Middleware/AuthenticateTwoFactor.php
opt/app/app/Http/Middleware/Binder.php opt/app/app/Http/Middleware/Binder.php
opt/app/app/Http/Middleware/EncryptCookies.php opt/app/app/Http/Middleware/EncryptCookies.php
opt/app/app/Http/Middleware/IsAdmin.php opt/app/app/Http/Middleware/IsAdmin.php
opt/app/app/Http/Middleware/IsLimitedUser.php opt/app/app/Http/Middleware/IsDemoUser.php
opt/app/app/Http/Middleware/IsSandStormUser.php
opt/app/app/Http/Middleware/Range.php opt/app/app/Http/Middleware/Range.php
opt/app/app/Http/Middleware/RedirectIfAuthenticated.php opt/app/app/Http/Middleware/RedirectIfAuthenticated.php
opt/app/app/Http/Middleware/RedirectIfTwoFactorAuthenticated.php opt/app/app/Http/Middleware/RedirectIfTwoFactorAuthenticated.php
@ -420,7 +422,6 @@ opt/app/app/Http/Requests/CurrencyFormRequest.php
opt/app/app/Http/Requests/DeleteAccountFormRequest.php opt/app/app/Http/Requests/DeleteAccountFormRequest.php
opt/app/app/Http/Requests/EmailFormRequest.php opt/app/app/Http/Requests/EmailFormRequest.php
opt/app/app/Http/Requests/ExportFormRequest.php opt/app/app/Http/Requests/ExportFormRequest.php
opt/app/app/Http/Requests/ImportUploadRequest.php
opt/app/app/Http/Requests/JournalFormRequest.php opt/app/app/Http/Requests/JournalFormRequest.php
opt/app/app/Http/Requests/JournalLinkRequest.php opt/app/app/Http/Requests/JournalLinkRequest.php
opt/app/app/Http/Requests/LinkTypeFormRequest.php opt/app/app/Http/Requests/LinkTypeFormRequest.php
@ -441,15 +442,15 @@ opt/app/app/Http/Requests/TestRuleFormRequest.php
opt/app/app/Http/Requests/TokenFormRequest.php opt/app/app/Http/Requests/TokenFormRequest.php
opt/app/app/Http/Requests/UserFormRequest.php opt/app/app/Http/Requests/UserFormRequest.php
opt/app/app/Http/Requests/UserRegistrationRequest.php opt/app/app/Http/Requests/UserRegistrationRequest.php
opt/app/app/Http/breadcrumbs.php opt/app/app/Import/Configuration/ConfiguratorInterface.php
opt/app/app/Import/Configurator/ConfiguratorInterface.php opt/app/app/Import/Configuration/FileConfigurator.php
opt/app/app/Import/Configurator/CsvConfigurator.php opt/app/app/Import/Configuration/SpectreConfigurator.php
opt/app/app/Import/Converter/Amount.php opt/app/app/Import/Converter/Amount.php
opt/app/app/Import/Converter/AmountCredit.php opt/app/app/Import/Converter/AmountCredit.php
opt/app/app/Import/Converter/AmountDebet.php opt/app/app/Import/Converter/AmountDebit.php
opt/app/app/Import/Converter/ConverterInterface.php opt/app/app/Import/Converter/ConverterInterface.php
opt/app/app/Import/Converter/INGDebetCredit.php opt/app/app/Import/Converter/INGDebitCredit.php
opt/app/app/Import/Converter/RabobankDebetCredit.php opt/app/app/Import/Converter/RabobankDebitCredit.php
opt/app/app/Import/FileProcessor/CsvProcessor.php opt/app/app/Import/FileProcessor/CsvProcessor.php
opt/app/app/Import/FileProcessor/FileProcessorInterface.php opt/app/app/Import/FileProcessor/FileProcessorInterface.php
opt/app/app/Import/Logging/CommandHandler.php opt/app/app/Import/Logging/CommandHandler.php
@ -472,7 +473,13 @@ opt/app/app/Import/Object/ImportBudget.php
opt/app/app/Import/Object/ImportCategory.php opt/app/app/Import/Object/ImportCategory.php
opt/app/app/Import/Object/ImportCurrency.php opt/app/app/Import/Object/ImportCurrency.php
opt/app/app/Import/Object/ImportJournal.php opt/app/app/Import/Object/ImportJournal.php
opt/app/app/Import/Routine/ImportRoutine.php opt/app/app/Import/Prerequisites/BunqPrerequisites.php
opt/app/app/Import/Prerequisites/FilePrerequisites.php
opt/app/app/Import/Prerequisites/PrerequisitesInterface.php
opt/app/app/Import/Prerequisites/SpectrePrerequisites.php
opt/app/app/Import/Routine/FileRoutine.php
opt/app/app/Import/Routine/RoutineInterface.php
opt/app/app/Import/Routine/SpectreRoutine.php
opt/app/app/Import/Specifics/AbnAmroDescription.php opt/app/app/Import/Specifics/AbnAmroDescription.php
opt/app/app/Import/Specifics/IngDescription.php opt/app/app/Import/Specifics/IngDescription.php
opt/app/app/Import/Specifics/PresidentsChoice.php opt/app/app/Import/Specifics/PresidentsChoice.php
@ -612,8 +619,18 @@ opt/app/app/Services/Bunq/Token/InstallationToken.php
opt/app/app/Services/Bunq/Token/SessionToken.php opt/app/app/Services/Bunq/Token/SessionToken.php
opt/app/app/Services/Currency/ExchangeRateInterface.php opt/app/app/Services/Currency/ExchangeRateInterface.php
opt/app/app/Services/Currency/FixerIO.php opt/app/app/Services/Currency/FixerIO.php
opt/app/app/Services/Github/Object/GithubObject.php
opt/app/app/Services/Github/Object/Release.php
opt/app/app/Services/Github/Request/GithubRequest.php
opt/app/app/Services/Github/Request/UpdateRequest.php
opt/app/app/Services/Password/PwndVerifier.php opt/app/app/Services/Password/PwndVerifier.php
opt/app/app/Services/Password/Verifier.php opt/app/app/Services/Password/Verifier.php
opt/app/app/Services/Spectre/Object/Customer.php
opt/app/app/Services/Spectre/Object/SpectreObject.php
opt/app/app/Services/Spectre/Object/Token.php
opt/app/app/Services/Spectre/Request/CreateTokenRequest.php
opt/app/app/Services/Spectre/Request/NewCustomerRequest.php
opt/app/app/Services/Spectre/Request/SpectreRequest.php
opt/app/app/Support/Amount.php opt/app/app/Support/Amount.php
opt/app/app/Support/Binder/AccountList.php opt/app/app/Support/Binder/AccountList.php
opt/app/app/Support/Binder/BinderInterface.php opt/app/app/Support/Binder/BinderInterface.php
@ -637,13 +654,12 @@ opt/app/app/Support/Facades/Preferences.php
opt/app/app/Support/Facades/Steam.php opt/app/app/Support/Facades/Steam.php
opt/app/app/Support/FireflyConfig.php opt/app/app/Support/FireflyConfig.php
opt/app/app/Support/Import/Configuration/ConfigurationInterface.php opt/app/app/Support/Import/Configuration/ConfigurationInterface.php
opt/app/app/Support/Import/Configuration/Csv/Initial.php opt/app/app/Support/Import/Configuration/File/Initial.php
opt/app/app/Support/Import/Configuration/Csv/Map.php opt/app/app/Support/Import/Configuration/File/Map.php
opt/app/app/Support/Import/Configuration/Csv/Roles.php opt/app/app/Support/Import/Configuration/File/Roles.php
opt/app/app/Support/Import/Configuration/File/Upload.php
opt/app/app/Support/Import/Information/BunqInformation.php opt/app/app/Support/Import/Information/BunqInformation.php
opt/app/app/Support/Import/Information/InformationInterface.php opt/app/app/Support/Import/Information/InformationInterface.php
opt/app/app/Support/Import/Prerequisites/BunqPrerequisites.php
opt/app/app/Support/Import/Prerequisites/PrerequisitesInterface.php
opt/app/app/Support/Models/TransactionJournalTrait.php opt/app/app/Support/Models/TransactionJournalTrait.php
opt/app/app/Support/Navigation.php opt/app/app/Support/Navigation.php
opt/app/app/Support/Preferences.php opt/app/app/Support/Preferences.php
@ -730,12 +746,15 @@ opt/app/composer.lock
opt/app/composer.phar opt/app/composer.phar
opt/app/config/app.php opt/app/config/app.php
opt/app/config/auth.php opt/app/config/auth.php
opt/app/config/breadcrumbs.php
opt/app/config/broadcasting.php opt/app/config/broadcasting.php
opt/app/config/cache.php opt/app/config/cache.php
opt/app/config/csv.php opt/app/config/csv.php
opt/app/config/database.php opt/app/config/database.php
opt/app/config/filesystems.php opt/app/config/filesystems.php
opt/app/config/firefly.php opt/app/config/firefly.php
opt/app/config/google2fa.php
opt/app/config/import.php
opt/app/config/intro.php opt/app/config/intro.php
opt/app/config/mail.php opt/app/config/mail.php
opt/app/config/queue.php opt/app/config/queue.php
@ -766,9 +785,6 @@ opt/app/database/seeds/LinkTypeSeeder.php
opt/app/database/seeds/PermissionSeeder.php opt/app/database/seeds/PermissionSeeder.php
opt/app/database/seeds/TransactionCurrencySeeder.php opt/app/database/seeds/TransactionCurrencySeeder.php
opt/app/database/seeds/TransactionTypeSeeder.php opt/app/database/seeds/TransactionTypeSeeder.php
opt/app/docker-compose.dockerhub.yml
opt/app/docker-compose.override.yml
opt/app/docker-compose.prod.yml
opt/app/docker-compose.yml opt/app/docker-compose.yml
opt/app/nginx_app.conf opt/app/nginx_app.conf
opt/app/phpunit.coverage.xml opt/app/phpunit.coverage.xml
@ -850,6 +866,10 @@ opt/app/public/images/image.png
opt/app/public/images/loading-small.gif opt/app/public/images/loading-small.gif
opt/app/public/images/loading-wide.gif opt/app/public/images/loading-wide.gif
opt/app/public/images/logos/bunq.png opt/app/public/images/logos/bunq.png
opt/app/public/images/logos/csv.png
opt/app/public/images/logos/file.png
opt/app/public/images/logos/plaid.png
opt/app/public/images/logos/spectre.png
opt/app/public/images/page_green.png opt/app/public/images/page_green.png
opt/app/public/images/page_white_acrobat.png opt/app/public/images/page_white_acrobat.png
opt/app/public/index.php opt/app/public/index.php
@ -858,6 +878,7 @@ opt/app/public/js/ff/accounts/edit-reconciliation.js
opt/app/public/js/ff/accounts/edit.js opt/app/public/js/ff/accounts/edit.js
opt/app/public/js/ff/accounts/reconcile.js opt/app/public/js/ff/accounts/reconcile.js
opt/app/public/js/ff/accounts/show.js opt/app/public/js/ff/accounts/show.js
opt/app/public/js/ff/admin/update/index.js
opt/app/public/js/ff/bills/create.js opt/app/public/js/ff/bills/create.js
opt/app/public/js/ff/bills/edit.js opt/app/public/js/ff/bills/edit.js
opt/app/public/js/ff/bills/show.js opt/app/public/js/ff/bills/show.js
@ -880,17 +901,16 @@ opt/app/public/js/ff/piggy-banks/edit.js
opt/app/public/js/ff/piggy-banks/index.js opt/app/public/js/ff/piggy-banks/index.js
opt/app/public/js/ff/piggy-banks/show.js opt/app/public/js/ff/piggy-banks/show.js
opt/app/public/js/ff/preferences/index.js opt/app/public/js/ff/preferences/index.js
opt/app/public/js/ff/reports/account/month.js
opt/app/public/js/ff/reports/all.js
opt/app/public/js/ff/reports/audit/all.js opt/app/public/js/ff/reports/audit/all.js
opt/app/public/js/ff/reports/budget/all.js
opt/app/public/js/ff/reports/budget/month.js opt/app/public/js/ff/reports/budget/month.js
opt/app/public/js/ff/reports/category/all.js
opt/app/public/js/ff/reports/category/month.js opt/app/public/js/ff/reports/category/month.js
opt/app/public/js/ff/reports/default/all.js opt/app/public/js/ff/reports/default/all.js
opt/app/public/js/ff/reports/default/month.js opt/app/public/js/ff/reports/default/month.js
opt/app/public/js/ff/reports/default/multi-year.js opt/app/public/js/ff/reports/default/multi-year.js
opt/app/public/js/ff/reports/default/year.js opt/app/public/js/ff/reports/default/year.js
opt/app/public/js/ff/reports/index.js opt/app/public/js/ff/reports/index.js
opt/app/public/js/ff/reports/tag/all.js
opt/app/public/js/ff/reports/tag/month.js opt/app/public/js/ff/reports/tag/month.js
opt/app/public/js/ff/rules/create-edit.js opt/app/public/js/ff/rules/create-edit.js
opt/app/public/js/ff/rules/index.js opt/app/public/js/ff/rules/index.js
@ -975,6 +995,7 @@ opt/app/resources/lang/de_DE/demo.php
opt/app/resources/lang/de_DE/firefly.php opt/app/resources/lang/de_DE/firefly.php
opt/app/resources/lang/de_DE/form.php opt/app/resources/lang/de_DE/form.php
opt/app/resources/lang/de_DE/help.php opt/app/resources/lang/de_DE/help.php
opt/app/resources/lang/de_DE/import.php
opt/app/resources/lang/de_DE/intro.php opt/app/resources/lang/de_DE/intro.php
opt/app/resources/lang/de_DE/list.php opt/app/resources/lang/de_DE/list.php
opt/app/resources/lang/de_DE/pagination.php opt/app/resources/lang/de_DE/pagination.php
@ -988,6 +1009,7 @@ opt/app/resources/lang/en_US/csv.php
opt/app/resources/lang/en_US/demo.php opt/app/resources/lang/en_US/demo.php
opt/app/resources/lang/en_US/firefly.php opt/app/resources/lang/en_US/firefly.php
opt/app/resources/lang/en_US/form.php opt/app/resources/lang/en_US/form.php
opt/app/resources/lang/en_US/import.php
opt/app/resources/lang/en_US/intro.php opt/app/resources/lang/en_US/intro.php
opt/app/resources/lang/en_US/list.php opt/app/resources/lang/en_US/list.php
opt/app/resources/lang/en_US/pagination.php opt/app/resources/lang/en_US/pagination.php
@ -1002,11 +1024,26 @@ opt/app/resources/lang/fr_FR/demo.php
opt/app/resources/lang/fr_FR/firefly.php opt/app/resources/lang/fr_FR/firefly.php
opt/app/resources/lang/fr_FR/form.php opt/app/resources/lang/fr_FR/form.php
opt/app/resources/lang/fr_FR/help.php opt/app/resources/lang/fr_FR/help.php
opt/app/resources/lang/fr_FR/import.php
opt/app/resources/lang/fr_FR/intro.php opt/app/resources/lang/fr_FR/intro.php
opt/app/resources/lang/fr_FR/list.php opt/app/resources/lang/fr_FR/list.php
opt/app/resources/lang/fr_FR/pagination.php opt/app/resources/lang/fr_FR/pagination.php
opt/app/resources/lang/fr_FR/passwords.php opt/app/resources/lang/fr_FR/passwords.php
opt/app/resources/lang/fr_FR/validation.php opt/app/resources/lang/fr_FR/validation.php
opt/app/resources/lang/id_ID/auth.php
opt/app/resources/lang/id_ID/bank.php
opt/app/resources/lang/id_ID/breadcrumbs.php
opt/app/resources/lang/id_ID/config.php
opt/app/resources/lang/id_ID/csv.php
opt/app/resources/lang/id_ID/demo.php
opt/app/resources/lang/id_ID/firefly.php
opt/app/resources/lang/id_ID/form.php
opt/app/resources/lang/id_ID/import.php
opt/app/resources/lang/id_ID/intro.php
opt/app/resources/lang/id_ID/list.php
opt/app/resources/lang/id_ID/pagination.php
opt/app/resources/lang/id_ID/passwords.php
opt/app/resources/lang/id_ID/validation.php
opt/app/resources/lang/nl_NL/auth.php opt/app/resources/lang/nl_NL/auth.php
opt/app/resources/lang/nl_NL/bank.php opt/app/resources/lang/nl_NL/bank.php
opt/app/resources/lang/nl_NL/breadcrumbs.php opt/app/resources/lang/nl_NL/breadcrumbs.php
@ -1016,6 +1053,7 @@ opt/app/resources/lang/nl_NL/demo.php
opt/app/resources/lang/nl_NL/firefly.php opt/app/resources/lang/nl_NL/firefly.php
opt/app/resources/lang/nl_NL/form.php opt/app/resources/lang/nl_NL/form.php
opt/app/resources/lang/nl_NL/help.php opt/app/resources/lang/nl_NL/help.php
opt/app/resources/lang/nl_NL/import.php
opt/app/resources/lang/nl_NL/intro.php opt/app/resources/lang/nl_NL/intro.php
opt/app/resources/lang/nl_NL/list.php opt/app/resources/lang/nl_NL/list.php
opt/app/resources/lang/nl_NL/pagination.php opt/app/resources/lang/nl_NL/pagination.php
@ -1030,6 +1068,7 @@ opt/app/resources/lang/pl_PL/demo.php
opt/app/resources/lang/pl_PL/firefly.php opt/app/resources/lang/pl_PL/firefly.php
opt/app/resources/lang/pl_PL/form.php opt/app/resources/lang/pl_PL/form.php
opt/app/resources/lang/pl_PL/help.php opt/app/resources/lang/pl_PL/help.php
opt/app/resources/lang/pl_PL/import.php
opt/app/resources/lang/pl_PL/intro.php opt/app/resources/lang/pl_PL/intro.php
opt/app/resources/lang/pl_PL/list.php opt/app/resources/lang/pl_PL/list.php
opt/app/resources/lang/pl_PL/pagination.php opt/app/resources/lang/pl_PL/pagination.php
@ -1057,6 +1096,7 @@ opt/app/resources/views/admin/link/delete.twig
opt/app/resources/views/admin/link/edit.twig opt/app/resources/views/admin/link/edit.twig
opt/app/resources/views/admin/link/index.twig opt/app/resources/views/admin/link/index.twig
opt/app/resources/views/admin/link/show.twig opt/app/resources/views/admin/link/show.twig
opt/app/resources/views/admin/update/index.twig
opt/app/resources/views/admin/users/delete.twig opt/app/resources/views/admin/users/delete.twig
opt/app/resources/views/admin/users/edit.twig opt/app/resources/views/admin/users/edit.twig
opt/app/resources/views/admin/users/index.twig opt/app/resources/views/admin/users/index.twig
@ -1151,13 +1191,17 @@ opt/app/resources/views/form/text.twig
opt/app/resources/views/form/textarea.twig opt/app/resources/views/form/textarea.twig
opt/app/resources/views/import/bank/form.twig opt/app/resources/views/import/bank/form.twig
opt/app/resources/views/import/bunq/prerequisites.twig opt/app/resources/views/import/bunq/prerequisites.twig
opt/app/resources/views/import/csv/initial.twig opt/app/resources/views/import/file/initial.twig
opt/app/resources/views/import/csv/map.twig opt/app/resources/views/import/file/map.twig
opt/app/resources/views/import/csv/roles.twig opt/app/resources/views/import/file/roles.twig
opt/app/resources/views/import/file/finished.twig opt/app/resources/views/import/file/upload.twig
opt/app/resources/views/import/file/index.twig
opt/app/resources/views/import/file/status.twig
opt/app/resources/views/import/index.twig opt/app/resources/views/import/index.twig
opt/app/resources/views/import/spectre/input-fields.twig
opt/app/resources/views/import/spectre/prerequisites.twig
opt/app/resources/views/import/spectre/redirect.twig
opt/app/resources/views/import/spectre/select-country.twig
opt/app/resources/views/import/spectre/select-provider.twig
opt/app/resources/views/import/status.twig
opt/app/resources/views/index.twig opt/app/resources/views/index.twig
opt/app/resources/views/javascript/accounts.twig opt/app/resources/views/javascript/accounts.twig
opt/app/resources/views/javascript/currencies.twig opt/app/resources/views/javascript/currencies.twig
@ -1204,6 +1248,7 @@ opt/app/resources/views/profile/change-email.twig
opt/app/resources/views/profile/change-password.twig opt/app/resources/views/profile/change-password.twig
opt/app/resources/views/profile/delete-account.twig opt/app/resources/views/profile/delete-account.twig
opt/app/resources/views/profile/index.twig opt/app/resources/views/profile/index.twig
opt/app/resources/views/reports/account/report.twig
opt/app/resources/views/reports/audit/report.twig opt/app/resources/views/reports/audit/report.twig
opt/app/resources/views/reports/budget/month.twig opt/app/resources/views/reports/budget/month.twig
opt/app/resources/views/reports/category/month.twig opt/app/resources/views/reports/category/month.twig
@ -1211,6 +1256,7 @@ opt/app/resources/views/reports/default/month.twig
opt/app/resources/views/reports/default/multi-year.twig opt/app/resources/views/reports/default/multi-year.twig
opt/app/resources/views/reports/default/year.twig opt/app/resources/views/reports/default/year.twig
opt/app/resources/views/reports/index.twig opt/app/resources/views/reports/index.twig
opt/app/resources/views/reports/options/account.twig
opt/app/resources/views/reports/options/budget.twig opt/app/resources/views/reports/options/budget.twig
opt/app/resources/views/reports/options/category.twig opt/app/resources/views/reports/options/category.twig
opt/app/resources/views/reports/options/no-options.twig opt/app/resources/views/reports/options/no-options.twig
@ -1222,10 +1268,14 @@ opt/app/resources/views/reports/partials/budget-period.twig
opt/app/resources/views/reports/partials/budgets.twig opt/app/resources/views/reports/partials/budgets.twig
opt/app/resources/views/reports/partials/categories.twig opt/app/resources/views/reports/partials/categories.twig
opt/app/resources/views/reports/partials/category-period.twig opt/app/resources/views/reports/partials/category-period.twig
opt/app/resources/views/reports/partials/exp-budgets.twig
opt/app/resources/views/reports/partials/exp-categories.twig
opt/app/resources/views/reports/partials/exp-not-grouped.twig
opt/app/resources/views/reports/partials/income-expenses.twig opt/app/resources/views/reports/partials/income-expenses.twig
opt/app/resources/views/reports/partials/journals-audit.twig opt/app/resources/views/reports/partials/journals-audit.twig
opt/app/resources/views/reports/partials/operations.twig opt/app/resources/views/reports/partials/operations.twig
opt/app/resources/views/reports/partials/tags.twig opt/app/resources/views/reports/partials/tags.twig
opt/app/resources/views/reports/partials/top-transactions.twig
opt/app/resources/views/reports/tag/month.twig opt/app/resources/views/reports/tag/month.twig
opt/app/resources/views/rules/index.twig opt/app/resources/views/rules/index.twig
opt/app/resources/views/rules/partials/action.twig opt/app/resources/views/rules/partials/action.twig
@ -1246,6 +1296,7 @@ opt/app/resources/views/tags/delete.twig
opt/app/resources/views/tags/edit.twig opt/app/resources/views/tags/edit.twig
opt/app/resources/views/tags/index.twig opt/app/resources/views/tags/index.twig
opt/app/resources/views/tags/show.twig opt/app/resources/views/tags/show.twig
opt/app/resources/views/test/test.twig
opt/app/resources/views/transactions/convert.twig opt/app/resources/views/transactions/convert.twig
opt/app/resources/views/transactions/index.twig opt/app/resources/views/transactions/index.twig
opt/app/resources/views/transactions/links/delete.twig opt/app/resources/views/transactions/links/delete.twig
@ -1257,6 +1308,7 @@ opt/app/resources/views/transactions/single/delete.twig
opt/app/resources/views/transactions/single/edit.twig opt/app/resources/views/transactions/single/edit.twig
opt/app/resources/views/transactions/split/edit.twig opt/app/resources/views/transactions/split/edit.twig
opt/app/routes/api.php opt/app/routes/api.php
opt/app/routes/breadcrumbs.php
opt/app/routes/channels.php opt/app/routes/channels.php
opt/app/routes/console.php opt/app/routes/console.php
opt/app/routes/web.php opt/app/routes/web.php
@ -1325,14 +1377,6 @@ opt/app/vendor/bacon/bacon-qr-code/tests/BaconQrCode/Renderer/Text/TextTest.php
opt/app/vendor/bacon/bacon-qr-code/tests/bootstrap.php opt/app/vendor/bacon/bacon-qr-code/tests/bootstrap.php
opt/app/vendor/bin/commonmark opt/app/vendor/bin/commonmark
opt/app/vendor/bin/doctrine-dbal opt/app/vendor/bin/doctrine-dbal
opt/app/vendor/christian-riesen/base32/LICENSE
opt/app/vendor/christian-riesen/base32/README.md
opt/app/vendor/christian-riesen/base32/build.xml
opt/app/vendor/christian-riesen/base32/composer.json
opt/app/vendor/christian-riesen/base32/phpunit.xml.dist
opt/app/vendor/christian-riesen/base32/src/Base32.php
opt/app/vendor/christian-riesen/base32/tests/Base32Test.php
opt/app/vendor/christian-riesen/base32/tests/bootstrap.php
opt/app/vendor/composer/ClassLoader.php opt/app/vendor/composer/ClassLoader.php
opt/app/vendor/composer/LICENSE opt/app/vendor/composer/LICENSE
opt/app/vendor/composer/autoload_classmap.php opt/app/vendor/composer/autoload_classmap.php
@ -1342,37 +1386,24 @@ opt/app/vendor/composer/autoload_psr4.php
opt/app/vendor/composer/autoload_real.php opt/app/vendor/composer/autoload_real.php
opt/app/vendor/composer/autoload_static.php opt/app/vendor/composer/autoload_static.php
opt/app/vendor/composer/installed.json opt/app/vendor/composer/installed.json
opt/app/vendor/davejamesmiller/laravel-breadcrumbs/.editorconfig
opt/app/vendor/davejamesmiller/laravel-breadcrumbs/README.md
opt/app/vendor/davejamesmiller/laravel-breadcrumbs/RELEASE-CHECKLIST.md
opt/app/vendor/davejamesmiller/laravel-breadcrumbs/composer.json opt/app/vendor/davejamesmiller/laravel-breadcrumbs/composer.json
opt/app/vendor/davejamesmiller/laravel-breadcrumbs/config/breadcrumbs.php opt/app/vendor/davejamesmiller/laravel-breadcrumbs/config/breadcrumbs.php
opt/app/vendor/davejamesmiller/laravel-breadcrumbs/scripts/test-coverage.sh opt/app/vendor/davejamesmiller/laravel-breadcrumbs/src/BreadcrumbsException.php
opt/app/vendor/davejamesmiller/laravel-breadcrumbs/src/CurrentRoute.php opt/app/vendor/davejamesmiller/laravel-breadcrumbs/src/BreadcrumbsGenerator.php
opt/app/vendor/davejamesmiller/laravel-breadcrumbs/src/Exception.php opt/app/vendor/davejamesmiller/laravel-breadcrumbs/src/BreadcrumbsManager.php
opt/app/vendor/davejamesmiller/laravel-breadcrumbs/src/Facade.php opt/app/vendor/davejamesmiller/laravel-breadcrumbs/src/BreadcrumbsServiceProvider.php
opt/app/vendor/davejamesmiller/laravel-breadcrumbs/src/Generator.php opt/app/vendor/davejamesmiller/laravel-breadcrumbs/src/Exceptions/DuplicateBreadcrumbException.php
opt/app/vendor/davejamesmiller/laravel-breadcrumbs/src/Manager.php opt/app/vendor/davejamesmiller/laravel-breadcrumbs/src/Exceptions/InvalidBreadcrumbException.php
opt/app/vendor/davejamesmiller/laravel-breadcrumbs/src/ServiceProvider.php opt/app/vendor/davejamesmiller/laravel-breadcrumbs/src/Exceptions/UnnamedRouteException.php
opt/app/vendor/davejamesmiller/laravel-breadcrumbs/src/View.php opt/app/vendor/davejamesmiller/laravel-breadcrumbs/src/Exceptions/ViewNotSetException.php
opt/app/vendor/davejamesmiller/laravel-breadcrumbs/tests/TestCase.php opt/app/vendor/davejamesmiller/laravel-breadcrumbs/src/Facades/Breadcrumbs.php
opt/app/vendor/davejamesmiller/laravel-breadcrumbs/tests/bootstrap.php
opt/app/vendor/davejamesmiller/laravel-breadcrumbs/tests/fixtures/CustomServiceProvider.html
opt/app/vendor/davejamesmiller/laravel-breadcrumbs/tests/fixtures/DependantServiceProvider.html
opt/app/vendor/davejamesmiller/laravel-breadcrumbs/tests/fixtures/bootstrap2.html
opt/app/vendor/davejamesmiller/laravel-breadcrumbs/tests/fixtures/bootstrap3.html
opt/app/vendor/davejamesmiller/laravel-breadcrumbs/tests/fixtures/integration.html
opt/app/vendor/davejamesmiller/laravel-breadcrumbs/tests/integration/CustomServiceProviderTest.php
opt/app/vendor/davejamesmiller/laravel-breadcrumbs/tests/integration/DependantServiceProviderErrorTest.php
opt/app/vendor/davejamesmiller/laravel-breadcrumbs/tests/integration/DependantServiceProviderTest.php
opt/app/vendor/davejamesmiller/laravel-breadcrumbs/tests/integration/IntegrationTest.php
opt/app/vendor/davejamesmiller/laravel-breadcrumbs/tests/unit/CurrentRouteTest.php
opt/app/vendor/davejamesmiller/laravel-breadcrumbs/tests/unit/FacadeTest.php
opt/app/vendor/davejamesmiller/laravel-breadcrumbs/tests/unit/GeneratorTest.php
opt/app/vendor/davejamesmiller/laravel-breadcrumbs/tests/unit/ManagerTest.php
opt/app/vendor/davejamesmiller/laravel-breadcrumbs/tests/unit/ViewTest.php
opt/app/vendor/davejamesmiller/laravel-breadcrumbs/views/bootstrap2.blade.php opt/app/vendor/davejamesmiller/laravel-breadcrumbs/views/bootstrap2.blade.php
opt/app/vendor/davejamesmiller/laravel-breadcrumbs/views/bootstrap3.blade.php opt/app/vendor/davejamesmiller/laravel-breadcrumbs/views/bootstrap3.blade.php
opt/app/vendor/davejamesmiller/laravel-breadcrumbs/views/bootstrap4.blade.php
opt/app/vendor/davejamesmiller/laravel-breadcrumbs/views/bulma.blade.php
opt/app/vendor/davejamesmiller/laravel-breadcrumbs/views/foundation6.blade.php
opt/app/vendor/davejamesmiller/laravel-breadcrumbs/views/json-ld.php
opt/app/vendor/davejamesmiller/laravel-breadcrumbs/views/materialize.blade.php
opt/app/vendor/doctrine/annotations/CHANGELOG.md opt/app/vendor/doctrine/annotations/CHANGELOG.md
opt/app/vendor/doctrine/annotations/LICENSE opt/app/vendor/doctrine/annotations/LICENSE
opt/app/vendor/doctrine/annotations/README.md opt/app/vendor/doctrine/annotations/README.md
@ -2188,6 +2219,7 @@ opt/app/vendor/laravel/framework/src/Illuminate/Events/CallQueuedListener.php
opt/app/vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php opt/app/vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php
opt/app/vendor/laravel/framework/src/Illuminate/Events/EventServiceProvider.php opt/app/vendor/laravel/framework/src/Illuminate/Events/EventServiceProvider.php
opt/app/vendor/laravel/framework/src/Illuminate/Events/composer.json opt/app/vendor/laravel/framework/src/Illuminate/Events/composer.json
opt/app/vendor/laravel/framework/src/Illuminate/Filesystem/Cache.php
opt/app/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php opt/app/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php
opt/app/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php opt/app/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php
opt/app/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemManager.php opt/app/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemManager.php
@ -2663,6 +2695,7 @@ opt/app/vendor/laravel/framework/src/Illuminate/Support/MessageBag.php
opt/app/vendor/laravel/framework/src/Illuminate/Support/NamespacedItemResolver.php opt/app/vendor/laravel/framework/src/Illuminate/Support/NamespacedItemResolver.php
opt/app/vendor/laravel/framework/src/Illuminate/Support/Optional.php opt/app/vendor/laravel/framework/src/Illuminate/Support/Optional.php
opt/app/vendor/laravel/framework/src/Illuminate/Support/Pluralizer.php opt/app/vendor/laravel/framework/src/Illuminate/Support/Pluralizer.php
opt/app/vendor/laravel/framework/src/Illuminate/Support/ProcessUtils.php
opt/app/vendor/laravel/framework/src/Illuminate/Support/ServiceProvider.php opt/app/vendor/laravel/framework/src/Illuminate/Support/ServiceProvider.php
opt/app/vendor/laravel/framework/src/Illuminate/Support/Str.php opt/app/vendor/laravel/framework/src/Illuminate/Support/Str.php
opt/app/vendor/laravel/framework/src/Illuminate/Support/Testing/Fakes/BusFake.php opt/app/vendor/laravel/framework/src/Illuminate/Support/Testing/Fakes/BusFake.php
@ -2865,23 +2898,29 @@ opt/app/vendor/league/commonmark/src/Util/Html5Entities.php
opt/app/vendor/league/commonmark/src/Util/LinkParserHelper.php opt/app/vendor/league/commonmark/src/Util/LinkParserHelper.php
opt/app/vendor/league/commonmark/src/Util/RegexHelper.php opt/app/vendor/league/commonmark/src/Util/RegexHelper.php
opt/app/vendor/league/commonmark/src/Util/UrlEncoder.php opt/app/vendor/league/commonmark/src/Util/UrlEncoder.php
opt/app/vendor/league/commonmark/src/Util/Xml.php
opt/app/vendor/league/csv/LICENSE opt/app/vendor/league/csv/LICENSE
opt/app/vendor/league/csv/autoload.php opt/app/vendor/league/csv/autoload.php
opt/app/vendor/league/csv/composer.json opt/app/vendor/league/csv/composer.json
opt/app/vendor/league/csv/src/AbstractCsv.php opt/app/vendor/league/csv/src/AbstractCsv.php
opt/app/vendor/league/csv/src/Config/Controls.php opt/app/vendor/league/csv/src/ByteSequence.php
opt/app/vendor/league/csv/src/Config/Output.php opt/app/vendor/league/csv/src/CannotInsertRecord.php
opt/app/vendor/league/csv/src/Exception/InvalidRowException.php opt/app/vendor/league/csv/src/CharsetConverter.php
opt/app/vendor/league/csv/src/Modifier/MapIterator.php opt/app/vendor/league/csv/src/ColumnConsistency.php
opt/app/vendor/league/csv/src/Modifier/QueryFilter.php opt/app/vendor/league/csv/src/EncloseField.php
opt/app/vendor/league/csv/src/Modifier/RowFilter.php opt/app/vendor/league/csv/src/EscapeFormula.php
opt/app/vendor/league/csv/src/Modifier/StreamFilter.php opt/app/vendor/league/csv/src/Exception.php
opt/app/vendor/league/csv/src/Modifier/StreamIterator.php opt/app/vendor/league/csv/src/HTMLConverter.php
opt/app/vendor/league/csv/src/Plugin/ColumnConsistencyValidator.php opt/app/vendor/league/csv/src/MapIterator.php
opt/app/vendor/league/csv/src/Plugin/ForbiddenNullValuesValidator.php opt/app/vendor/league/csv/src/RFC4180Field.php
opt/app/vendor/league/csv/src/Plugin/SkipNullValuesFormatter.php
opt/app/vendor/league/csv/src/Reader.php opt/app/vendor/league/csv/src/Reader.php
opt/app/vendor/league/csv/src/ResultSet.php
opt/app/vendor/league/csv/src/Statement.php
opt/app/vendor/league/csv/src/Stream.php
opt/app/vendor/league/csv/src/Writer.php opt/app/vendor/league/csv/src/Writer.php
opt/app/vendor/league/csv/src/XMLConverter.php
opt/app/vendor/league/csv/src/functions.php
opt/app/vendor/league/csv/src/functions_include.php
opt/app/vendor/league/flysystem/LICENSE opt/app/vendor/league/flysystem/LICENSE
opt/app/vendor/league/flysystem/composer.json opt/app/vendor/league/flysystem/composer.json
opt/app/vendor/league/flysystem/docs/CNAME opt/app/vendor/league/flysystem/docs/CNAME
@ -3229,6 +3268,31 @@ opt/app/vendor/nesbot/carbon/src/Carbon/Lang/uz.php
opt/app/vendor/nesbot/carbon/src/Carbon/Lang/vi.php opt/app/vendor/nesbot/carbon/src/Carbon/Lang/vi.php
opt/app/vendor/nesbot/carbon/src/Carbon/Lang/zh.php opt/app/vendor/nesbot/carbon/src/Carbon/Lang/zh.php
opt/app/vendor/nesbot/carbon/src/Carbon/Lang/zh_TW.php opt/app/vendor/nesbot/carbon/src/Carbon/Lang/zh_TW.php
opt/app/vendor/paragonie/constant_time_encoding/LICENSE.txt
opt/app/vendor/paragonie/constant_time_encoding/README.md
opt/app/vendor/paragonie/constant_time_encoding/composer.json
opt/app/vendor/paragonie/constant_time_encoding/phpunit.xml.dist
opt/app/vendor/paragonie/constant_time_encoding/psalm.xml
opt/app/vendor/paragonie/constant_time_encoding/src/Base32.php
opt/app/vendor/paragonie/constant_time_encoding/src/Base32Hex.php
opt/app/vendor/paragonie/constant_time_encoding/src/Base64.php
opt/app/vendor/paragonie/constant_time_encoding/src/Base64DotSlash.php
opt/app/vendor/paragonie/constant_time_encoding/src/Base64DotSlashOrdered.php
opt/app/vendor/paragonie/constant_time_encoding/src/Base64UrlSafe.php
opt/app/vendor/paragonie/constant_time_encoding/src/Binary.php
opt/app/vendor/paragonie/constant_time_encoding/src/EncoderInterface.php
opt/app/vendor/paragonie/constant_time_encoding/src/Encoding.php
opt/app/vendor/paragonie/constant_time_encoding/src/Hex.php
opt/app/vendor/paragonie/constant_time_encoding/src/RFC4648.php
opt/app/vendor/paragonie/constant_time_encoding/tests/Base32HexTest.php
opt/app/vendor/paragonie/constant_time_encoding/tests/Base32Test.php
opt/app/vendor/paragonie/constant_time_encoding/tests/Base64DotSlashOrderedTest.php
opt/app/vendor/paragonie/constant_time_encoding/tests/Base64DotSlashTest.php
opt/app/vendor/paragonie/constant_time_encoding/tests/Base64Test.php
opt/app/vendor/paragonie/constant_time_encoding/tests/Base64UrlSafeTest.php
opt/app/vendor/paragonie/constant_time_encoding/tests/EncodingTest.php
opt/app/vendor/paragonie/constant_time_encoding/tests/HexTest.php
opt/app/vendor/paragonie/constant_time_encoding/tests/RFC4648Test.php
opt/app/vendor/paragonie/random_compat/LICENSE opt/app/vendor/paragonie/random_compat/LICENSE
opt/app/vendor/paragonie/random_compat/build-phar.sh opt/app/vendor/paragonie/random_compat/build-phar.sh
opt/app/vendor/paragonie/random_compat/composer.json opt/app/vendor/paragonie/random_compat/composer.json
@ -3247,19 +3311,45 @@ opt/app/vendor/paragonie/random_compat/lib/random_int.php
opt/app/vendor/paragonie/random_compat/other/build_phar.php opt/app/vendor/paragonie/random_compat/other/build_phar.php
opt/app/vendor/paragonie/random_compat/psalm-autoload.php opt/app/vendor/paragonie/random_compat/psalm-autoload.php
opt/app/vendor/paragonie/random_compat/psalm.xml opt/app/vendor/paragonie/random_compat/psalm.xml
opt/app/vendor/pragmarx/google2fa-laravel/LICENSE
opt/app/vendor/pragmarx/google2fa-laravel/changelog.md
opt/app/vendor/pragmarx/google2fa-laravel/composer.json
opt/app/vendor/pragmarx/google2fa-laravel/docs/middleware.jpg
opt/app/vendor/pragmarx/google2fa-laravel/phpspec.yml
opt/app/vendor/pragmarx/google2fa-laravel/readme.md
opt/app/vendor/pragmarx/google2fa-laravel/src/Events/OneTimePasswordRequested.php
opt/app/vendor/pragmarx/google2fa-laravel/src/Exceptions/InvalidOneTimePassword.php
opt/app/vendor/pragmarx/google2fa-laravel/src/Exceptions/InvalidSecretKey.php
opt/app/vendor/pragmarx/google2fa-laravel/src/Facade.php
opt/app/vendor/pragmarx/google2fa-laravel/src/Middleware.php
opt/app/vendor/pragmarx/google2fa-laravel/src/ServiceProvider.php
opt/app/vendor/pragmarx/google2fa-laravel/src/Support/Auth.php
opt/app/vendor/pragmarx/google2fa-laravel/src/Support/Authenticator.php
opt/app/vendor/pragmarx/google2fa-laravel/src/Support/Config.php
opt/app/vendor/pragmarx/google2fa-laravel/src/Support/Constants.php
opt/app/vendor/pragmarx/google2fa-laravel/src/Support/ErrorBag.php
opt/app/vendor/pragmarx/google2fa-laravel/src/Support/Input.php
opt/app/vendor/pragmarx/google2fa-laravel/src/Support/Request.php
opt/app/vendor/pragmarx/google2fa-laravel/src/Support/Response.php
opt/app/vendor/pragmarx/google2fa-laravel/src/Support/Session.php
opt/app/vendor/pragmarx/google2fa-laravel/src/config/config.php
opt/app/vendor/pragmarx/google2fa-laravel/tests/spec/Support/AuthenticatorSpec.php
opt/app/vendor/pragmarx/google2fa-laravel/upgrading.md
opt/app/vendor/pragmarx/google2fa/LICENSE opt/app/vendor/pragmarx/google2fa/LICENSE
opt/app/vendor/pragmarx/google2fa/changelog.md opt/app/vendor/pragmarx/google2fa/changelog.md
opt/app/vendor/pragmarx/google2fa/composer.json opt/app/vendor/pragmarx/google2fa/composer.json
opt/app/vendor/pragmarx/google2fa/phpspec.yml opt/app/vendor/pragmarx/google2fa/docs/playground.jpg
opt/app/vendor/pragmarx/google2fa/readme.md opt/app/vendor/pragmarx/google2fa/readme.md
opt/app/vendor/pragmarx/google2fa/src/Contracts/Google2FA.php opt/app/vendor/pragmarx/google2fa/src/Exceptions/IncompatibleWithGoogleAuthenticatorException.php
opt/app/vendor/pragmarx/google2fa/src/Exceptions/InvalidCharactersException.php opt/app/vendor/pragmarx/google2fa/src/Exceptions/InvalidCharactersException.php
opt/app/vendor/pragmarx/google2fa/src/Exceptions/SecretKeyTooShortException.php opt/app/vendor/pragmarx/google2fa/src/Exceptions/SecretKeyTooShortException.php
opt/app/vendor/pragmarx/google2fa/src/Google2FA.php opt/app/vendor/pragmarx/google2fa/src/Google2FA.php
opt/app/vendor/pragmarx/google2fa/src/Support/Base32.php
opt/app/vendor/pragmarx/google2fa/src/Support/Constants.php
opt/app/vendor/pragmarx/google2fa/src/Support/QRCode.php
opt/app/vendor/pragmarx/google2fa/src/Support/Url.php opt/app/vendor/pragmarx/google2fa/src/Support/Url.php
opt/app/vendor/pragmarx/google2fa/src/Vendor/Laravel/Facade.php opt/app/vendor/pragmarx/google2fa/tests/Google2FATest.php
opt/app/vendor/pragmarx/google2fa/src/Vendor/Laravel/ServiceProvider.php opt/app/vendor/pragmarx/google2fa/tests/bootstrap.php
opt/app/vendor/pragmarx/google2fa/tests/spec/Google2FASpec.php
opt/app/vendor/pragmarx/google2fa/upgrading.md opt/app/vendor/pragmarx/google2fa/upgrading.md
opt/app/vendor/psr/container/LICENSE opt/app/vendor/psr/container/LICENSE
opt/app/vendor/psr/container/README.md opt/app/vendor/psr/container/README.md
@ -4245,10 +4335,11 @@ opt/app/vendor/symfony/debug/Tests/Fixtures/reallyNotPsr0.php
opt/app/vendor/symfony/debug/Tests/Fixtures2/RequiredTwice.php opt/app/vendor/symfony/debug/Tests/Fixtures2/RequiredTwice.php
opt/app/vendor/symfony/debug/Tests/HeaderMock.php opt/app/vendor/symfony/debug/Tests/HeaderMock.php
opt/app/vendor/symfony/debug/Tests/MockExceptionHandler.php opt/app/vendor/symfony/debug/Tests/MockExceptionHandler.php
opt/app/vendor/symfony/debug/Tests/phpt/exception_rethrown.phpt
opt/app/vendor/symfony/debug/Tests/phpt/fatal_with_nested_handlers.phpt
opt/app/vendor/symfony/debug/composer.json opt/app/vendor/symfony/debug/composer.json
opt/app/vendor/symfony/debug/phpunit.xml.dist opt/app/vendor/symfony/debug/phpunit.xml.dist
opt/app/vendor/symfony/event-dispatcher/CHANGELOG.md opt/app/vendor/symfony/event-dispatcher/CHANGELOG.md
opt/app/vendor/symfony/event-dispatcher/ContainerAwareEventDispatcher.php
opt/app/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php opt/app/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php
opt/app/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcherInterface.php opt/app/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcherInterface.php
opt/app/vendor/symfony/event-dispatcher/Debug/WrappedListener.php opt/app/vendor/symfony/event-dispatcher/Debug/WrappedListener.php
@ -4262,7 +4353,6 @@ opt/app/vendor/symfony/event-dispatcher/ImmutableEventDispatcher.php
opt/app/vendor/symfony/event-dispatcher/LICENSE opt/app/vendor/symfony/event-dispatcher/LICENSE
opt/app/vendor/symfony/event-dispatcher/README.md opt/app/vendor/symfony/event-dispatcher/README.md
opt/app/vendor/symfony/event-dispatcher/Tests/AbstractEventDispatcherTest.php opt/app/vendor/symfony/event-dispatcher/Tests/AbstractEventDispatcherTest.php
opt/app/vendor/symfony/event-dispatcher/Tests/ContainerAwareEventDispatcherTest.php
opt/app/vendor/symfony/event-dispatcher/Tests/Debug/TraceableEventDispatcherTest.php opt/app/vendor/symfony/event-dispatcher/Tests/Debug/TraceableEventDispatcherTest.php
opt/app/vendor/symfony/event-dispatcher/Tests/DependencyInjection/RegisterListenersPassTest.php opt/app/vendor/symfony/event-dispatcher/Tests/DependencyInjection/RegisterListenersPassTest.php
opt/app/vendor/symfony/event-dispatcher/Tests/EventDispatcherTest.php opt/app/vendor/symfony/event-dispatcher/Tests/EventDispatcherTest.php
@ -4453,6 +4543,8 @@ opt/app/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/st
opt/app/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/storage.php opt/app/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/storage.php
opt/app/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_cookie.expected opt/app/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_cookie.expected
opt/app/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_cookie.php opt/app/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_cookie.php
opt/app/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_cookie_and_session.expected
opt/app/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/Fixtures/with_cookie_and_session.php
opt/app/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/MemcacheSessionHandlerTest.php opt/app/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/MemcacheSessionHandlerTest.php
opt/app/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/MemcachedSessionHandlerTest.php opt/app/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/MemcachedSessionHandlerTest.php
opt/app/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/MongoDbSessionHandlerTest.php opt/app/vendor/symfony/http-foundation/Tests/Session/Storage/Handler/MongoDbSessionHandlerTest.php
@ -4529,9 +4621,12 @@ opt/app/vendor/symfony/http-kernel/DependencyInjection/ControllerArgumentValueRe
opt/app/vendor/symfony/http-kernel/DependencyInjection/Extension.php opt/app/vendor/symfony/http-kernel/DependencyInjection/Extension.php
opt/app/vendor/symfony/http-kernel/DependencyInjection/FragmentRendererPass.php opt/app/vendor/symfony/http-kernel/DependencyInjection/FragmentRendererPass.php
opt/app/vendor/symfony/http-kernel/DependencyInjection/LazyLoadingFragmentHandler.php opt/app/vendor/symfony/http-kernel/DependencyInjection/LazyLoadingFragmentHandler.php
opt/app/vendor/symfony/http-kernel/DependencyInjection/LoggerPass.php
opt/app/vendor/symfony/http-kernel/DependencyInjection/MergeExtensionConfigurationPass.php opt/app/vendor/symfony/http-kernel/DependencyInjection/MergeExtensionConfigurationPass.php
opt/app/vendor/symfony/http-kernel/DependencyInjection/RegisterControllerArgumentLocatorsPass.php opt/app/vendor/symfony/http-kernel/DependencyInjection/RegisterControllerArgumentLocatorsPass.php
opt/app/vendor/symfony/http-kernel/DependencyInjection/RemoveEmptyControllerArgumentLocatorsPass.php opt/app/vendor/symfony/http-kernel/DependencyInjection/RemoveEmptyControllerArgumentLocatorsPass.php
opt/app/vendor/symfony/http-kernel/DependencyInjection/ResettableServicePass.php
opt/app/vendor/symfony/http-kernel/DependencyInjection/ServicesResetter.php
opt/app/vendor/symfony/http-kernel/Event/FilterControllerArgumentsEvent.php opt/app/vendor/symfony/http-kernel/Event/FilterControllerArgumentsEvent.php
opt/app/vendor/symfony/http-kernel/Event/FilterControllerEvent.php opt/app/vendor/symfony/http-kernel/Event/FilterControllerEvent.php
opt/app/vendor/symfony/http-kernel/Event/FilterResponseEvent.php opt/app/vendor/symfony/http-kernel/Event/FilterResponseEvent.php
@ -4600,11 +4695,14 @@ opt/app/vendor/symfony/http-kernel/KernelEvents.php
opt/app/vendor/symfony/http-kernel/KernelInterface.php opt/app/vendor/symfony/http-kernel/KernelInterface.php
opt/app/vendor/symfony/http-kernel/LICENSE opt/app/vendor/symfony/http-kernel/LICENSE
opt/app/vendor/symfony/http-kernel/Log/DebugLoggerInterface.php opt/app/vendor/symfony/http-kernel/Log/DebugLoggerInterface.php
opt/app/vendor/symfony/http-kernel/Log/Logger.php
opt/app/vendor/symfony/http-kernel/Profiler/FileProfilerStorage.php opt/app/vendor/symfony/http-kernel/Profiler/FileProfilerStorage.php
opt/app/vendor/symfony/http-kernel/Profiler/Profile.php opt/app/vendor/symfony/http-kernel/Profiler/Profile.php
opt/app/vendor/symfony/http-kernel/Profiler/Profiler.php opt/app/vendor/symfony/http-kernel/Profiler/Profiler.php
opt/app/vendor/symfony/http-kernel/Profiler/ProfilerStorageInterface.php opt/app/vendor/symfony/http-kernel/Profiler/ProfilerStorageInterface.php
opt/app/vendor/symfony/http-kernel/README.md opt/app/vendor/symfony/http-kernel/README.md
opt/app/vendor/symfony/http-kernel/RebootableInterface.php
opt/app/vendor/symfony/http-kernel/Resources/welcome.html.php
opt/app/vendor/symfony/http-kernel/TerminableInterface.php opt/app/vendor/symfony/http-kernel/TerminableInterface.php
opt/app/vendor/symfony/http-kernel/Tests/Bundle/BundleTest.php opt/app/vendor/symfony/http-kernel/Tests/Bundle/BundleTest.php
opt/app/vendor/symfony/http-kernel/Tests/CacheClearer/ChainCacheClearerTest.php opt/app/vendor/symfony/http-kernel/Tests/CacheClearer/ChainCacheClearerTest.php
@ -4614,11 +4712,13 @@ opt/app/vendor/symfony/http-kernel/Tests/CacheWarmer/CacheWarmerTest.php
opt/app/vendor/symfony/http-kernel/Tests/ClientTest.php opt/app/vendor/symfony/http-kernel/Tests/ClientTest.php
opt/app/vendor/symfony/http-kernel/Tests/Config/EnvParametersResourceTest.php opt/app/vendor/symfony/http-kernel/Tests/Config/EnvParametersResourceTest.php
opt/app/vendor/symfony/http-kernel/Tests/Config/FileLocatorTest.php opt/app/vendor/symfony/http-kernel/Tests/Config/FileLocatorTest.php
opt/app/vendor/symfony/http-kernel/Tests/Controller/ArgumentResolver/ServiceValueResolverTest.php
opt/app/vendor/symfony/http-kernel/Tests/Controller/ArgumentResolverTest.php opt/app/vendor/symfony/http-kernel/Tests/Controller/ArgumentResolverTest.php
opt/app/vendor/symfony/http-kernel/Tests/Controller/ContainerControllerResolverTest.php opt/app/vendor/symfony/http-kernel/Tests/Controller/ContainerControllerResolverTest.php
opt/app/vendor/symfony/http-kernel/Tests/Controller/ControllerResolverTest.php opt/app/vendor/symfony/http-kernel/Tests/Controller/ControllerResolverTest.php
opt/app/vendor/symfony/http-kernel/Tests/ControllerMetadata/ArgumentMetadataFactoryTest.php opt/app/vendor/symfony/http-kernel/Tests/ControllerMetadata/ArgumentMetadataFactoryTest.php
opt/app/vendor/symfony/http-kernel/Tests/ControllerMetadata/ArgumentMetadataTest.php opt/app/vendor/symfony/http-kernel/Tests/ControllerMetadata/ArgumentMetadataTest.php
opt/app/vendor/symfony/http-kernel/Tests/DataCollector/Compiler.log
opt/app/vendor/symfony/http-kernel/Tests/DataCollector/ConfigDataCollectorTest.php opt/app/vendor/symfony/http-kernel/Tests/DataCollector/ConfigDataCollectorTest.php
opt/app/vendor/symfony/http-kernel/Tests/DataCollector/DataCollectorTest.php opt/app/vendor/symfony/http-kernel/Tests/DataCollector/DataCollectorTest.php
opt/app/vendor/symfony/http-kernel/Tests/DataCollector/DumpDataCollectorTest.php opt/app/vendor/symfony/http-kernel/Tests/DataCollector/DumpDataCollectorTest.php
@ -4634,9 +4734,13 @@ opt/app/vendor/symfony/http-kernel/Tests/DependencyInjection/AddAnnotatedClasses
opt/app/vendor/symfony/http-kernel/Tests/DependencyInjection/ControllerArgumentValueResolverPassTest.php opt/app/vendor/symfony/http-kernel/Tests/DependencyInjection/ControllerArgumentValueResolverPassTest.php
opt/app/vendor/symfony/http-kernel/Tests/DependencyInjection/FragmentRendererPassTest.php opt/app/vendor/symfony/http-kernel/Tests/DependencyInjection/FragmentRendererPassTest.php
opt/app/vendor/symfony/http-kernel/Tests/DependencyInjection/LazyLoadingFragmentHandlerTest.php opt/app/vendor/symfony/http-kernel/Tests/DependencyInjection/LazyLoadingFragmentHandlerTest.php
opt/app/vendor/symfony/http-kernel/Tests/DependencyInjection/LoggerPassTest.php
opt/app/vendor/symfony/http-kernel/Tests/DependencyInjection/MergeExtensionConfigurationPassTest.php opt/app/vendor/symfony/http-kernel/Tests/DependencyInjection/MergeExtensionConfigurationPassTest.php
opt/app/vendor/symfony/http-kernel/Tests/DependencyInjection/RegisterControllerArgumentLocatorsPassTest.php opt/app/vendor/symfony/http-kernel/Tests/DependencyInjection/RegisterControllerArgumentLocatorsPassTest.php
opt/app/vendor/symfony/http-kernel/Tests/DependencyInjection/RemoveEmptyControllerArgumentLocatorsPassTest.php opt/app/vendor/symfony/http-kernel/Tests/DependencyInjection/RemoveEmptyControllerArgumentLocatorsPassTest.php
opt/app/vendor/symfony/http-kernel/Tests/DependencyInjection/ResettableServicePassTest.php
opt/app/vendor/symfony/http-kernel/Tests/DependencyInjection/ServicesResetterTest.php
opt/app/vendor/symfony/http-kernel/Tests/Event/FilterControllerArgumentsEventTest.php
opt/app/vendor/symfony/http-kernel/Tests/Event/GetResponseForExceptionEventTest.php opt/app/vendor/symfony/http-kernel/Tests/Event/GetResponseForExceptionEventTest.php
opt/app/vendor/symfony/http-kernel/Tests/EventListener/AddRequestFormatsListenerTest.php opt/app/vendor/symfony/http-kernel/Tests/EventListener/AddRequestFormatsListenerTest.php
opt/app/vendor/symfony/http-kernel/Tests/EventListener/DebugHandlersListenerTest.php opt/app/vendor/symfony/http-kernel/Tests/EventListener/DebugHandlersListenerTest.php
@ -4676,6 +4780,7 @@ opt/app/vendor/symfony/http-kernel/Tests/Fixtures/Bundle1Bundle/foo.txt
opt/app/vendor/symfony/http-kernel/Tests/Fixtures/Bundle2Bundle/foo.txt opt/app/vendor/symfony/http-kernel/Tests/Fixtures/Bundle2Bundle/foo.txt
opt/app/vendor/symfony/http-kernel/Tests/Fixtures/ChildBundle/Resources/foo.txt opt/app/vendor/symfony/http-kernel/Tests/Fixtures/ChildBundle/Resources/foo.txt
opt/app/vendor/symfony/http-kernel/Tests/Fixtures/ChildBundle/Resources/hide.txt opt/app/vendor/symfony/http-kernel/Tests/Fixtures/ChildBundle/Resources/hide.txt
opt/app/vendor/symfony/http-kernel/Tests/Fixtures/ClearableService.php
opt/app/vendor/symfony/http-kernel/Tests/Fixtures/Controller/BasicTypesController.php opt/app/vendor/symfony/http-kernel/Tests/Fixtures/Controller/BasicTypesController.php
opt/app/vendor/symfony/http-kernel/Tests/Fixtures/Controller/ExtendingRequest.php opt/app/vendor/symfony/http-kernel/Tests/Fixtures/Controller/ExtendingRequest.php
opt/app/vendor/symfony/http-kernel/Tests/Fixtures/Controller/ExtendingSession.php opt/app/vendor/symfony/http-kernel/Tests/Fixtures/Controller/ExtendingSession.php
@ -4694,6 +4799,7 @@ opt/app/vendor/symfony/http-kernel/Tests/Fixtures/ExtensionPresentBundle/Extensi
opt/app/vendor/symfony/http-kernel/Tests/Fixtures/KernelForOverrideName.php opt/app/vendor/symfony/http-kernel/Tests/Fixtures/KernelForOverrideName.php
opt/app/vendor/symfony/http-kernel/Tests/Fixtures/KernelForTest.php opt/app/vendor/symfony/http-kernel/Tests/Fixtures/KernelForTest.php
opt/app/vendor/symfony/http-kernel/Tests/Fixtures/KernelWithoutBundles.php opt/app/vendor/symfony/http-kernel/Tests/Fixtures/KernelWithoutBundles.php
opt/app/vendor/symfony/http-kernel/Tests/Fixtures/ResettableService.php
opt/app/vendor/symfony/http-kernel/Tests/Fixtures/Resources/BaseBundle/hide.txt opt/app/vendor/symfony/http-kernel/Tests/Fixtures/Resources/BaseBundle/hide.txt
opt/app/vendor/symfony/http-kernel/Tests/Fixtures/Resources/Bundle1Bundle/foo.txt opt/app/vendor/symfony/http-kernel/Tests/Fixtures/Resources/Bundle1Bundle/foo.txt
opt/app/vendor/symfony/http-kernel/Tests/Fixtures/Resources/ChildBundle/foo.txt opt/app/vendor/symfony/http-kernel/Tests/Fixtures/Resources/ChildBundle/foo.txt
@ -4716,6 +4822,7 @@ opt/app/vendor/symfony/http-kernel/Tests/HttpCache/TestHttpKernel.php
opt/app/vendor/symfony/http-kernel/Tests/HttpCache/TestMultipleHttpKernel.php opt/app/vendor/symfony/http-kernel/Tests/HttpCache/TestMultipleHttpKernel.php
opt/app/vendor/symfony/http-kernel/Tests/HttpKernelTest.php opt/app/vendor/symfony/http-kernel/Tests/HttpKernelTest.php
opt/app/vendor/symfony/http-kernel/Tests/KernelTest.php opt/app/vendor/symfony/http-kernel/Tests/KernelTest.php
opt/app/vendor/symfony/http-kernel/Tests/Log/LoggerTest.php
opt/app/vendor/symfony/http-kernel/Tests/Logger.php opt/app/vendor/symfony/http-kernel/Tests/Logger.php
opt/app/vendor/symfony/http-kernel/Tests/Profiler/FileProfilerStorageTest.php opt/app/vendor/symfony/http-kernel/Tests/Profiler/FileProfilerStorageTest.php
opt/app/vendor/symfony/http-kernel/Tests/Profiler/ProfilerTest.php opt/app/vendor/symfony/http-kernel/Tests/Profiler/ProfilerTest.php
@ -5297,6 +5404,7 @@ opt/app/vendor/twig/twig/lib/Twig/Cache/Null.php
opt/app/vendor/twig/twig/lib/Twig/CacheInterface.php opt/app/vendor/twig/twig/lib/Twig/CacheInterface.php
opt/app/vendor/twig/twig/lib/Twig/Compiler.php opt/app/vendor/twig/twig/lib/Twig/Compiler.php
opt/app/vendor/twig/twig/lib/Twig/CompilerInterface.php opt/app/vendor/twig/twig/lib/Twig/CompilerInterface.php
opt/app/vendor/twig/twig/lib/Twig/ContainerRuntimeLoader.php
opt/app/vendor/twig/twig/lib/Twig/Environment.php opt/app/vendor/twig/twig/lib/Twig/Environment.php
opt/app/vendor/twig/twig/lib/Twig/Error.php opt/app/vendor/twig/twig/lib/Twig/Error.php
opt/app/vendor/twig/twig/lib/Twig/Error/Loader.php opt/app/vendor/twig/twig/lib/Twig/Error/Loader.php
@ -5417,6 +5525,7 @@ opt/app/vendor/twig/twig/lib/Twig/Node/SetTemp.php
opt/app/vendor/twig/twig/lib/Twig/Node/Spaceless.php opt/app/vendor/twig/twig/lib/Twig/Node/Spaceless.php
opt/app/vendor/twig/twig/lib/Twig/Node/Text.php opt/app/vendor/twig/twig/lib/Twig/Node/Text.php
opt/app/vendor/twig/twig/lib/Twig/Node/With.php opt/app/vendor/twig/twig/lib/Twig/Node/With.php
opt/app/vendor/twig/twig/lib/Twig/NodeCaptureInterface.php
opt/app/vendor/twig/twig/lib/Twig/NodeInterface.php opt/app/vendor/twig/twig/lib/Twig/NodeInterface.php
opt/app/vendor/twig/twig/lib/Twig/NodeOutputInterface.php opt/app/vendor/twig/twig/lib/Twig/NodeOutputInterface.php
opt/app/vendor/twig/twig/lib/Twig/NodeTraverser.php opt/app/vendor/twig/twig/lib/Twig/NodeTraverser.php
@ -5427,6 +5536,7 @@ opt/app/vendor/twig/twig/lib/Twig/NodeVisitor/Sandbox.php
opt/app/vendor/twig/twig/lib/Twig/NodeVisitorInterface.php opt/app/vendor/twig/twig/lib/Twig/NodeVisitorInterface.php
opt/app/vendor/twig/twig/lib/Twig/Parser.php opt/app/vendor/twig/twig/lib/Twig/Parser.php
opt/app/vendor/twig/twig/lib/Twig/ParserInterface.php opt/app/vendor/twig/twig/lib/Twig/ParserInterface.php
opt/app/vendor/twig/twig/lib/Twig/Profiler/Dumper/Base.php
opt/app/vendor/twig/twig/lib/Twig/Profiler/Dumper/Blackfire.php opt/app/vendor/twig/twig/lib/Twig/Profiler/Dumper/Blackfire.php
opt/app/vendor/twig/twig/lib/Twig/Profiler/Dumper/Html.php opt/app/vendor/twig/twig/lib/Twig/Profiler/Dumper/Html.php
opt/app/vendor/twig/twig/lib/Twig/Profiler/Dumper/Text.php opt/app/vendor/twig/twig/lib/Twig/Profiler/Dumper/Text.php
@ -5486,15 +5596,188 @@ opt/app/vendor/twig/twig/lib/Twig/TokenStream.php
opt/app/vendor/twig/twig/lib/Twig/Util/DeprecationCollector.php opt/app/vendor/twig/twig/lib/Twig/Util/DeprecationCollector.php
opt/app/vendor/twig/twig/lib/Twig/Util/TemplateDirIterator.php opt/app/vendor/twig/twig/lib/Twig/Util/TemplateDirIterator.php
opt/app/vendor/twig/twig/phpunit.xml.dist opt/app/vendor/twig/twig/phpunit.xml.dist
opt/app/vendor/twig/twig/src/Cache/CacheInterface.php
opt/app/vendor/twig/twig/src/Cache/FilesystemCache.php
opt/app/vendor/twig/twig/src/Cache/NullCache.php
opt/app/vendor/twig/twig/src/Compiler.php
opt/app/vendor/twig/twig/src/Environment.php
opt/app/vendor/twig/twig/src/Error/Error.php
opt/app/vendor/twig/twig/src/Error/LoaderError.php
opt/app/vendor/twig/twig/src/Error/RuntimeError.php
opt/app/vendor/twig/twig/src/Error/SyntaxError.php
opt/app/vendor/twig/twig/src/ExpressionParser.php
opt/app/vendor/twig/twig/src/Extension/AbstractExtension.php
opt/app/vendor/twig/twig/src/Extension/CoreExtension.php
opt/app/vendor/twig/twig/src/Extension/DebugExtension.php
opt/app/vendor/twig/twig/src/Extension/EscaperExtension.php
opt/app/vendor/twig/twig/src/Extension/ExtensionInterface.php
opt/app/vendor/twig/twig/src/Extension/GlobalsInterface.php
opt/app/vendor/twig/twig/src/Extension/InitRuntimeInterface.php
opt/app/vendor/twig/twig/src/Extension/OptimizerExtension.php
opt/app/vendor/twig/twig/src/Extension/ProfilerExtension.php
opt/app/vendor/twig/twig/src/Extension/RuntimeExtensionInterface.php
opt/app/vendor/twig/twig/src/Extension/SandboxExtension.php
opt/app/vendor/twig/twig/src/Extension/StagingExtension.php
opt/app/vendor/twig/twig/src/Extension/StringLoaderExtension.php
opt/app/vendor/twig/twig/src/FileExtensionEscapingStrategy.php
opt/app/vendor/twig/twig/src/Lexer.php
opt/app/vendor/twig/twig/src/Loader/ArrayLoader.php
opt/app/vendor/twig/twig/src/Loader/ChainLoader.php
opt/app/vendor/twig/twig/src/Loader/ExistsLoaderInterface.php
opt/app/vendor/twig/twig/src/Loader/FilesystemLoader.php
opt/app/vendor/twig/twig/src/Loader/LoaderInterface.php
opt/app/vendor/twig/twig/src/Loader/SourceContextLoaderInterface.php
opt/app/vendor/twig/twig/src/Markup.php
opt/app/vendor/twig/twig/src/Node/AutoEscapeNode.php
opt/app/vendor/twig/twig/src/Node/BlockNode.php
opt/app/vendor/twig/twig/src/Node/BlockReferenceNode.php
opt/app/vendor/twig/twig/src/Node/BodyNode.php
opt/app/vendor/twig/twig/src/Node/CheckSecurityNode.php
opt/app/vendor/twig/twig/src/Node/DoNode.php
opt/app/vendor/twig/twig/src/Node/EmbedNode.php
opt/app/vendor/twig/twig/src/Node/Expression/AbstractExpression.php
opt/app/vendor/twig/twig/src/Node/Expression/ArrayExpression.php
opt/app/vendor/twig/twig/src/Node/Expression/AssignNameExpression.php
opt/app/vendor/twig/twig/src/Node/Expression/Binary/AbstractBinary.php
opt/app/vendor/twig/twig/src/Node/Expression/Binary/AddBinary.php
opt/app/vendor/twig/twig/src/Node/Expression/Binary/AndBinary.php
opt/app/vendor/twig/twig/src/Node/Expression/Binary/BitwiseAndBinary.php
opt/app/vendor/twig/twig/src/Node/Expression/Binary/BitwiseOrBinary.php
opt/app/vendor/twig/twig/src/Node/Expression/Binary/BitwiseXorBinary.php
opt/app/vendor/twig/twig/src/Node/Expression/Binary/ConcatBinary.php
opt/app/vendor/twig/twig/src/Node/Expression/Binary/DivBinary.php
opt/app/vendor/twig/twig/src/Node/Expression/Binary/EndsWithBinary.php
opt/app/vendor/twig/twig/src/Node/Expression/Binary/EqualBinary.php
opt/app/vendor/twig/twig/src/Node/Expression/Binary/FloorDivBinary.php
opt/app/vendor/twig/twig/src/Node/Expression/Binary/GreaterBinary.php
opt/app/vendor/twig/twig/src/Node/Expression/Binary/GreaterEqualBinary.php
opt/app/vendor/twig/twig/src/Node/Expression/Binary/InBinary.php
opt/app/vendor/twig/twig/src/Node/Expression/Binary/LessBinary.php
opt/app/vendor/twig/twig/src/Node/Expression/Binary/LessEqualBinary.php
opt/app/vendor/twig/twig/src/Node/Expression/Binary/MatchesBinary.php
opt/app/vendor/twig/twig/src/Node/Expression/Binary/ModBinary.php
opt/app/vendor/twig/twig/src/Node/Expression/Binary/MulBinary.php
opt/app/vendor/twig/twig/src/Node/Expression/Binary/NotEqualBinary.php
opt/app/vendor/twig/twig/src/Node/Expression/Binary/NotInBinary.php
opt/app/vendor/twig/twig/src/Node/Expression/Binary/OrBinary.php
opt/app/vendor/twig/twig/src/Node/Expression/Binary/PowerBinary.php
opt/app/vendor/twig/twig/src/Node/Expression/Binary/RangeBinary.php
opt/app/vendor/twig/twig/src/Node/Expression/Binary/StartsWithBinary.php
opt/app/vendor/twig/twig/src/Node/Expression/Binary/SubBinary.php
opt/app/vendor/twig/twig/src/Node/Expression/BlockReferenceExpression.php
opt/app/vendor/twig/twig/src/Node/Expression/CallExpression.php
opt/app/vendor/twig/twig/src/Node/Expression/ConditionalExpression.php
opt/app/vendor/twig/twig/src/Node/Expression/ConstantExpression.php
opt/app/vendor/twig/twig/src/Node/Expression/Filter/DefaultFilter.php
opt/app/vendor/twig/twig/src/Node/Expression/FilterExpression.php
opt/app/vendor/twig/twig/src/Node/Expression/FunctionExpression.php
opt/app/vendor/twig/twig/src/Node/Expression/GetAttrExpression.php
opt/app/vendor/twig/twig/src/Node/Expression/MethodCallExpression.php
opt/app/vendor/twig/twig/src/Node/Expression/NameExpression.php
opt/app/vendor/twig/twig/src/Node/Expression/NullCoalesceExpression.php
opt/app/vendor/twig/twig/src/Node/Expression/ParentExpression.php
opt/app/vendor/twig/twig/src/Node/Expression/TempNameExpression.php
opt/app/vendor/twig/twig/src/Node/Expression/Test/ConstantTest.php
opt/app/vendor/twig/twig/src/Node/Expression/Test/DefinedTest.php
opt/app/vendor/twig/twig/src/Node/Expression/Test/DivisiblebyTest.php
opt/app/vendor/twig/twig/src/Node/Expression/Test/EvenTest.php
opt/app/vendor/twig/twig/src/Node/Expression/Test/NullTest.php
opt/app/vendor/twig/twig/src/Node/Expression/Test/OddTest.php
opt/app/vendor/twig/twig/src/Node/Expression/Test/SameasTest.php
opt/app/vendor/twig/twig/src/Node/Expression/TestExpression.php
opt/app/vendor/twig/twig/src/Node/Expression/Unary/AbstractUnary.php
opt/app/vendor/twig/twig/src/Node/Expression/Unary/NegUnary.php
opt/app/vendor/twig/twig/src/Node/Expression/Unary/NotUnary.php
opt/app/vendor/twig/twig/src/Node/Expression/Unary/PosUnary.php
opt/app/vendor/twig/twig/src/Node/FlushNode.php
opt/app/vendor/twig/twig/src/Node/ForLoopNode.php
opt/app/vendor/twig/twig/src/Node/ForNode.php
opt/app/vendor/twig/twig/src/Node/IfNode.php
opt/app/vendor/twig/twig/src/Node/ImportNode.php
opt/app/vendor/twig/twig/src/Node/IncludeNode.php
opt/app/vendor/twig/twig/src/Node/MacroNode.php
opt/app/vendor/twig/twig/src/Node/ModuleNode.php
opt/app/vendor/twig/twig/src/Node/Node.php
opt/app/vendor/twig/twig/src/Node/NodeCaptureInterface.php
opt/app/vendor/twig/twig/src/Node/NodeOutputInterface.php
opt/app/vendor/twig/twig/src/Node/PrintNode.php
opt/app/vendor/twig/twig/src/Node/SandboxNode.php
opt/app/vendor/twig/twig/src/Node/SandboxedPrintNode.php
opt/app/vendor/twig/twig/src/Node/SetNode.php
opt/app/vendor/twig/twig/src/Node/SetTempNode.php
opt/app/vendor/twig/twig/src/Node/SpacelessNode.php
opt/app/vendor/twig/twig/src/Node/TextNode.php
opt/app/vendor/twig/twig/src/Node/WithNode.php
opt/app/vendor/twig/twig/src/NodeTraverser.php
opt/app/vendor/twig/twig/src/NodeVisitor/AbstractNodeVisitor.php
opt/app/vendor/twig/twig/src/NodeVisitor/EscaperNodeVisitor.php
opt/app/vendor/twig/twig/src/NodeVisitor/NodeVisitorInterface.php
opt/app/vendor/twig/twig/src/NodeVisitor/OptimizerNodeVisitor.php
opt/app/vendor/twig/twig/src/NodeVisitor/SafeAnalysisNodeVisitor.php
opt/app/vendor/twig/twig/src/NodeVisitor/SandboxNodeVisitor.php
opt/app/vendor/twig/twig/src/Parser.php
opt/app/vendor/twig/twig/src/Profiler/Dumper/BaseDumper.php
opt/app/vendor/twig/twig/src/Profiler/Dumper/BlackfireDumper.php
opt/app/vendor/twig/twig/src/Profiler/Dumper/HtmlDumper.php
opt/app/vendor/twig/twig/src/Profiler/Dumper/TextDumper.php
opt/app/vendor/twig/twig/src/Profiler/Node/EnterProfileNode.php
opt/app/vendor/twig/twig/src/Profiler/Node/LeaveProfileNode.php
opt/app/vendor/twig/twig/src/Profiler/NodeVisitor/ProfilerNodeVisitor.php
opt/app/vendor/twig/twig/src/Profiler/Profile.php
opt/app/vendor/twig/twig/src/RuntimeLoader/ContainerRuntimeLoader.php
opt/app/vendor/twig/twig/src/RuntimeLoader/FactoryRuntimeLoader.php
opt/app/vendor/twig/twig/src/RuntimeLoader/RuntimeLoaderInterface.php
opt/app/vendor/twig/twig/src/Sandbox/SecurityError.php
opt/app/vendor/twig/twig/src/Sandbox/SecurityNotAllowedFilterError.php
opt/app/vendor/twig/twig/src/Sandbox/SecurityNotAllowedFunctionError.php
opt/app/vendor/twig/twig/src/Sandbox/SecurityNotAllowedMethodError.php
opt/app/vendor/twig/twig/src/Sandbox/SecurityNotAllowedPropertyError.php
opt/app/vendor/twig/twig/src/Sandbox/SecurityNotAllowedTagError.php
opt/app/vendor/twig/twig/src/Sandbox/SecurityPolicy.php
opt/app/vendor/twig/twig/src/Sandbox/SecurityPolicyInterface.php
opt/app/vendor/twig/twig/src/Source.php
opt/app/vendor/twig/twig/src/Template.php
opt/app/vendor/twig/twig/src/TemplateWrapper.php
opt/app/vendor/twig/twig/src/Test/IntegrationTestCase.php
opt/app/vendor/twig/twig/src/Test/NodeTestCase.php
opt/app/vendor/twig/twig/src/Token.php
opt/app/vendor/twig/twig/src/TokenParser/AbstractTokenParser.php
opt/app/vendor/twig/twig/src/TokenParser/AutoEscapeTokenParser.php
opt/app/vendor/twig/twig/src/TokenParser/BlockTokenParser.php
opt/app/vendor/twig/twig/src/TokenParser/DoTokenParser.php
opt/app/vendor/twig/twig/src/TokenParser/EmbedTokenParser.php
opt/app/vendor/twig/twig/src/TokenParser/ExtendsTokenParser.php
opt/app/vendor/twig/twig/src/TokenParser/FilterTokenParser.php
opt/app/vendor/twig/twig/src/TokenParser/FlushTokenParser.php
opt/app/vendor/twig/twig/src/TokenParser/ForTokenParser.php
opt/app/vendor/twig/twig/src/TokenParser/FromTokenParser.php
opt/app/vendor/twig/twig/src/TokenParser/IfTokenParser.php
opt/app/vendor/twig/twig/src/TokenParser/ImportTokenParser.php
opt/app/vendor/twig/twig/src/TokenParser/IncludeTokenParser.php
opt/app/vendor/twig/twig/src/TokenParser/MacroTokenParser.php
opt/app/vendor/twig/twig/src/TokenParser/SandboxTokenParser.php
opt/app/vendor/twig/twig/src/TokenParser/SetTokenParser.php
opt/app/vendor/twig/twig/src/TokenParser/SpacelessTokenParser.php
opt/app/vendor/twig/twig/src/TokenParser/TokenParserInterface.php
opt/app/vendor/twig/twig/src/TokenParser/UseTokenParser.php
opt/app/vendor/twig/twig/src/TokenParser/WithTokenParser.php
opt/app/vendor/twig/twig/src/TokenStream.php
opt/app/vendor/twig/twig/src/TwigFilter.php
opt/app/vendor/twig/twig/src/TwigFunction.php
opt/app/vendor/twig/twig/src/TwigTest.php
opt/app/vendor/twig/twig/src/Util/DeprecationCollector.php
opt/app/vendor/twig/twig/src/Util/TemplateDirIterator.php
opt/app/vendor/twig/twig/test/Twig/Tests/AutoloaderTest.php opt/app/vendor/twig/twig/test/Twig/Tests/AutoloaderTest.php
opt/app/vendor/twig/twig/test/Twig/Tests/Cache/FilesystemTest.php opt/app/vendor/twig/twig/test/Twig/Tests/Cache/FilesystemTest.php
opt/app/vendor/twig/twig/test/Twig/Tests/CompilerTest.php opt/app/vendor/twig/twig/test/Twig/Tests/CompilerTest.php
opt/app/vendor/twig/twig/test/Twig/Tests/ContainerRuntimeLoaderTest.php
opt/app/vendor/twig/twig/test/Twig/Tests/CustomExtensionTest.php opt/app/vendor/twig/twig/test/Twig/Tests/CustomExtensionTest.php
opt/app/vendor/twig/twig/test/Twig/Tests/EnvironmentTest.php opt/app/vendor/twig/twig/test/Twig/Tests/EnvironmentTest.php
opt/app/vendor/twig/twig/test/Twig/Tests/ErrorTest.php opt/app/vendor/twig/twig/test/Twig/Tests/ErrorTest.php
opt/app/vendor/twig/twig/test/Twig/Tests/ExpressionParserTest.php opt/app/vendor/twig/twig/test/Twig/Tests/ExpressionParserTest.php
opt/app/vendor/twig/twig/test/Twig/Tests/Extension/CoreTest.php opt/app/vendor/twig/twig/test/Twig/Tests/Extension/CoreTest.php
opt/app/vendor/twig/twig/test/Twig/Tests/Extension/SandboxTest.php opt/app/vendor/twig/twig/test/Twig/Tests/Extension/SandboxTest.php
opt/app/vendor/twig/twig/test/Twig/Tests/FactoryRuntimeLoaderTest.php
opt/app/vendor/twig/twig/test/Twig/Tests/FileCachingTest.php opt/app/vendor/twig/twig/test/Twig/Tests/FileCachingTest.php
opt/app/vendor/twig/twig/test/Twig/Tests/FileExtensionEscapingStrategyTest.php opt/app/vendor/twig/twig/test/Twig/Tests/FileExtensionEscapingStrategyTest.php
opt/app/vendor/twig/twig/test/Twig/Tests/FilesystemHelper.php opt/app/vendor/twig/twig/test/Twig/Tests/FilesystemHelper.php
@ -5561,6 +5844,7 @@ opt/app/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/default.test
opt/app/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/dynamic_filter.test opt/app/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/dynamic_filter.test
opt/app/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/escape.test opt/app/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/escape.test
opt/app/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/escape_html_attr.test opt/app/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/escape_html_attr.test
opt/app/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/escape_javascript.test
opt/app/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/escape_non_supported_charset.test opt/app/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/escape_non_supported_charset.test
opt/app/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/first.test opt/app/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/first.test
opt/app/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/force_escape.test opt/app/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/force_escape.test
@ -5751,6 +6035,7 @@ opt/app/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/use/multiple_aliases.test
opt/app/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/use/parent_block.test opt/app/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/use/parent_block.test
opt/app/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/use/parent_block2.test opt/app/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/use/parent_block2.test
opt/app/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/use/parent_block3.test opt/app/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/use/parent_block3.test
opt/app/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/use/use_with_parent.test
opt/app/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/verbatim/basic.test opt/app/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/verbatim/basic.test
opt/app/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/verbatim/mixed_usage_with_raw.test opt/app/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/verbatim/mixed_usage_with_raw.test
opt/app/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/verbatim/whitespace_control.test opt/app/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/verbatim/whitespace_control.test
@ -5851,12 +6136,11 @@ opt/app/vendor/twig/twig/test/Twig/Tests/Profiler/Dumper/BlackfireTest.php
opt/app/vendor/twig/twig/test/Twig/Tests/Profiler/Dumper/HtmlTest.php opt/app/vendor/twig/twig/test/Twig/Tests/Profiler/Dumper/HtmlTest.php
opt/app/vendor/twig/twig/test/Twig/Tests/Profiler/Dumper/TextTest.php opt/app/vendor/twig/twig/test/Twig/Tests/Profiler/Dumper/TextTest.php
opt/app/vendor/twig/twig/test/Twig/Tests/Profiler/ProfileTest.php opt/app/vendor/twig/twig/test/Twig/Tests/Profiler/ProfileTest.php
opt/app/vendor/twig/twig/test/Twig/Tests/RuntimeFactoryLoaderTest.php
opt/app/vendor/twig/twig/test/Twig/Tests/TemplateTest.php opt/app/vendor/twig/twig/test/Twig/Tests/TemplateTest.php
opt/app/vendor/twig/twig/test/Twig/Tests/TemplateWrapperTest.php opt/app/vendor/twig/twig/test/Twig/Tests/TemplateWrapperTest.php
opt/app/vendor/twig/twig/test/Twig/Tests/TokenStreamTest.php opt/app/vendor/twig/twig/test/Twig/Tests/TokenStreamTest.php
opt/app/vendor/twig/twig/test/Twig/Tests/Util/DeprecationCollectorTest.php
opt/app/vendor/twig/twig/test/Twig/Tests/escapingTest.php opt/app/vendor/twig/twig/test/Twig/Tests/escapingTest.php
opt/app/vendor/twig/twig/test/bootstrap.php
opt/app/vendor/vlucas/phpdotenv/LICENSE.txt opt/app/vendor/vlucas/phpdotenv/LICENSE.txt
opt/app/vendor/vlucas/phpdotenv/composer.json opt/app/vendor/vlucas/phpdotenv/composer.json
opt/app/vendor/vlucas/phpdotenv/src/Dotenv.php opt/app/vendor/vlucas/phpdotenv/src/Dotenv.php
@ -6010,6 +6294,8 @@ usr/lib/x86_64-linux-gnu/libxml2.so.2
usr/lib/x86_64-linux-gnu/libxml2.so.2.9.1 usr/lib/x86_64-linux-gnu/libxml2.so.2.9.1
usr/lib/x86_64-linux-gnu/libxslt.so.1 usr/lib/x86_64-linux-gnu/libxslt.so.1
usr/lib/x86_64-linux-gnu/libxslt.so.1.1.28 usr/lib/x86_64-linux-gnu/libxslt.so.1.1.28
usr/lib/x86_64-linux-gnu/libzip.so.5
usr/lib/x86_64-linux-gnu/libzip.so.5.0.0
usr/sbin/mysqld usr/sbin/mysqld
usr/sbin/nginx usr/sbin/nginx
usr/sbin/php-fpm7.1 usr/sbin/php-fpm7.1

View File

@ -15,8 +15,8 @@ const pkgdef :Spk.PackageDefinition = (
manifest = ( manifest = (
appTitle = (defaultText = "Firefly III"), appTitle = (defaultText = "Firefly III"),
appVersion = 5, appVersion = 6,
appMarketingVersion = (defaultText = "4.6.11.1"), appMarketingVersion = (defaultText = "4.6.12"),
actions = [ actions = [
# Define your "new document" handlers here. # Define your "new document" handlers here.
@ -41,7 +41,7 @@ const pkgdef :Spk.PackageDefinition = (
market = (png = (dpi1x = embed "app-graphics/firefly-iii-150.png")) market = (png = (dpi1x = embed "app-graphics/firefly-iii-150.png"))
), ),
website = "https://firefly-iii.github.io/", website = "https://firefly-iii.org/",
codeUrl = "https://github.com/firefly-iii/firefly-iii", codeUrl = "https://github.com/firefly-iii/firefly-iii",
license = (openSource = gpl3), license = (openSource = gpl3),
# The license this package is distributed under. See # The license this package is distributed under. See

View File

@ -1,6 +1,7 @@
language: php language: php
php: php:
- 7.1 - 7.1
- 7.2
cache: cache:
directories: directories:
@ -22,7 +23,7 @@ script:
- phpunit -c phpunit.coverage.xml - phpunit -c phpunit.coverage.xml
after_success: after_success:
- travis_retry php vendor/bin/coveralls -x storage/build/clover-all.xml - travis_retry php vendor/bin/php-coveralls -x storage/build/clover-all.xml
# safelist # safelist
branches: branches:

View File

@ -2,6 +2,31 @@
All notable changes to this project will be documented in this file. All notable changes to this project will be documented in this file.
This project adheres to [Semantic Versioning](http://semver.org/). This project adheres to [Semantic Versioning](http://semver.org/).
## [4.6.12] - 2017-12-31
### Added
- Support for Indonesian.
- New report, see [issue 384](https://github.com/firefly-iii/firefly-iii/issues/384)
- [Issue 964](https://github.com/firefly-iii/firefly-iii/issues/964) as suggested by [gavu](https://github.com/gavu)
### Changed
- Greatly improved Docker support and documentation.
### Fixed
- [Issue 1046](https://github.com/firefly-iii/firefly-iii/issues/1046), as reported by [pkoziol](https://github.com/pkoziol)
- [Issue 1047](https://github.com/firefly-iii/firefly-iii/issues/1047), as reported by [pkoziol](https://github.com/pkoziol)
- [Issue 1048](https://github.com/firefly-iii/firefly-iii/issues/1048), as reported by [webence](https://github.com/webence)
- [Issue 1049](https://github.com/firefly-iii/firefly-iii/issues/1049), as reported by [nicoschreiner](https://github.com/nicoschreiner)
- [Issue 1015](https://github.com/firefly-iii/firefly-iii/issues/1015), as reporterd by a user on Tweakers.net
- [Issue 1056](https://github.com/firefly-iii/firefly-iii/issues/1056), as reported by [repercussion](https://github.com/repercussion)
- [Issue 1061](https://github.com/firefly-iii/firefly-iii/issues/1061), as reported by [Meizikyn](https://github.com/Meizikyn)
- [Issue 1045](https://github.com/firefly-iii/firefly-iii/issues/1045), as reported by [gavu](https://github.com/gavu)
- First code for [issue 1040](https://github.com/firefly-iii/firefly-iii/issues/1040) ([simonsmiley](https://github.com/simonsmiley))
- [Issue 1059](https://github.com/firefly-iii/firefly-iii/issues/1059), as reported by [4oo4](https://github.com/4oo4)
- [Issue 1063](https://github.com/firefly-iii/firefly-iii/issues/1063), as reported by [pkoziol](https://github.com/pkoziol)
- [Issue 1064](https://github.com/firefly-iii/firefly-iii/issues/1064), as reported by [pkoziol](https://github.com/pkoziol)
- [Issue 1066](https://github.com/firefly-iii/firefly-iii/issues/1066), reported by [wtercato](https://github.com/wtercato)
## [4.6.11.1] - 2017-12-08 ## [4.6.11.1] - 2017-12-08
### Added ### Added
- Import routine can scan for matching bills, [issue 956](https://github.com/firefly-iii/firefly-iii/issues/956) - Import routine can scan for matching bills, [issue 956](https://github.com/firefly-iii/firefly-iii/issues/956)

View File

@ -1,5 +1,12 @@
# use PHP 7.1 and Apache as a base.
FROM php:7.1-apache FROM php:7.1-apache
# set working dir
ENV FIREFLY_PATH /var/www/firefly-iii
WORKDIR $FIREFLY_PATH
ADD . $FIREFLY_PATH
# install packages
RUN apt-get update -y && \ RUN apt-get update -y && \
apt-get install -y --no-install-recommends libcurl4-openssl-dev \ apt-get install -y --no-install-recommends libcurl4-openssl-dev \
zlib1g-dev \ zlib1g-dev \
@ -14,14 +21,16 @@ RUN apt-get update -y && \
libbz2-dev \ libbz2-dev \
gettext-base \ gettext-base \
locales && \ locales && \
apt-get clean && \ apt-get clean && \
rm -rf /var/lib/apt/lists/* rm -rf /var/lib/apt/lists/*
# Install PHP exentions.
RUN docker-php-ext-install -j$(nproc) curl gd intl json readline tidy zip bcmath xml mbstring pdo_sqlite pdo_mysql bz2 pdo_pgsql RUN docker-php-ext-install -j$(nproc) curl gd intl json readline tidy zip bcmath xml mbstring pdo_sqlite pdo_mysql bz2 pdo_pgsql
# Generate locales supported by firefly # Generate locales supported by Firefly III
RUN echo "en_US.UTF-8 UTF-8\nde_DE.UTF-8 UTF-8\nnl_NL.UTF-8 UTF-8\npt_BR.UTF-8 UTF-8" > /etc/locale.gen && locale-gen RUN echo "de_DE.UTF-8 UTF-8\nen_US.UTF-8 UTF-8\nfr_FR.UTF-8 UTF-8\nid_ID.UTF-8 UTF-8\nnl_NL.UTF-8 UTF-8\npl_PL.UTF-8 UTF-8" > /etc/locale.gen && locale-gen
# copy Apache config to correct spot.
COPY ./docker/apache2.conf /etc/apache2/apache2.conf COPY ./docker/apache2.conf /etc/apache2/apache2.conf
# Enable apache mod rewrite.. # Enable apache mod rewrite..
@ -30,23 +39,23 @@ RUN a2enmod rewrite
# Enable apache mod ssl.. # Enable apache mod ssl..
RUN a2enmod ssl RUN a2enmod ssl
# Create volumes for several directories:
VOLUME $FIREFLY_PATH/storage/export $FIREFLY_PATH/storage/upload
# Setup the Composer installer # Setup the Composer installer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
# Copy Apache Configs # Enable default site (Firefly III)
COPY ./docker/apache-firefly.conf /etc/apache2/sites-available/000-default.conf COPY ./docker/apache-firefly.conf /etc/apache2/sites-available/000-default.conf
ENV FIREFLY_PATH /var/www/firefly-iii # Make sure we own Firefly III directory
WORKDIR $FIREFLY_PATH
# The working directory
COPY . $FIREFLY_PATH
RUN chown -R www-data:www-data /var/www && chmod -R 775 $FIREFLY_PATH/storage RUN chown -R www-data:www-data /var/www && chmod -R 775 $FIREFLY_PATH/storage
RUN composer install --prefer-dist --no-dev --no-scripts # Run composer
RUN composer install --prefer-dist --no-dev --no-scripts --no-suggest
# Expose port 80
EXPOSE 80 EXPOSE 80
ENTRYPOINT ["docker/entrypoint.sh"] # Run entrypoint thing
ENTRYPOINT ["docker/entrypoint.sh"]

View File

@ -2,9 +2,11 @@
[![Requires PHP7.1](https://img.shields.io/badge/php-7.1-red.svg)](https://secure.php.net/downloads.php) [![Latest Stable Version](https://poser.pugx.org/grumpydictator/firefly-iii/v/stable)](https://packagist.org/packages/grumpydictator/firefly-iii) [![License](https://img.shields.io/badge/license-GPL-lightgrey.svg)](https://www.gnu.org/licenses/gpl.html) [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=44UKUT455HUFA) [![Requires PHP7.1](https://img.shields.io/badge/php-7.1-red.svg)](https://secure.php.net/downloads.php) [![Latest Stable Version](https://poser.pugx.org/grumpydictator/firefly-iii/v/stable)](https://packagist.org/packages/grumpydictator/firefly-iii) [![License](https://img.shields.io/badge/license-GPL-lightgrey.svg)](https://www.gnu.org/licenses/gpl.html) [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=44UKUT455HUFA)
[![The index of Firefly III](https://i.nder.be/ccynyxy0/400)](https://i.nder.be/h327vx3y) [![The account overview of Firefly III](https://i.nder.be/g8v86y2g/400)](https://i.nder.be/hkpynqr9) [![The index of Firefly III](https://firefly-iii.org/static/screenshots/4.6.12/tiny/index.png)](https://firefly-iii.org/static/screenshots/4.6.12/index.png) [![The account overview of Firefly III](https://firefly-iii.org/static/screenshots/4.6.12/tiny/account.png)](https://firefly-iii.org/static/screenshots/4.6.12/account.png)
[![The useful financial reports of Firefly III](https://i.nder.be/cs3qx4f3/400)](https://i.nder.be/cwznmryd) [![Saving money is easy!](https://i.nder.be/gpq6ykym/400)](https://i.nder.be/gum2qf8z) [![Overview of all budgets](https://firefly-iii.org/static/screenshots/4.6.12/tiny/budget.png)](https://firefly-iii.org/static/screenshots/4.6.12/budget.png) [![Overview of a category](https://firefly-iii.org/static/screenshots/4.6.12/tiny/category.png)](https://firefly-iii.org/static/screenshots/4.6.12/category.png)
[![View of a report](https://firefly-iii.org/static/screenshots/4.6.12/tiny/report1.png)](https://firefly-iii.org/static/screenshots/4.6.12/report1.png) [![View of another report](https://firefly-iii.org/static/screenshots/4.6.12/tiny/report2.png)](https://firefly-iii.org/static/screenshots/4.6.12/report2.png)
"Firefly III" is a financial manager for your personal finances. It can help you keep track of your expenses and income. "Firefly III" is a financial manager for your personal finances. It can help you keep track of your expenses and income.
Firefly III supports the use of budgets. You can categorize and tag your transactions. Firefly III supports the use of budgets. You can categorize and tag your transactions.
@ -13,17 +15,17 @@ There are many financial reports available.
## Want to try Firefly III? ## Want to try Firefly III?
There is a **[demo site](https://firefly-iii.nder.be)** with an example financial administration already present. You can use Docker, Heroku or Sandstorm.io (see below) to quickly setup your own instance. There is a **[demo site](https://demo.firefly-iii.org)** with an example financial administration already present. You can use Docker, Heroku or Sandstorm.io (see below) to quickly setup your own instance.
## Install Firefly III ## Install Firefly III
### Using docker ### Using docker
You can use docker-compose to [set up your personal secure](https://firefly-iii.github.io/using-docker.html) Firefly III environment. Advanced users can use the Dockerfile directly. You can use docker-compose to [set up your personal secure](https://firefly-iii.org/using-docker.html) Firefly III environment. Advanced users can use the Dockerfile directly.
### Using vagrant (or other VMs) ### Using vagrant (or other VMs)
You can install Firefly III on any Linux or Windows machine. You'll need a web server (preferrably on Linux) and access to the command line. Please read the [installation guide](https://firefly-iii.github.io/using-installing.html). You can install Firefly III on any Linux or Windows machine. You'll need a web server (preferrably on Linux) and access to the command line. Please read the [installation guide](https://firefly-iii.org/using-installing.html).
### Using Heroku ### Using Heroku
@ -31,8 +33,6 @@ You can install Firefly III on any Linux or Windows machine. You'll need a web s
Register for a free Heroku account and instantly run Firefly III on your very own cloud instance. Register for a free Heroku account and instantly run Firefly III on your very own cloud instance.
_My Heroku configuration is currently broken, but I'm trying to fix it._
### Using Sandstorm.io ### Using Sandstorm.io
You can find Firefly III in [the Sandstorm.io marketplace](https://apps.sandstorm.io/app/uws252ya9mep4t77tevn85333xzsgrpgth8q4y1rhknn1hammw70). You can run it on your own installation or on Oasis. You can find Firefly III in [the Sandstorm.io marketplace](https://apps.sandstorm.io/app/uws252ya9mep4t77tevn85333xzsgrpgth8q4y1rhknn1hammw70). You can run it on your own installation or on Oasis.
@ -53,7 +53,7 @@ Firefly works on the principle that if you know where you're money is going, you
- If you feel you're missing something you can just ask me and I'll add it! - If you feel you're missing something you can just ask me and I'll add it!
Firefly III has become pretty awesome over the years! (but please excuse me for bragging, it's just that I'm proud of it). Firefly III has become pretty awesome over the years! (but please excuse me for bragging, it's just that I'm proud of it).
[You can read more about Firefly III, and its features, on the Github Pages](https://firefly-iii.github.io/). [You can read more about Firefly III, and its features, on the website](https://firefly-iii.org/).
### Contributing ### Contributing
@ -74,8 +74,12 @@ This work [is licensed](https://github.com/firefly-iii/firefly-iii/blob/master/L
### Other stuff ### Other stuff
If you like Firefly and if it helps you save lots of money, why not send me [a dime for every dollar saved](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=44UKUT455HUFA) (this is a joke, although the Paypal form works just fine, try it!) If you like Firefly III and if it helps you save lots of money, why not send me [a dime for every dollar saved](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=44UKUT455HUFA) (this is a joke, although the Paypal form works just fine, try it!)
If you want to contact me, please open an issue or [email me](mailto:thegrumpydictator@gmail.com). If you want to contact me, please open an issue or [email me](mailto:thegrumpydictator@gmail.com).
### Alternatives
If you are looking for alternatives, check out [Kickball's Awesome-Selfhosted list](https://github.com/Kickball/awesome-selfhosted) which features not only Firefly III but also noteworthy alternatives such as [Silverstrike](https://github.com/agstrike/silverstrike).
[![Build Status](https://travis-ci.org/firefly-iii/firefly-iii.svg?branch=master)](https://travis-ci.org/firefly-iii/firefly-iii) [![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/firefly-iii/firefly-iii/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/firefly-iii/firefly-iii/?branch=master) [![Coverage Status](https://coveralls.io/repos/github/firefly-iii/firefly-iii/badge.svg?branch=master)](https://coveralls.io/github/firefly-iii/firefly-iii?branch=master) [![Build Status](https://travis-ci.org/firefly-iii/firefly-iii.svg?branch=master)](https://travis-ci.org/firefly-iii/firefly-iii) [![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/firefly-iii/firefly-iii/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/firefly-iii/firefly-iii/?branch=master) [![Coverage Status](https://coveralls.io/repos/github/firefly-iii/firefly-iii/badge.svg?branch=master)](https://coveralls.io/github/firefly-iii/firefly-iii?branch=master)

View File

@ -2,7 +2,7 @@
"name": "Firefly III", "name": "Firefly III",
"description": "A free and open source personal finances manager", "description": "A free and open source personal finances manager",
"repository": "https://github.com/firefly-iii/firefly-iii", "repository": "https://github.com/firefly-iii/firefly-iii",
"website": "https://firefly-iii.github.io/", "website": "https://firefly-iii.org/",
"logo": "https://raw.githubusercontent.com/firefly-iii/firefly-iii/master/public/mstile-150x150.png", "logo": "https://raw.githubusercontent.com/firefly-iii/firefly-iii/master/public/mstile-150x150.png",
"keywords": [ "keywords": [
"finance", "finance",

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);

View File

@ -16,15 +16,16 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);
namespace FireflyIII\Console\Commands; namespace FireflyIII\Console\Commands;
use Artisan; use Artisan;
use FireflyIII\Exceptions\FireflyException;
use FireflyIII\Import\Logging\CommandHandler; use FireflyIII\Import\Logging\CommandHandler;
use FireflyIII\Import\Routine\ImportRoutine; use FireflyIII\Import\Routine\RoutineInterface;
use FireflyIII\Repositories\ImportJob\ImportJobRepositoryInterface; use FireflyIII\Repositories\ImportJob\ImportJobRepositoryInterface;
use FireflyIII\Repositories\User\UserRepositoryInterface; use FireflyIII\Repositories\User\UserRepositoryInterface;
use Illuminate\Console\Command; use Illuminate\Console\Command;
@ -54,7 +55,7 @@ class CreateImport extends Command
protected $signature protected $signature
= 'firefly:create-import = 'firefly:create-import
{file : The file to import.} {file : The file to import.}
{configuration : The configuration file to use for the import/} {configuration : The configuration file to use for the import.}
{--type=csv : The file type of the import.} {--type=csv : The file type of the import.}
{--user= : The user ID that the import should import for.} {--user= : The user ID that the import should import for.}
{--token= : The user\'s access token.} {--token= : The user\'s access token.}
@ -73,6 +74,8 @@ class CreateImport extends Command
* *
* @SuppressWarnings(PHPMD.ExcessiveMethodLength) // cannot be helped * @SuppressWarnings(PHPMD.ExcessiveMethodLength) // cannot be helped
* @SuppressWarnings(PHPMD.CyclomaticComplexity) // it's five exactly. * @SuppressWarnings(PHPMD.CyclomaticComplexity) // it's five exactly.
*
* @throws FireflyException
*/ */
public function handle() public function handle()
{ {
@ -93,7 +96,7 @@ class CreateImport extends Command
return; return;
} }
$configurationData = json_decode(file_get_contents($configuration)); $configurationData = json_decode(file_get_contents($configuration), true);
if (null === $configurationData) { if (null === $configurationData) {
$this->error(sprintf('Firefly III cannot read the contents of configuration file "%s" (working directory: "%s").', $configuration, $cwd)); $this->error(sprintf('Firefly III cannot read the contents of configuration file "%s" (working directory: "%s").', $configuration, $cwd));
@ -114,9 +117,8 @@ class CreateImport extends Command
Artisan::call('firefly:encrypt-file', ['file' => $file, 'key' => $job->key]); Artisan::call('firefly:encrypt-file', ['file' => $file, 'key' => $job->key]);
$this->line('Stored import data...'); $this->line('Stored import data...');
$job->configuration = $configurationData; $jobRepository->setConfiguration($job, $configurationData);
$job->status = 'configured'; $jobRepository->updateStatus($job, 'configured');
$job->save();
$this->line('Stored configuration...'); $this->line('Stored configuration...');
if (true === $this->option('start')) { if (true === $this->option('start')) {
@ -131,18 +133,26 @@ class CreateImport extends Command
$monolog->pushHandler($handler); $monolog->pushHandler($handler);
// start the actual routine: // start the actual routine:
/** @var ImportRoutine $routine */ $type = 'csv' === $job->file_type ? 'file' : $job->file_type;
$routine = app(ImportRoutine::class); $key = sprintf('import.routine.%s', $type);
$className = config($key);
if (null === $className || !class_exists($className)) {
throw new FireflyException(sprintf('Cannot find import routine class for job of type "%s".', $type)); // @codeCoverageIgnore
}
/** @var RoutineInterface $routine */
$routine = app($className);
$routine->setJob($job); $routine->setJob($job);
$routine->run(); $routine->run();
// give feedback. // give feedback.
/** @var MessageBag $error */ /** @var MessageBag $error */
foreach ($routine->errors as $index => $error) { foreach ($routine->getErrors() as $index => $error) {
$this->error(sprintf('Error importing line #%d: %s', $index, $error)); $this->error(sprintf('Error importing line #%d: %s', $index, $error));
} }
$this->line( $this->line(
sprintf('The import has finished. %d transactions have been imported out of %d records.', $routine->journals->count(), $routine->lines) sprintf(
'The import has finished. %d transactions have been imported out of %d records.', $routine->getJournals()->count(), $routine->getLines()
)
); );
} }
@ -166,7 +176,7 @@ class CreateImport extends Command
$configuration = $this->argument('configuration'); $configuration = $this->argument('configuration');
$user = $userRepository->find(intval($this->option('user'))); $user = $userRepository->find(intval($this->option('user')));
$cwd = getcwd(); $cwd = getcwd();
$validTypes = array_keys(config('firefly.import_formats')); $validTypes = config('import.options.file.import_formats');
$type = strtolower($this->option('type')); $type = strtolower($this->option('type'));
if (null === $user->id) { if (null === $user->id) {
$this->error(sprintf('There is no user with ID %d.', $this->option('user'))); $this->error(sprintf('There is no user with ID %d.', $this->option('user')));

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);

View File

@ -16,14 +16,15 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);
namespace FireflyIII\Console\Commands; namespace FireflyIII\Console\Commands;
use FireflyIII\Exceptions\FireflyException;
use FireflyIII\Import\Logging\CommandHandler; use FireflyIII\Import\Logging\CommandHandler;
use FireflyIII\Import\Routine\ImportRoutine; use FireflyIII\Import\Routine\RoutineInterface;
use FireflyIII\Models\ImportJob; use FireflyIII\Models\ImportJob;
use Illuminate\Console\Command; use Illuminate\Console\Command;
use Illuminate\Support\MessageBag; use Illuminate\Support\MessageBag;
@ -58,6 +59,8 @@ class Import extends Command
/** /**
* Run the import routine. * Run the import routine.
*
* @throws FireflyException
*/ */
public function handle() public function handle()
{ {
@ -81,17 +84,27 @@ class Import extends Command
$handler = new CommandHandler($this); $handler = new CommandHandler($this);
$monolog->pushHandler($handler); $monolog->pushHandler($handler);
/** @var ImportRoutine $routine */ // actually start job:
$routine = app(ImportRoutine::class); $type = 'csv' === $job->file_type ? 'file' : $job->file_type;
$key = sprintf('import.routine.%s', $type);
$className = config($key);
if (null === $className || !class_exists($className)) {
throw new FireflyException(sprintf('Cannot find import routine class for job of type "%s".', $type)); // @codeCoverageIgnore
}
/** @var RoutineInterface $routine */
$routine = app($className);
$routine->setJob($job); $routine->setJob($job);
$routine->run(); $routine->run();
/** @var MessageBag $error */ /** @var MessageBag $error */
foreach ($routine->errors as $index => $error) { foreach ($routine->getErrors() as $index => $error) {
$this->error(sprintf('Error importing line #%d: %s', $index, $error)); $this->error(sprintf('Error importing line #%d: %s', $index, $error));
} }
$this->line(sprintf('The import has finished. %d transactions have been imported out of %d records.', $routine->journals->count(), $routine->lines)); $this->line(
sprintf('The import has finished. %d transactions have been imported out of %d records.', $routine->getJournals()->count(), $routine->getLines())
);
return; return;
} }

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);
@ -26,8 +26,6 @@ use DB;
use FireflyIII\Models\Account; use FireflyIII\Models\Account;
use FireflyIII\Models\AccountMeta; use FireflyIII\Models\AccountMeta;
use FireflyIII\Models\AccountType; use FireflyIII\Models\AccountType;
use FireflyIII\Models\BudgetLimit;
use FireflyIII\Models\LimitRepetition;
use FireflyIII\Models\Note; use FireflyIII\Models\Note;
use FireflyIII\Models\Transaction; use FireflyIII\Models\Transaction;
use FireflyIII\Models\TransactionCurrency; use FireflyIII\Models\TransactionCurrency;
@ -75,6 +73,8 @@ class UpgradeDatabase extends Command
/** /**
* Execute the console command. * Execute the console command.
*
* @throws \Exception
*/ */
public function handle() public function handle()
{ {
@ -282,6 +282,8 @@ class UpgradeDatabase extends Command
/** /**
* Move all the journal_meta notes to their note object counter parts. * Move all the journal_meta notes to their note object counter parts.
*
* @throws \Exception
*/ */
private function migrateNotes(): void private function migrateNotes(): void
{ {

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);

View File

@ -17,18 +17,10 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);
/**
* UseEncryption.php
* Copyright (c) 2017 thegrumpydictator@gmail.com
* This software may be modified and distributed under the terms of the Creative Commons Attribution-ShareAlike 4.0 International License.
*
* See the LICENSE file for details.
*/
namespace FireflyIII\Console\Commands; namespace FireflyIII\Console\Commands;
use Illuminate\Console\Command; use Illuminate\Console\Command;
@ -65,6 +57,12 @@ class UseEncryption extends Command
*/ */
public function handle() public function handle()
{ {
if (config('firefly.encryption') === true) {
$this->info('Firefly III configuration calls for encrypted data.');
}
if (config('firefly.encryption') === false) {
$this->info('Firefly III configuration calls for unencrypted data.');
}
$this->handleObjects('Account', 'name', 'encrypted'); $this->handleObjects('Account', 'name', 'encrypted');
$this->handleObjects('Bill', 'name', 'name_encrypted'); $this->handleObjects('Bill', 'name', 'name_encrypted');
$this->handleObjects('Bill', 'match', 'match_encrypted'); $this->handleObjects('Bill', 'match', 'match_encrypted');
@ -84,7 +82,7 @@ class UseEncryption extends Command
public function handleObjects(string $class, string $field, string $indicator) public function handleObjects(string $class, string $field, string $indicator)
{ {
$fqn = sprintf('FireflyIII\Models\%s', $class); $fqn = sprintf('FireflyIII\Models\%s', $class);
$encrypt = config('firefly.encryption') ? 0 : 1; $encrypt = config('firefly.encryption') === true ? 0 : 1;
$set = $fqn::where($indicator, $encrypt)->get(); $set = $fqn::where($indicator, $encrypt)->get();
foreach ($set as $entry) { foreach ($set as $entry) {

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);
@ -68,6 +68,7 @@ trait VerifiesAccessToken
} }
if (!($accessToken->data === $token)) { if (!($accessToken->data === $token)) {
Log::error(sprintf('Invalid access token for user #%d.', $userId)); Log::error(sprintf('Invalid access token for user #%d.', $userId));
Log::error(sprintf('Token given is "%s", expected "%s".', $token, $accessToken->data));
return false; return false;
} }

View File

@ -16,13 +16,14 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);
namespace FireflyIII\Console\Commands; namespace FireflyIII\Console\Commands;
use Crypt; use Crypt;
use DB;
use FireflyIII\Models\Account; use FireflyIII\Models\Account;
use FireflyIII\Models\AccountType; use FireflyIII\Models\AccountType;
use FireflyIII\Models\Budget; use FireflyIII\Models\Budget;
@ -93,6 +94,7 @@ class VerifyDatabase extends Command
$this->repairPiggyBanks(); $this->repairPiggyBanks();
$this->createLinkTypes(); $this->createLinkTypes();
$this->createAccessTokens(); $this->createAccessTokens();
$this->fixDoubleAmounts();
} }
/** /**
@ -100,6 +102,7 @@ class VerifyDatabase extends Command
*/ */
private function createAccessTokens() private function createAccessTokens()
{ {
$count = 0;
$users = User::get(); $users = User::get();
/** @var User $user */ /** @var User $user */
foreach ($users as $user) { foreach ($users as $user) {
@ -108,8 +111,12 @@ class VerifyDatabase extends Command
$token = $user->generateAccessToken(); $token = $user->generateAccessToken();
Preferences::setForUser($user, 'access_token', $token); Preferences::setForUser($user, 'access_token', $token);
$this->line(sprintf('Generated access token for user %s', $user->email)); $this->line(sprintf('Generated access token for user %s', $user->email));
++$count;
} }
} }
if (0 === $count) {
$this->info('All access tokens OK!');
}
} }
/** /**
@ -117,7 +124,8 @@ class VerifyDatabase extends Command
*/ */
private function createLinkTypes() private function createLinkTypes()
{ {
$set = [ $count = 0;
$set = [
'Related' => ['relates to', 'relates to'], 'Related' => ['relates to', 'relates to'],
'Refund' => ['(partially) refunds', 'is (partially) refunded by'], 'Refund' => ['(partially) refunds', 'is (partially) refunded by'],
'Paid' => ['(partially) pays for', 'is (partially) paid for by'], 'Paid' => ['(partially) pays for', 'is (partially) paid for by'],
@ -130,10 +138,64 @@ class VerifyDatabase extends Command
$link->name = $name; $link->name = $name;
$link->outward = $values[0]; $link->outward = $values[0];
$link->inward = $values[1]; $link->inward = $values[1];
++$count;
} }
$link->editable = false; $link->editable = false;
$link->save(); $link->save();
} }
if (0 === $count) {
$this->info('All link types OK!');
}
}
private function fixDoubleAmounts()
{
$count = 0;
// get invalid journals
$errored = [];
$journals = DB::table('transactions')
->groupBy('transaction_journal_id')
->get(['transaction_journal_id', DB::raw('SUM(amount) AS the_sum')]);
/** @var stdClass $entry */
foreach ($journals as $entry) {
if (0 !== bccomp(strval($entry->the_sum), '0')) {
$errored[] = $entry->transaction_journal_id;
}
}
foreach ($errored as $journalId) {
// select and update:
$res = Transaction::whereNull('deleted_at')->where('transaction_journal_id', $journalId)->groupBy('amount')->get([DB::raw('MIN(id) as first_id')]);
$ids = $res->pluck('first_id')->toArray();
DB::table('transactions')->whereIn('id', $ids)->update(['amount' => DB::raw('amount * -1')]);
++$count;
// report about it
/** @var TransactionJournal $journal */
$journal = TransactionJournal::find($journalId);
if (is_null($journal)) {
continue;
}
if (TransactionType::OPENING_BALANCE === $journal->transactionType->type) {
$this->error(
sprintf(
'Transaction #%d was stored incorrectly. One of your asset accounts may show the wrong balance. Please visit /transactions/show/%d to verify the opening balance.',
$journalId, $journalId
)
);
}
if (TransactionType::OPENING_BALANCE !== $journal->transactionType->type) {
$this->error(
sprintf(
'Transaction #%d was stored incorrectly. Could be that the transaction shows the wrong amount. Please visit /transactions/show/%d to verify the opening balance.',
$journalId, $journalId
)
);
}
}
if (0 === $count) {
$this->info('Amount integrity OK!');
}
return;
} }
/** /**
@ -290,24 +352,29 @@ class VerifyDatabase extends Command
*/ */
private function reportJournals() private function reportJournals()
{ {
$set = TransactionJournal::leftJoin('transactions', 'transactions.transaction_journal_id', '=', 'transaction_journals.id') $count = 0;
->whereNotNull('transaction_journals.deleted_at')// USE THIS $set = TransactionJournal::leftJoin('transactions', 'transactions.transaction_journal_id', '=', 'transaction_journals.id')
->whereNull('transactions.deleted_at') ->whereNotNull('transaction_journals.deleted_at')// USE THIS
->whereNotNull('transactions.id') ->whereNull('transactions.deleted_at')
->get( ->whereNotNull('transactions.id')
[ ->get(
'transaction_journals.id as journal_id', [
'transaction_journals.description', 'transaction_journals.id as journal_id',
'transaction_journals.deleted_at as journal_deleted', 'transaction_journals.description',
'transactions.id as transaction_id', 'transaction_journals.deleted_at as journal_deleted',
'transactions.deleted_at as transaction_deleted_at',] 'transactions.id as transaction_id',
); 'transactions.deleted_at as transaction_deleted_at',]
);
/** @var stdClass $entry */ /** @var stdClass $entry */
foreach ($set as $entry) { foreach ($set as $entry) {
$this->error( $this->error(
'Error: Transaction #' . $entry->transaction_id . ' should have been deleted, but has not.' . 'Error: Transaction #' . $entry->transaction_id . ' should have been deleted, but has not.' .
' Find it in the table called "transactions" and change the "deleted_at" field to: "' . $entry->journal_deleted . '"' ' Find it in the table called "transactions" and change the "deleted_at" field to: "' . $entry->journal_deleted . '"'
); );
++$count;
}
if (0 === $count) {
$this->info('No orphaned transactions!');
} }
} }
@ -316,15 +383,20 @@ class VerifyDatabase extends Command
*/ */
private function reportNoTransactions() private function reportNoTransactions()
{ {
$set = TransactionJournal::leftJoin('transactions', 'transactions.transaction_journal_id', '=', 'transaction_journals.id') $count = 0;
->groupBy('transaction_journals.id') $set = TransactionJournal::leftJoin('transactions', 'transactions.transaction_journal_id', '=', 'transaction_journals.id')
->whereNull('transactions.transaction_journal_id') ->groupBy('transaction_journals.id')
->get(['transaction_journals.id']); ->whereNull('transactions.transaction_journal_id')
->get(['transaction_journals.id']);
foreach ($set as $entry) { foreach ($set as $entry) {
$this->error( $this->error(
'Error: Journal #' . $entry->id . ' has zero transactions. Open table "transaction_journals" and delete the entry with id #' . $entry->id 'Error: Journal #' . $entry->id . ' has zero transactions. Open table "transaction_journals" and delete the entry with id #' . $entry->id
); );
++$count;
}
if (0 === $count) {
$this->info('No orphaned journals!');
} }
} }
@ -379,6 +451,8 @@ class VerifyDatabase extends Command
$sum = strval($user->transactions()->sum('amount')); $sum = strval($user->transactions()->sum('amount'));
if (0 !== bccomp($sum, '0')) { if (0 !== bccomp($sum, '0')) {
$this->error('Error: Transactions for user #' . $user->id . ' (' . $user->email . ') are off by ' . $sum . '!'); $this->error('Error: Transactions for user #' . $user->id . ' (' . $user->email . ') are off by ' . $sum . '!');
} else {
$this->info(sprintf('Amount integrity OK for user #%d', $user->id));
} }
} }
} }

View File

@ -16,19 +16,10 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);
/**
* Kernel.php
* Copyright (c) 2017 thegrumpydictator@gmail.com
* This software may be modified and distributed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International License.
*
* See the LICENSE file for details.
*/
namespace FireflyIII\Console; namespace FireflyIII\Console;
use Illuminate\Console\Scheduling\Schedule; use Illuminate\Console\Scheduling\Schedule;

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);
@ -33,7 +33,13 @@ class AdminRequestedTestMessage extends Event
{ {
use SerializesModels; use SerializesModels;
/**
* @var string
*/
public $ipAddress; public $ipAddress;
/**
* @var User
*/
public $user; public $user;
/** /**

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);
@ -32,7 +32,13 @@ class RegisteredUser extends Event
{ {
use SerializesModels; use SerializesModels;
/**
* @var string
*/
public $ipAddress; public $ipAddress;
/**
* @var User
*/
public $user; public $user;
/** /**

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);
@ -32,8 +32,17 @@ class RequestedNewPassword extends Event
{ {
use SerializesModels; use SerializesModels;
/**
* @var string
*/
public $ipAddress; public $ipAddress;
/**
* @var string
*/
public $token; public $token;
/**
* @var User
*/
public $user; public $user;
/** /**

View File

@ -0,0 +1,52 @@
<?php
/**
* RequestedVersionCheckStatus.php
* Copyright (c) 2017 thegrumpydictator@gmail.com
*
* This file is part of Firefly III.
*
* Firefly III is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Firefly III 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Events;
use FireflyIII\User;
use Illuminate\Queue\SerializesModels;
/**
* Class RequestedVersionCheckStatus
*/
class RequestedVersionCheckStatus extends Event
{
use SerializesModels;
/**
* @var User
*/
public $user;
/**
* Create a new event instance. This event is triggered when Firefly III wants to know
* what the deal is with the version checker.
*
* @param User $user
*/
public function __construct(User $user)
{
$this->user = $user;
}
}

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);

View File

@ -16,19 +16,10 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);
/**
* Handler.php
* Copyright (c) 2017 thegrumpydictator@gmail.com
* This software may be modified and distributed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International License.
*
* See the LICENSE file for details.
*/
namespace FireflyIII\Exceptions; namespace FireflyIII\Exceptions;
use ErrorException; use ErrorException;
@ -37,6 +28,9 @@ use FireflyIII\Jobs\MailError;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler; use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
use Request; use Request;
/**
* Class Handler
*/
class Handler extends ExceptionHandler class Handler extends ExceptionHandler
{ {
/** /**
@ -87,6 +81,8 @@ class Handler extends ExceptionHandler
* @param \Exception $exception * @param \Exception $exception
* *
* @return mixed|void * @return mixed|void
*
* @throws Exception
*/ */
public function report(Exception $exception) public function report(Exception $exception)
{ {

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);
@ -45,44 +45,131 @@ use FireflyIII\Models\Transaction;
final class Entry final class Entry
{ {
// @formatter:off // @formatter:off
/**
* @var int
*/
public $journal_id; public $journal_id;
/**
* @var int
*/
public $transaction_id = 0; public $transaction_id = 0;
/**
* @var string
*/
public $date; public $date;
/**
* @var string
*/
public $description; public $description;
/**
* @var string
*/
public $currency_code; public $currency_code;
/**
* @var string
*/
public $amount; public $amount;
/**
* @var string
*/
public $foreign_currency_code = ''; public $foreign_currency_code = '';
public $foreign_amount = '0'; /**
* @var string
*/
public $foreign_amount = '0';
/**
* @var string
*/
public $transaction_type; public $transaction_type;
/**
* @var string
*/
public $asset_account_id; public $asset_account_id;
/**
* @var string
*/
public $asset_account_name; public $asset_account_name;
/**
* @var string
*/
public $asset_account_iban; public $asset_account_iban;
/**
* @var string
*/
public $asset_account_bic; public $asset_account_bic;
/**
* @var string
*/
public $asset_account_number; public $asset_account_number;
/**
* @var string
*/
public $asset_currency_code; public $asset_currency_code;
/**
* @var string
*/
public $opposing_account_id; public $opposing_account_id;
/**
* @var string
*/
public $opposing_account_name; public $opposing_account_name;
/**
* @var string
*/
public $opposing_account_iban; public $opposing_account_iban;
/**
* @var string
*/
public $opposing_account_bic; public $opposing_account_bic;
/**
* @var string
*/
public $opposing_account_number; public $opposing_account_number;
/**
* @var string
*/
public $opposing_currency_code; public $opposing_currency_code;
/**
* @var string
*/
public $budget_id; public $budget_id;
/**
* @var string
*/
public $budget_name; public $budget_name;
/**
* @var string
*/
public $category_id; public $category_id;
/**
* @var string
*/
public $category_name; public $category_name;
/**
* @var string
*/
public $bill_id; public $bill_id;
/**
* @var string
*/
public $bill_name; public $bill_name;
/**
* @var string
*/
public $notes; public $notes;
/**
* @var string
*/
public $tags; public $tags;
@ -116,7 +203,7 @@ final class Entry
$entry->description = $transaction->transaction_description . '(' . $transaction->description . ')'; $entry->description = $transaction->transaction_description . '(' . $transaction->description . ')';
} }
$entry->currency_code = $transaction->transactionCurrency->code; $entry->currency_code = $transaction->transactionCurrency->code;
$entry->amount = round($transaction->transaction_amount, $transaction->transactionCurrency->decimal_places); $entry->amount = strval(round($transaction->transaction_amount, $transaction->transactionCurrency->decimal_places));
$entry->foreign_currency_code = null === $transaction->foreign_currency_id ? null : $transaction->foreignCurrency->code; $entry->foreign_currency_code = null === $transaction->foreign_currency_id ? null : $transaction->foreignCurrency->code;
$entry->foreign_amount = null === $transaction->foreign_currency_id $entry->foreign_amount = null === $transaction->foreign_currency_id
@ -129,14 +216,14 @@ final class Entry
); );
$entry->transaction_type = $transaction->transaction_type_type; $entry->transaction_type = $transaction->transaction_type_type;
$entry->asset_account_id = $transaction->account_id; $entry->asset_account_id = strval($transaction->account_id);
$entry->asset_account_name = app('steam')->tryDecrypt($transaction->account_name); $entry->asset_account_name = app('steam')->tryDecrypt($transaction->account_name);
$entry->asset_account_iban = $transaction->account_iban; $entry->asset_account_iban = $transaction->account_iban;
$entry->asset_account_number = $transaction->account_number; $entry->asset_account_number = $transaction->account_number;
$entry->asset_account_bic = $transaction->account_bic; $entry->asset_account_bic = $transaction->account_bic;
$entry->asset_currency_code = $transaction->account_currency_code; $entry->asset_currency_code = $transaction->account_currency_code;
$entry->opposing_account_id = $transaction->opposing_account_id; $entry->opposing_account_id = strval($transaction->opposing_account_id);
$entry->opposing_account_name = app('steam')->tryDecrypt($transaction->opposing_account_name); $entry->opposing_account_name = app('steam')->tryDecrypt($transaction->opposing_account_name);
$entry->opposing_account_iban = $transaction->opposing_account_iban; $entry->opposing_account_iban = $transaction->opposing_account_iban;
$entry->opposing_account_number = $transaction->opposing_account_number; $entry->opposing_account_number = $transaction->opposing_account_number;
@ -144,7 +231,7 @@ final class Entry
$entry->opposing_currency_code = $transaction->opposing_currency_code; $entry->opposing_currency_code = $transaction->opposing_currency_code;
// budget // budget
$entry->budget_id = $transaction->transaction_budget_id; $entry->budget_id = strval($transaction->transaction_budget_id);
$entry->budget_name = app('steam')->tryDecrypt($transaction->transaction_budget_name); $entry->budget_name = app('steam')->tryDecrypt($transaction->transaction_budget_name);
if (null === $transaction->transaction_budget_id) { if (null === $transaction->transaction_budget_id) {
$entry->budget_id = $transaction->transaction_journal_budget_id; $entry->budget_id = $transaction->transaction_journal_budget_id;
@ -152,7 +239,7 @@ final class Entry
} }
// category // category
$entry->category_id = $transaction->transaction_category_id; $entry->category_id = strval($transaction->transaction_category_id);
$entry->category_name = app('steam')->tryDecrypt($transaction->transaction_category_name); $entry->category_name = app('steam')->tryDecrypt($transaction->transaction_category_name);
if (null === $transaction->transaction_category_id) { if (null === $transaction->transaction_category_id) {
$entry->category_id = $transaction->transaction_journal_category_id; $entry->category_id = $transaction->transaction_journal_category_id;
@ -160,7 +247,7 @@ final class Entry
} }
// budget // budget
$entry->bill_id = $transaction->bill_id; $entry->bill_id = strval($transaction->bill_id);
$entry->bill_name = app('steam')->tryDecrypt($transaction->bill_name); $entry->bill_name = app('steam')->tryDecrypt($transaction->bill_name);
$entry->tags = $transaction->tags; $entry->tags = $transaction->tags;

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);
@ -32,8 +32,8 @@ use FireflyIII\Helpers\Collector\JournalCollectorInterface;
use FireflyIII\Helpers\Filter\InternalTransferFilter; use FireflyIII\Helpers\Filter\InternalTransferFilter;
use FireflyIII\Models\AccountMeta; use FireflyIII\Models\AccountMeta;
use FireflyIII\Models\ExportJob; use FireflyIII\Models\ExportJob;
use FireflyIII\Models\Note;
use FireflyIII\Models\Transaction; use FireflyIII\Models\Transaction;
use FireflyIII\Models\TransactionJournalMeta;
use FireflyIII\Repositories\Currency\CurrencyRepositoryInterface; use FireflyIII\Repositories\Currency\CurrencyRepositoryInterface;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Log; use Log;
@ -114,7 +114,7 @@ class ExpandedProcessor implements ProcessorInterface
$notes = $this->getNotes($ids); $notes = $this->getNotes($ids);
$tags = $this->getTags($ids); $tags = $this->getTags($ids);
/** @var array $ibans */ /** @var array $ibans */
$ibans = $this->getIbans($assetIds) + $this->getIbans($opposingIds); $ibans = array_merge($this->getIbans($assetIds), $this->getIbans($opposingIds));
$currencies = $this->getAccountCurrencies($ibans); $currencies = $this->getAccountCurrencies($ibans);
$transactions->each( $transactions->each(
function (Transaction $transaction) use ($notes, $tags, $ibans, $currencies) { function (Transaction $transaction) use ($notes, $tags, $ibans, $currencies) {
@ -173,6 +173,7 @@ class ExpandedProcessor implements ProcessorInterface
* @return bool * @return bool
* *
* @throws FireflyException * @throws FireflyException
* @throws \Illuminate\Contracts\Filesystem\FileNotFoundException
*/ */
public function createZipFile(): bool public function createZipFile(): bool
{ {
@ -309,17 +310,16 @@ class ExpandedProcessor implements ProcessorInterface
private function getNotes(array $array): array private function getNotes(array $array): array
{ {
$array = array_unique($array); $array = array_unique($array);
$set = TransactionJournalMeta::whereIn('journal_meta.transaction_journal_id', $array) $notes = Note::where('notes.noteable_type', 'FireflyIII\\Models\\TransactionJournal')
->leftJoin('transaction_journals', 'transaction_journals.id', '=', 'journal_meta.transaction_journal_id') ->whereIn('notes.noteable_id', $array)
->where('transaction_journals.user_id', $this->job->user_id) ->get(['notes.*']);
->where('journal_meta.name', 'notes')->get(
['journal_meta.transaction_journal_id', 'journal_meta.data', 'journal_meta.id']
);
$return = []; $return = [];
/** @var TransactionJournalMeta $meta */ /** @var Note $note */
foreach ($set as $meta) { foreach ($notes as $note) {
$id = intval($meta->transaction_journal_id); if (strlen(trim(strval($note->text))) > 0) {
$return[$id] = $meta->data; $id = intval($note->noteable_id);
$return[$id] = $note->text;
}
} }
return $return; return $return;

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);
@ -24,7 +24,7 @@ namespace FireflyIII\Export\Exporter;
use FireflyIII\Export\Entry\Entry; use FireflyIII\Export\Entry\Entry;
use League\Csv\Writer; use League\Csv\Writer;
use SplFileObject; use Storage;
/** /**
* Class CsvExporter. * Class CsvExporter.
@ -52,6 +52,8 @@ class CsvExporter extends BasicExporter implements ExporterInterface
/** /**
* @return bool * @return bool
*
* @throws \TypeError
*/ */
public function run(): bool public function run(): bool
{ {
@ -60,8 +62,11 @@ class CsvExporter extends BasicExporter implements ExporterInterface
// necessary for CSV writer: // necessary for CSV writer:
$fullPath = storage_path('export') . DIRECTORY_SEPARATOR . $this->fileName; $fullPath = storage_path('export') . DIRECTORY_SEPARATOR . $this->fileName;
$writer = Writer::createFromPath(new SplFileObject($fullPath, 'a+'), 'w');
$rows = [];
//we create the CSV into memory
$writer = Writer::createFromPath($fullPath);
$rows = [];
// get field names for header row: // get field names for header row:
$first = $this->getEntries()->first(); $first = $this->getEntries()->first();
@ -88,5 +93,8 @@ class CsvExporter extends BasicExporter implements ExporterInterface
private function tempFile() private function tempFile()
{ {
$this->fileName = $this->job->key . '-records.csv'; $this->fileName = $this->job->key . '-records.csv';
// touch file in export directory:
$disk = Storage::disk('export');
$disk->put($this->fileName, '');
} }
} }

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);

View File

@ -0,0 +1,146 @@
<?php
/**
* MonthReportGenerator.php
* Copyright (c) 2017 thegrumpydictator@gmail.com
*
* This file is part of Firefly III.
*
* Firefly III is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Firefly III 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Generator\Report\Account;
use Carbon\Carbon;
use FireflyIII\Generator\Report\ReportGeneratorInterface;
use Illuminate\Support\Collection;
/**
* Class MonthReportGenerator.
*/
class MonthReportGenerator implements ReportGeneratorInterface
{
/** @var Collection */
private $accounts;
/** @var Carbon */
private $end;
/** @var Collection */
private $expense;
/** @var Carbon */
private $start;
/**
* @return string
*
* @throws \Throwable
*/
public function generate(): string
{
$accountIds = join(',', $this->accounts->pluck('id')->toArray());
$expenseIds = join(',', $this->expense->pluck('id')->toArray());
$reportType = 'account';
$preferredPeriod = $this->preferredPeriod();
return view(
'reports.account.report',
compact('accountIds', 'reportType', 'expenseIds', 'preferredPeriod')
)->with('start', $this->start)->with('end', $this->end)->render();
}
/**
* @param Collection $accounts
*
* @return ReportGeneratorInterface
*/
public function setAccounts(Collection $accounts): ReportGeneratorInterface
{
$this->accounts = $accounts;
return $this;
}
/**
* @param Collection $budgets
*
* @return ReportGeneratorInterface
*/
public function setBudgets(Collection $budgets): ReportGeneratorInterface
{
return $this;
}
/**
* @param Collection $categories
*
* @return ReportGeneratorInterface
*/
public function setCategories(Collection $categories): ReportGeneratorInterface
{
return $this;
}
/**
* @param Carbon $date
*
* @return ReportGeneratorInterface
*/
public function setEndDate(Carbon $date): ReportGeneratorInterface
{
$this->end = $date;
return $this;
}
/**
* @param Collection $expense
*
* @return ReportGeneratorInterface
*/
public function setExpense(Collection $expense): ReportGeneratorInterface
{
$this->expense = $expense;
return $this;
}
/**
* @param Carbon $date
*
* @return ReportGeneratorInterface
*/
public function setStartDate(Carbon $date): ReportGeneratorInterface
{
$this->start = $date;
return $this;
}
/**
* @param Collection $tags
*
* @return ReportGeneratorInterface
*/
public function setTags(Collection $tags): ReportGeneratorInterface
{
return $this;
}
/**
* @return string
*/
protected function preferredPeriod(): string
{
return 'day';
}
}

View File

@ -0,0 +1,39 @@
<?php
/**
* MultiYearReportGenerator.php
* Copyright (c) 2017 thegrumpydictator@gmail.com
*
* This file is part of Firefly III.
*
* Firefly III is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Firefly III 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Generator\Report\Account;
/**
* Class MultiYearReportGenerator.
*/
class MultiYearReportGenerator extends MonthReportGenerator
{
// Doesn't do anything different.
/**
* @return string
*/
protected function preferredPeriod(): string
{
return 'year';
}
}

View File

@ -0,0 +1,39 @@
<?php
/**
* YearReportGenerator.php
* Copyright (c) 2017 thegrumpydictator@gmail.com
*
* This file is part of Firefly III.
*
* Firefly III is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Firefly III 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Generator\Report\Account;
/**
* Class YearReportGenerator.
*/
class YearReportGenerator extends MonthReportGenerator
{
// Doesn't do anything different.
/**
* @return string
*/
protected function preferredPeriod(): string
{
return 'month';
}
}

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);
@ -119,6 +119,16 @@ class MonthReportGenerator implements ReportGeneratorInterface
return $this; return $this;
} }
/**
* @param Collection $expense
*
* @return ReportGeneratorInterface
*/
public function setExpense(Collection $expense): ReportGeneratorInterface
{
return $this;
}
/** /**
* @param Carbon $date * @param Carbon $date
* *

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);
@ -128,6 +128,16 @@ class MonthReportGenerator extends Support implements ReportGeneratorInterface
return $this; return $this;
} }
/**
* @param Collection $expense
*
* @return ReportGeneratorInterface
*/
public function setExpense(Collection $expense): ReportGeneratorInterface
{
return $this;
}
/** /**
* @param Carbon $date * @param Carbon $date
* *

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);
@ -146,6 +146,16 @@ class MonthReportGenerator extends Support implements ReportGeneratorInterface
return $this; return $this;
} }
/**
* @param Collection $expense
*
* @return ReportGeneratorInterface
*/
public function setExpense(Collection $expense): ReportGeneratorInterface
{
return $this;
}
/** /**
* @param Carbon $date * @param Carbon $date
* *

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);
@ -63,6 +63,13 @@ interface ReportGeneratorInterface
*/ */
public function setEndDate(Carbon $date): ReportGeneratorInterface; public function setEndDate(Carbon $date): ReportGeneratorInterface;
/**
* @param Collection $expense
*
* @return ReportGeneratorInterface
*/
public function setExpense(Collection $expense): ReportGeneratorInterface;
/** /**
* @param Carbon $date * @param Carbon $date
* *

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);
@ -41,6 +41,8 @@ class MonthReportGenerator implements ReportGeneratorInterface
/** /**
* @return string * @return string
*
* @throws \Throwable
*/ */
public function generate(): string public function generate(): string
{ {
@ -101,6 +103,16 @@ class MonthReportGenerator implements ReportGeneratorInterface
return $this; return $this;
} }
/**
* @param Collection $expense
*
* @return ReportGeneratorInterface
*/
public function setExpense(Collection $expense): ReportGeneratorInterface
{
return $this;
}
/** /**
* @param Carbon $date * @param Carbon $date
* *

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);
@ -40,6 +40,8 @@ class MultiYearReportGenerator implements ReportGeneratorInterface
/** /**
* @return string * @return string
*
* @throws \Throwable
*/ */
public function generate(): string public function generate(): string
{ {
@ -98,6 +100,16 @@ class MultiYearReportGenerator implements ReportGeneratorInterface
return $this; return $this;
} }
/**
* @param Collection $expense
*
* @return ReportGeneratorInterface
*/
public function setExpense(Collection $expense): ReportGeneratorInterface
{
return $this;
}
/** /**
* @param Carbon $date * @param Carbon $date
* *

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);
@ -40,6 +40,8 @@ class YearReportGenerator implements ReportGeneratorInterface
/** /**
* @return string * @return string
*
* @throws \Throwable
*/ */
public function generate(): string public function generate(): string
{ {
@ -98,6 +100,16 @@ class YearReportGenerator implements ReportGeneratorInterface
return $this; return $this;
} }
/**
* @param Collection $expense
*
* @return ReportGeneratorInterface
*/
public function setExpense(Collection $expense): ReportGeneratorInterface
{
return $this;
}
/** /**
* @param Carbon $date * @param Carbon $date
* *

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);
@ -65,6 +65,7 @@ class MonthReportGenerator extends Support implements ReportGeneratorInterface
/** /**
* @return string * @return string
* @throws \Throwable
*/ */
public function generate(): string public function generate(): string
{ {
@ -141,6 +142,16 @@ class MonthReportGenerator extends Support implements ReportGeneratorInterface
return $this; return $this;
} }
/**
* @param Collection $expense
*
* @return ReportGeneratorInterface
*/
public function setExpense(Collection $expense): ReportGeneratorInterface
{
return $this;
}
/** /**
* @param Carbon $date * @param Carbon $date
* *

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);
@ -76,6 +76,7 @@ class UserEventHandler
{ {
Log::debug('In checkSingleUserIsAdmin'); Log::debug('In checkSingleUserIsAdmin');
/** @var User $user */
$user = $event->user; $user = $event->user;
$count = User::count(); $count = User::count();
@ -86,7 +87,7 @@ class UserEventHandler
return true; return true;
} }
// user is only user but has admin role // user is only user but has admin role
if ($count === 1 && $user->hasRole('owner')) { if (1 === $count && $user->hasRole('owner')) {
Log::debug(sprintf('User #%d is only user but has role owner so all is well.', $user->id)); Log::debug(sprintf('User #%d is only user but has role owner so all is well.', $user->id));
return true; return true;

View File

@ -0,0 +1,78 @@
<?php
/**
* VersionCheckEventHandler.php
* Copyright (c) 2017 thegrumpydictator@gmail.com
*
* This file is part of Firefly III.
*
* Firefly III is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Firefly III 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Handlers\Events;
use FireflyConfig;
use FireflyIII\Events\RequestedVersionCheckStatus;
use FireflyIII\User;
use Log;
/**
* Class VersionCheckEventHandler
*/
class VersionCheckEventHandler
{
/**
* @param RequestedVersionCheckStatus $event
*/
public function checkForUpdates(RequestedVersionCheckStatus $event)
{
// in Sandstorm, cannot check for updates:
$sandstorm = 1 === intval(getenv('SANDSTORM'));
if ($sandstorm === true) {
return;
}
/** @var User $user */
$user = $event->user;
if (!$user->hasRole('owner')) {
return;
}
$permission = FireflyConfig::get('permission_update_check', -1);
$lastCheckTime = FireflyConfig::get('last_update_check', time());
$now = time();
if ($now - $lastCheckTime->data < 604800) {
Log::debug('Checked for updates less than a week ago.');
return;
}
// last check time was more than a week ago.
Log::debug('Have not checked for a new version in a week!');
// have actual permission?
if ($permission->data === -1) {
// never asked before.
session()->flash('info', strval(trans('firefly.check_for_updates_permission', ['link' => route('admin.update-check')])));
return;
}
// actually check for update and inform the user.
}
}

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);
@ -32,9 +32,18 @@ use Illuminate\Support\Collection;
*/ */
class BalanceLine class BalanceLine
{ {
/**
*
*/
const ROLE_DEFAULTROLE = 1; const ROLE_DEFAULTROLE = 1;
const ROLE_TAGROLE = 2; /**
const ROLE_DIFFROLE = 3; *
*/
const ROLE_TAGROLE = 2;
/**
*
*/
const ROLE_DIFFROLE = 3;
/** @var Collection */ /** @var Collection */
protected $balanceEntries; protected $balanceEntries;

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);
@ -41,40 +41,14 @@ class BillLine
/** @var string */ /** @var string */
protected $min; protected $min;
/** @var Carbon */ /** @var Carbon */
private $endOfPayDate;
/** @var Carbon */
private $lastHitDate; private $lastHitDate;
/** @var Carbon */ /** @var Carbon */
private $payDate; private $payDate;
/** @var Carbon */
private $endOfPayDate;
/** @var int */ /** @var int */
private $transactionJournalId; private $transactionJournalId;
/**
* @return Carbon
*/
public function getPayDate(): Carbon
{
return $this->payDate;
}
/**
* @return Carbon
*/
public function getEndOfPayDate(): Carbon
{
return $this->endOfPayDate;
}
/**
* @param Carbon $endOfPayDate
*/
public function setEndOfPayDate(Carbon $endOfPayDate): void
{
$this->endOfPayDate = $endOfPayDate;
}
/** /**
* BillLine constructor. * BillLine constructor.
*/ */
@ -115,6 +89,22 @@ class BillLine
$this->bill = $bill; $this->bill = $bill;
} }
/**
* @return Carbon
*/
public function getEndOfPayDate(): Carbon
{
return $this->endOfPayDate;
}
/**
* @param Carbon $endOfPayDate
*/
public function setEndOfPayDate(Carbon $endOfPayDate): void
{
$this->endOfPayDate = $endOfPayDate;
}
/** /**
* @return Carbon * @return Carbon
*/ */
@ -163,6 +153,22 @@ class BillLine
$this->min = $min; $this->min = $min;
} }
/**
* @return Carbon
*/
public function getPayDate(): Carbon
{
return $this->payDate;
}
/**
* @param Carbon $payDate
*/
public function setPayDate(Carbon $payDate): void
{
$this->payDate = $payDate;
}
/** /**
* @return int * @return int
*/ */
@ -202,12 +208,4 @@ class BillLine
{ {
$this->hit = $hit; $this->hit = $hit;
} }
/**
* @param Carbon $payDate
*/
public function setPayDate(Carbon $payDate): void
{
$this->payDate = $payDate;
}
} }

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);
@ -497,6 +497,20 @@ class JournalCollector implements JournalCollectorInterface
return $this; return $this;
} }
/**
* @param Collection $accounts
*
* @return JournalCollectorInterface
*/
public function setOpposingAccounts(Collection $accounts): JournalCollectorInterface
{
$this->withOpposingAccount();
$this->query->whereIn('opposing.account_id', $accounts->pluck('id')->toArray());
return $this;
}
/** /**
* @param int $page * @param int $page
* *

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);
@ -160,6 +160,13 @@ interface JournalCollectorInterface
*/ */
public function setOffset(int $offset): JournalCollectorInterface; public function setOffset(int $offset): JournalCollectorInterface;
/**
* @param Collection $accounts
*
* @return JournalCollectorInterface
*/
public function setOpposingAccounts(Collection $accounts): JournalCollectorInterface;
/** /**
* @param int $page * @param int $page
* *
@ -196,6 +203,11 @@ interface JournalCollectorInterface
*/ */
public function setTypes(array $types): JournalCollectorInterface; public function setTypes(array $types): JournalCollectorInterface;
/**
* @param User $user
*
* @return mixed
*/
public function setUser(User $user); public function setUser(User $user);
/** /**

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);
@ -37,6 +37,11 @@ class AmountFilter implements FilterInterface
/** @var int */ /** @var int */
private $modifier = 0; private $modifier = 0;
/**
* AmountFilter constructor.
*
* @param int $modifier
*/
public function __construct(int $modifier) public function __construct(int $modifier)
{ {
$this->modifier = $modifier; $this->modifier = $modifier;

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);
@ -24,6 +24,9 @@ namespace FireflyIII\Helpers\Filter;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
/**
* Interface FilterInterface
*/
interface FilterInterface interface FilterInterface
{ {
/** /**

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);
@ -34,6 +34,9 @@ use Route;
*/ */
class Help implements HelpInterface class Help implements HelpInterface
{ {
/**
*
*/
const CACHEKEY = 'help_%s_%s'; const CACHEKEY = 'help_%s_%s';
/** @var string */ /** @var string */
protected $userAgent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36'; protected $userAgent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36';

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);

View File

@ -16,7 +16,7 @@
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>. * along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/ */
declare(strict_types=1); declare(strict_types=1);

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