Compare commits

...

523 Commits

Author SHA1 Message Date
James Cole
3562ec1f79 Merge branch 'release/4.6.13' 2018-01-07 12:40:54 +01:00
James Cole
943b4de6dc Update Sandstorm file list. 2018-01-07 12:29:18 +01:00
James Cole
4097f51f69 Updated composer file. 2018-01-07 12:28:43 +01:00
James Cole
cad5b2cae9 Final translations before release. 2018-01-07 12:20:05 +01:00
James Cole
8bb4b0b9b2 Make sure log stays small. 2018-01-06 20:26:21 +01:00
James Cole
9bcd1ed807 Make sure file content is trimmed. 2018-01-06 19:17:47 +01:00
James Cole
d7b1892bda Catch when no amount info is present. 2018-01-06 19:17:35 +01:00
James Cole
ea0980ba83 Update Sandstorm file list. 2018-01-06 16:27:20 +01:00
James Cole
b479a3ef99 Update change log, composer files. 2018-01-06 16:10:02 +01:00
James Cole
600e15d42f Jump back a version. 2018-01-06 15:48:44 +01:00
James Cole
824959e71a Fix form thing [skip ci] 2018-01-06 14:19:30 +01:00
James Cole
cfd8d231fb Update logging for #1089 [skip ci] 2018-01-06 12:21:24 +01:00
James Cole
87c3dc2ecc Improve comparisons for #1089 2018-01-06 12:20:02 +01:00
James Cole
590f0a83ea Code for #1098 2018-01-06 11:56:20 +01:00
James Cole
65e518856b Add warning message to index. 2018-01-06 10:25:21 +01:00
James Cole
469313eca7 Commit merge. 2018-01-06 10:12:43 +01:00
James Cole
f13f378d7f Merge pull request #1093 from jinformatique/patch-1
create .htaccess file
2018-01-06 10:10:41 +01:00
James Cole
76d8017be5 Small extension on import account, for testing mostly. 2018-01-06 09:33:28 +01:00
James Cole
af1bdc0c2c Expand debug view. 2018-01-06 09:33:06 +01:00
James Cole
6ac1e05e60 Clear cache sooner for #1096 2018-01-06 07:42:03 +01:00
James Cole
7fa937e80b Fixed tests to account for issue fixed by #1097 2018-01-06 07:33:30 +01:00
James Cole
ed0e14aee5 Merge pull request #1097 from kelvinhammond/patch-1
Fix issue with accounts in select map not matching
2018-01-06 07:23:21 +01:00
Kelvin
e300c1aab4 Fix issue with accounts in select map not matching
When mapping Opposing Accounts the select input's values are incorrect and do not match account ids.
2018-01-06 00:40:17 -05:00
James Cole
9e1586878b Test some preprocessors. 2018-01-05 17:51:05 +01:00
James Cole
5d54939bd4 Expand read me. 2018-01-05 17:29:57 +01:00
James Cole
3e9f98b43e Expand test coverage. 2018-01-05 17:29:42 +01:00
James Cole
c329ffa545 Updated tests and views 2018-01-05 07:54:10 +01:00
James Cole
d3cad66b69 Improve tests for import. 2018-01-05 07:41:26 +01:00
James Cole
246af608d3 Update repository to fix #972 2018-01-04 22:44:47 +01:00
James Cole
e7debc5466 Rewrote importer to be more clean about the stage it is in. 2018-01-04 19:33:16 +01:00
James Cole
5866300ac1 Rename and move some files. 2018-01-04 18:34:51 +01:00
J'informatique
c1221aef4b create .htaccess file
- To force HTTPS
- To hide directory listing
- To prevent access to .env and other files
2018-01-04 12:29:33 +01:00
James Cole
bc879a3872 Updated language files [skip ci] 2018-01-04 10:31:49 +01:00
James Cole
2b4a3d463b Update composer files. 2018-01-04 10:25:24 +01:00
James Cole
6b59b6de6e Fix some things in import routine. 2018-01-04 08:59:39 +01:00
James Cole
3ce5ccb98a Another fix for #1092 2018-01-04 08:09:26 +01:00
James Cole
a1b83def4f New strings for translation. [skip ci] 2018-01-03 20:37:11 +01:00
James Cole
5177619301 Lots of new code for Spectre import. 2018-01-03 19:17:30 +01:00
James Cole
4e0319bacc Fix for #1092 2018-01-03 07:35:29 +01:00
James Cole
30f64af55f Experimental cross OS command for #1083 [skip ci] 2018-01-02 20:08:56 +01:00
James Cole
cdeabaaf9a Extra fix to cover for #1091 2018-01-02 19:53:22 +01:00
James Cole
fa676f60fb Internationalise several forms for #1090 2018-01-02 17:25:59 +01:00
James Cole
4ec123a19a Add some logging for #1089 2018-01-02 16:25:47 +01:00
James Cole
de35bde048 Some updated language strings. 2018-01-02 15:18:22 +01:00
James Cole
3f786856f3 Expand code for Spectre login. 2018-01-02 15:17:31 +01:00
James Cole
d49aecdf49 Update tests. 2018-01-02 07:14:00 +01:00
James Cole
6713597621 Fix #1087 2018-01-02 06:39:34 +01:00
James Cole
09bd55675d Fix Turkish string [skip ci] 2018-01-01 16:46:56 +01:00
James Cole
d87dda40ee Clean up some JS and views. 2018-01-01 16:46:41 +01:00
James Cole
06cfc391a1 Add cast to string to fix chart. [skip ci] 2018-01-01 16:46:15 +01:00
James Cole
bea06a06a1 Various updated sentences and strings in Polish. 2018-01-01 15:38:09 +01:00
James Cole
06fa2ab7a1 Update string in Spectre import, as suggested by @pkoziol 2018-01-01 15:37:15 +01:00
James Cole
4926011f3f Fix #1085 2018-01-01 15:33:38 +01:00
James Cole
0455f8658d Move debug to new controller, add some fields. 2018-01-01 15:33:24 +01:00
James Cole
4773021ff0 Expand debug controller. 2017-12-31 11:38:21 +01:00
James Cole
e2bd1f6544 Update breadcrumbs for PHP 7.2 #1079 2017-12-31 11:10:36 +01:00
James Cole
b73884160a Fix account controller + coverage. 2017-12-31 10:40:27 +01:00
James Cole
8bcfa729b6 Updated language files. 2017-12-31 09:36:36 +01:00
James Cole
f8dda5b4a6 Added Turkish. 2017-12-31 09:10:38 +01:00
James Cole
c0961d438d Rename a view. 2017-12-31 09:01:27 +01:00
James Cole
d9dd00eb39 Fix #1074 2017-12-30 21:04:04 +01:00
James Cole
6d9baaa499 Updated language files. [skip ci] 2017-12-30 20:43:18 +01:00
James Cole
b37ed5ab23 Code for #1077 2017-12-30 20:07:49 +01:00
James Cole
3fba741f1b Update views and routes for #1078 2017-12-30 14:25:11 +01:00
James Cole
73051d7d42 Add budget list, expand view. #1078 2017-12-30 13:05:19 +01:00
James Cole
717e101b80 Start updating view. 2017-12-30 12:54:19 +01:00
James Cole
08f28d48af Refer to new views. 2017-12-30 12:44:10 +01:00
James Cole
ec2f693575 Update breadcrumb #1078 2017-12-30 12:43:57 +01:00
James Cole
3cc1bf52cb Move view. #1078 2017-12-30 12:43:13 +01:00
James Cole
5da9f0cfb6 Fix #1080 2017-12-30 12:33:44 +01:00
James Cole
64624bea1d Rename language string #1078 2017-12-30 12:24:28 +01:00
James Cole
dc95395f42 Clean up buttons #1078 2017-12-30 12:23:26 +01:00
James Cole
273f188101 Fix error in route (my error) #1078 2017-12-30 12:23:16 +01:00
James Cole
a6b22b5156 Remove unused language string. #1078 2017-12-30 12:23:03 +01:00
James Cole
9d8a4cd934 Clean up JS code #1078 (also old code removed) 2017-12-30 12:22:49 +01:00
James Cole
c73dd5f664 Update routes to reflect change. #1078 2017-12-30 12:14:10 +01:00
James Cole
7ff8c5e966 Move bulk methods to their own controller. #1078 2017-12-30 12:13:13 +01:00
James Cole
1c11aa13b8 Merge commit for PR #1078 2017-12-30 11:56:02 +01:00
James Cole
0c2ec58366 Merge pull request #1078 from vicmosin/issues/509
Introduced bulk edit endpoint for bulk edit of categories and tags
2017-12-30 11:54:06 +01:00
Victor Mosin
2955d7148f Merge branch 'develop' into issues/509
# Conflicts:
#	public/js/ff/transactions/list.js
2017-12-30 11:49:42 +01:00
James Cole
f9d87cb9f6 Remove unused translations. 2017-12-30 09:47:37 +01:00
Victor Mosin
50fcc42e99 Fixed wrong counter value 2017-12-30 09:39:47 +01:00
Victor Mosin
805456d032 Introduced bulk edit endpoint for bulk edit of categories and tags 2017-12-30 09:21:28 +01:00
James Cole
a9df7906eb Update JS and CSS libraries. 2017-12-30 06:51:16 +01:00
James Cole
59d732cba7 Merge branch 'release/4.6.12' 2017-12-29 20:06:56 +01:00
James Cole
61099bef27 Last changes for Sandstorm. 2017-12-29 20:02:33 +01:00
James Cole
dca44f1588 Code for new release. 2017-12-29 19:55:15 +01:00
James Cole
87174ddbb3 Fix language strings. 2017-12-29 19:35:51 +01:00
James Cole
c5cc101f4b Fix language strings. 2017-12-29 19:29:58 +01:00
James Cole
071c4286a7 Add a test for the Rabobank converter. 2017-12-29 12:27:29 +01:00
James Cole
7603fc0436 Some language updates. 2017-12-29 09:35:40 +01:00
James Cole
c7850f9f1a Update some French strings. 2017-12-29 09:32:58 +01:00
James Cole
c0eebb2b08 Updated languages. 2017-12-29 09:13:46 +01:00
James Cole
87147c37ae Clean up language. 2017-12-29 09:06:07 +01:00
James Cole
3815f9836f Various code cleanup. 2017-12-29 09:05:35 +01:00
James Cole
cf66ae61e1 Add extra info line. 2017-12-29 07:25:30 +01:00
James Cole
962324c3f7 Expand test coverage. 2017-12-28 20:06:16 +01:00
James Cole
bd3e262273 Expand coverage. 2017-12-28 19:55:10 +01:00
James Cole
fa65035664 make sure mocked class accepts all arguments. 2017-12-28 19:47:58 +01:00
James Cole
ca1b6046f3 Test update checker. 2017-12-28 19:16:27 +01:00
James Cole
128085963f Small update to update checker. 2017-12-28 19:03:15 +01:00
James Cole
67cc03e4dd More code for spectre. 2017-12-28 18:39:30 +01:00
James Cole
ca4db81dbd First code to check for new version. 2017-12-28 18:39:17 +01:00
James Cole
a10672a683 Progress for Spectre import. 2017-12-28 18:38:59 +01:00
James Cole
0977d8d631 Fix #1070 2017-12-28 18:28:22 +01:00
James Cole
42676746a2 Remove Spectre table. 2017-12-28 18:26:08 +01:00
James Cole
ae7933c8c9 use config, not preferences, first tests. 2017-12-28 11:57:38 +01:00
James Cole
b65e1e022e First code for #1050 2017-12-28 11:38:40 +01:00
James Cole
9ab3848755 New binary file that doesn’t look like a zip file in PHP7.2 2017-12-28 09:53:37 +01:00
James Cole
986d7de906 Code for #1040 2017-12-28 09:53:21 +01:00
James Cole
eda1673518 Also test PHP7.2 2017-12-27 22:29:25 +01:00
James Cole
97cde38d8f Create logins. 2017-12-27 18:34:03 +01:00
James Cole
5ba03bd222 Fix #1066 2017-12-27 18:11:22 +01:00
James Cole
a14ae02c27 Expand Spectre code. 2017-12-27 17:22:44 +01:00
James Cole
deebdef04d Updated language files [skip ci] 2017-12-27 15:58:03 +01:00
James Cole
e881bb55a7 Improve code coverage. 2017-12-26 17:34:59 +01:00
James Cole
9e3f31f2f0 Improve testing of middleware. 2017-12-26 17:33:53 +01:00
James Cole
f7652e7f01 Fix data export. 2017-12-26 08:32:00 +01:00
James Cole
5289f3e4c2 Limit export controller for demo users. 2017-12-25 15:31:57 +01:00
James Cole
01818af963 Expand binder test. 2017-12-25 15:30:50 +01:00
James Cole
58eaf3bccc Update code to match route binder. 2017-12-25 10:34:32 +01:00
James Cole
a3ec741d67 Updated code coverage, improved binder code. 2017-12-25 09:44:46 +01:00
James Cole
5cb948d0f3 Currency code test. 2017-12-25 09:00:09 +01:00
James Cole
56ae279c96 Code coverage ignore instruction is case sensitive. 2017-12-25 08:48:49 +01:00
James Cole
bf390b65d9 Replace Laravel binder with own binder. This will save in queries and increase security. 2017-12-25 08:45:23 +01:00
James Cole
96ccce5db3 Expand tests. 2017-12-24 11:29:16 +01:00
James Cole
d4aee258c4 Update language to fix #1064 2017-12-23 22:07:39 +01:00
James Cole
7f8e736928 Expand read me. 2017-12-23 22:03:06 +01:00
James Cole
f85bdcebaf Expand test coverage 2017-12-23 22:02:54 +01:00
James Cole
f6096339cb Fix #1063 2017-12-23 22:02:42 +01:00
James Cole
f6bd17c70b Update languages and language config. 2017-12-23 22:02:29 +01:00
James Cole
6a05ec98f4 Update job thing. 2017-12-23 21:30:30 +01:00
James Cole
c60ee14b86 Better context for language strings. 2017-12-23 21:29:05 +01:00
James Cole
26f196a067 Finally remove incomplete test flag 2017-12-23 21:05:12 +01:00
James Cole
93c463c349 Fix all tests after large composer update. 2017-12-23 20:46:52 +01:00
James Cole
59ea4a0364 Update packages. 2017-12-23 17:51:45 +01:00
James Cole
df406dd794 Update most, if not all dependencies. 2017-12-23 17:43:13 +01:00
James Cole
08b743ddcb Expand test coverage. 2017-12-23 17:42:07 +01:00
James Cole
8bd76d1ff0 Various code cleanup. 2017-12-22 18:32:43 +01:00
James Cole
f13a93348f Updated readme [skip ci] 2017-12-22 07:47:50 +01:00
James Cole
b0ecdfe01d Fix pagination of account lists for issue #1040 2017-12-21 21:18:30 +01:00
James Cole
4b869f0d9e Middleware does not fire when user is not logged in. 2017-12-21 19:55:28 +01:00
James Cole
707af8bb4e Code for #1045 2017-12-21 19:18:53 +01:00
James Cole
840705f793 No need to unset non-existing variable #1059 2017-12-21 07:59:22 +01:00
James Cole
36c8275f5e Fix #1061 2017-12-20 20:07:57 +01:00
James Cole
62a4af8607 Expand fix for #1059 [skip ci] 2017-12-19 21:56:29 +01:00
James Cole
46f894c09b Fix #1059 2017-12-19 21:54:15 +01:00
James Cole
e8f9796fc5 Make sure language files are up to date [skip ci] 2017-12-19 19:35:54 +01:00
James Cole
a69aad878e Fix #1056 2017-12-19 19:25:50 +01:00
James Cole
e21e339cb0 Fix some spelling errors. 2017-12-19 18:53:50 +01:00
James Cole
9ede6755c5 Update language files [skip ci] 2017-12-19 05:24:14 +01:00
James Cole
34fc9bc50a Fix Spectre, first code to create customer. 2017-12-19 05:20:37 +01:00
James Cole
79f700c622 Catch query exception 2017-12-19 05:20:05 +01:00
James Cole
ac04f77d94 Expand issue template 2017-12-19 05:19:54 +01:00
James Cole
9e8d7b18fa Disable not working imports [skip ci] 2017-12-17 19:24:43 +01:00
James Cole
3f62cf512f Limit some upload functions for demo users. 2017-12-17 19:22:34 +01:00
James Cole
51728efba1 Various cleanup [skip ci] 2017-12-17 19:06:11 +01:00
James Cole
c7d4ff6f27 Expand test code. 2017-12-17 18:23:10 +01:00
James Cole
c1e1da12c2 Fix division by zero. 2017-12-17 14:58:33 +01:00
James Cole
859b6fcea8 Update copyright [skip ci] 2017-12-17 14:44:46 +01:00
James Cole
1f6e42afd9 Update copyright [skip ci] 2017-12-17 14:44:05 +01:00
James Cole
ef3bc07249 Update copyright [skip ci] 2017-12-17 14:43:34 +01:00
James Cole
6c3204a8ce Update copyright [skip ci] 2017-12-17 14:43:13 +01:00
James Cole
250da33fd7 Update copyright [skip ci] 2017-12-17 14:42:49 +01:00
James Cole
dfda29cec3 Update copyright [skip ci] 2017-12-17 14:42:33 +01:00
James Cole
085876dd83 Update copyright [skip ci] 2017-12-17 14:42:21 +01:00
James Cole
ff9ad859b3 Update copyright [skip ci] 2017-12-17 14:41:58 +01:00
James Cole
78335e5814 Expand tests, do code cleanup. 2017-12-17 14:30:53 +01:00
James Cole
b08af77c98 Fixed a lot of tests and associated code. 2017-12-17 14:06:14 +01:00
James Cole
7d348f25ac Expand import routine to work over command line. 2017-12-16 20:47:08 +01:00
James Cole
22535c0e43 Last steps for import, in user interface. 2017-12-16 20:21:05 +01:00
James Cole
1d58d519a0 Unrelated code cleanup. 2017-12-16 19:48:31 +01:00
James Cole
8176356509 New code for import routine, part 3 2017-12-16 19:47:14 +01:00
James Cole
9086259a65 Small code change for controllers. 2017-12-16 19:46:36 +01:00
James Cole
66ee382da0 Lots of new code for the import routine part 2 2017-12-16 17:19:10 +01:00
James Cole
84b6708260 Massive rewrite for import routine, part 1. 2017-12-16 08:03:35 +01:00
James Cole
985cc100e2 Code to fix #964 2017-12-15 12:59:21 +01:00
James Cole
3d0ecaa8d2 Heroku composer [skip ci] 2017-12-15 11:19:51 +01:00
James Cole
009c5a438c Heroku composer [skip ci] 2017-12-15 11:18:14 +01:00
James Cole
c3af8fefde Better check for Heroku [skip ci] 2017-12-15 11:15:22 +01:00
James Cole
1b116e3a1d Update composer for heroku [skip ci] 2017-12-15 11:14:07 +01:00
James Cole
76632f5bae Update composer file [skip ci] 2017-12-15 11:06:33 +01:00
James Cole
ee6030bc62 Update composer file [skip ci] 2017-12-15 11:02:49 +01:00
James Cole
2a000d432f Update composer file [skip ci] 2017-12-15 10:59:06 +01:00
James Cole
7557d4d3cb Clean up docker compose file. 2017-12-15 10:05:37 +01:00
James Cole
54ecfac550 New docker related files. 2017-12-15 09:16:41 +01:00
James Cole
11b5a0294e Small changes in templates [skip ci] 2017-12-13 18:46:30 +01:00
James Cole
9264f1e9b9 Fix #1051 2017-12-13 17:09:55 +01:00
James Cole
044af254f3 Update links to new site. 2017-12-13 14:15:44 +01:00
James Cole
e60bbc78e6 Forgot to include include command. 2017-12-13 11:07:05 +01:00
James Cole
06ddfe3d41 Limit routes for demo user. 2017-12-13 10:59:48 +01:00
James Cole
df458b3913 Update composer file and version info. 2017-12-12 21:13:50 +01:00
James Cole
fc4165b800 Make sure new CSV reader is compatible with specifics #1015 2017-12-12 21:05:16 +01:00
James Cole
44496707fb Remove some comments [skip ci] 2017-12-12 20:53:40 +01:00
James Cole
bad889d450 Update ING description for #1015 2017-12-12 20:53:16 +01:00
James Cole
1b4edae4d9 Final code for #384 2017-12-12 18:22:29 +01:00
James Cole
cacd889193 New translations [skip ci] 2017-12-11 19:42:57 +01:00
James Cole
5a7cf04a7c Update import index [skip ci] 2017-12-11 15:17:02 +01:00
James Cole
fd7a293f4b Merge branch 'spectre' into develop
* spectre:
  Fix encryption.
  Can handle some mandatory fields (not all).
  More code for Spectre import.
  Initial code to get providers from Spectre.
  Exceptions when class does not exist.
2017-12-11 14:53:01 +01:00
James Cole
f35aa6a035 Remove GA event codes. 2017-12-11 14:52:30 +01:00
James Cole
d1c8e54798 Null pointer in verify routine. 2017-12-11 10:59:28 +01:00
James Cole
5d9e547d05 Allow profile index [skip ci] 2017-12-11 10:28:10 +01:00
James Cole
c91bb5a565 Update admin rights for demo user. 2017-12-11 10:26:44 +01:00
James Cole
1b5b79897a Fix demo user rights in admin. 2017-12-11 10:23:29 +01:00
James Cole
d7f2b7cd63 Remove unused overview #384 2017-12-11 05:57:07 +01:00
James Cole
12c15ea590 Fix #1049 2017-12-10 21:12:04 +01:00
James Cole
d3a6ccacf0 Fix earned by category view [skip ci] 2017-12-10 20:10:04 +01:00
James Cole
6fed773cb8 Fix view [skip ci] 2017-12-10 20:07:23 +01:00
James Cole
4a1e4bb821 Decrypt object names. [skip ci] 2017-12-10 20:05:56 +01:00
James Cole
0c529cb7e7 Updated code for #384 2017-12-10 20:03:10 +01:00
James Cole
b1b6fe553a Fix tests, expand flush routine. 2017-12-10 18:09:36 +01:00
James Cole
54c449f11b Some code to get #384 working. 2017-12-10 17:55:06 +01:00
James Cole
b93a96db23 Expand code for #384 2017-12-10 12:00:08 +01:00
James Cole
06683c57dd Update verify routine for issue #1048 2017-12-10 11:52:14 +01:00
James Cole
6ad90c7a87 Update copyright stuff [skip ci] 2017-12-10 09:02:26 +01:00
James Cole
2a87add745 New stuff for report. 2017-12-10 08:56:20 +01:00
James Cole
089214709f Remove wrong copyright blocks [skip ci] 2017-12-10 08:56:11 +01:00
James Cole
9bf891f3fb Add newline to file. [skip ci] 2017-12-09 21:50:23 +01:00
James Cole
583f376f11 Updated composer file. 2017-12-09 21:49:33 +01:00
James Cole
4998eaeaf1 Code for #384 2017-12-09 21:49:19 +01:00
James Cole
3cf6386bb6 Fix encryption. 2017-12-09 20:08:08 +01:00
James Cole
2365fb69b4 Can handle some mandatory fields (not all). 2017-12-09 20:02:26 +01:00
James Cole
1fec7d6271 Fix #1047 2017-12-09 19:19:15 +01:00
James Cole
17684a3ab3 Fix #1046 2017-12-09 19:14:31 +01:00
James Cole
e488d7d84c More code for Spectre import. 2017-12-09 19:13:00 +01:00
James Cole
aa9500f5ad Initial code to get providers from Spectre. 2017-12-09 12:23:28 +01:00
James Cole
0774258516 Exceptions when class does not exist. 2017-12-09 12:08:24 +01:00
James Cole
f231edaa6d Update composer.json for #1045 2017-12-09 09:23:25 +01:00
James Cole
e47b218fc1 Merge branch 'release/4.6.11.1' 2017-12-08 19:53:15 +01:00
James Cole
93bdecb07c Remove unused lib. 2017-12-08 19:46:44 +01:00
James Cole
5f6f59a851 Update list of languages to match available languages. 2017-12-08 19:40:30 +01:00
James Cole
6469c7f537 Fix logging in Sandstorm. 2017-12-08 19:35:22 +01:00
James Cole
80f72d9dd7 Sort currencies. 2017-12-08 19:35:09 +01:00
James Cole
84d0ec062e New files for coming release. 2017-12-08 17:47:04 +01:00
James Cole
9220c0de16 New translations [skip ci] 2017-12-07 19:00:26 +01:00
James Cole
db77a83ac5 Fix docker file. 2017-12-07 18:46:52 +01:00
James Cole
5da8c2200a Fixes #1038 2017-12-07 16:16:48 +01:00
James Cole
cbde9cdae9 This should fix tests. 2017-12-06 19:41:51 +01:00
James Cole
343eb3a768 Fix null pointer [skip ci] 2017-12-06 19:21:17 +01:00
James Cole
9a9257176a Restore log routine. 2017-12-05 20:50:19 +01:00
James Cole
e4a0a718d1 Code that add extra check for #1039 2017-12-05 20:50:04 +01:00
James Cole
1b56765da3 Touch journals so issue #1036 is fixed. 2017-12-04 20:57:33 +01:00
James Cole
462439a5ab Better chart display for #1034 2017-12-03 09:27:54 +01:00
James Cole
7158dfe29a Hide reconcile button #1032 2017-12-03 09:01:39 +01:00
James Cole
f300c66143 Fix #1033 2017-12-03 08:57:23 +01:00
James Cole
553586a159 Remove reference to incomplete translations [skip ci] 2017-12-02 07:53:23 +01:00
James Cole
afd8896896 Update language related stuff. 2017-12-02 07:42:12 +01:00
James Cole
c9f188e5a6 Remove incomplete languages from code base [skip ci] 2017-12-02 07:28:24 +01:00
James Cole
3ad833b3ae Will no longer show incomplete languages. [skip ci] 2017-12-02 07:28:03 +01:00
James Cole
8cfd19855a Various new translations [skip ci] 2017-12-02 07:24:51 +01:00
James Cole
14deade6a4 Whoops [skip ci] 2017-12-02 07:20:43 +01:00
James Cole
efaa69cba1 Updates to bill code for #1029 2017-12-02 07:10:36 +01:00
James Cole
8eded63055 Fix for #1028 2017-12-02 06:42:00 +01:00
James Cole
ab689111f9 In the spirit of #1030, fix other JS strings as well. 2017-12-02 06:37:23 +01:00
James Cole
b87ef6252c Fix #1030 2017-12-02 06:29:06 +01:00
James Cole
8a59380c6d First set of code for #956 2017-12-01 20:11:29 +01:00
James Cole
382c5e5760 Updated config files [skip ci] 2017-12-01 18:43:37 +01:00
James Cole
02b4de46db Fix #1026 2017-11-30 22:05:18 +01:00
James Cole
aca5d8b6e9 Remove upgrade method. 2017-11-30 20:26:56 +01:00
James Cole
c2a129ddb0 Remove unused reference to model. 2017-11-30 20:26:16 +01:00
James Cole
f7eb78364d Merge branch 'release/4.6.11' 2017-11-30 20:16:28 +01:00
James Cole
a43dd4b2e8 Updated file list. 2017-11-30 20:01:18 +01:00
James Cole
7ef2941b85 Updated French translation. 2017-11-30 19:51:15 +01:00
James Cole
8a2b581658 Update change log and composer lock file. 2017-11-30 19:50:50 +01:00
James Cole
51f07ce918 Fix #1024 and #1025 2017-11-30 19:43:02 +01:00
James Cole
f30442320c Remove meta field when content is empty. 2017-11-30 19:39:49 +01:00
James Cole
4a1c155874 Update file list for sandstorm. 2017-11-30 07:24:42 +01:00
James Cole
c8ae19b811 New translations. 2017-11-30 07:13:52 +01:00
James Cole
64db5b91e2 heroku is broken 2017-11-30 07:12:22 +01:00
James Cole
941392f5ae Update composer and change log for sandstorm. 2017-11-30 07:11:39 +01:00
James Cole
0d9ac8b9c7 Restore composer file 2017-11-30 06:59:45 +01:00
James Cole
3581925b18 Update changelog. 2017-11-30 06:59:36 +01:00
James Cole
79517fc6e0 Various Heroku related fixes. 2017-11-29 19:15:44 +01:00
James Cole
9ae878724a Test: remove copy env.example 2017-11-29 18:20:38 +01:00
James Cole
aacc94cb01 Remove pre-install thing. 2017-11-29 18:20:20 +01:00
James Cole
203556aa8e Do not overrule logging when it’s not set to daily. [skip ci] 2017-11-29 18:12:00 +01:00
James Cole
16b0264a79 Do not overrule logging when it’s not set to daily. 2017-11-29 18:10:43 +01:00
James Cole
86d8ba6fc5 Update config for Heroku [skip ci] 2017-11-29 16:57:14 +01:00
James Cole
4dee6a9f59 Now without PHP errors. 2017-11-29 16:26:00 +01:00
James Cole
dedf774bf2 Update config for Heroku [skip ci] 2017-11-29 16:23:17 +01:00
James Cole
18a5bb682d Heroku related changes. 2017-11-27 19:07:57 +01:00
James Cole
b0b904c32e Fix parse error in composer.json 2017-11-27 19:01:44 +01:00
James Cole
fbaf84c427 Remove package discovery. 2017-11-27 18:47:00 +01:00
James Cole
0b2934235d Experimenting with heroku settings. 2017-11-27 18:39:11 +01:00
James Cole
2db0550eee Update composer file for Heroku. 2017-11-27 16:31:52 +01:00
James Cole
99d3ff5e47 Update composer file. 2017-11-26 18:00:05 +01:00
James Cole
be3d8ed192 Update composer file. 2017-11-26 17:59:31 +01:00
James Cole
2df8368a54 Update Heroku script [skip ci] 2017-11-26 17:52:20 +01:00
James Cole
c366f741c1 Update code for heroku [skip ci] 2017-11-26 17:48:53 +01:00
James Cole
3ab7dd3fb7 Some code cleanup to generate a push for #1006 2017-11-26 17:30:26 +01:00
James Cole
7852f4df1f Expand test coverage. 2017-11-26 09:54:09 +01:00
James Cole
0cf359b75f Code for #959 2017-11-25 20:54:42 +01:00
James Cole
60abe2a3af Various code cleanup. 2017-11-25 20:27:53 +01:00
James Cole
23826557c3 Fix #1004 2017-11-25 20:27:36 +01:00
James Cole
35647a062c Add php doc blocks. 2017-11-25 15:20:53 +01:00
James Cole
f7b1168e7c Code cleanup for scrutinizer. 2017-11-25 08:54:52 +01:00
James Cole
f2cf0ed446 Some bread crumbs and stuff [skip ci] 2017-11-24 23:14:27 +01:00
James Cole
378b4abaf1 Fix tests. 2017-11-24 23:05:44 +01:00
James Cole
af8df75e49 Add link to debug thing. 2017-11-24 21:51:31 +01:00
James Cole
be0758ce8a Update reconciliation code for #1011 and #736 2017-11-24 21:51:07 +01:00
James Cole
644fa3027a Some code for #736 2017-11-24 18:05:58 +01:00
James Cole
7de512aff8 Fix #1014 2017-11-24 17:33:05 +01:00
James Cole
93c2f13807 New strings [skip ci] 2017-11-24 17:06:42 +01:00
James Cole
7a1f698d5e Fix for #1016 and #968 2017-11-24 17:05:22 +01:00
James Cole
1aa325053e Update some Dutch translations [skip ci] 2017-11-22 22:09:29 +01:00
James Cole
8198d86934 Fix #1012 2017-11-22 21:54:58 +01:00
James Cole
8f80ee25c2 Code for #1010 2017-11-22 21:41:48 +01:00
James Cole
24b63abf2f Fix Javascript [skip ci] 2017-11-22 21:18:55 +01:00
James Cole
781ca052d8 Code cleanup. 2017-11-22 21:12:27 +01:00
James Cole
4e6b782204 Fix tests. 2017-11-22 20:30:23 +01:00
James Cole
3cb3c7f60f Code for 2fa 2017-11-22 20:20:57 +01:00
James Cole
0faa599b4c Code for reconcile. 2017-11-22 20:20:44 +01:00
James Cole
1fee62566b Fix some markdown related items for #1009 2017-11-22 18:12:09 +01:00
James Cole
d9fa098ae5 Fix view things. [skip ci] 2017-11-22 18:03:32 +01:00
James Cole
aa42d0f131 Missing translation. [skip ci] 2017-11-22 18:00:16 +01:00
James Cole
ba6a147032 Create reconciliation transaction. 2017-11-22 17:49:06 +01:00
James Cole
69bb76b6fe Update code for reconciliation. 2017-11-22 16:54:49 +01:00
James Cole
4b87e5be55 Keep mysql on latest. 2017-11-22 16:54:00 +01:00
James Cole
8f6ea6a73f Fix #1003 2017-11-19 09:20:29 +01:00
James Cole
6a88064548 Fix currency code. 2017-11-19 08:53:08 +01:00
James Cole
c357d25335 Update CSS 2017-11-18 21:03:41 +01:00
James Cole
7f27e3ce67 Update currencies #994 2017-11-18 21:03:28 +01:00
James Cole
7e66794cf5 Fix #958 2017-11-18 20:26:57 +01:00
James Cole
cd42399c29 Fix #931 2017-11-18 20:26:42 +01:00
James Cole
6bda5c2d53 New version [skip ci] 2017-11-18 16:55:12 +01:00
James Cole
9db83bc6ad Session lifetime is a week. 2017-11-18 16:51:57 +01:00
James Cole
ee45cc2f73 Fix upgrade database thing. 2017-11-18 16:36:22 +01:00
James Cole
e8e0a44cca Fix for #1002 2017-11-18 16:30:45 +01:00
James Cole
5f127b7bec Expand types. 2017-11-18 15:53:27 +01:00
James Cole
03edf6c0a0 Create new account and transaction types. 2017-11-18 15:51:11 +01:00
James Cole
5cfe3cf8a9 Fix entry fields 2017-11-18 15:50:21 +01:00
James Cole
1cec7652bf Fix #1001 2017-11-18 15:34:11 +01:00
James Cole
1045ed13fa Fix #996 2017-11-18 11:32:35 +01:00
James Cole
64fc6b6523 Some charts will render correctly #1000 2017-11-18 06:02:15 +01:00
James Cole
0812901745 Various code cleanup. 2017-11-18 05:46:19 +01:00
James Cole
573e72f7fb Fix views for #1000 2017-11-18 05:45:58 +01:00
James Cole
51a1512a3f Language update [skip ci] 2017-11-18 05:23:19 +01:00
James Cole
de41f23fb1 Merge branch 'develop' of https://github.com/firefly-iii/firefly-iii into develop
* 'develop' of https://github.com/firefly-iii/firefly-iii:
  Blind attempt to fix #997
2017-11-17 19:32:17 +01:00
James Cole
141225c980 Code for #914 2017-11-17 19:31:48 +01:00
James Cole
7bdafb48d2 Fix tag repos #997 2017-11-17 08:23:49 +01:00
James Cole
32695ba960 Blind attempt to fix #997 2017-11-17 08:22:26 +01:00
James Cole
02c2636b7d Fix #997 2017-11-17 05:52:44 +01:00
James Cole
bf87ffb933 Simplify tag cloud. 2017-11-15 15:38:39 +01:00
James Cole
63d93968d0 Fix tests. 2017-11-15 15:30:15 +01:00
James Cole
0c1ff98c66 Remove reference to self. 2017-11-15 12:53:55 +01:00
James Cole
ffca858b8d Code clean up. 2017-11-15 12:25:49 +01:00
James Cole
57dcdfa0c4 Code clean up. 2017-11-15 11:33:07 +01:00
James Cole
ef837f20dd Code clean up. 2017-11-15 10:53:17 +01:00
James Cole
649dca77f5 Code clean up. 2017-11-15 10:52:29 +01:00
James Cole
aee17221eb Code clean up. 2017-11-15 10:50:23 +01:00
James Cole
845d7d701f Update language files. 2017-11-15 10:36:50 +01:00
James Cole
c1259843cb Update language config. 2017-11-15 07:18:02 +01:00
James Cole
f576074f67 Merge pull request #977 from firefly-iii/l10n_develop
New Crowdin translations
2017-11-15 06:38:31 +01:00
James Cole
9fbad8df07 New translations firefly.php (Polish) 2017-11-15 06:30:56 +01:00
James Cole
f6d0aea015 New translations firefly.php (Portuguese, Brazilian) 2017-11-15 06:30:53 +01:00
James Cole
683dde54b7 New translations firefly.php (Slovenian) 2017-11-15 06:30:51 +01:00
James Cole
af6f21c4fd New translations firefly.php (Spanish) 2017-11-15 06:30:48 +01:00
James Cole
56501930b9 New translations firefly.php (German) 2017-11-15 06:30:43 +01:00
James Cole
62b38f43cd New translations firefly.php (French) 2017-11-15 06:30:38 +01:00
James Cole
0cc33cc3f6 New translations firefly.php (Dutch) 2017-11-15 06:30:33 +01:00
James Cole
6b1b41d320 New translations firefly.php (Indonesian) 2017-11-15 06:30:24 +01:00
James Cole
50e32cd570 New translations firefly.php (Russian) 2017-11-15 06:30:15 +01:00
James Cole
5530347bb2 New code for #736 2017-11-15 06:29:49 +01:00
James Cole
88ebcd1086 New translations list.php (Spanish) 2017-11-14 17:20:26 +01:00
James Cole
1971fb7e29 New translations validation.php (Russian) 2017-11-14 10:30:10 +01:00
James Cole
3243288e44 New translations validation.php (Russian) 2017-11-14 10:20:11 +01:00
James Cole
080a4002c6 New translations validation.php (Russian) 2017-11-14 10:10:14 +01:00
James Cole
cf460a0584 New translations validation.php (Russian) 2017-11-14 10:00:16 +01:00
James Cole
16ebee549b New translations bank.php (Russian) 2017-11-14 09:50:11 +01:00
James Cole
e73a7a3d14 New translations demo.php (Russian) 2017-11-14 09:50:10 +01:00
James Cole
e2ecfc7073 New translations validation.php (Russian) 2017-11-14 09:50:09 +01:00
James Cole
d413615943 Update tag routine for #993 2017-11-13 16:26:44 +01:00
James Cole
6c8f631582 Fix #992 2017-11-12 08:42:25 +01:00
James Cole
c013ce5bdb New translations firefly.php (German) 2017-11-11 17:40:58 +01:00
James Cole
f3a2a467d4 New translations firefly.php (Polish) 2017-11-10 18:31:45 +01:00
James Cole
8f6a5672fa New translations firefly.php (Portuguese, Brazilian) 2017-11-10 18:31:42 +01:00
James Cole
f6ebabe41d New translations firefly.php (Slovenian) 2017-11-10 18:31:39 +01:00
James Cole
b950b82e10 New translations firefly.php (Spanish) 2017-11-10 18:31:37 +01:00
James Cole
65b9d2cb00 New translations firefly.php (German) 2017-11-10 18:31:31 +01:00
James Cole
b79cbacce9 New translations firefly.php (French) 2017-11-10 18:31:25 +01:00
James Cole
fb20293e40 New translations firefly.php (Dutch) 2017-11-10 18:31:20 +01:00
James Cole
34c74ee3a3 New translations firefly.php (Indonesian) 2017-11-10 18:31:11 +01:00
James Cole
18f2b28b11 New translations firefly.php (Russian) 2017-11-10 18:31:00 +01:00
James Cole
f0e195f33b Basic reconcile view for #736 2017-11-10 18:25:11 +01:00
James Cole
19611982fa New translations form.php (German) 2017-11-10 18:10:15 +01:00
James Cole
112168b57c New translations firefly.php (Polish) 2017-11-10 15:02:05 +01:00
James Cole
e549009964 New translations firefly.php (Portuguese, Brazilian) 2017-11-10 15:02:01 +01:00
James Cole
60c261cb31 New translations firefly.php (Slovenian) 2017-11-10 15:01:57 +01:00
James Cole
628457695c New translations firefly.php (Spanish) 2017-11-10 15:01:54 +01:00
James Cole
a3befd9b1f New translations firefly.php (German) 2017-11-10 15:01:47 +01:00
James Cole
8bcfc624da New translations firefly.php (French) 2017-11-10 15:01:38 +01:00
James Cole
f88c311de7 New translations firefly.php (Dutch) 2017-11-10 15:01:32 +01:00
James Cole
34564de5e2 New translations firefly.php (Indonesian) 2017-11-10 15:01:23 +01:00
James Cole
88fd257d2c New translations firefly.php (Russian) 2017-11-10 15:01:12 +01:00
James Cole
b899628dbe New code for #736 2017-11-10 15:00:24 +01:00
James Cole
8f57222098 fix for #988 2017-11-08 16:04:55 +01:00
James Cole
d6f2557793 New translations demo.php (French) 2017-11-08 11:30:49 +01:00
James Cole
e15e4808c2 New translations firefly.php (French) 2017-11-08 11:30:47 +01:00
James Cole
328fc1d9df New translations form.php (French) 2017-11-08 11:20:42 +01:00
James Cole
19cf814e19 New translations firefly.php (Polish) 2017-11-08 09:51:18 +01:00
James Cole
ce45076063 New translations firefly.php (Portuguese, Brazilian) 2017-11-08 09:51:13 +01:00
James Cole
52544fc20c New translations firefly.php (Slovenian) 2017-11-08 09:51:10 +01:00
James Cole
8e64b22c45 New translations firefly.php (Spanish) 2017-11-08 09:51:07 +01:00
James Cole
ed27918c98 New translations firefly.php (German) 2017-11-08 09:50:59 +01:00
James Cole
2470a38b32 New translations firefly.php (French) 2017-11-08 09:50:48 +01:00
James Cole
4c6ec557e9 New translations firefly.php (Dutch) 2017-11-08 09:50:41 +01:00
James Cole
ac62acef1a New translations firefly.php (Indonesian) 2017-11-08 09:50:30 +01:00
James Cole
35ef6e10ee New translations firefly.php (Russian) 2017-11-08 09:50:18 +01:00
James Cole
920c7a93bc Better cache for reconcile [skip ci] 2017-11-08 09:47:38 +01:00
James Cole
78009c1cc0 New strings for reconciled transactions. #736 2017-11-08 09:40:38 +01:00
James Cole
d65109885a New translations bank.php (Indonesian) 2017-11-08 09:31:20 +01:00
James Cole
e986a1fc05 New translations bank.php (Dutch) 2017-11-08 09:30:40 +01:00
James Cole
ce331ffaff New translations bank.php (French) 2017-11-08 09:30:39 +01:00
James Cole
eb5f8067c0 New translations bank.php (German) 2017-11-08 09:30:38 +01:00
James Cole
421ce0e8f7 New translations bank.php (Polish) 2017-11-08 09:30:37 +01:00
James Cole
043e72f96c New translations bank.php (Portuguese, Brazilian) 2017-11-08 09:30:36 +01:00
James Cole
57b6cab774 New translations bank.php (Russian) 2017-11-08 09:30:35 +01:00
James Cole
2448c97d4b New translations bank.php (Slovenian) 2017-11-08 09:30:34 +01:00
James Cole
3f7f63c308 New translations bank.php (Spanish) 2017-11-08 09:30:27 +01:00
James Cole
8707bc6612 Code cleanup. 2017-11-08 09:05:10 +01:00
James Cole
b6514c7e54 Fix #987 2017-11-08 08:28:04 +01:00
James Cole
428bdfbe6f Update debug information. 2017-11-08 08:23:58 +01:00
James Cole
b5e76c77d2 New translations firefly.php (Dutch) 2017-11-08 08:20:22 +01:00
James Cole
19c9fc794d Update env files. [skip ci] 2017-11-08 07:54:42 +01:00
James Cole
1dfdf48471 Fix for #987 2017-11-08 07:19:21 +01:00
James Cole
15e0010162 New translations firefly.php (German) 2017-11-07 07:50:09 +01:00
James Cole
a2889ea4c4 Reverse null. 2017-11-06 20:17:54 +01:00
James Cole
ad18e04ad6 Expand error reporting for bad databases. 2017-11-06 20:17:39 +01:00
James Cole
347be7f4fd Update sandstorm files. 2017-11-06 19:24:32 +01:00
James Cole
6c9616bbc4 Fix #985 2017-11-05 21:16:20 +01:00
James Cole
8145c23905 Fix list view. 2017-11-05 21:12:49 +01:00
James Cole
ca358fd869 New translations firefly.php (Polish) 2017-11-05 20:20:12 +01:00
James Cole
42f8ac50f5 New translations firefly.php (Polish) 2017-11-05 19:51:02 +01:00
James Cole
5ee3828acf New translations firefly.php (Portuguese, Brazilian) 2017-11-05 19:51:00 +01:00
James Cole
aad2d50091 New translations firefly.php (Slovenian) 2017-11-05 19:50:57 +01:00
James Cole
54ae2af0f1 New translations firefly.php (Spanish) 2017-11-05 19:50:55 +01:00
James Cole
e98a7b7196 New translations firefly.php (German) 2017-11-05 19:50:50 +01:00
James Cole
61b180759c New translations firefly.php (French) 2017-11-05 19:50:44 +01:00
James Cole
718356592c New translations firefly.php (Dutch) 2017-11-05 19:50:39 +01:00
James Cole
be18896f84 New translations firefly.php (Indonesian) 2017-11-05 19:50:29 +01:00
James Cole
6ffdc3a505 New translations firefly.php (Russian) 2017-11-05 19:50:20 +01:00
James Cole
d2ab03061f Various code cleanup. 2017-11-05 19:49:20 +01:00
James Cole
33d89d52c2 Code that allows transaction reconciliation. #736 2017-11-05 19:48:43 +01:00
James Cole
a3bd4ccfbf New translations firefly.php (Polish) 2017-11-04 07:20:56 +01:00
James Cole
5a8f8d2448 New translations firefly.php (Portuguese, Brazilian) 2017-11-04 07:20:53 +01:00
James Cole
3320b69cd8 New translations firefly.php (Slovenian) 2017-11-04 07:20:51 +01:00
James Cole
bc19919bed New translations firefly.php (Spanish) 2017-11-04 07:20:48 +01:00
James Cole
3d318abf1b New translations firefly.php (German) 2017-11-04 07:20:43 +01:00
James Cole
31b5899fb0 New translations firefly.php (French) 2017-11-04 07:20:38 +01:00
James Cole
e75ada49b7 New translations firefly.php (Dutch) 2017-11-04 07:20:33 +01:00
James Cole
71eeffdbf4 New translations firefly.php (Indonesian) 2017-11-04 07:20:24 +01:00
James Cole
a71e9e578d New translations firefly.php (Russian) 2017-11-04 07:20:13 +01:00
James Cole
bb46d034cd Various cleanup in transaction and journal display code. 2017-11-04 07:10:21 +01:00
James Cole
b4dc70244a Fix for #980 2017-11-04 06:23:52 +01:00
James Cole
8cb42d1114 New translations firefly.php (German) 2017-11-03 21:32:29 +01:00
James Cole
7db233d0e8 New translations demo.php (Dutch) 2017-11-03 20:20:20 +01:00
James Cole
25268fabb3 New translations firefly.php (Dutch) 2017-11-03 20:20:18 +01:00
James Cole
c6434991d3 New translations firefly.php (Polish) 2017-11-03 16:32:48 +01:00
James Cole
ac801c8b86 Update models. 2017-11-03 16:04:17 +01:00
James Cole
6a1265564b New translations firefly.php (Portuguese, Brazilian) 2017-11-03 15:52:21 +01:00
James Cole
75680aa3f7 New translations firefly.php (Slovenian) 2017-11-03 15:52:16 +01:00
James Cole
c2adfc23d3 New translations firefly.php (Spanish) 2017-11-03 15:52:11 +01:00
James Cole
00bc8cc81e New translations firefly.php (Polish) 2017-11-03 15:51:59 +01:00
James Cole
41ca02b2dd New translations firefly.php (German) 2017-11-03 15:51:49 +01:00
James Cole
29f3c40cbe New translations firefly.php (Dutch) 2017-11-03 15:51:44 +01:00
James Cole
65a3b2d74c New translations firefly.php (French) 2017-11-03 15:51:37 +01:00
James Cole
7ac041f036 New translations firefly.php (Indonesian) 2017-11-03 15:51:22 +01:00
James Cole
0bc7e244ec New translations firefly.php (Russian) 2017-11-03 15:50:57 +01:00
James Cole
a664451913 Merge pull request #979 from pkoziol/develop
Translate hard-coded strings
2017-11-03 15:35:28 +01:00
koziolek
62998f8d69 Translate hard-coded strings. 2017-11-03 14:53:00 +01:00
James Cole
b907f998d9 New translations demo.php (German) 2017-11-03 14:21:03 +01:00
James Cole
c74e65b391 New translations firefly.php (German) 2017-11-03 14:21:02 +01:00
James Cole
5dc9e16553 New translations firefly.php (Polish) 2017-11-03 14:10:35 +01:00
James Cole
80fd0fa419 New translations firefly.php (Polish) 2017-11-03 13:50:51 +01:00
James Cole
0c206c9a0f New translations firefly.php (Portuguese, Brazilian) 2017-11-03 13:50:47 +01:00
James Cole
10a2b2075e New translations firefly.php (Slovenian) 2017-11-03 13:50:42 +01:00
James Cole
69e3158144 New translations firefly.php (Spanish) 2017-11-03 13:50:38 +01:00
James Cole
5019946c65 New translations firefly.php (German) 2017-11-03 13:50:24 +01:00
James Cole
ea7bd15c3d New translations firefly.php (French) 2017-11-03 13:50:11 +01:00
James Cole
bf884175a7 New translations firefly.php (Dutch) 2017-11-03 13:49:59 +01:00
James Cole
fc9479e517 New translations firefly.php (Indonesian) 2017-11-03 13:49:45 +01:00
James Cole
b333af769e New translations firefly.php (Russian) 2017-11-03 13:49:30 +01:00
James Cole
ca5249d839 Fix #976 2017-11-03 13:48:52 +01:00
James Cole
ba57852513 New translations firefly.php (Polish) 2017-11-03 13:42:26 +01:00
James Cole
d6f93d3c13 New translations firefly.php (Portuguese, Brazilian) 2017-11-03 13:42:22 +01:00
James Cole
1fcad87de6 New translations firefly.php (Slovenian) 2017-11-03 13:42:17 +01:00
James Cole
359d366e6e New translations firefly.php (Spanish) 2017-11-03 13:42:13 +01:00
James Cole
cbc3326d4b New translations firefly.php (German) 2017-11-03 13:42:05 +01:00
James Cole
1a147ecdd5 New translations firefly.php (French) 2017-11-03 13:41:57 +01:00
James Cole
df9bb13df1 New translations firefly.php (Indonesian) 2017-11-03 13:41:37 +01:00
James Cole
c2ee12466c New translations demo.php (Indonesian) 2017-11-03 13:41:32 +01:00
James Cole
6d9a562d0f New translations demo.php (Dutch) 2017-11-03 13:41:25 +01:00
James Cole
9da16f2b78 New translations demo.php (French) 2017-11-03 13:41:24 +01:00
James Cole
8bcebee767 New translations demo.php (German) 2017-11-03 13:41:22 +01:00
James Cole
c8240ea54f New translations demo.php (Russian) 2017-11-03 13:41:21 +01:00
James Cole
5ac5206253 New translations demo.php (Polish) 2017-11-03 13:41:20 +01:00
James Cole
a73adaaba9 New translations demo.php (Slovenian) 2017-11-03 13:41:19 +01:00
James Cole
7031cbcd29 New translations demo.php (Spanish) 2017-11-03 13:41:18 +01:00
James Cole
2dad5fb066 New translations firefly.php (Russian) 2017-11-03 13:41:16 +01:00
James Cole
db0b1d1fa2 New translations demo.php (Portuguese, Brazilian) 2017-11-03 13:41:11 +01:00
James Cole
810d2a3d87 Fix language issues reported by Findus23 2017-11-03 13:40:11 +01:00
James Cole
75f38d20df New translations firefly.php (German) 2017-11-03 13:00:16 +01:00
James Cole
214f651831 New translations validation.php (German) 2017-11-03 12:50:17 +01:00
James Cole
bc1982fb7b New translations firefly.php (Polish) 2017-11-03 12:50:15 +01:00
James Cole
99c9b719e7 New translations firefly.php (German) 2017-11-03 12:50:12 +01:00
James Cole
15eeba4381 New translations demo.php (German) 2017-11-03 12:30:13 +01:00
James Cole
77a6e81f1f New translations firefly.php (German) 2017-11-03 12:30:12 +01:00
James Cole
129ba5ed30 New translations firefly.php (German) 2017-11-03 12:10:14 +01:00
James Cole
8d9aa9392e New translations intro.php (German) 2017-11-03 12:00:23 +01:00
James Cole
566aa66c8b New translations form.php (German) 2017-11-03 12:00:21 +01:00
James Cole
d3bec76ebd New translations firefly.php (German) 2017-11-03 12:00:14 +01:00
James Cole
4c6b4074f5 New translations intro.php (German) 2017-11-03 11:50:12 +01:00
James Cole
787470d629 New translations form.php (German) 2017-11-03 11:50:11 +01:00
James Cole
607f960b6b New translations firefly.php (German) 2017-11-03 11:50:10 +01:00
James Cole
a636e88f25 New translations intro.php (German) 2017-11-03 11:40:14 +01:00
James Cole
d3b5300fc9 New translations validation.php (German) 2017-11-03 11:40:12 +01:00
James Cole
7ba2f3243d New translations form.php (German) 2017-11-03 11:31:57 +01:00
James Cole
8c75f9af14 New translations firefly.php (German) 2017-11-03 11:31:55 +01:00
James Cole
1867294704 New translations form.php (German) 2017-11-03 11:20:30 +01:00
James Cole
2d7a83ca34 New translations firefly.php (German) 2017-11-03 11:20:29 +01:00
James Cole
39679f89cd New translations firefly.php (German) 2017-11-03 11:11:10 +01:00
James Cole
8c707f8918 New translations firefly.php (German) 2017-11-03 11:00:15 +01:00
James Cole
dac4f23d51 Expand debug page. 2017-11-03 10:28:45 +01:00
1129 changed files with 41563 additions and 29194 deletions

View File

@@ -5,6 +5,7 @@ APP_KEY=${FF_APP_KEY}
APP_LOG=daily
APP_LOG_LEVEL=warning
APP_URL=http://localhost
TRUSTED_PROXIES=
DB_CONNECTION=mysql
DB_HOST=${FF_DB_HOST}
@@ -36,7 +37,6 @@ MAIL_ENCRYPTION=null
SEND_REGISTRATION_MAIL=true
SEND_ERROR_MESSAGE=true
SHOW_INCOMPLETE_TRANSLATIONS=false
CACHE_PREFIX=firefly
@@ -55,3 +55,6 @@ PUSHER_ID=
DEMO_USERNAME=
DEMO_PASSWORD=
IS_DOCKER=true
IS_SANDSTORM=false
IS_HEROKU=false

View File

@@ -3,7 +3,7 @@ APP_DEBUG=false
APP_NAME=FireflyIII
APP_KEY=SomeRandomStringOf32CharsExactly
APP_LOG=daily
APP_LOG_LEVEL=warning
APP_LOG_LEVEL=notice
APP_URL=http://localhost
TRUSTED_PROXIES=
@@ -37,7 +37,6 @@ MAIL_ENCRYPTION=null
SEND_REGISTRATION_MAIL=true
SEND_ERROR_MESSAGE=true
SHOW_INCOMPLETE_TRANSLATIONS=false
CACHE_PREFIX=firefly
@@ -56,3 +55,6 @@ PUSHER_ID=
DEMO_USERNAME=
DEMO_PASSWORD=
IS_DOCKER=false
IS_SANDSTORM=false
IS_HEROKU=false

60
.env.heroku Normal file
View File

@@ -0,0 +1,60 @@
APP_ENV=heroku
APP_DEBUG=true
APP_NAME=FireflyIII
APP_KEY=7ahyYVPVsmxjdhsweWCauGeJfwc92NP2
APP_LOG=errorlog
APP_LOG_LEVEL=debug
APP_URL=http://localhost
TRUSTED_PROXIES=*
DB_CONNECTION=pgsql
BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync
COOKIE_PATH="/"
COOKIE_DOMAIN=
COOKIE_SECURE=false
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_FROM=changeme@example.com
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
SEND_REGISTRATION_MAIL=true
SEND_ERROR_MESSAGE=true
CACHE_PREFIX=firefly
SEARCH_RESULT_LIMIT=50
EXCHANGE_RATE_SERVICE=fixerio
MAPBOX_API_KEY=
ANALYTICS_ID=
SITE_OWNER=heroku@example.com
USE_ENCRYPTION=true
PUSHER_KEY=
PUSHER_SECRET=
PUSHER_ID=
DEMO_USERNAME=
DEMO_PASSWORD=
IS_DOCKER=false
IS_SANDSTORM=false
IS_HEROKU=true

View File

@@ -5,6 +5,7 @@ APP_KEY=SomeRandomStringOf32CharsExactly
APP_LOG=syslog
APP_LOG_LEVEL=info
APP_URL=http://localhost
TRUSTED_PROXIES=
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
@@ -36,7 +37,6 @@ MAIL_ENCRYPTION=null
SEND_REGISTRATION_MAIL=true
SEND_ERROR_MESSAGE=true
SHOW_INCOMPLETE_TRANSLATIONS=false
CACHE_PREFIX=firefly
@@ -54,3 +54,7 @@ PUSHER_ID=
DEMO_USERNAME=
DEMO_PASSWORD=
IS_DOCKER=false
IS_SANDSTORM=true
IS_HEROKU=false

View File

@@ -5,10 +5,12 @@ APP_KEY=TestTestTestTestTestTestTestTest
APP_LOG=daily
APP_LOG_LEVEL=debug
APP_URL=http://localhost
TRUSTED_PROXIES=
DB_CONNECTION=sqlite
DB_HOST=127.0.0.1
DB_PORT=3306
#DB_DATABASE=firefly
DB_USERNAME=homestead
DB_PASSWORD=
@@ -35,13 +37,13 @@ MAIL_ENCRYPTION=null
SEND_REGISTRATION_MAIL=true
SEND_ERROR_MESSAGE=true
SHOW_INCOMPLETE_TRANSLATIONS=false
CACHE_PREFIX=firefly
SEARCH_RESULT_LIMIT=50
EXCHANGE_RATE_SERVICE=fixerio
GOOGLE_MAPS_API_KEY=
MAPBOX_API_KEY=
ANALYTICS_ID=
SITE_OWNER=mail@example.com
USE_ENCRYPTION=true
@@ -53,3 +55,6 @@ PUSHER_ID=
DEMO_USERNAME=
DEMO_PASSWORD=
IS_DOCKER=false
IS_SANDSTORM=false
IS_HEROKU=false

View File

@@ -4,7 +4,7 @@
## 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

View File

@@ -7,3 +7,5 @@ I am running Firefly III version x.x.x
(please include if this problem also exists on the demo site)
#### Other important details (log files, system info):
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
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
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.

14
.htaccess Normal file
View File

@@ -0,0 +1,14 @@
# Optional: force HTTPS:
# <IfModule mod_rewrite.c>
# RewriteEngine On
# RewriteCond %{HTTPS} off
# RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
# </IfModule>
# To hide directory listing
Options All -Indexes
# To prevent access to .env and other files
<Files .*>
Deny from all
</Files>

View File

@@ -1,3 +1,79 @@
# 4.6.13
- [Issue 1074](https://github.com/firefly-iii/firefly-iii/issues/1074), suggested by [MacPaille](https://github.com/MacPaille)
- [Issue 1077](https://github.com/firefly-iii/firefly-iii/issues/1077), suggested by [wtercato](https://github.com/wtercato)
- Bulk edit of transactions thanks to [vicmosin](https://github.com/vicmosin) ([issue 1078](https://github.com/firefly-iii/firefly-iii/issues/1078))
- Support for Turkish.
- [Issue 1090](https://github.com/firefly-iii/firefly-iii/issues/1090), suggested by [Findus23](https://github.com/Findus23)
- [Issue 1097](https://github.com/firefly-iii/firefly-iii/issues/1097), suggested by [kelvinhammond](https://github.com/kelvinhammond)
- [Issue 1093](https://github.com/firefly-iii/firefly-iii/issues/1093), suggested by [jinformatique](https://github.com/jinformatique)
- [Issue 1098](https://github.com/firefly-iii/firefly-iii/issues/1098), suggested by [Nik-vr](https://github.com/Nik-vr)
- [Issue 972](https://github.com/firefly-iii/firefly-iii/issues/972), reported by [pjotrvdh](https://github.com/pjotrvdh)
- [Issue 1079](https://github.com/firefly-iii/firefly-iii/issues/1079), reported by [gavu](https://github.com/gavu)
- [Issue 1080](https://github.com/firefly-iii/firefly-iii/issues/1080), reported by [zjean](https://github.com/zjean)
- [Issue 1083](https://github.com/firefly-iii/firefly-iii/issues/1083), reported by [skuzzle](https://github.com/skuzzle)
- [Issue 1085](https://github.com/firefly-iii/firefly-iii/issues/1085), reported by [nicoschreiner](https://github.com/nicoschreiner)
- [Issue 1087](https://github.com/firefly-iii/firefly-iii/issues/1087), reported by [4oo4](https://github.com/4oo4)
- [Issue 1089](https://github.com/firefly-iii/firefly-iii/issues/1089), reported by [robin5210](https://github.com/robin5210)
- [Issue 1092](https://github.com/firefly-iii/firefly-iii/issues/1092), reported by [kelvinhammond](https://github.com/kelvinhammond)
- [Issue 1096](https://github.com/firefly-iii/firefly-iii/issues/1096), reported by [wtercato](https://github.com/wtercato)
# 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 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/1034), as reported by [Aquariu](https://github.com/Aquariu)
- Extra admin check for [issue 1039](https://github.com/firefly-iii/firefly-iii/issues/1039), as reported by [ocdtrekkie](https://github.com/ocdtrekkie)
- Missing translations ([issue 1026](https://github.com/firefly-iii/firefly-iii/issues/1026)), as reported by [gavu](https://github.com/gavu) and [zjean](https://github.com/zjean)
- [Issue 1028](https://github.com/firefly-iii/firefly-iii/issues/1028), reported by [zjean](https://github.com/zjean)
- [Issue 1029](https://github.com/firefly-iii/firefly-iii/issues/1029), reported by [zjean](https://github.com/zjean)
- [Issue 1030](https://github.com/firefly-iii/firefly-iii/issues/1030), as reported by [Traxxi](https://github.com/Traxxi)
- [Issue 1036](https://github.com/firefly-iii/firefly-iii/issues/1036), as reported by [webence](https://github.com/webence)
- [Issue 1038](https://github.com/firefly-iii/firefly-iii/issues/1038), as reported by [gavu](https://github.com/gavu)
# 4.6.11
- A debug page at `/debug` for easier debug.
- Strings translatable (see [issue 976](https://github.com/firefly-iii/firefly-iii/issues/976)), thanks to [Findus23](https://github.com/Findus23)
- Even more strings are translatable (and translated), thanks to [pkoziol](https://github.com/pkoziol) (see [issue 979](https://github.com/firefly-iii/firefly-iii/issues/979))
- Reconciliation of accounts ([issue 736](https://github.com/firefly-iii/firefly-iii/issues/736)), as requested by [kristophr](https://github.com/kristophr) and several others
- Extended currency list, as suggested by @emuhendis in [issue 994](https://github.com/firefly-iii/firefly-iii/issues/994)
- [Issue 996](https://github.com/firefly-iii/firefly-iii/issues/996) as suggested by [dp87](https://github.com/dp87)
- Disabled Heroku support until I get it working again.
- [Issue 980](https://github.com/firefly-iii/firefly-iii/issues/980), reported by [Tim-Frensch](https://github.com/Tim-Frensch)
- [Issue 987](https://github.com/firefly-iii/firefly-iii/issues/987), reported by [gavu](https://github.com/gavu)
- [Issue 988](https://github.com/firefly-iii/firefly-iii/issues/988), reported by [gavu](https://github.com/gavu)
- [Issue 992](https://github.com/firefly-iii/firefly-iii/issues/992), reported by [ncicovic](https://github.com/ncicovic)
- [Issue 993](https://github.com/firefly-iii/firefly-iii/issues/993), reported by [gavu](https://github.com/gavu)
- [Issue 997](https://github.com/firefly-iii/firefly-iii/issues/997), reported by [gavu](https://github.com/gavu)
- [Issue 1000](https://github.com/firefly-iii/firefly-iii/issues/1000), reported by [xpfgsyb](https://github.com/xpfgsyb)
- [Issue 1001](https://github.com/firefly-iii/firefly-iii/issues/1001), reported by [gavu](https://github.com/gavu)
- [Issue 1002](https://github.com/firefly-iii/firefly-iii/issues/1002), reported by [ursweiss](https://github.com/ursweiss)
- [Issue 1003](https://github.com/firefly-iii/firefly-iii/issues/1003), reported by [ursweiss](https://github.com/ursweiss)
- [Issue 1004](https://github.com/firefly-iii/firefly-iii/issues/1004), reported by [Aquariu](https://github.com/Aquariu)
- [Issue 1010](https://github.com/firefly-iii/firefly-iii/issues/1010)
- [Issue 1014](https://github.com/firefly-iii/firefly-iii/issues/1014), reported by [ursweiss](https://github.com/ursweiss)
- [Issue 1016](https://github.com/firefly-iii/firefly-iii/issues/1016)
- [Issue 1024](https://github.com/firefly-iii/firefly-iii/issues/1024), reported by [gavu](https://github.com/gavu)
- [Issue 1025](https://github.com/firefly-iii/firefly-iii/issues/1025), reported by [gavu](https://github.com/gavu)
# 4.6.10
- Greatly expanded Docker support thanks to [alazare619](https://github.com/alazare619)
- [Issue 967](https://github.com/firefly-iii/firefly-iii/issues/967), thanks to [Aquariu](https://github.com/Aquariu)

File diff suppressed because it is too large Load Diff

View File

@@ -15,8 +15,8 @@ const pkgdef :Spk.PackageDefinition = (
manifest = (
appTitle = (defaultText = "Firefly III"),
appVersion = 2,
appMarketingVersion = (defaultText = "4.6.10"),
appVersion = 7,
appMarketingVersion = (defaultText = "4.6.13"),
actions = [
# Define your "new document" handlers here.
@@ -41,7 +41,7 @@ const pkgdef :Spk.PackageDefinition = (
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",
license = (openSource = gpl3),
# The license this package is distributed under. See

View File

@@ -12,10 +12,10 @@ apt-get update
apt-get install -y python-software-properties software-properties-common
# install all languages
sed -i 's/# nl_NL.UTF-8 UTF-8/nl_NL.UTF-8 UTF-8/g' /etc/locale.gen
sed -i 's/# de_DE.UTF-8 UTF-8/de_DE.UTF-8 UTF-8/g' /etc/locale.gen
sed -i 's/# pt_BR.UTF-8 UTF-8/pt_BR.UTF-8 UTF-8/g' /etc/locale.gen
sed -i 's/# fr_FR.UTF-8 UTF-8/fr_FR.UTF-8 UTF-8/g' /etc/locale.gen
sed -i 's/# nl_NL.UTF-8 UTF-8/nl_NL.UTF-8 UTF-8/g' /etc/locale.gen
sed -i 's/# pl_PL.UTF-8 UTF-8/pl_PL.UTF-8 UTF-8/g' /etc/locale.gen
dpkg-reconfigure --frontend=noninteractive locales

View File

@@ -1,6 +1,7 @@
language: php
php:
- 7.1
- 7.2
cache:
directories:
@@ -22,7 +23,7 @@ script:
- phpunit -c phpunit.coverage.xml
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
branches:

View File

@@ -2,7 +2,105 @@
All notable changes to this project will be documented in this file.
This project adheres to [Semantic Versioning](http://semver.org/).
## [4.6.10] - 2017-11-xx
## [4.6.13] - 2018-01-06
### Added
- [Issue 1074](https://github.com/firefly-iii/firefly-iii/issues/1074), suggested by [MacPaille](https://github.com/MacPaille)
- [Issue 1077](https://github.com/firefly-iii/firefly-iii/issues/1077), suggested by [wtercato](https://github.com/wtercato)
- Bulk edit of transactions thanks to [vicmosin](https://github.com/vicmosin) ([issue 1078](https://github.com/firefly-iii/firefly-iii/issues/1078))
- Support for Turkish.
- [Issue 1090](https://github.com/firefly-iii/firefly-iii/issues/1090), suggested by [Findus23](https://github.com/Findus23)
- [Issue 1097](https://github.com/firefly-iii/firefly-iii/issues/1097), suggested by [kelvinhammond](https://github.com/kelvinhammond)
- [Issue 1093](https://github.com/firefly-iii/firefly-iii/issues/1093), suggested by [jinformatique](https://github.com/jinformatique)
- [Issue 1098](https://github.com/firefly-iii/firefly-iii/issues/1098), suggested by [Nik-vr](https://github.com/Nik-vr)
### Fixed
- [Issue 972](https://github.com/firefly-iii/firefly-iii/issues/972), reported by [pjotrvdh](https://github.com/pjotrvdh)
- [Issue 1079](https://github.com/firefly-iii/firefly-iii/issues/1079), reported by [gavu](https://github.com/gavu)
- [Issue 1080](https://github.com/firefly-iii/firefly-iii/issues/1080), reported by [zjean](https://github.com/zjean)
- [Issue 1083](https://github.com/firefly-iii/firefly-iii/issues/1083), reported by [skuzzle](https://github.com/skuzzle)
- [Issue 1085](https://github.com/firefly-iii/firefly-iii/issues/1085), reported by [nicoschreiner](https://github.com/nicoschreiner)
- [Issue 1087](https://github.com/firefly-iii/firefly-iii/issues/1087), reported by [4oo4](https://github.com/4oo4)
- [Issue 1089](https://github.com/firefly-iii/firefly-iii/issues/1089), reported by [robin5210](https://github.com/robin5210)
- [Issue 1092](https://github.com/firefly-iii/firefly-iii/issues/1092), reported by [kelvinhammond](https://github.com/kelvinhammond)
- [Issue 1096](https://github.com/firefly-iii/firefly-iii/issues/1096), reported by [wtercato](https://github.com/wtercato)
## [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 reported 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
### Added
- Import routine can scan for matching bills, [issue 956](https://github.com/firefly-iii/firefly-iii/issues/956)
### Changed
- 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/1034), as reported by [Aquariu](https://github.com/Aquariu)
- Extra admin check for [issue 1039](https://github.com/firefly-iii/firefly-iii/issues/1039), as reported by [ocdtrekkie](https://github.com/ocdtrekkie)
### Fixed
- Missing translations ([issue 1026](https://github.com/firefly-iii/firefly-iii/issues/1026)), as reported by [gavu](https://github.com/gavu) and [zjean](https://github.com/zjean)
- [Issue 1028](https://github.com/firefly-iii/firefly-iii/issues/1028), reported by [zjean](https://github.com/zjean)
- [Issue 1029](https://github.com/firefly-iii/firefly-iii/issues/1029), reported by [zjean](https://github.com/zjean)
- [Issue 1030](https://github.com/firefly-iii/firefly-iii/issues/1030), as reported by [Traxxi](https://github.com/Traxxi)
- [Issue 1036](https://github.com/firefly-iii/firefly-iii/issues/1036), as reported by [webence](https://github.com/webence)
- [Issue 1038](https://github.com/firefly-iii/firefly-iii/issues/1038), as reported by [gavu](https://github.com/gavu)
## [4.6.11] - 2017-11-30
### Added
- A debug page at `/debug` for easier debug.
- Strings translatable (see [issue 976](https://github.com/firefly-iii/firefly-iii/issues/976)), thanks to [Findus23](https://github.com/Findus23)
- Even more strings are translatable (and translated), thanks to [pkoziol](https://github.com/pkoziol) (see [issue 979](https://github.com/firefly-iii/firefly-iii/issues/979))
- Reconciliation of accounts ([issue 736](https://github.com/firefly-iii/firefly-iii/issues/736)), as requested by [kristophr](https://github.com/kristophr) and several others
### Changed
- Extended currency list, as suggested by [emuhendis](https://github.com/emuhendis) in [issue 994](https://github.com/firefly-iii/firefly-iii/issues/994)
- [Issue 996](https://github.com/firefly-iii/firefly-iii/issues/996) as suggested by [dp87](https://github.com/dp87)
### Removed
- Disabled Heroku support until I get it working again.
### Fixed
- [Issue 980](https://github.com/firefly-iii/firefly-iii/issues/980), reported by [Tim-Frensch](https://github.com/Tim-Frensch)
- [Issue 987](https://github.com/firefly-iii/firefly-iii/issues/987), reported by [gavu](https://github.com/gavu)
- [Issue 988](https://github.com/firefly-iii/firefly-iii/issues/988), reported by [gavu](https://github.com/gavu)
- [Issue 992](https://github.com/firefly-iii/firefly-iii/issues/992), reported by [ncicovic](https://github.com/ncicovic)
- [Issue 993](https://github.com/firefly-iii/firefly-iii/issues/993), reported by [gavu](https://github.com/gavu)
- [Issue 997](https://github.com/firefly-iii/firefly-iii/issues/997), reported by [gavu](https://github.com/gavu)
- [Issue 1000](https://github.com/firefly-iii/firefly-iii/issues/1000), reported by [xpfgsyb](https://github.com/xpfgsyb)
- [Issue 1001](https://github.com/firefly-iii/firefly-iii/issues/1001), reported by [gavu](https://github.com/gavu)
- [Issue 1002](https://github.com/firefly-iii/firefly-iii/issues/1002), reported by [ursweiss](https://github.com/ursweiss)
- [Issue 1003](https://github.com/firefly-iii/firefly-iii/issues/1003), reported by [ursweiss](https://github.com/ursweiss)
- [Issue 1004](https://github.com/firefly-iii/firefly-iii/issues/1004), reported by [Aquariu](https://github.com/Aquariu)
- [Issue 1010](https://github.com/firefly-iii/firefly-iii/issues/1010)
- [Issue 1014](https://github.com/firefly-iii/firefly-iii/issues/1014), reported by [ursweiss](https://github.com/ursweiss)
- [Issue 1016](https://github.com/firefly-iii/firefly-iii/issues/1016)
- [Issue 1024](https://github.com/firefly-iii/firefly-iii/issues/1024), reported by [gavu](https://github.com/gavu)
- [Issue 1025](https://github.com/firefly-iii/firefly-iii/issues/1025), reported by [gavu](https://github.com/gavu)
## [4.6.10] - 2017-11-03
### Added
- Greatly expanded Docker support thanks to [alazare619](https://github.com/alazare619)
- [Issue 967](https://github.com/firefly-iii/firefly-iii/issues/967), thanks to [Aquariu](https://github.com/Aquariu)
@@ -277,8 +375,8 @@ This will be the last release to support PHP 7.0.
- Can now make rules for attachments, see [issue 608](https://github.com/firefly-iii/firefly-iii/issues/608), as suggested by [dzaikos](https://github.com/dzaikos).
### Fixed
- Fixed [issue 629](https://github.com/firefly-iii/firefly-iii/issues/629), reported by forcaeluz
- Fixed [issue 630](https://github.com/firefly-iii/firefly-iii/issues/630), reported by welbert
- Fixed [issue 629](https://github.com/firefly-iii/firefly-iii/issues/629), reported by [forcaeluz](https://github.com/forcaeluz)
- Fixed [issue 630](https://github.com/firefly-iii/firefly-iii/issues/630), reported by [welbert](https://github.com/welbert)
- And more various bug fixes.
## [4.3.8] - 2017-04-08

View File

@@ -1,12 +1,18 @@
FROM php:7-apache
# use PHP 7.1 and Apache as a base.
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 && \
apt-get install -y --no-install-recommends libcurl4-openssl-dev \
zlib1g-dev \
libjpeg62-turbo-dev \
libpng12-dev \
libicu-dev \
libmcrypt-dev \
libedit-dev \
libtidy-dev \
libxml2-dev \
@@ -15,14 +21,16 @@ RUN apt-get update -y && \
libbz2-dev \
gettext-base \
locales && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
apt-get clean && \
rm -rf /var/lib/apt/lists/*
RUN docker-php-ext-install -j$(nproc) curl gd intl json mcrypt readline tidy zip bcmath xml mbstring pdo_sqlite pdo_mysql bz2 pdo_pgsql
# 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
# Generate locales supported by firefly
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
# Generate locales supported by Firefly III
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
# Enable apache mod rewrite..
@@ -31,23 +39,23 @@ RUN a2enmod rewrite
# Enable apache mod ssl..
RUN a2enmod ssl
# Create volumes for several directories:
VOLUME $FIREFLY_PATH/storage/export $FIREFLY_PATH/storage/upload
# Setup the Composer installer
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
ENV FIREFLY_PATH /var/www/firefly-iii
WORKDIR $FIREFLY_PATH
# The working directory
COPY . $FIREFLY_PATH
# Make sure we own Firefly III directory
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
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)
[![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 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?
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
### 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)
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
@@ -35,6 +37,10 @@ Register for a free Heroku account and instantly run Firefly III on your very ow
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.
### Other options
Firefly III is also available as a package on [https://softaculous.com/](Softaculous) and [AMPPS](https://www.ampps.com/).
## More about Firefly III
Personal financial management is pretty difficult, and everybody has their own approach to it.
@@ -51,7 +57,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!
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
@@ -72,8 +78,12 @@ This work [is licensed](https://github.com/firefly-iii/firefly-iii/blob/master/L
### 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).
### 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)

View File

@@ -2,6 +2,7 @@
"name": "Firefly III",
"description": "A free and open source personal finances manager",
"repository": "https://github.com/firefly-iii/firefly-iii",
"website": "https://firefly-iii.org/",
"logo": "https://raw.githubusercontent.com/firefly-iii/firefly-iii/master/public/mstile-150x150.png",
"keywords": [
"finance",
@@ -36,14 +37,16 @@
"transfers",
"management"
],
"website": "https://firefly-iii.github.io/",
"addons": [
{
"plan": "heroku-postgresql"
"plan": "heroku-postgresql",
"options": {
"version": "9.5"
}
}
],
"scripts": {
"postdeploy": "export APP_KEY=$(php artisan --no-ansi key:generate --show)"
"postdeploy": "php artisan migrate:refresh --seed;php artisan firefly:instructions install"
},
"buildpacks": [
{

View File

@@ -16,12 +16,10 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Console\Commands;
use Carbon\Carbon;
@@ -34,13 +32,10 @@ use FireflyIII\Repositories\User\UserRepositoryInterface;
use Illuminate\Console\Command;
use Storage;
/**
* Class CreateExport
* Class CreateExport.
*
* Generates export from the command line.
*
* @package FireflyIII\Console\Commands
*/
class CreateExport extends Command
{
@@ -66,7 +61,6 @@ class CreateExport extends Command
/**
* Create a new command instance.
*
*/
public function __construct()
{
@@ -74,7 +68,6 @@ class CreateExport extends Command
}
/**
*
* @SuppressWarnings(PHPMD.CyclomaticComplexity) // it's five its fine.
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
*
@@ -109,7 +102,7 @@ class CreateExport extends Command
// first date
$firstJournal = $journalRepository->first();
$first = new Carbon;
if (!is_null($firstJournal->id)) {
if (null !== $firstJournal->id) {
$first = $firstJournal->date;
}
@@ -125,7 +118,6 @@ class CreateExport extends Command
'job' => $job,
];
/** @var ProcessorInterface $processor */
$processor = app(ProcessorInterface::class);
$processor->setSettings($settings);

View File

@@ -16,16 +16,16 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Console\Commands;
use Artisan;
use FireflyIII\Exceptions\FireflyException;
use FireflyIII\Import\Logging\CommandHandler;
use FireflyIII\Import\Routine\ImportRoutine;
use FireflyIII\Import\Routine\RoutineInterface;
use FireflyIII\Repositories\ImportJob\ImportJobRepositoryInterface;
use FireflyIII\Repositories\User\UserRepositoryInterface;
use Illuminate\Console\Command;
@@ -35,9 +35,7 @@ use Monolog\Formatter\LineFormatter;
use Preferences;
/**
* Class CreateImport
*
* @package FireflyIII\Console\Commands
* Class CreateImport.
*/
class CreateImport extends Command
{
@@ -57,7 +55,7 @@ class CreateImport extends Command
protected $signature
= 'firefly:create-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.}
{--user= : The user ID that the import should import for.}
{--token= : The user\'s access token.}
@@ -65,7 +63,6 @@ class CreateImport extends Command
/**
* Create a new command instance.
*
*/
public function __construct()
{
@@ -77,6 +74,8 @@ class CreateImport extends Command
*
* @SuppressWarnings(PHPMD.ExcessiveMethodLength) // cannot be helped
* @SuppressWarnings(PHPMD.CyclomaticComplexity) // it's five exactly.
*
* @throws FireflyException
*/
public function handle()
{
@@ -97,8 +96,8 @@ class CreateImport extends Command
return;
}
$configurationData = json_decode(file_get_contents($configuration));
if (is_null($configurationData)) {
$configurationData = json_decode(file_get_contents($configuration), true);
if (null === $configurationData) {
$this->error(sprintf('Firefly III cannot read the contents of configuration file "%s" (working directory: "%s").', $configuration, $cwd));
return;
@@ -109,25 +108,20 @@ class CreateImport extends Command
$this->line(sprintf('Import into user: #%d (%s)', $user->id, $user->email));
$this->line(sprintf('Type of import: %s', $type));
/** @var ImportJobRepositoryInterface $jobRepository */
$jobRepository = app(ImportJobRepositoryInterface::class);
$jobRepository->setUser($user);
$job = $jobRepository->create($type);
$this->line(sprintf('Created job "%s"', $job->key));
Artisan::call('firefly:encrypt-file', ['file' => $file, 'key' => $job->key]);
$this->line('Stored import data...');
$job->configuration = $configurationData;
$job->status = 'configured';
$job->save();
$jobRepository->setConfiguration($job, $configurationData);
$jobRepository->updateStatus($job, 'configured');
$this->line('Stored configuration...');
if ($this->option('start') === true) {
if (true === $this->option('start')) {
$this->line('The import will start in a moment. This process is not visible...');
Log::debug('Go for import!');
@@ -138,20 +132,27 @@ class CreateImport extends Command
$handler->setFormatter($formatter);
$monolog->pushHandler($handler);
// start the actual routine:
/** @var ImportRoutine $routine */
$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->run();
// give feedback.
/** @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->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()
)
);
}
@@ -175,9 +176,9 @@ class CreateImport extends Command
$configuration = $this->argument('configuration');
$user = $userRepository->find(intval($this->option('user')));
$cwd = getcwd();
$validTypes = array_keys(config('firefly.import_formats'));
$validTypes = config('import.options.file.import_formats');
$type = strtolower($this->option('type'));
if (is_null($user->id)) {
if (null === $user->id) {
$this->error(sprintf('There is no user with ID %d.', $this->option('user')));
return false;

View File

@@ -16,9 +16,8 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Console\Commands;
@@ -28,9 +27,7 @@ use Illuminate\Console\Command;
use Log;
/**
* Class DecryptAttachment
*
* @package FireflyIII\Console\Commands
* Class DecryptAttachment.
*/
class DecryptAttachment extends Command
{
@@ -50,15 +47,12 @@ class DecryptAttachment extends Command
= 'firefly:decrypt-attachment {id:The ID of the attachment.} {name:The file name of the attachment.}
{directory:Where the file must be stored.}';
/**
* Create a new command instance.
*
*/
public function __construct()
{
parent::__construct();
}
/**
@@ -66,7 +60,6 @@ class DecryptAttachment extends Command
*
* @SuppressWarnings(PHPMD.CyclomaticComplexity) // it's five its fine.
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
*
*/
public function handle()
{
@@ -76,7 +69,7 @@ class DecryptAttachment extends Command
$attachment = $repository->findWithoutUser($attachmentId);
$attachmentName = trim($this->argument('name'));
$storagePath = realpath(trim($this->argument('directory')));
if (is_null($attachment->id)) {
if (null === $attachment->id) {
$this->error(sprintf('No attachment with id #%d', $attachmentId));
Log::error(sprintf('DecryptAttachment: No attachment with id #%d', $attachmentId));
@@ -108,7 +101,7 @@ class DecryptAttachment extends Command
$content = $repository->getContent($attachment);
$this->line(sprintf('Going to write content for attachment #%d into file "%s"', $attachment->id, $fullPath));
$result = file_put_contents($fullPath, $content);
if ($result === false) {
if (false === $result) {
$this->error('Could not write to file.');
return;

View File

@@ -16,9 +16,8 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Console\Commands;
@@ -27,9 +26,7 @@ use Crypt;
use Illuminate\Console\Command;
/**
* Class EncryptFile
*
* @package FireflyIII\Console\Commands
* Class EncryptFile.
*/
class EncryptFile extends Command
{
@@ -49,7 +46,6 @@ class EncryptFile extends Command
/**
* Create a new command instance.
*
*/
public function __construct()
{

View File

@@ -16,24 +16,22 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Console\Commands;
use FireflyIII\Exceptions\FireflyException;
use FireflyIII\Import\Logging\CommandHandler;
use FireflyIII\Import\Routine\ImportRoutine;
use FireflyIII\Import\Routine\RoutineInterface;
use FireflyIII\Models\ImportJob;
use Illuminate\Console\Command;
use Illuminate\Support\MessageBag;
use Log;
/**
* Class Import
*
* @package FireflyIII\Console\Commands
* Class Import.
*/
class Import extends Command
{
@@ -53,7 +51,6 @@ class Import extends Command
/**
* Create a new command instance.
*
*/
public function __construct()
{
@@ -62,13 +59,15 @@ class Import extends Command
/**
* Run the import routine.
*
* @throws FireflyException
*/
public function handle()
{
Log::debug('Start start-import command');
$jobKey = $this->argument('key');
$job = ImportJob::where('key', $jobKey)->first();
if (is_null($job)) {
if (null === $job) {
$this->error(sprintf('No job found with key "%s"', $jobKey));
return;
@@ -85,17 +84,27 @@ class Import extends Command
$handler = new CommandHandler($this);
$monolog->pushHandler($handler);
/** @var ImportRoutine $routine */
$routine = app(ImportRoutine::class);
// actually start job:
$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->run();
/** @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->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;
}
@@ -109,14 +118,14 @@ class Import extends Command
*/
private function isValid(ImportJob $job): bool
{
if (is_null($job)) {
if (null === $job) {
Log::error('This job does not seem to exist.');
$this->error('This job does not seem to exist.');
return false;
}
if ($job->status !== 'configured') {
if ('configured' !== $job->status) {
Log::error(sprintf('This job is not ready to be imported (status is %s).', $job->status));
$this->error('This job is not ready to be imported.');

View File

@@ -16,9 +16,8 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Console\Commands;
@@ -31,9 +30,7 @@ use Illuminate\Contracts\Filesystem\FileNotFoundException;
use Storage;
/**
* Class ScanAttachments
*
* @package FireflyIII\Console\Commands
* Class ScanAttachments.
*/
class ScanAttachments extends Command
{
@@ -53,7 +50,6 @@ class ScanAttachments extends Command
/**
* Create a new command instance.
*
*/
public function __construct()
{

View File

@@ -16,20 +16,16 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Console\Commands;
use DB;
use FireflyIII\Models\Account;
use FireflyIII\Models\AccountMeta;
use FireflyIII\Models\AccountType;
use FireflyIII\Models\BudgetLimit;
use FireflyIII\Models\LimitRepetition;
use FireflyIII\Models\Note;
use FireflyIII\Models\Transaction;
use FireflyIII\Models\TransactionCurrency;
@@ -45,17 +41,15 @@ use Preferences;
use Schema;
/**
* Class UpgradeDatabase
* Class UpgradeDatabase.
*
* Upgrade user database.
*
*
* @SuppressWarnings(PHPMD.CouplingBetweenObjects) // it just touches a lot of things.
* @package FireflyIII\Console\Commands
*/
class UpgradeDatabase extends Command
{
/**
* The console command description.
*
@@ -79,12 +73,14 @@ class UpgradeDatabase extends Command
/**
* Execute the console command.
*
* @throws \Exception
*/
public function handle()
{
$this->setTransactionIdentifier();
$this->migrateRepetitions();
$this->updateAccountCurrencies();
$this->createNewTypes();
$this->line('Updating currency information..');
$this->updateTransferCurrencies();
$this->updateOtherCurrencies();
@@ -93,30 +89,6 @@ class UpgradeDatabase extends Command
$this->info('Firefly III database is up to date.');
return;
}
/**
* Migrate budget repetitions to new format where the end date is in the budget limit as well,
* making the limit_repetition table obsolete.
*/
public function migrateRepetitions(): void
{
$set = BudgetLimit::whereNull('end_date')->get();
/** @var BudgetLimit $budgetLimit */
foreach ($set as $budgetLimit) {
/** @var LimitRepetition $repetition */
$repetition = $budgetLimit->limitrepetitions()->first();
if (!is_null($repetition)) {
$budgetLimit->end_date = $repetition->enddate;
$budgetLimit->save();
$this->line(sprintf('Updated budget limit #%d', $budgetLimit->id));
$repetition->delete();
}
}
return;
}
/**
@@ -173,7 +145,8 @@ class UpgradeDatabase extends Command
$obCurrency = intval($openingBalance->transaction_currency_id);
// both 0? set to default currency:
if ($accountCurrency === 0 && $obCurrency === 0) {
if (0 === $accountCurrency && 0 === $obCurrency) {
AccountMeta::where('account_id', $account->id)->where('name', 'currency_id')->forceDelete();
AccountMeta::create(['account_id' => $account->id, 'name' => 'currency_id', 'data' => $defaultCurrency->id]);
$this->line(sprintf('Account #%d ("%s") now has a currency setting (%s).', $account->id, $account->name, $defaultCurrencyCode));
@@ -181,7 +154,7 @@ class UpgradeDatabase extends Command
}
// account is set to 0, opening balance is not?
if ($accountCurrency === 0 && $obCurrency > 0) {
if (0 === $accountCurrency && $obCurrency > 0) {
AccountMeta::create(['account_id' => $account->id, 'name' => 'currency_id', 'data' => $obCurrency]);
$this->line(sprintf('Account #%d ("%s") now has a currency setting (%s).', $account->id, $account->name, $defaultCurrencyCode));
@@ -231,7 +204,7 @@ class UpgradeDatabase extends Command
->leftJoin('accounts', 'accounts.id', '=', 'transactions.account_id')
->leftJoin('account_types', 'account_types.id', '=', 'accounts.account_type_id')
->whereIn('account_types.type', [AccountType::DEFAULT, AccountType::ASSET])->first(['transactions.*']);
if (is_null($transaction)) {
if (null === $transaction) {
return;
}
/** @var Account $account */
@@ -240,13 +213,13 @@ class UpgradeDatabase extends Command
$transactions = $journal->transactions()->get();
$transactions->each(
function (Transaction $transaction) use ($currency) {
if (is_null($transaction->transaction_currency_id)) {
if (null === $transaction->transaction_currency_id) {
$transaction->transaction_currency_id = $currency->id;
$transaction->save();
}
// when mismatch in transaction:
if ($transaction->transaction_currency_id !== $currency->id) {
if (!(intval($transaction->transaction_currency_id) === intval($currency->id))) {
$transaction->foreign_currency_id = $transaction->transaction_currency_id;
$transaction->foreign_amount = $transaction->amount;
$transaction->transaction_currency_id = $currency->id;
@@ -295,8 +268,23 @@ class UpgradeDatabase extends Command
);
}
private function createNewTypes(): void
{
// create transaction type "Reconciliation".
$type = TransactionType::where('type', TransactionType::RECONCILIATION)->first();
if (is_null($type)) {
TransactionType::create(['type' => TransactionType::RECONCILIATION]);
}
$account = AccountType::where('type', AccountType::RECONCILIATION)->first();
if (is_null($account)) {
AccountType::create(['type' => AccountType::RECONCILIATION]);
}
}
/**
* Move all the journal_meta notes to their note object counter parts.
*
* @throws \Exception
*/
private function migrateNotes(): void
{
@@ -305,8 +293,8 @@ class UpgradeDatabase extends Command
foreach ($set as $meta) {
$journal = $meta->transactionJournal;
$note = $journal->notes()->first();
if (is_null($note)) {
$note = new Note;
if (null === $note) {
$note = new Note();
$note->noteable()->associate($journal);
}
@@ -314,11 +302,9 @@ class UpgradeDatabase extends Command
$note->save();
Log::debug(sprintf('Migrated meta note #%d to Note #%d', $meta->id, $note->id));
$meta->delete();
}
}
/**
* This method makes sure that the transaction journal uses the currency given in the transaction.
*
@@ -334,7 +320,10 @@ class UpgradeDatabase extends Command
if (!(intval($currency->id) === intval($journal->transaction_currency_id))) {
$this->line(
sprintf(
'Transfer #%d ("%s") has been updated to use %s instead of %s.', $journal->id, $journal->description, $currency->code,
'Transfer #%d ("%s") has been updated to use %s instead of %s.',
$journal->id,
$journal->description,
$currency->code,
$journal->transactionCurrency->code
)
);
@@ -376,7 +365,7 @@ class UpgradeDatabase extends Command
return;
}
if (!is_null($opposing)) {
if (null !== $opposing) {
// give both a new identifier:
$transaction->identifier = $identifier;
$opposing->identifier = $identifier;
@@ -385,7 +374,7 @@ class UpgradeDatabase extends Command
$processed[] = $transaction->id;
$processed[] = $opposing->id;
}
$identifier++;
++$identifier;
}
return;
@@ -412,22 +401,27 @@ class UpgradeDatabase extends Command
$currency = $repository->find(intval($transaction->account->getMeta('currency_id')));
// has no currency ID? Must have, so fill in using account preference:
if (is_null($transaction->transaction_currency_id)) {
$transaction->transaction_currency_id = $currency->id;
if (null === $transaction->transaction_currency_id) {
$transaction->transaction_currency_id = intval($currency->id);
Log::debug(sprintf('Transaction #%d has no currency setting, now set to %s', $transaction->id, $currency->code));
$transaction->save();
}
// does not match the source account (see above)? Can be fixed
// when mismatch in transaction and NO foreign amount is set:
if ($transaction->transaction_currency_id !== $currency->id && is_null($transaction->foreign_amount)) {
if (!(intval($transaction->transaction_currency_id) === intval($currency->id)) && null === $transaction->foreign_amount) {
Log::debug(
sprintf(
'Transaction #%d has a currency setting (#%d) that should be #%d. Amount remains %s, currency is changed.', $transaction->id,
$transaction->transaction_currency_id, $currency->id, $transaction->amount
'Transaction #%d has a currency setting (#%d) (%s) that should be #%d (%s). Amount remains %s, currency is changed.',
$transaction->id,
$transaction->transaction_currency_id,
$this->var_dump_ret(intval($transaction->transaction_currency_id)),
$currency->id,
$this->var_dump_ret(intval($currency->id)),
$transaction->amount
)
);
$transaction->transaction_currency_id = $currency->id;
$transaction->transaction_currency_id = intval($currency->id);
$transaction->save();
}
@@ -438,14 +432,14 @@ class UpgradeDatabase extends Command
$opposing = $journal->transactions()->where('amount', '>', 0)->where('identifier', $transaction->identifier)->first();
$opposingCurrency = $repository->find(intval($opposing->account->getMeta('currency_id')));
if (is_null($opposingCurrency->id)) {
if (null === $opposingCurrency->id) {
Log::error(sprintf('Account #%d ("%s") must have currency preference but has none.', $opposing->account->id, $opposing->account->name));
return;
}
// if the destination account currency is the same, both foreign_amount and foreign_currency_id must be NULL for both transactions:
if ($opposingCurrency->id === $currency->id) {
if (intval($opposingCurrency->id) === intval($currency->id)) {
// update both transactions to match:
$transaction->foreign_amount = null;
$transaction->foreign_currency_id = null;
@@ -459,7 +453,7 @@ class UpgradeDatabase extends Command
return;
}
// if destination account currency is different, both transactions must have this currency as foreign currency id.
if ($opposingCurrency->id !== $currency->id) {
if (!(intval($opposingCurrency->id) === intval($currency->id))) {
$transaction->foreign_currency_id = $opposingCurrency->id;
$opposing->foreign_currency_id = $opposingCurrency->id;
$transaction->save();
@@ -468,24 +462,23 @@ class UpgradeDatabase extends Command
}
// if foreign amount of one is null and the other is not, use this to restore:
if (is_null($transaction->foreign_amount) && !is_null($opposing->foreign_amount)) {
if (null === $transaction->foreign_amount && null !== $opposing->foreign_amount) {
$transaction->foreign_amount = bcmul(strval($opposing->foreign_amount), '-1');
$transaction->save();
Log::debug(sprintf('Restored foreign amount of transaction (1) #%d to %s', $transaction->id, $transaction->foreign_amount));
}
// if foreign amount of one is null and the other is not, use this to restore (other way around)
if (is_null($opposing->foreign_amount) && !is_null($transaction->foreign_amount)) {
if (null === $opposing->foreign_amount && null !== $transaction->foreign_amount) {
$opposing->foreign_amount = bcmul(strval($transaction->foreign_amount), '-1');
$opposing->save();
Log::debug(sprintf('Restored foreign amount of transaction (2) #%d to %s', $opposing->id, $opposing->foreign_amount));
}
// when both are zero, try to grab it from journal:
if (is_null($opposing->foreign_amount) && is_null($transaction->foreign_amount)) {
if (null === $opposing->foreign_amount && null === $transaction->foreign_amount) {
$foreignAmount = $journal->getMeta('foreign_amount');
if (is_null($foreignAmount)) {
if (null === $foreignAmount) {
Log::debug(sprintf('Journal #%d has missing foreign currency data, forced to do 1:1 conversion :(.', $transaction->transaction_journal_id));
$transaction->foreign_amount = bcmul(strval($transaction->amount), '-1');
$opposing->foreign_amount = bcmul(strval($opposing->amount), '-1');
@@ -497,7 +490,9 @@ class UpgradeDatabase extends Command
$foreignPositive = app('steam')->positive(strval($foreignAmount));
Log::debug(
sprintf(
'Journal #%d has missing foreign currency info, try to restore from meta-data ("%s").', $transaction->transaction_journal_id, $foreignAmount
'Journal #%d has missing foreign currency info, try to restore from meta-data ("%s").',
$transaction->transaction_journal_id,
$foreignAmount
)
);
$transaction->foreign_amount = bcmul($foreignPositive, '-1');
@@ -506,7 +501,22 @@ class UpgradeDatabase extends Command
$opposing->save();
}
return;
}
/**
* @param null $mixed
*
* @return string
*/
private function var_dump_ret($mixed = null): string
{
ob_start();
var_dump($mixed);
$content = ob_get_contents();
ob_end_clean();
return trim($content);
}
}

View File

@@ -16,9 +16,8 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Console\Commands;
@@ -26,9 +25,7 @@ namespace FireflyIII\Console\Commands;
use Illuminate\Console\Command;
/**
* Class UpgradeFireflyInstructions
*
* @package FireflyIII\Console\Commands
* Class UpgradeFireflyInstructions.
*/
class UpgradeFireflyInstructions extends Command
{
@@ -47,7 +44,6 @@ class UpgradeFireflyInstructions extends Command
/**
* Create a new command instance.
*
*/
public function __construct()
{
@@ -59,17 +55,16 @@ class UpgradeFireflyInstructions extends Command
*/
public function handle()
{
if ($this->argument('task') === 'update') {
if ('update' === $this->argument('task')) {
$this->updateInstructions();
}
if ($this->argument('task') === 'install') {
if ('install' === $this->argument('task')) {
$this->installInstructions();
}
}
/**
* Show a nice box
* Show a nice box.
*
* @param string $text
*/
@@ -82,7 +77,7 @@ class UpgradeFireflyInstructions extends Command
}
/**
* Show a nice info box
* Show a nice info box.
*
* @param string $text
*/
@@ -109,12 +104,10 @@ class UpgradeFireflyInstructions extends Command
if (substr($version, 0, $len) === $compare) {
$text = $config[$compare];
}
}
$this->showLine();
$this->boxed('');
if (is_null($text)) {
if (null === $text) {
$this->boxed(sprintf('Thank you for installing Firefly III, v%s!', $version));
$this->boxedInfo('There are no extra installation instructions.');
$this->boxed('Firefly III should be ready for use.');
@@ -131,17 +124,16 @@ class UpgradeFireflyInstructions extends Command
}
/**
* Show a line
* Show a line.
*/
private function showLine()
{
$line = '+';
for ($i = 0; $i < 78; $i++) {
for ($i = 0; $i < 78; ++$i) {
$line .= '-';
}
$line .= '+';
$this->line($line);
}
/**
@@ -159,12 +151,10 @@ class UpgradeFireflyInstructions extends Command
if (substr($version, 0, $len) === $compare) {
$text = $config[$compare];
}
}
$this->showLine();
$this->boxed('');
if (is_null($text)) {
if (null === $text) {
$this->boxed(sprintf('Thank you for updating to Firefly III, v%s', $version));
$this->boxedInfo('There are no extra upgrade instructions.');
$this->boxed('Firefly III should be ready for use.');

View File

@@ -17,28 +17,17 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
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;
use Illuminate\Console\Command;
use Illuminate\Support\Str;
/**
* Class UseEncryption
*
* @package FireflyIII\Console\Commands
* Class UseEncryption.
*/
class UseEncryption extends Command
{
@@ -57,7 +46,6 @@ class UseEncryption extends Command
/**
* Create a new command instance.
*
*/
public function __construct()
{
@@ -69,6 +57,12 @@ class UseEncryption extends Command
*/
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('Bill', 'name', 'name_encrypted');
$this->handleObjects('Bill', 'match', 'match_encrypted');
@@ -88,7 +82,7 @@ class UseEncryption extends Command
public function handleObjects(string $class, string $field, string $indicator)
{
$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();
foreach ($set as $entry) {

View File

@@ -16,9 +16,8 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Console\Commands;
@@ -28,11 +27,9 @@ use Log;
use Preferences;
/**
* Trait VerifiesAccessToken
* Trait VerifiesAccessToken.
*
* Verifies user access token for sensitive commands.
*
* @package FireflyIII\Console\Commands
*/
trait VerifiesAccessToken
{
@@ -58,24 +55,24 @@ trait VerifiesAccessToken
$repository = app(UserRepositoryInterface::class);
$user = $repository->find($userId);
if (is_null($user->id)) {
if (null === $user->id) {
Log::error(sprintf('verifyAccessToken(): no such user for input "%d"', $userId));
return false;
}
$accessToken = Preferences::getForUser($user, 'access_token', null);
if (is_null($accessToken)) {
if (null === $accessToken) {
Log::error(sprintf('User #%d has no access token, so cannot access command line options.', $userId));
return false;
}
if (!($accessToken->data === $token)) {
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 true;
}
}
}

View File

@@ -16,14 +16,14 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Console\Commands;
use Crypt;
use DB;
use FireflyIII\Models\Account;
use FireflyIII\Models\AccountType;
use FireflyIII\Models\Budget;
@@ -42,11 +42,9 @@ use Schema;
use stdClass;
/**
* Class VerifyDatabase
* Class VerifyDatabase.
*
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
*
* @package FireflyIII\Console\Commands
*/
class VerifyDatabase extends Command
{
@@ -96,7 +94,7 @@ class VerifyDatabase extends Command
$this->repairPiggyBanks();
$this->createLinkTypes();
$this->createAccessTokens();
$this->fixDoubleAmounts();
}
/**
@@ -104,16 +102,21 @@ class VerifyDatabase extends Command
*/
private function createAccessTokens()
{
$count = 0;
$users = User::get();
/** @var User $user */
foreach ($users as $user) {
$pref = Preferences::getForUser($user, 'access_token', null);
if (is_null($pref)) {
if (null === $pref) {
$token = $user->generateAccessToken();
Preferences::setForUser($user, 'access_token', $token);
$this->line(sprintf('Generated access token for user %s', $user->email));
++$count;
}
}
if (0 === $count) {
$this->info('All access tokens OK!');
}
}
/**
@@ -121,7 +124,8 @@ class VerifyDatabase extends Command
*/
private function createLinkTypes()
{
$set = [
$count = 0;
$set = [
'Related' => ['relates to', 'relates to'],
'Refund' => ['(partially) refunds', 'is (partially) refunded by'],
'Paid' => ['(partially) pays for', 'is (partially) paid for by'],
@@ -129,15 +133,69 @@ class VerifyDatabase extends Command
];
foreach ($set as $name => $values) {
$link = LinkType::where('name', $name)->where('outward', $values[0])->where('inward', $values[1])->first();
if (is_null($link)) {
if (null === $link) {
$link = new LinkType;
$link->name = $name;
$link->outward = $values[0];
$link->inward = $values[1];
++$count;
}
$link->editable = false;
$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;
}
/**
@@ -148,17 +206,17 @@ class VerifyDatabase extends Command
$set = PiggyBankEvent::with(['PiggyBank', 'TransactionJournal', 'TransactionJournal.TransactionType'])->get();
$set->each(
function (PiggyBankEvent $event) {
if (is_null($event->transaction_journal_id)) {
if (null === $event->transaction_journal_id) {
return true;
}
/** @var TransactionJournal $journal */
$journal = $event->transactionJournal()->first();
if (is_null($journal)) {
if (null === $journal) {
return true;
}
$type = $journal->transactionType->type;
if ($type !== TransactionType::TRANSFER) {
if (TransactionType::TRANSFER !== $type) {
$event->transaction_journal_id = null;
$event->save();
$this->line(sprintf('Piggy bank #%d was referenced by an invalid event. This has been fixed.', $event->piggy_bank_id));
@@ -208,7 +266,10 @@ class VerifyDatabase extends Command
foreach ($set as $entry) {
$line = sprintf(
'User #%d (%s) has budget #%d ("%s") which has no budget limits.',
$entry->user_id, $entry->email, $entry->id, $entry->name
$entry->user_id,
$entry->email,
$entry->id,
$entry->name
);
$this->line($line);
}
@@ -232,11 +293,11 @@ class VerifyDatabase extends Command
->get(
['accounts.id as account_id', 'accounts.deleted_at as account_deleted_at', 'transactions.id as transaction_id',
'transactions.deleted_at as transaction_deleted_at', 'transaction_journals.id as journal_id',
'transaction_journals.deleted_at as journal_deleted_at']
'transaction_journals.deleted_at as journal_deleted_at',]
);
/** @var stdClass $entry */
foreach ($set as $entry) {
$date = is_null($entry->transaction_deleted_at) ? $entry->journal_deleted_at : $entry->transaction_deleted_at;
$date = null === $entry->transaction_deleted_at ? $entry->journal_deleted_at : $entry->transaction_deleted_at;
$this->error(
'Error: Account #' . $entry->account_id . ' should have been deleted, but has not.' .
' Find it in the table called "accounts" and change the "deleted_at" field to: "' . $date . '"'
@@ -268,7 +329,7 @@ class VerifyDatabase extends Command
->whereNull('transaction_journals.deleted_at')
->get(
['transaction_journals.id', 'transaction_journals.user_id', 'users.email', 'account_types.type as a_type',
'transaction_types.type']
'transaction_types.type',]
);
foreach ($set as $entry) {
$this->error(
@@ -287,28 +348,33 @@ class VerifyDatabase extends Command
}
/**
* Any deleted transaction journals that have transactions that are NOT deleted:
* Any deleted transaction journals that have transactions that are NOT deleted:.
*/
private function reportJournals()
{
$set = TransactionJournal::leftJoin('transactions', 'transactions.transaction_journal_id', '=', 'transaction_journals.id')
->whereNotNull('transaction_journals.deleted_at')// USE THIS
->whereNull('transactions.deleted_at')
->whereNotNull('transactions.id')
->get(
[
'transaction_journals.id as journal_id',
'transaction_journals.description',
'transaction_journals.deleted_at as journal_deleted',
'transactions.id as transaction_id',
'transactions.deleted_at as transaction_deleted_at']
);
$count = 0;
$set = TransactionJournal::leftJoin('transactions', 'transactions.transaction_journal_id', '=', 'transaction_journals.id')
->whereNotNull('transaction_journals.deleted_at')// USE THIS
->whereNull('transactions.deleted_at')
->whereNotNull('transactions.id')
->get(
[
'transaction_journals.id as journal_id',
'transaction_journals.description',
'transaction_journals.deleted_at as journal_deleted',
'transactions.id as transaction_id',
'transactions.deleted_at as transaction_deleted_at',]
);
/** @var stdClass $entry */
foreach ($set as $entry) {
$this->error(
'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 . '"'
);
++$count;
}
if (0 === $count) {
$this->info('No orphaned transactions!');
}
}
@@ -317,17 +383,21 @@ class VerifyDatabase extends Command
*/
private function reportNoTransactions()
{
$set = TransactionJournal::leftJoin('transactions', 'transactions.transaction_journal_id', '=', 'transaction_journals.id')
->groupBy('transaction_journals.id')
->whereNull('transactions.transaction_journal_id')
->get(['transaction_journals.id']);
$count = 0;
$set = TransactionJournal::leftJoin('transactions', 'transactions.transaction_journal_id', '=', 'transaction_journals.id')
->groupBy('transaction_journals.id')
->whereNull('transactions.transaction_journal_id')
->get(['transaction_journals.id']);
foreach ($set as $entry) {
$this->error(
'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!');
}
}
/**
@@ -339,7 +409,7 @@ class VerifyDatabase extends Command
{
$plural = str_plural($name);
$class = sprintf('FireflyIII\Models\%s', ucfirst($name));
$field = $name === 'tag' ? 'tag' : 'name';
$field = 'tag' === $name ? 'tag' : 'name';
$set = $class::leftJoin($name . '_transaction_journal', $plural . '.id', '=', $name . '_transaction_journal.' . $name . '_id')
->leftJoin('users', $plural . '.user_id', '=', 'users.id')
->distinct()
@@ -349,7 +419,6 @@ class VerifyDatabase extends Command
/** @var stdClass $entry */
foreach ($set as $entry) {
$objName = $entry->name;
try {
$objName = Crypt::decrypt($objName);
@@ -359,7 +428,11 @@ class VerifyDatabase extends Command
$line = sprintf(
'User #%d (%s) has %s #%d ("%s") which has no transactions.',
$entry->user_id, $entry->email, $name, $entry->id, $objName
$entry->user_id,
$entry->email,
$name,
$entry->id,
$objName
);
$this->line($line);
}
@@ -376,8 +449,10 @@ class VerifyDatabase extends Command
/** @var User $user */
foreach ($userRepository->all() as $user) {
$sum = strval($user->transactions()->sum('amount'));
if (bccomp($sum, '0') !== 0) {
if (0 !== bccomp($sum, '0')) {
$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));
}
}
}
@@ -392,7 +467,7 @@ class VerifyDatabase extends Command
->whereNull('transaction_journals.deleted_at')
->get(
['transactions.id as transaction_id', 'transactions.deleted_at as transaction_deleted', 'transaction_journals.id as journal_id',
'transaction_journals.deleted_at']
'transaction_journals.deleted_at',]
);
/** @var stdClass $entry */
foreach ($set as $entry) {
@@ -419,11 +494,10 @@ class VerifyDatabase extends Command
$this->error(
sprintf(
'Error: Transaction journal #%d is a %s, but has a budget. Edit it without changing anything, so the budget will be removed.',
$entry->id, $entry->transactionType->type
$entry->id,
$entry->transactionType->type
)
);
}
}
}

View File

@@ -16,21 +16,10 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
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;
use Illuminate\Console\Scheduling\Schedule;
@@ -48,13 +37,10 @@ class Kernel extends ConsoleKernel
*/
protected $commands
= [
//
];
/**
* Register the commands for the application.
*
* @return void
*/
protected function commands()
{
@@ -66,9 +52,8 @@ class Kernel extends ConsoleKernel
/**
* Define the application's command schedule.
*
* @param \Illuminate\Console\Scheduling\Schedule $schedule
* @param \Illuminate\Console\Scheduling\Schedule $schedule
*
* @return void
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
protected function schedule(Schedule $schedule)

View File

@@ -16,34 +16,36 @@
* 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/>.
* 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;
use Log;
/**
* Class AdminRequestedTestMessage
*
* @package FireflyIII\Events
* Class AdminRequestedTestMessage.
*/
class AdminRequestedTestMessage extends Event
{
use SerializesModels;
/**
* @var string
*/
public $ipAddress;
/**
* @var User
*/
public $user;
/**
* Create a new event instance.
*
* @param User $user
* @param User $user
* @param string $ipAddress
*/
public function __construct(User $user, string $ipAddress)

View File

@@ -16,19 +16,15 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Events;
/**
* Class Event
*
* @package FireflyIII\Events
* Class Event.
*/
abstract class Event
{
//
}

View File

@@ -16,9 +16,8 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Events;
@@ -27,21 +26,25 @@ use FireflyIII\User;
use Illuminate\Queue\SerializesModels;
/**
* Class RegisteredUser
*
* @package FireflyIII\Events
* Class RegisteredUser.
*/
class RegisteredUser extends Event
{
use SerializesModels;
/**
* @var string
*/
public $ipAddress;
/**
* @var User
*/
public $user;
/**
* Create a new event instance. This event is triggered when a new user registers.
*
* @param User $user
* @param User $user
* @param string $ipAddress
*/
public function __construct(User $user, string $ipAddress)

View File

@@ -16,9 +16,8 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Events;
@@ -27,22 +26,29 @@ use FireflyIII\User;
use Illuminate\Queue\SerializesModels;
/**
* Class RequestedNewPassword
*
* @package FireflyIII\Events
* Class RequestedNewPassword.
*/
class RequestedNewPassword extends Event
{
use SerializesModels;
/**
* @var string
*/
public $ipAddress;
/**
* @var string
*/
public $token;
/**
* @var User
*/
public $user;
/**
* Create a new event instance. This event is triggered when a users tries to reset his or her password.
*
* @param User $user
* @param User $user
* @param string $token
* @param string $ipAddress
*/
@@ -52,5 +58,4 @@ class RequestedNewPassword extends Event
$this->token = $token;
$this->ipAddress = $ipAddress;
}
}

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,9 +16,8 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Events;
@@ -27,13 +26,10 @@ use FireflyIII\Models\TransactionJournal;
use Illuminate\Queue\SerializesModels;
/**
* Class StoredTransactionJournal
*
* @package FireflyIII\Events
* Class StoredTransactionJournal.
*/
class StoredTransactionJournal extends Event
{
use SerializesModels;
/** @var TransactionJournal */
@@ -49,10 +45,7 @@ class StoredTransactionJournal extends Event
*/
public function __construct(TransactionJournal $journal, int $piggyBankId)
{
//
$this->journal = $journal;
$this->piggyBankId = $piggyBankId;
}
}

View File

@@ -16,9 +16,8 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Events;
@@ -27,13 +26,10 @@ use FireflyIII\Models\TransactionJournal;
use Illuminate\Queue\SerializesModels;
/**
* Class UpdatedTransactionJournal
*
* @package FireflyIII\Events
* Class UpdatedTransactionJournal.
*/
class UpdatedTransactionJournal extends Event
{
use SerializesModels;
/** @var TransactionJournal */
@@ -46,8 +42,6 @@ class UpdatedTransactionJournal extends Event
*/
public function __construct(TransactionJournal $journal)
{
//
$this->journal = $journal;
}
}

View File

@@ -16,9 +16,8 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Events;
@@ -27,19 +26,17 @@ use FireflyIII\User;
use Illuminate\Queue\SerializesModels;
/**
* Class UserChangedEmail
*
* @package FireflyIII\Events
* Class UserChangedEmail.
*/
class UserChangedEmail extends Event
{
use SerializesModels;
/** @var string */
/** @var string */
public $ipAddress;
/** @var string */
/** @var string */
public $newEmail;
/** @var string */
/** @var string */
public $oldEmail;
/** @var User */
public $user;
@@ -59,4 +56,4 @@ class UserChangedEmail extends Event
$this->oldEmail = $oldEmail;
$this->newEmail = $newEmail;
}
}
}

View File

@@ -16,20 +16,15 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Exceptions;
/**
* Class FireflyException
*
* @package FireflyIII\Exceptions
* Class FireflyException.
*/
class FireflyException extends \Exception
{
}
}

View File

@@ -16,21 +16,10 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
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;
use ErrorException;
@@ -39,7 +28,9 @@ use FireflyIII\Jobs\MailError;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
use Request;
/**
* Class Handler
*/
class Handler extends ExceptionHandler
{
/**
@@ -59,21 +50,19 @@ class Handler extends ExceptionHandler
*/
protected $dontReport
= [
//
];
/**
* Render an exception into an HTTP response.
*
* @param \Illuminate\Http\Request $request
* @param \Exception $exception
* @param \Illuminate\Http\Request $request
* @param \Exception $exception
*
* @return \Illuminate\Http\Response
*/
public function render($request, Exception $exception)
{
if ($exception instanceof FireflyException || $exception instanceof ErrorException) {
$isDebug = env('APP_DEBUG', false);
return response()->view('errors.FireflyException', ['exception' => $exception, 'debug' => $isDebug], 500);
@@ -88,9 +77,12 @@ class Handler extends ExceptionHandler
* This is a great spot to send exceptions to Sentry, Bugsnag, etc.
*
* @SuppressWarnings(PHPMD.CyclomaticComplexity) // it's five its fine.
* @param \Exception $exception
*
* @return void
* @param \Exception $exception
*
* @return mixed|void
*
* @throws Exception
*/
public function report(Exception $exception)
{
@@ -121,7 +113,6 @@ class Handler extends ExceptionHandler
dispatch($job);
}
parent::report($exception);
}
}

View File

@@ -16,20 +16,15 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Exceptions;
/**
* Class NotImplementedException
*
* @package FireflyIII\Exceptions
* Class NotImplementedException.
*/
class NotImplementedException extends \Exception
{
}
}

View File

@@ -16,19 +16,15 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Exceptions;
/**
* Class ValidationExceptions
*
* @package FireflyIII\Exception
* Class ValidationExceptions.
*/
class ValidationException extends \Exception
{
}
}

View File

@@ -16,9 +16,8 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Export\Collector;
@@ -33,19 +32,17 @@ use Log;
use Storage;
/**
* Class AttachmentCollector
*
* @package FireflyIII\Export\Collector
* Class AttachmentCollector.
*/
class AttachmentCollector extends BasicCollector implements CollectorInterface
{
/** @var Carbon */
/** @var Carbon */
private $end;
/** @var \Illuminate\Contracts\Filesystem\Filesystem */
private $exportDisk;
/** @var AttachmentRepositoryInterface */
/** @var AttachmentRepositoryInterface */
private $repository;
/** @var Carbon */
/** @var Carbon */
private $start;
/** @var \Illuminate\Contracts\Filesystem\Filesystem */
private $uploadDisk;
@@ -55,7 +52,7 @@ class AttachmentCollector extends BasicCollector implements CollectorInterface
*/
public function __construct()
{
/** @var AttachmentRepositoryInterface repository */
// @var AttachmentRepositoryInterface repository
$this->repository = app(AttachmentRepositoryInterface::class);
// make storage:
$this->uploadDisk = Storage::disk('upload');
@@ -104,11 +101,9 @@ class AttachmentCollector extends BasicCollector implements CollectorInterface
$exportFile = $this->exportFileName($attachment);
$this->exportDisk->put($exportFile, $decrypted);
$this->getEntries()->push($exportFile);
} catch (DecryptException $e) {
Log::error('Catchable error: could not decrypt attachment #' . $attachment->id . ' because: ' . $e->getMessage());
}
}
return true;
@@ -123,7 +118,6 @@ class AttachmentCollector extends BasicCollector implements CollectorInterface
*/
private function exportFileName($attachment): string
{
return sprintf('%s-Attachment nr. %s - %s', $this->job->key, strval($attachment->id), $attachment->filename);
}

View File

@@ -16,28 +16,24 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Export\Collector;
use FireflyIII\Models\ExportJob;
use FireflyIII\User;
use Illuminate\Support\Collection;
/**
* Class BasicCollector
*
* @package FireflyIII\Export\Collector
* Class BasicCollector.
*/
class BasicCollector
{
/** @var ExportJob */
protected $job;
/** @var User */
/** @var User */
protected $user;
/** @var Collection */
private $entries;
@@ -82,6 +78,4 @@ class BasicCollector
{
$this->user = $user;
}
}

View File

@@ -16,9 +16,8 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Export\Collector;
@@ -27,9 +26,7 @@ use FireflyIII\Models\ExportJob;
use Illuminate\Support\Collection;
/**
* Interface CollectorInterface
*
* @package FireflyIII\Export\Collector
* Interface CollectorInterface.
*/
interface CollectorInterface
{
@@ -45,9 +42,6 @@ interface CollectorInterface
/**
* @param Collection $entries
*
* @return void
*
*/
public function setEntries(Collection $entries);
@@ -57,5 +51,4 @@ interface CollectorInterface
* @return mixed
*/
public function setJob(ExportJob $job);
}

View File

@@ -16,9 +16,8 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Export\Collector;
@@ -30,9 +29,7 @@ use Log;
use Storage;
/**
* Class UploadCollector
*
* @package FireflyIII\Export\Collector
* Class UploadCollector.
*/
class UploadCollector extends BasicCollector implements CollectorInterface
{
@@ -94,7 +91,7 @@ class UploadCollector extends BasicCollector implements CollectorInterface
{
// find job associated with import file:
$job = $this->job->user->importJobs()->where('key', $key)->first();
if (is_null($job)) {
if (null === $job) {
return false;
}
@@ -116,5 +113,4 @@ class UploadCollector extends BasicCollector implements CollectorInterface
return true;
}
}

View File

@@ -16,9 +16,8 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Export\Entry;
@@ -27,7 +26,7 @@ use FireflyIII\Models\Transaction;
/**
* To extend the exported object, in case of new features in Firefly III for example,
* do the following:
* do the following:.
*
* - Add the field(s) to this class. If you add more than one related field, add a new object.
* - Make sure the "fromJournal"-routine fills these fields.
@@ -39,52 +38,141 @@ use FireflyIII\Models\Transaction;
*
*
* Class Entry
*
* @SuppressWarnings(PHPMD.LongVariable)
* @SuppressWarnings(PHPMD.TooManyFields)
*
* @package FireflyIII\Export\Entry
*/
final class Entry
{
// @formatter:off
/**
* @var int
*/
public $journal_id;
/**
* @var int
*/
public $transaction_id = 0;
/**
* @var string
*/
public $date;
/**
* @var string
*/
public $description;
/**
* @var string
*/
public $currency_code;
/**
* @var string
*/
public $amount;
/**
* @var string
*/
public $foreign_currency_code = '';
public $foreign_amount = '0';
/**
* @var string
*/
public $foreign_amount = '0';
/**
* @var string
*/
public $transaction_type;
/**
* @var string
*/
public $asset_account_id;
/**
* @var string
*/
public $asset_account_name;
/**
* @var string
*/
public $asset_account_iban;
/**
* @var string
*/
public $asset_account_bic;
/**
* @var string
*/
public $asset_account_number;
/**
* @var string
*/
public $asset_currency_code;
/**
* @var string
*/
public $opposing_account_id;
/**
* @var string
*/
public $opposing_account_name;
/**
* @var string
*/
public $opposing_account_iban;
/**
* @var string
*/
public $opposing_account_bic;
/**
* @var string
*/
public $opposing_account_number;
/**
* @var string
*/
public $opposing_currency_code;
/**
* @var string
*/
public $budget_id;
/**
* @var string
*/
public $budget_name;
/**
* @var string
*/
public $category_id;
/**
* @var string
*/
public $category_name;
/**
* @var string
*/
public $bill_id;
/**
* @var string
*/
public $bill_name;
/**
* @var string
*/
public $notes;
/**
* @var string
*/
public $tags;
// @formatter:on
/**
@@ -106,7 +194,7 @@ final class Entry
*/
public static function fromTransaction(Transaction $transaction): Entry
{
$entry = new self;
$entry = new self();
$entry->journal_id = $transaction->journal_id;
$entry->transaction_id = $transaction->id;
$entry->date = $transaction->date->format('Ymd');
@@ -115,50 +203,51 @@ final class Entry
$entry->description = $transaction->transaction_description . '(' . $transaction->description . ')';
}
$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 = is_null($transaction->foreign_currency_id) ? null : $transaction->foreignCurrency->code;
$entry->foreign_amount = is_null($transaction->foreign_currency_id)
$entry->foreign_currency_code = null === $transaction->foreign_currency_id ? null : $transaction->foreignCurrency->code;
$entry->foreign_amount = null === $transaction->foreign_currency_id
? null
: strval(
round(
$transaction->transaction_foreign_amount, $transaction->foreignCurrency->decimal_places
$transaction->transaction_foreign_amount,
$transaction->foreignCurrency->decimal_places
)
);
$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_iban = $transaction->account_iban;
$entry->asset_account_number = $transaction->account_number;
$entry->asset_account_bic = $transaction->account_bic;
$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_iban = $transaction->opposing_account_iban;
$entry->opposing_account_number = $transaction->opposing_account_number;
$entry->opposing_account_bic = $transaction->opposing_account_bic;
$entry->opposing_currency_code = $transaction->opposing_currency_code;
/** budget */
$entry->budget_id = $transaction->transaction_budget_id;
// budget
$entry->budget_id = strval($transaction->transaction_budget_id);
$entry->budget_name = app('steam')->tryDecrypt($transaction->transaction_budget_name);
if (is_null($transaction->transaction_budget_id)) {
if (null === $transaction->transaction_budget_id) {
$entry->budget_id = $transaction->transaction_journal_budget_id;
$entry->budget_name = app('steam')->tryDecrypt($transaction->transaction_journal_budget_name);
}
/** category */
$entry->category_id = $transaction->transaction_category_id;
// category
$entry->category_id = strval($transaction->transaction_category_id);
$entry->category_name = app('steam')->tryDecrypt($transaction->transaction_category_name);
if (is_null($transaction->transaction_category_id)) {
if (null === $transaction->transaction_category_id) {
$entry->category_id = $transaction->transaction_journal_category_id;
$entry->category_name = app('steam')->tryDecrypt($transaction->transaction_journal_category_name);
}
/** budget */
$entry->bill_id = $transaction->bill_id;
// budget
$entry->bill_id = strval($transaction->bill_id);
$entry->bill_name = app('steam')->tryDecrypt($transaction->bill_name);
$entry->tags = $transaction->tags;
@@ -166,6 +255,4 @@ final class Entry
return $entry;
}
}

View File

@@ -16,14 +16,12 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Export;
use Crypt;
use DB;
use FireflyIII\Exceptions\FireflyException;
@@ -34,8 +32,8 @@ use FireflyIII\Helpers\Collector\JournalCollectorInterface;
use FireflyIII\Helpers\Filter\InternalTransferFilter;
use FireflyIII\Models\AccountMeta;
use FireflyIII\Models\ExportJob;
use FireflyIII\Models\Note;
use FireflyIII\Models\Transaction;
use FireflyIII\Models\TransactionJournalMeta;
use FireflyIII\Repositories\Currency\CurrencyRepositoryInterface;
use Illuminate\Support\Collection;
use Log;
@@ -43,32 +41,29 @@ use Storage;
use ZipArchive;
/**
* Class ExpandedProcessor
* Class ExpandedProcessor.
*
* @SuppressWarnings(PHPMD.CouplingBetweenObjects) // its doing a lot.
*
* @package FireflyIII\Export
*/
class ExpandedProcessor implements ProcessorInterface
{
/** @var Collection */
public $accounts;
/** @var string */
/** @var string */
public $exportFormat;
/** @var bool */
/** @var bool */
public $includeAttachments;
/** @var bool */
/** @var bool */
public $includeOldUploads;
/** @var ExportJob */
/** @var ExportJob */
public $job;
/** @var array */
public $settings;
/** @var Collection */
/** @var Collection */
private $exportEntries;
/** @var Collection */
/** @var Collection */
private $files;
/** @var Collection */
/** @var Collection */
private $journals;
/**
@@ -119,7 +114,7 @@ class ExpandedProcessor implements ProcessorInterface
$notes = $this->getNotes($ids);
$tags = $this->getTags($ids);
/** @var array $ibans */
$ibans = $this->getIbans($assetIds) + $this->getIbans($opposingIds);
$ibans = array_merge($this->getIbans($assetIds), $this->getIbans($opposingIds));
$currencies = $this->getAccountCurrencies($ibans);
$transactions->each(
function (Transaction $transaction) use ($notes, $tags, $ibans, $currencies) {
@@ -136,7 +131,6 @@ class ExpandedProcessor implements ProcessorInterface
$transaction->opposing_account_number = $ibans[$opposingId]['accountNumber'] ?? '';
$transaction->opposing_account_bic = $ibans[$opposingId]['BIC'] ?? '';
$transaction->opposing_currency_code = $currencies[$opposingCurrencyId] ?? '';
}
);
@@ -177,7 +171,9 @@ class ExpandedProcessor implements ProcessorInterface
/**
* @return bool
*
* @throws FireflyException
* @throws \Illuminate\Contracts\Filesystem\FileNotFoundException
*/
public function createZipFile(): bool
{
@@ -185,7 +181,7 @@ class ExpandedProcessor implements ProcessorInterface
$file = $this->job->key . '.zip';
$fullPath = storage_path('export') . '/' . $file;
if ($zip->open($fullPath, ZipArchive::CREATE) !== true) {
if (true !== $zip->open($fullPath, ZipArchive::CREATE)) {
throw new FireflyException('Cannot store zip file.');
}
// for each file in the collection, add it to the zip file.
@@ -280,7 +276,7 @@ class ExpandedProcessor implements ProcessorInterface
}
/**
* Get all IBAN / SWIFT / account numbers
* Get all IBAN / SWIFT / account numbers.
*
* @param array $array
*
@@ -314,17 +310,16 @@ class ExpandedProcessor implements ProcessorInterface
private function getNotes(array $array): array
{
$array = array_unique($array);
$set = TransactionJournalMeta::whereIn('journal_meta.transaction_journal_id', $array)
->leftJoin('transaction_journals', 'transaction_journals.id', '=', 'journal_meta.transaction_journal_id')
->where('transaction_journals.user_id', $this->job->user_id)
->where('journal_meta.name', 'notes')->get(
['journal_meta.transaction_journal_id', 'journal_meta.data', 'journal_meta.id']
);
$notes = Note::where('notes.noteable_type', 'FireflyIII\\Models\\TransactionJournal')
->whereIn('notes.noteable_id', $array)
->get(['notes.*']);
$return = [];
/** @var TransactionJournalMeta $meta */
foreach ($set as $meta) {
$id = intval($meta->transaction_journal_id);
$return[$id] = $meta->data;
/** @var Note $note */
foreach ($notes as $note) {
if (strlen(trim(strval($note->text))) > 0) {
$id = intval($note->noteable_id);
$return[$id] = $note->text;
}
}
return $return;

View File

@@ -16,25 +16,21 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Export\Exporter;
use FireflyIII\Models\ExportJob;
use Illuminate\Support\Collection;
/**
* Class BasicExporter
*
* @package FireflyIII\Export\Exporter
* Class BasicExporter.
*/
class BasicExporter
{
/** @var ExportJob */
/** @var ExportJob */
protected $job;
/** @var Collection */
private $entries;
@@ -70,6 +66,4 @@ class BasicExporter
{
$this->job = $job;
}
}

View File

@@ -16,25 +16,22 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Export\Exporter;
use FireflyIII\Export\Entry\Entry;
use League\Csv\Writer;
use SplFileObject;
use Storage;
/**
* Class CsvExporter
*
* @package FireflyIII\Export\Exporter
* Class CsvExporter.
*/
class CsvExporter extends BasicExporter implements ExporterInterface
{
/** @var string */
/** @var string */
private $fileName;
/**
@@ -55,6 +52,8 @@ class CsvExporter extends BasicExporter implements ExporterInterface
/**
* @return bool
*
* @throws \TypeError
*/
public function run(): bool
{
@@ -63,13 +62,16 @@ class CsvExporter extends BasicExporter implements ExporterInterface
// necessary for CSV writer:
$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:
$first = $this->getEntries()->first();
$headers = [];
if (!is_null($first)) {
if (null !== $first) {
$headers = array_keys(get_object_vars($first));
}
@@ -88,9 +90,11 @@ class CsvExporter extends BasicExporter implements ExporterInterface
return true;
}
private function tempFile()
{
$this->fileName = $this->job->key . '-records.csv';
// touch file in export directory:
$disk = Storage::disk('export');
$disk->put($this->fileName, '');
}
}

View File

@@ -16,9 +16,8 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Export\Exporter;
@@ -27,9 +26,7 @@ use FireflyIII\Models\ExportJob;
use Illuminate\Support\Collection;
/**
* Interface ExporterInterface
*
* @package FireflyIII\Export\Exporter
* Interface ExporterInterface.
*/
interface ExporterInterface
{
@@ -50,9 +47,6 @@ interface ExporterInterface
/**
* @param Collection $entries
*
* @return void
*
*/
public function setEntries(Collection $entries);
@@ -60,5 +54,4 @@ interface ExporterInterface
* @param ExportJob $job
*/
public function setJob(ExportJob $job);
}

View File

@@ -16,9 +16,8 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Export;
@@ -26,13 +25,10 @@ namespace FireflyIII\Export;
use Illuminate\Support\Collection;
/**
* Interface ProcessorInterface
*
* @package FireflyIII\Export
* Interface ProcessorInterface.
*/
interface ProcessorInterface
{
/**
* Processor constructor.
*/

View File

@@ -16,9 +16,8 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Generator\Chart\Basic;
@@ -27,15 +26,12 @@ use FireflyIII\Support\ChartColour;
use Steam;
/**
* Class ChartJsGenerator
*
* @package FireflyIII\Generator\Chart\Basic
* Class ChartJsGenerator.
*/
class ChartJsGenerator implements GeneratorInterface
{
/**
* Will generate a Chart JS compatible array from the given input. Expects this format
* Will generate a Chart JS compatible array from the given input. Expects this format.
*
* Will take labels for all from first set.
*
@@ -102,7 +98,7 @@ class ChartJsGenerator implements GeneratorInterface
}
/**
* Expects data as:
* Expects data as:.
*
* key => value
*
@@ -123,7 +119,7 @@ class ChartJsGenerator implements GeneratorInterface
// different sort when values are positive and when they're negative.
asort($data);
$next = next($data);
if (!is_bool($next) && bccomp($next, '0') === 1) {
if (!is_bool($next) && 1 === bccomp($next, '0')) {
// next is positive, sort other way around.
arsort($data);
}
@@ -131,19 +127,18 @@ class ChartJsGenerator implements GeneratorInterface
$index = 0;
foreach ($data as $key => $value) {
// make larger than 0
$chartData['datasets'][0]['data'][] = floatval(Steam::positive($value));
$chartData['datasets'][0]['backgroundColor'][] = ChartColour::getColour($index);
$chartData['labels'][] = $key;
$index++;
++$index;
}
return $chartData;
}
/**
* Will generate a (ChartJS) compatible array from the given input. Expects this format:
* Will generate a (ChartJS) compatible array from the given input. Expects this format:.
*
* 'label-of-entry' => value
* 'label-of-entry' => value

View File

@@ -16,23 +16,19 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Generator\Chart\Basic;
/**
* Interface GeneratorInterface
*
* @package FireflyIII\Generator\Chart\Basic
* Interface GeneratorInterface.
*/
interface GeneratorInterface
{
/**
* Will generate a Chart JS compatible array from the given input. Expects this format
* Will generate a Chart JS compatible array from the given input. Expects this format.
*
* Will take labels for all from first set.
*
@@ -66,7 +62,7 @@ interface GeneratorInterface
public function multiSet(array $data): array;
/**
* Expects data as:
* Expects data as:.
*
* key => value
*
@@ -77,7 +73,7 @@ interface GeneratorInterface
public function pieChart(array $data): array;
/**
* Will generate a (ChartJS) compatible array from the given input. Expects this format:
* Will generate a (ChartJS) compatible array from the given input. Expects this format:.
*
* 'label-of-entry' => value
* 'label-of-entry' => value
@@ -88,5 +84,4 @@ interface GeneratorInterface
* @return array
*/
public function singleSet(string $setLabel, array $data): array;
}

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,35 +16,30 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Generator\Report\Audit;
use Carbon\Carbon;
use FireflyIII\Generator\Report\ReportGeneratorInterface;
use FireflyIII\Helpers\Collector\JournalCollectorInterface;
use FireflyIII\Models\Account;
use FireflyIII\Models\Transaction;
use FireflyIII\Repositories\Currency\CurrencyRepositoryInterface;
use Illuminate\Support\Collection;
use Steam;
/**
* Class MonthReportGenerator
*
* @package FireflyIII\Generator\Report\Audit
* Class MonthReportGenerator.
*/
class MonthReportGenerator implements ReportGeneratorInterface
{
/** @var Collection */
/** @var Collection */
private $accounts;
/** @var Carbon */
/** @var Carbon */
private $end;
/** @var Carbon */
/** @var Carbon */
private $start;
/**
@@ -52,8 +47,6 @@ class MonthReportGenerator implements ReportGeneratorInterface
*/
public function generate(): string
{
$auditData = [];
$dayBefore = clone $this->start;
$dayBefore->subDay();
@@ -77,11 +70,9 @@ class MonthReportGenerator implements ReportGeneratorInterface
'create_date', 'update_date',
];
return view('reports.audit.report', compact('reportType', 'accountIds', 'auditData', 'hideable', 'defaultShow'))
->with('start', $this->start)->with('end', $this->end)->with('accounts', $this->accounts)
->render();
}
/**
@@ -128,6 +119,16 @@ class MonthReportGenerator implements ReportGeneratorInterface
return $this;
}
/**
* @param Collection $expense
*
* @return ReportGeneratorInterface
*/
public function setExpense(Collection $expense): ReportGeneratorInterface
{
return $this;
}
/**
* @param Carbon $date
*
@@ -157,7 +158,6 @@ class MonthReportGenerator implements ReportGeneratorInterface
* @return array
*
* @SuppressWarnings(PHPMD.ExcessiveMethodLength) // not that long
*
*/
private function getAuditReport(Account $account, Carbon $date): array
{
@@ -173,7 +173,7 @@ class MonthReportGenerator implements ReportGeneratorInterface
$startBalance = $dayBeforeBalance;
$currency = $currencyRepos->find(intval($account->getMeta('currency_id')));
/** @var Transaction $journal */
// @var Transaction $journal
foreach ($journals as $transaction) {
$transaction->before = $startBalance;
$transactionAmount = $transaction->transaction_amount;

View File

@@ -16,22 +16,16 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Generator\Report\Audit;
/**
* Class MultiYearReportGenerator
*
* @package FireflyIII\Generator\Report\Audit
* Class MultiYearReportGenerator.
*/
class MultiYearReportGenerator extends MonthReportGenerator
{
/**
* Doesn't do anything different.
*/
// Doesn't do anything different.
}

View File

@@ -16,23 +16,16 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Generator\Report\Audit;
/**
* Class YearReportGenerator
*
* @package FireflyIII\Generator\Report\Audit
* Class YearReportGenerator.
*/
class YearReportGenerator extends MonthReportGenerator
{
/**
* Doesn't do anything different.
*/
// Doesn't do anything different.
}

View File

@@ -16,14 +16,12 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Generator\Report\Budget;
use Carbon\Carbon;
use FireflyIII\Generator\Report\ReportGeneratorInterface;
use FireflyIII\Generator\Report\Support;
@@ -37,23 +35,21 @@ use Illuminate\Support\Collection;
use Log;
/**
* Class MonthReportGenerator
*
* @package FireflyIII\Generator\Report\Budget
* Class MonthReportGenerator.
*/
class MonthReportGenerator extends Support implements ReportGeneratorInterface
{
/** @var Collection */
/** @var Collection */
private $accounts;
/** @var Collection */
/** @var Collection */
private $budgets;
/** @var Carbon */
/** @var Carbon */
private $end;
/** @var Collection */
private $expenses;
/** @var Collection */
private $income;
/** @var Carbon */
/** @var Carbon */
private $start;
/**
@@ -132,6 +128,16 @@ class MonthReportGenerator extends Support implements ReportGeneratorInterface
return $this;
}
/**
* @param Collection $expense
*
* @return ReportGeneratorInterface
*/
public function setExpense(Collection $expense): ReportGeneratorInterface
{
return $this;
}
/**
* @param Carbon $date
*

View File

@@ -16,22 +16,16 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Generator\Report\Budget;
/**
* Class MultiYearReportGenerator
*
* @package FireflyIII\Generator\Report\Budget
* Class MultiYearReportGenerator.
*/
class MultiYearReportGenerator extends MonthReportGenerator
{
/**
* Doesn't do anything different.
*/
// Doesn't do anything different.
}

View File

@@ -16,23 +16,16 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Generator\Report\Budget;
/**
* Class YearReportGenerator
*
* @package FireflyIII\Generator\Report\Budget
* Class YearReportGenerator.
*/
class YearReportGenerator extends MonthReportGenerator
{
/**
* Doesn't do anything different.
*/
// Doesn't do anything different.
}

View File

@@ -16,14 +16,12 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Generator\Report\Category;
use Carbon\Carbon;
use FireflyIII\Generator\Report\ReportGeneratorInterface;
use FireflyIII\Generator\Report\Support;
@@ -38,23 +36,21 @@ use Illuminate\Support\Collection;
use Log;
/**
* Class MonthReportGenerator
*
* @package FireflyIII\Generator\Report\Category
* Class MonthReportGenerator.
*/
class MonthReportGenerator extends Support implements ReportGeneratorInterface
{
/** @var Collection */
/** @var Collection */
private $accounts;
/** @var Collection */
/** @var Collection */
private $categories;
/** @var Carbon */
/** @var Carbon */
private $end;
/** @var Collection */
private $expenses;
/** @var Collection */
private $income;
/** @var Carbon */
/** @var Carbon */
private $start;
/**
@@ -83,12 +79,19 @@ class MonthReportGenerator extends Support implements ReportGeneratorInterface
$topExpenses = $this->getTopExpenses();
$topIncome = $this->getTopIncome();
// render!
return view(
'reports.category.month',
compact(
'accountIds', 'categoryIds', 'topIncome', 'reportType', 'accountSummary', 'categorySummary', 'averageExpenses', 'averageIncome', 'topExpenses'
'accountIds',
'categoryIds',
'topIncome',
'reportType',
'accountSummary',
'categorySummary',
'averageExpenses',
'averageIncome',
'topExpenses'
)
)
->with('start', $this->start)->with('end', $this->end)
@@ -143,6 +146,16 @@ class MonthReportGenerator extends Support implements ReportGeneratorInterface
return $this;
}
/**
* @param Collection $expense
*
* @return ReportGeneratorInterface
*/
public function setExpense(Collection $expense): ReportGeneratorInterface
{
return $this;
}
/**
* @param Carbon $date
*

View File

@@ -16,22 +16,16 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Generator\Report\Category;
/**
* Class MultiYearReportGenerator
*
* @package FireflyIII\Generator\Report\Category
* Class MultiYearReportGenerator.
*/
class MultiYearReportGenerator extends MonthReportGenerator
{
/**
* Doesn't do anything different.
*/
// Doesn't do anything different.
}

View File

@@ -16,23 +16,16 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Generator\Report\Category;
/**
* Class YearReportGenerator
*
* @package FireflyIII\Generator\Report\Category
* Class YearReportGenerator.
*/
class YearReportGenerator extends MonthReportGenerator
{
/**
* Doesn't do anything different.
*/
// Doesn't do anything different.
}

View File

@@ -16,9 +16,8 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Generator\Report;
@@ -27,19 +26,17 @@ use Carbon\Carbon;
use FireflyIII\Exceptions\FireflyException;
/**
* Class ReportGeneratorFactory
*
* @package FireflyIII\Generator\Report
* Class ReportGeneratorFactory.
*/
class ReportGeneratorFactory
{
/**
* @param string $type
* @param Carbon $start
* @param Carbon $end
*
* @return ReportGeneratorInterface
*
* @throws FireflyException
*/
public static function reportGenerator(string $type, Carbon $start, Carbon $end): ReportGeneratorInterface
@@ -55,7 +52,6 @@ class ReportGeneratorFactory
$period = 'MultiYear';
}
$class = sprintf('FireflyIII\Generator\Report\%s\%sReportGenerator', $type, $period);
if (class_exists($class)) {
/** @var ReportGeneratorInterface $obj */

View File

@@ -16,21 +16,17 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Generator\Report;
use Carbon\Carbon;
use Illuminate\Support\Collection;
/**
* Interface ReportGeneratorInterface
*
* @package FireflyIII\Generator\Report
* Interface ReportGeneratorInterface.
*/
interface ReportGeneratorInterface
{
@@ -67,6 +63,13 @@ interface ReportGeneratorInterface
*/
public function setEndDate(Carbon $date): ReportGeneratorInterface;
/**
* @param Collection $expense
*
* @return ReportGeneratorInterface
*/
public function setExpense(Collection $expense): ReportGeneratorInterface;
/**
* @param Carbon $date
*
@@ -80,5 +83,4 @@ interface ReportGeneratorInterface
* @return ReportGeneratorInterface
*/
public function setTags(Collection $tags): ReportGeneratorInterface;
}

View File

@@ -16,35 +16,33 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Generator\Report\Standard;
use Carbon\Carbon;
use FireflyIII\Generator\Report\ReportGeneratorInterface;
use FireflyIII\Helpers\Report\ReportHelperInterface;
use Illuminate\Support\Collection;
/**
* Class MonthReportGenerator
*
* @package FireflyIII\Generator\Report\Standard
* Class MonthReportGenerator.
*/
class MonthReportGenerator implements ReportGeneratorInterface
{
/** @var Collection */
/** @var Collection */
private $accounts;
/** @var Carbon */
/** @var Carbon */
private $end;
/** @var Carbon */
/** @var Carbon */
private $start;
/**
* @return string
*
* @throws \Throwable
*/
public function generate(): string
{
@@ -105,6 +103,16 @@ class MonthReportGenerator implements ReportGeneratorInterface
return $this;
}
/**
* @param Collection $expense
*
* @return ReportGeneratorInterface
*/
public function setExpense(Collection $expense): ReportGeneratorInterface
{
return $this;
}
/**
* @param Carbon $date
*

View File

@@ -16,34 +16,32 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Generator\Report\Standard;
use Carbon\Carbon;
use FireflyIII\Generator\Report\ReportGeneratorInterface;
use Illuminate\Support\Collection;
/**
* Class MonthReportGenerator
*
* @package FireflyIII\Generator\Report\Standard
* Class MonthReportGenerator.
*/
class MultiYearReportGenerator implements ReportGeneratorInterface
{
/** @var Collection */
/** @var Collection */
private $accounts;
/** @var Carbon */
/** @var Carbon */
private $end;
/** @var Carbon */
/** @var Carbon */
private $start;
/**
* @return string
*
* @throws \Throwable
*/
public function generate(): string
{
@@ -102,6 +100,16 @@ class MultiYearReportGenerator implements ReportGeneratorInterface
return $this;
}
/**
* @param Collection $expense
*
* @return ReportGeneratorInterface
*/
public function setExpense(Collection $expense): ReportGeneratorInterface
{
return $this;
}
/**
* @param Carbon $date
*

View File

@@ -16,34 +16,32 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Generator\Report\Standard;
use Carbon\Carbon;
use FireflyIII\Generator\Report\ReportGeneratorInterface;
use Illuminate\Support\Collection;
/**
* Class MonthReportGenerator
*
* @package FireflyIII\Generator\Report\Standard
* Class MonthReportGenerator.
*/
class YearReportGenerator implements ReportGeneratorInterface
{
/** @var Collection */
/** @var Collection */
private $accounts;
/** @var Carbon */
/** @var Carbon */
private $end;
/** @var Carbon */
/** @var Carbon */
private $start;
/**
* @return string
*
* @throws \Throwable
*/
public function generate(): string
{
@@ -102,6 +100,16 @@ class YearReportGenerator implements ReportGeneratorInterface
return $this;
}
/**
* @param Collection $expense
*
* @return ReportGeneratorInterface
*/
public function setExpense(Collection $expense): ReportGeneratorInterface
{
return $this;
}
/**
* @param Carbon $date
*

View File

@@ -16,9 +16,8 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Generator\Report;
@@ -26,11 +25,8 @@ namespace FireflyIII\Generator\Report;
use FireflyIII\Models\Transaction;
use Illuminate\Support\Collection;
/**
* Class Support
*
* @package FireflyIII\Generator\Report\Category
* Class Support.
*/
class Support
{
@@ -80,7 +76,7 @@ class Support
];
continue;
}
$result[$opposingId]['count']++;
++$result[$opposingId]['count'];
$result[$opposingId]['sum'] = bcadd($result[$opposingId]['sum'], $transaction->transaction_amount);
$result[$opposingId]['average'] = bcdiv($result[$opposingId]['sum'], strval($result[$opposingId]['count']));
}
@@ -98,6 +94,7 @@ class Support
/**
* @SuppressWarnings(PHPMD.CyclomaticComplexity) // it's exactly five.
*
* @param array $spent
* @param array $earned
*
@@ -108,7 +105,7 @@ class Support
$return = [];
/**
* @var int $accountId
* @var int
* @var string $entry
*/
foreach ($spent as $objectId => $entry) {
@@ -121,7 +118,7 @@ class Support
unset($entry);
/**
* @var int $accountId
* @var int
* @var string $entry
*/
foreach ($earned as $objectId => $entry) {
@@ -132,7 +129,6 @@ class Support
$return[$objectId]['earned'] = $entry;
}
return $return;
}
@@ -153,5 +149,4 @@ class Support
return $result;
}
}

View File

@@ -16,14 +16,12 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Generator\Report\Tag;
use Carbon\Carbon;
use FireflyIII\Generator\Report\ReportGeneratorInterface;
use FireflyIII\Generator\Report\Support;
@@ -39,22 +37,19 @@ use Illuminate\Support\Collection;
use Log;
/**
* Class MonthReportGenerator
*
* @package FireflyIII\Generator\Report\Tag
* Class MonthReportGenerator.
*/
class MonthReportGenerator extends Support implements ReportGeneratorInterface
{
/** @var Collection */
private $accounts;
/** @var Carbon */
/** @var Carbon */
private $end;
/** @var Collection */
private $expenses;
/** @var Collection */
private $income;
/** @var Carbon */
/** @var Carbon */
private $start;
/** @var Collection */
private $tags;
@@ -70,6 +65,7 @@ class MonthReportGenerator extends Support implements ReportGeneratorInterface
/**
* @return string
* @throws \Throwable
*/
public function generate(): string
{
@@ -85,13 +81,20 @@ class MonthReportGenerator extends Support implements ReportGeneratorInterface
$topExpenses = $this->getTopExpenses();
$topIncome = $this->getTopIncome();
// render!
return view(
'reports.tag.month', compact(
'accountIds', 'tagTags', 'reportType', 'accountSummary', 'tagSummary', 'averageExpenses', 'averageIncome', 'topIncome',
'topExpenses'
)
'reports.tag.month',
compact(
'accountIds',
'tagTags',
'reportType',
'accountSummary',
'tagSummary',
'averageExpenses',
'averageIncome',
'topIncome',
'topExpenses'
)
)->with('start', $this->start)->with('end', $this->end)->with('tags', $this->tags)->with('accounts', $this->accounts)->render();
}
@@ -139,6 +142,16 @@ class MonthReportGenerator extends Support implements ReportGeneratorInterface
return $this;
}
/**
* @param Collection $expense
*
* @return ReportGeneratorInterface
*/
public function setExpense(Collection $expense): ReportGeneratorInterface
{
return $this;
}
/**
* @param Carbon $date
*

View File

@@ -16,22 +16,16 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Generator\Report\Tag;
/**
* Class MultiYearReportGenerator
*
* @package FireflyIII\Generator\Report\Tag
* Class MultiYearReportGenerator.
*/
class MultiYearReportGenerator extends MonthReportGenerator
{
/**
* Doesn't do anything different.
*/
// Doesn't do anything different.
}

View File

@@ -16,23 +16,16 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Generator\Report\Tag;
/**
* Class YearReportGenerator
*
* @package FireflyIII\Generator\Report\Tag
* Class YearReportGenerator.
*/
class YearReportGenerator extends MonthReportGenerator
{
/**
* Doesn't do anything different.
*/
// Doesn't do anything different.
}

View File

@@ -16,9 +16,8 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Handlers\Events;
@@ -31,20 +30,19 @@ use Session;
use Swift_TransportException;
/**
* Class AdminEventHandler
*
* @package FireflyIII\Handlers\Events
* Class AdminEventHandler.
*/
class AdminEventHandler
{
/**
* Sends a test message to an administrator.
*
* @param AdminRequestedTestMessage $event
*
* @return bool
*/
public function sendTestMessage(AdminRequestedTestMessage $event): bool
{
$email = $event->user->email;
$ipAddress = $event->ipAddress;
@@ -64,4 +62,4 @@ class AdminEventHandler
// @codeCoverageIgnoreEnd
return true;
}
}
}

View File

@@ -16,9 +16,8 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Handlers\Events;
@@ -37,17 +36,15 @@ use Log;
* @codeCoverageIgnore
*
* Class StoredJournalEventHandler
*
* @package FireflyIII\Handlers\Events
*/
class StoredJournalEventHandler
{
/** @var JRI */
/** @var JRI */
public $journalRepository;
/** @var PRI */
/** @var PRI */
public $repository;
/** @var RGRI */
/** @var RGRI */
public $ruleGroupRepository;
/**
@@ -88,7 +85,7 @@ class StoredJournalEventHandler
}
// piggy exists?
if (is_null($piggyBank->id)) {
if (null === $piggyBank->id) {
Log::error(sprintf('There is no piggy bank with ID #%d', $piggyBankId));
return true;
@@ -96,7 +93,7 @@ class StoredJournalEventHandler
// repetition exists?
$repetition = $this->repository->getRepetition($piggyBank, $journal->date);
if (is_null($repetition->id)) {
if (null === $repetition->id) {
Log::error(sprintf('No piggy bank repetition on %s!', $journal->date->format('Y-m-d')));
return true;
@@ -104,7 +101,7 @@ class StoredJournalEventHandler
// get the amount
$amount = $this->repository->getExactAmount($piggyBank, $repetition, $journal);
if (bccomp($amount, '0') === 0) {
if (0 === bccomp($amount, '0')) {
Log::debug('Amount is zero, will not create event.');
return true;
@@ -137,7 +134,6 @@ class StoredJournalEventHandler
$rules = $this->ruleGroupRepository->getActiveStoreRules($group);
/** @var Rule $rule */
foreach ($rules as $rule) {
$processor = Processor::make($rule);
$processor->handleTransactionJournal($journal);

View File

@@ -16,14 +16,12 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Handlers\Events;
use FireflyIII\Events\UpdatedTransactionJournal;
use FireflyIII\Models\Rule;
use FireflyIII\Models\RuleGroup;
@@ -35,12 +33,10 @@ use FireflyIII\TransactionRules\Processor;
* @codeCoverageIgnore
*
* Class UpdatedJournalEventHandler
*
* @package FireflyIII\Handlers\Events
*/
class UpdatedJournalEventHandler
{
/** @var RuleGroupRepositoryInterface */
/** @var RuleGroupRepositoryInterface */
public $repository;
/**
@@ -77,7 +73,6 @@ class UpdatedJournalEventHandler
if ($rule->stop_processing) {
break;
}
}
}

View File

@@ -16,9 +16,8 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Handlers\Events;
@@ -30,24 +29,24 @@ use FireflyIII\Mail\ConfirmEmailChangeMail;
use FireflyIII\Mail\RegisteredUser as RegisteredUserMail;
use FireflyIII\Mail\RequestedNewPassword as RequestedNewPasswordMail;
use FireflyIII\Mail\UndoEmailChangeMail;
use FireflyIII\Models\Role;
use FireflyIII\Repositories\User\UserRepositoryInterface;
use FireflyIII\User;
use Illuminate\Auth\Events\Login;
use Log;
use Mail;
use Preferences;
use Swift_TransportException;
/**
* Class UserEventHandler
* Class UserEventHandler.
*
* This class responds to any events that have anything to do with the User object.
*
* The method name reflects what is being done. This is in the present tense.
*
* @package FireflyIII\Handlers\Events
*/
class UserEventHandler
{
/**
* This method will bestow upon a user the "owner" role if he is the first user in the system.
*
@@ -61,13 +60,54 @@ class UserEventHandler
$repository = app(UserRepositoryInterface::class);
// first user ever?
if ($repository->count() === 1) {
if (1 === $repository->count()) {
$repository->attachRole($event->user, 'owner');
}
return true;
}
/**
* @param Login $event
*
* @return bool
*/
public function checkSingleUserIsAdmin(Login $event): bool
{
Log::debug('In checkSingleUserIsAdmin');
/** @var User $user */
$user = $event->user;
$count = User::count();
if ($count > 1) {
// if more than one user, do nothing.
Log::debug(sprintf('System has %d users, will not change users roles.', $count));
return true;
}
// user is only user but has admin role
if (1 === $count && $user->hasRole('owner')) {
Log::debug(sprintf('User #%d is only user but has role owner so all is well.', $user->id));
return true;
}
// user is the only user but does not have role "owner".
$role = Role::where('name', 'owner')->first();
if (is_null($role)) {
// create role, does not exist. Very strange situation so let's raise a big fuss about it.
$role = Role::create(['name' => 'owner', 'display_name' => 'Site Owner', 'description' => 'User runs this instance of FF3']);
Log::error('Could not find role "owner". This is weird.');
}
Log::info(sprintf('Gave user #%d role #%d ("%s")', $user->id, $role->id, $role->name));
// give user the role
$user->attachRole($role);
$user->save();
return true;
}
/**
* @param UserChangedEmail $event
*
@@ -152,7 +192,6 @@ class UserEventHandler
*/
public function sendRegistrationMail(RegisteredUser $event)
{
$sendMail = env('SEND_REGISTRATION_MAIL', true);
if (!$sendMail) {
return true; // @codeCoverageIgnore

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,9 +16,8 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Helpers\Attachments;
@@ -33,14 +32,11 @@ use Storage;
use Symfony\Component\HttpFoundation\File\UploadedFile;
/**
* Class AttachmentHelper
*
* @package FireflyIII\Helpers\Attachments
* Class AttachmentHelper.
*/
class AttachmentHelper implements AttachmentHelperInterface
{
/** @var Collection */
/** @var Collection */
public $attachments;
/** @var MessageBag */
public $errors;
@@ -111,10 +107,12 @@ class AttachmentHelper implements AttachmentHelperInterface
*/
public function saveAttachmentsForModel(Model $model, ?array $files): bool
{
Log::debug(sprintf('Now in saveAttachmentsForModel for model %s', get_class($model)));
if (is_array($files)) {
Log::debug('$files is an array.');
/** @var UploadedFile $entry */
foreach ($files as $entry) {
if (!is_null($entry)) {
if (null !== $entry) {
$this->processFile($entry, $model);
}
}
@@ -152,7 +150,6 @@ class AttachmentHelper implements AttachmentHelperInterface
}
/**
*
* @param UploadedFile $file
* @param Model $model
*
@@ -160,8 +157,9 @@ class AttachmentHelper implements AttachmentHelperInterface
*/
protected function processFile(UploadedFile $file, Model $model): Attachment
{
Log::debug('Now in processFile()');
$validation = $this->validateUpload($file, $model);
if ($validation === false) {
if (false === $validation) {
return new Attachment;
}
@@ -204,8 +202,11 @@ class AttachmentHelper implements AttachmentHelperInterface
*/
protected function validMime(UploadedFile $file): bool
{
Log::debug('Now in validMime()');
$mime = e($file->getMimeType());
$name = e($file->getClientOriginalName());
Log::debug(sprintf('Name is %, and mime is %s', $name, $mime));
Log::debug('Valid mimes are', $this->allowedMimes);
if (!in_array($mime, $this->allowedMimes)) {
$msg = (string)trans('validation.file_invalid_mime', ['name' => $name, 'mime' => $mime]);
@@ -248,6 +249,7 @@ class AttachmentHelper implements AttachmentHelperInterface
*/
protected function validateUpload(UploadedFile $file, Model $model): bool
{
Log::debug('Now in validateUpload()');
if (!$this->validMime($file)) {
return false;
}

View File

@@ -16,9 +16,8 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Helpers\Attachments;
@@ -29,13 +28,10 @@ use Illuminate\Support\Collection;
use Illuminate\Support\MessageBag;
/**
* Interface AttachmentHelperInterface
*
* @package FireflyIII\Helpers\Attachments
* Interface AttachmentHelperInterface.
*/
interface AttachmentHelperInterface
{
/**
* @param Attachment $attachment
*
@@ -60,11 +56,9 @@ interface AttachmentHelperInterface
/**
* @param Model $model
*
* @param null|array $files
*
* @return bool
*/
public function saveAttachmentsForModel(Model $model, ?array $files): bool;
}

View File

@@ -16,9 +16,8 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Helpers\Chart;
@@ -41,23 +40,19 @@ use Illuminate\Support\Collection;
use Steam;
/**
* Class MetaPieChart
*
* @package FireflyIII\Helpers\Chart
*
*
* Class MetaPieChart.
*/
class MetaPieChart implements MetaPieChartInterface
{
/** @var Collection */
/** @var Collection */
protected $accounts;
/** @var Collection */
/** @var Collection */
protected $budgets;
/** @var Collection */
/** @var Collection */
protected $categories;
/** @var bool */
protected $collectOtherObjects = false;
/** @var Carbon */
/** @var Carbon */
protected $end;
/** @var array */
protected $grouping
@@ -75,13 +70,13 @@ class MetaPieChart implements MetaPieChartInterface
'category' => CategoryRepositoryInterface::class,
'tag' => TagRepositoryInterface::class,
];
/** @var Carbon */
/** @var Carbon */
protected $start;
/** @var Collection */
/** @var Collection */
protected $tags;
/** @var string */
/** @var string */
protected $total = '0';
/** @var User */
/** @var User */
protected $user;
public function __construct()
@@ -108,7 +103,7 @@ class MetaPieChart implements MetaPieChartInterface
$key = strval(trans('firefly.everything_else'));
// also collect all other transactions
if ($this->collectOtherObjects && $direction === 'expense') {
if ($this->collectOtherObjects && 'expense' === $direction) {
/** @var JournalCollectorInterface $collector */
$collector = app(JournalCollectorInterface::class);
$collector->setUser($this->user);
@@ -121,7 +116,7 @@ class MetaPieChart implements MetaPieChartInterface
$chartData[$key] = $sum;
}
if ($this->collectOtherObjects && $direction === 'income') {
if ($this->collectOtherObjects && 'income' === $direction) {
/** @var JournalCollectorInterface $collector */
$collector = app(JournalCollectorInterface::class);
$collector->setUser($this->user);
@@ -133,7 +128,6 @@ class MetaPieChart implements MetaPieChartInterface
}
return $chartData;
}
/**
@@ -259,7 +253,7 @@ class MetaPieChart implements MetaPieChartInterface
$collector = app(JournalCollectorInterface::class);
$types = [TransactionType::DEPOSIT, TransactionType::TRANSFER];
$collector->addFilter(NegativeAmountFilter::class);
if ($direction === 'expense') {
if ('expense' === $direction) {
$types = [TransactionType::WITHDRAWAL, TransactionType::TRANSFER];
$collector->addFilter(PositiveAmountFilter::class);
$collector->removeFilter(NegativeAmountFilter::class);
@@ -272,7 +266,7 @@ class MetaPieChart implements MetaPieChartInterface
$collector->withOpposingAccount();
$collector->addFilter(OpposingAccountFilter::class);
if ($direction === 'income') {
if ('income' === $direction) {
$collector->removeFilter(TransferFilter::class);
}
@@ -295,11 +289,10 @@ class MetaPieChart implements MetaPieChartInterface
* @return array
*
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
*
*/
protected function groupByFields(Collection $set, array $fields): array
{
if (count($fields) === 0 && $this->tags->count() > 0) {
if (0 === count($fields) && $this->tags->count() > 0) {
// do a special group on tags:
return $this->groupByTag($set);
}
@@ -342,7 +335,6 @@ class MetaPieChart implements MetaPieChartInterface
}
return $chartData;
}
/**

View File

@@ -16,9 +16,8 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Helpers\Chart;
@@ -28,9 +27,7 @@ use FireflyIII\User;
use Illuminate\Support\Collection;
/**
* Interface MetaPieChartInterface
*
* @package FireflyIII\Helpers\Chart
* Interface MetaPieChartInterface.
*/
interface MetaPieChartInterface
{
@@ -97,5 +94,4 @@ interface MetaPieChartInterface
* @return MetaPieChartInterface
*/
public function setUser(User $user): MetaPieChartInterface;
}

View File

@@ -16,9 +16,8 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Helpers\Collection;
@@ -26,18 +25,14 @@ namespace FireflyIII\Helpers\Collection;
use Illuminate\Support\Collection;
/**
*
* Class Balance
*
* @package FireflyIII\Helpers\Collection
* Class Balance.
*/
class Balance
{
/** @var BalanceHeader */
/** @var BalanceHeader */
protected $balanceHeader;
/** @var Collection */
/** @var Collection */
protected $balanceLines;
/**
@@ -87,6 +82,4 @@ class Balance
{
$this->balanceLines = $balanceLines;
}
}

View File

@@ -16,9 +16,8 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Helpers\Collection;
@@ -26,16 +25,11 @@ namespace FireflyIII\Helpers\Collection;
use FireflyIII\Models\Account as AccountModel;
/**
*
* Class BalanceEntry
*
* @package FireflyIII\Helpers\Collection
* Class BalanceEntry.
*/
class BalanceEntry
{
/** @var AccountModel */
/** @var AccountModel */
protected $account;
/** @var string */
protected $left = '0';
@@ -89,6 +83,4 @@ class BalanceEntry
{
$this->spent = $spent;
}
}

View File

@@ -16,9 +16,8 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Helpers\Collection;
@@ -27,15 +26,11 @@ use FireflyIII\Models\Account as AccountModel;
use Illuminate\Support\Collection;
/**
*
* Class BalanceHeader
*
* @package FireflyIII\Helpers\Collection
* Class BalanceHeader.
*/
class BalanceHeader
{
/** @var Collection */
/** @var Collection */
protected $accounts;
/**
@@ -61,6 +56,4 @@ class BalanceHeader
{
return $this->accounts;
}
}

View File

@@ -16,9 +16,8 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Helpers\Collection;
@@ -29,24 +28,29 @@ use FireflyIII\Models\BudgetLimit;
use Illuminate\Support\Collection;
/**
*
* Class BalanceLine
*
* @package FireflyIII\Helpers\Collection
* Class BalanceLine.
*/
class BalanceLine
{
/**
*
*/
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;
/** @var BudgetModel */
protected $budget;
/** @var BudgetLimit */
/** @var BudgetLimit */
protected $budgetLimit;
/** @var int */
protected $role = self::ROLE_DEFAULTROLE;
@@ -57,7 +61,6 @@ class BalanceLine
public function __construct()
{
$this->balanceEntries = new Collection;
}
/**
@@ -150,20 +153,21 @@ class BalanceLine
/**
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
*
* @return string
*/
public function getTitle(): string
{
if ($this->getBudget() instanceof BudgetModel && !is_null($this->getBudget()->id)) {
if ($this->getBudget() instanceof BudgetModel && null !== $this->getBudget()->id) {
return $this->getBudget()->name;
}
if ($this->getRole() === self::ROLE_DEFAULTROLE) {
if (self::ROLE_DEFAULTROLE === $this->getRole()) {
return strval(trans('firefly.no_budget'));
}
if ($this->getRole() === self::ROLE_TAGROLE) {
if (self::ROLE_TAGROLE === $this->getRole()) {
return strval(trans('firefly.coveredWithTags'));
}
if ($this->getRole() === self::ROLE_DIFFROLE) {
if (self::ROLE_DIFFROLE === $this->getRole()) {
return strval(trans('firefly.leftUnbalanced'));
}
@@ -174,7 +178,7 @@ class BalanceLine
* If a BalanceLine has a budget/repetition, each BalanceEntry in this BalanceLine
* should have a "spent" value, which is the amount of money that has been spent
* on the given budget/repetition. If you subtract all those amounts from the budget/repetition's
* total amount, this is returned:
* total amount, this is returned:.
*
* @return string
*/

View File

@@ -16,34 +16,29 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Helpers\Collection;
use Carbon\Carbon;
use FireflyIII\Repositories\Bill\BillRepositoryInterface;
use Illuminate\Support\Collection;
use Log;
/**
* Class Bill
*
* @package FireflyIII\Helpers\Collection
* Class Bill.
*/
class Bill
{
/**
* @var Collection
*/
private $bills;
/** @var Carbon */
/** @var Carbon */
private $endDate;
/** @var Carbon */
/** @var Carbon */
private $startDate;
/**
@@ -106,14 +101,13 @@ class Bill
{
$set = $this->bills->sortBy(
function (BillLine $bill) {
$active = intval($bill->getBill()->active) === 0 ? 1 : 0;
$active = 0 === intval($bill->getBill()->active) ? 1 : 0;
$name = $bill->getBill()->name;
return $active . $name;
}
);
return $set;
}
@@ -132,5 +126,4 @@ class Bill
{
$this->startDate = $startDate;
}
}

View File

@@ -16,9 +16,8 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Helpers\Collection;
@@ -27,27 +26,27 @@ use Carbon\Carbon;
use FireflyIII\Models\Bill as BillModel;
/**
*
* Class BillLine
*
* @package FireflyIII\Helpers\Collection
* Class BillLine.
*/
class BillLine
{
/** @var string */
/** @var string */
protected $amount;
/** @var BillModel */
/** @var BillModel */
protected $bill;
/** @var bool */
/** @var bool */
protected $hit;
/** @var string */
/** @var string */
protected $max;
/** @var string */
/** @var string */
protected $min;
/** @var Carbon */
/** @var Carbon */
private $endOfPayDate;
/** @var Carbon */
private $lastHitDate;
/** @var int */
/** @var Carbon */
private $payDate;
/** @var int */
private $transactionJournalId;
/**
@@ -90,6 +89,22 @@ class BillLine
$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
*/
@@ -138,6 +153,22 @@ class BillLine
$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
*/
@@ -159,7 +190,7 @@ class BillLine
*/
public function isActive(): bool
{
return intval($this->bill->active) === 1;
return 1 === intval($this->bill->active);
}
/**
@@ -177,6 +208,4 @@ class BillLine
{
$this->hit = $hit;
}
}

View File

@@ -16,9 +16,8 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Helpers\Collection;
@@ -26,17 +25,12 @@ namespace FireflyIII\Helpers\Collection;
use FireflyIII\Models\Category as CategoryModel;
use Illuminate\Support\Collection;
/**
*
* Class Category
*
* @package FireflyIII\Helpers\Collection
* Class Category.
*/
class Category
{
/** @var Collection */
/** @var Collection */
protected $categories;
/** @var string */
protected $total = '0';
@@ -80,7 +74,6 @@ class Category
}
);
return $set;
}
@@ -91,6 +84,4 @@ class Category
{
return $this->total;
}
}

View File

@@ -16,14 +16,12 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Helpers\Collector;
use Carbon\Carbon;
use DB;
use FireflyIII\Exceptions\FireflyException;
@@ -52,17 +50,16 @@ use Steam;
*
* Class JournalCollector
*
* @package FireflyIII\Helpers\Collector
*
* @SuppressWarnings(PHPMD.ExcessiveClassComplexity)
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
* @SuppressWarnings(PHPMD.TooManyPublicMethods)
*/
class JournalCollector implements JournalCollectorInterface
{
/** @var array */
private $accountIds = [];
/** @var int */
/** @var int */
private $count = 0;
/** @var array */
private $fields
@@ -73,12 +70,14 @@ class JournalCollector implements JournalCollectorInterface
'transaction_journals.encrypted',
'transaction_types.type as transaction_type_type',
'transaction_journals.bill_id',
'transaction_journals.updated_at',
'bills.name as bill_name',
'bills.name_encrypted as bill_name_encrypted',
'transactions.id as id',
'transactions.description as transaction_description',
'transactions.account_id',
'transactions.reconciled',
'transactions.identifier',
'transactions.transaction_journal_id',
'transactions.amount as transaction_amount',
@@ -99,22 +98,21 @@ class JournalCollector implements JournalCollectorInterface
'accounts.encrypted as account_encrypted',
'accounts.iban as account_iban',
'account_types.type as account_type',
];
/** @var array */
private $filters = [InternalTransferFilter::class];
/** @var bool */
/** @var bool */
private $joinedBudget = false;
/** @var bool */
/** @var bool */
private $joinedCategory = false;
/** @var bool */
private $joinedOpposing = false;
/** @var bool */
private $joinedTag = false;
/** @var int */
/** @var int */
private $limit;
/** @var int */
/** @var int */
private $offset;
/** @var int */
private $page = 1;
@@ -170,8 +168,8 @@ class JournalCollector implements JournalCollectorInterface
$q1->where(
function (EloquentBuilder $q2) use ($amount) {
// amount < 0 and .amount > -$amount
$amount = bcmul($amount,'-1');
$q2->where('transactions.amount', '<', 0)->where('transactions.amount', '>', $amount);
$invertedAmount = bcmul($amount, '-1');
$q2->where('transactions.amount', '<', 0)->where('transactions.amount', '>', $invertedAmount);
}
)
->orWhere(
@@ -198,8 +196,8 @@ class JournalCollector implements JournalCollectorInterface
$q1->where(
function (EloquentBuilder $q2) use ($amount) {
// amount < 0 and .amount < -$amount
$amount = bcmul($amount,'-1');
$q2->where('transactions.amount', '<', 0)->where('transactions.amount', '<', $amount);
$invertedAmount = bcmul($amount, '-1');
$q2->where('transactions.amount', '<', 0)->where('transactions.amount', '<', $invertedAmount);
}
)
->orWhere(
@@ -210,16 +208,18 @@ class JournalCollector implements JournalCollectorInterface
);
}
);
return $this;
}
/**
* @return int
*
* @throws FireflyException
*/
public function count(): int
{
if ($this->run === true) {
if (true === $this->run) {
throw new FireflyException('Cannot count after run in JournalCollector.');
}
@@ -255,14 +255,12 @@ class JournalCollector implements JournalCollectorInterface
$transaction->date = new Carbon($transaction->date);
$transaction->description = Steam::decrypt(intval($transaction->encrypted), $transaction->description);
if (!is_null($transaction->bill_name)) {
if (null !== $transaction->bill_name) {
$transaction->bill_name = Steam::decrypt(intval($transaction->bill_name_encrypted), $transaction->bill_name);
}
$transaction->opposing_account_name = app('steam')->tryDecrypt($transaction->opposing_account_name);
$transaction->account_iban = app('steam')->tryDecrypt($transaction->account_iban);
$transaction->opposing_account_iban = app('steam')->tryDecrypt($transaction->opposing_account_iban);
}
);
@@ -271,11 +269,12 @@ class JournalCollector implements JournalCollectorInterface
/**
* @return LengthAwarePaginator
*
* @throws FireflyException
*/
public function getPaginatedJournals(): LengthAwarePaginator
{
if ($this->run === true) {
if (true === $this->run) {
throw new FireflyException('Cannot getPaginatedJournals after run in JournalCollector.');
}
$this->count();
@@ -293,7 +292,7 @@ class JournalCollector implements JournalCollectorInterface
public function removeFilter(string $filter): JournalCollectorInterface
{
$key = array_search($filter, $this->filters, true);
if (!($key === false)) {
if (!(false === $key)) {
Log::debug(sprintf('Removed filter %s', $filter));
unset($this->filters[$key]);
}
@@ -319,7 +318,6 @@ class JournalCollector implements JournalCollectorInterface
$this->addFilter(TransferFilter::class);
}
return $this;
}
@@ -386,7 +384,6 @@ class JournalCollector implements JournalCollectorInterface
}
return $this;
}
/**
@@ -416,7 +413,7 @@ class JournalCollector implements JournalCollectorInterface
public function setBudgets(Collection $budgets): JournalCollectorInterface
{
$budgetIds = $budgets->pluck('id')->toArray();
if (count($budgetIds) === 0) {
if (0 === count($budgetIds)) {
return $this;
}
$this->joinBudgetTables();
@@ -440,7 +437,7 @@ class JournalCollector implements JournalCollectorInterface
public function setCategories(Collection $categories): JournalCollectorInterface
{
$categoryIds = $categories->pluck('id')->toArray();
if (count($categoryIds) === 0) {
if (0 === count($categoryIds)) {
return $this;
}
$this->joinCategoryTables();
@@ -500,6 +497,20 @@ class JournalCollector implements JournalCollectorInterface
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
*
@@ -514,11 +525,11 @@ class JournalCollector implements JournalCollectorInterface
$this->page = $page;
if ($page > 0) {
$page--;
--$page;
}
Log::debug(sprintf('Page is %d', $page));
if (!is_null($this->limit)) {
if (null !== $this->limit) {
$offset = ($this->limit * $page);
$this->offset = $offset;
$this->query->skip($offset);
@@ -626,7 +637,6 @@ class JournalCollector implements JournalCollectorInterface
->orderBy('transactions.amount', 'DESC');
$this->query = $query;
}
/**
@@ -644,7 +654,6 @@ class JournalCollector implements JournalCollectorInterface
*/
public function withCategoryInformation(): JournalCollectorInterface
{
$this->joinCategoryTables();
return $this;
@@ -756,12 +765,16 @@ class JournalCollector implements JournalCollectorInterface
$this->joinedCategory = true;
$this->query->leftJoin('category_transaction_journal', 'category_transaction_journal.transaction_journal_id', '=', 'transaction_journals.id');
$this->query->leftJoin(
'categories as transaction_journal_categories', 'transaction_journal_categories.id', '=', 'category_transaction_journal.category_id'
'categories as transaction_journal_categories',
'transaction_journal_categories.id',
'=',
'category_transaction_journal.category_id'
);
$this->query->leftJoin('category_transaction', 'category_transaction.transaction_id', '=', 'transactions.id');
$this->query->leftJoin('categories as transaction_categories', 'transaction_categories.id', '=', 'category_transaction.category_id');
$this->query->whereNull('transaction_journal_categories.deleted_at');
$this->query->whereNull('transaction_categories.deleted_at');
$this->fields[] = 'category_transaction_journal.category_id as transaction_journal_category_id';
$this->fields[] = 'transaction_journal_categories.encrypted as transaction_journal_category_encrypted';
$this->fields[] = 'transaction_journal_categories.name as transaction_journal_category_name';
@@ -781,11 +794,12 @@ class JournalCollector implements JournalCollectorInterface
Log::debug('joinedOpposing is false');
// join opposing transaction (hard):
$this->query->leftJoin(
'transactions as opposing', function (JoinClause $join) {
$join->on('opposing.transaction_journal_id', '=', 'transactions.transaction_journal_id')
->where('opposing.identifier', '=', DB::raw('transactions.identifier'))
->where('opposing.amount', '=', DB::raw('transactions.amount * -1'));
}
'transactions as opposing',
function (JoinClause $join) {
$join->on('opposing.transaction_journal_id', '=', 'transactions.transaction_journal_id')
->where('opposing.identifier', '=', DB::raw('transactions.identifier'))
->where('opposing.amount', '=', DB::raw('transactions.amount * -1'));
}
);
$this->query->leftJoin('accounts as opposing_accounts', 'opposing.account_id', '=', 'opposing_accounts.id');
$this->query->leftJoin('account_types as opposing_account_types', 'opposing_accounts.account_type_id', '=', 'opposing_account_types.id');

View File

@@ -16,9 +16,8 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Helpers\Collector;
@@ -32,9 +31,7 @@ use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Support\Collection;
/**
* Interface JournalCollectorInterface
*
* @package FireflyIII\Helpers\Collector
* Interface JournalCollectorInterface.
*/
interface JournalCollectorInterface
{
@@ -50,7 +47,7 @@ interface JournalCollectorInterface
*
* @return JournalCollectorInterface
*/
public function amountMore(string $amount): JournalCollectorInterface;
public function amountIs(string $amount): JournalCollectorInterface;
/**
* @param string $amount
@@ -64,7 +61,7 @@ interface JournalCollectorInterface
*
* @return JournalCollectorInterface
*/
public function amountIs(string $amount): JournalCollectorInterface;
public function amountMore(string $amount): JournalCollectorInterface;
/**
* @return int
@@ -163,6 +160,13 @@ interface JournalCollectorInterface
*/
public function setOffset(int $offset): JournalCollectorInterface;
/**
* @param Collection $accounts
*
* @return JournalCollectorInterface
*/
public function setOpposingAccounts(Collection $accounts): JournalCollectorInterface;
/**
* @param int $page
*
@@ -199,6 +203,11 @@ interface JournalCollectorInterface
*/
public function setTypes(array $types): JournalCollectorInterface;
/**
* @param User $user
*
* @return mixed
*/
public function setUser(User $user);
/**

View File

@@ -16,9 +16,8 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Helpers\Filter;
@@ -28,18 +27,21 @@ use Illuminate\Support\Collection;
use Log;
/**
* Class AmountFilter
* Class AmountFilter.
*
* This filter removes transactions with either a positive amount ($parameters = 1) or a negative amount
* ($parameter = -1). This is helpful when a Collection has you with both transactions in a journal.
*
* @package FireflyIII\Helpers\Filter
*/
class AmountFilter implements FilterInterface
{
/** @var int */
private $modifier = 0;
/**
* AmountFilter constructor.
*
* @param int $modifier
*/
public function __construct(int $modifier)
{
$this->modifier = $modifier;

View File

@@ -16,9 +16,8 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Helpers\Filter;
@@ -26,14 +25,10 @@ namespace FireflyIII\Helpers\Filter;
use Illuminate\Support\Collection;
/**
* Class EmptyFilter
*
* @package FireflyIII\Helpers\Filter
* Class EmptyFilter.
*/
class EmptyFilter implements FilterInterface
{
/**
* @param Collection $set
*

View File

@@ -16,16 +16,17 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Helpers\Filter;
use Illuminate\Support\Collection;
/**
* Interface FilterInterface
*/
interface FilterInterface
{
/**
@@ -34,5 +35,4 @@ interface FilterInterface
* @return Collection
*/
public function filter(Collection $set): Collection;
}

View File

@@ -16,9 +16,8 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Helpers\Filter;
@@ -28,13 +27,11 @@ use Illuminate\Support\Collection;
use Log;
/**
* Class InternalTransferFilter
* Class InternalTransferFilter.
*
* This filter removes any filters that are from A to B or from B to A given a set of
* account id's (in $parameters) where A and B are mentioned. So transfers between the mentioned
* accounts will be removed.
*
* @package FireflyIII\Helpers\Filter
*/
class InternalTransferFilter implements FilterInterface
{
@@ -60,7 +57,7 @@ class InternalTransferFilter implements FilterInterface
{
return $set->filter(
function (Transaction $transaction) {
if (is_null($transaction->opposing_account_id)) {
if (null === $transaction->opposing_account_id) {
return $transaction;
}
// both id's in $parameters?
@@ -68,18 +65,18 @@ class InternalTransferFilter implements FilterInterface
Log::debug(
sprintf(
'Transaction #%d has #%d and #%d in set, so removed',
$transaction->id, $transaction->account_id, $transaction->opposing_account_id
), $this->accounts
$transaction->id,
$transaction->account_id,
$transaction->opposing_account_id
),
$this->accounts
);
return false;
}
return $transaction;
}
);
}
}

View File

@@ -16,9 +16,8 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Helpers\Filter;
@@ -28,11 +27,9 @@ use Illuminate\Support\Collection;
use Log;
/**
* Class NegativeAmountFilter
* Class NegativeAmountFilter.
*
* This filter removes entries with a negative amount (the original modifier is -1).
*
* @package FireflyIII\Helpers\Filter
*/
class NegativeAmountFilter implements FilterInterface
{

View File

@@ -16,25 +16,21 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Helpers\Filter;
use FireflyIII\Models\Transaction;
use Illuminate\Support\Collection;
use Log;
/**
* Class OpposingAccountFilter
* Class OpposingAccountFilter.
*
* This filter is similar to the internal transfer filter but only removes transactions when the opposing account is
* amongst $parameters (list of account ID's).
*
* @package FireflyIII\Helpers\Filter
*/
class OpposingAccountFilter implements FilterInterface
{

View File

@@ -16,9 +16,8 @@
* 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/>.
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Helpers\Filter;
@@ -28,14 +27,12 @@ use Illuminate\Support\Collection;
use Log;
/**
* Class PositiveAmountFilter
* Class PositiveAmountFilter.
*
* This filter removes entries with a negative amount (the original modifier is -1).
*
* This filter removes transactions with either a positive amount ($parameters = 1) or a negative amount
* ($parameter = -1). This is helpful when a Collection has you with both transactions in a journal.
*
* @package FireflyIII\Helpers\Filter
*/
class PositiveAmountFilter implements FilterInterface
{
@@ -49,7 +46,7 @@ class PositiveAmountFilter implements FilterInterface
return $set->filter(
function (Transaction $transaction) {
// remove by amount
if (bccomp($transaction->transaction_amount, '0') === 1) {
if (1 === bccomp($transaction->transaction_amount, '0')) {
Log::debug(sprintf('Filtered #%d because amount is %f.', $transaction->id, $transaction->transaction_amount));
return null;

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