Compare commits

...

863 Commits
5.6.4 ... 5.8.0

Author SHA1 Message Date
Yuri Kuznetsov
d18cc91341 external account admin access 2020-01-30 12:56:02 +02:00
Yuri Kuznetsov
76154ab765 external account labels 2020-01-29 16:27:03 +02:00
Yuri Kuznetsov
11af93fcef panel show hide fix 2020-01-29 15:34:58 +02:00
Yuri Kuznetsov
23bccba214 varchar default trim 2020-01-29 10:48:22 +02:00
Yuri Kuznetsov
f47ed9f249 group email account handlers 2020-01-28 14:48:18 +02:00
Yuri Kuznetsov
816db335c3 fix global menu 2020-01-27 11:48:10 +02:00
Yuri Kuznetsov
9ec359df3d app params try catch 2020-01-27 11:21:58 +02:00
Yuri Kuznetsov
33a19fa6dd Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2020-01-27 11:19:09 +02:00
Taras Machyshyn
12d6831505 Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2020-01-27 11:16:04 +02:00
Taras Machyshyn
3f18484910 Upgrade fixes 2020-01-27 11:15:56 +02:00
Yuri Kuznetsov
834fc25a62 update timezone data 2020-01-27 10:44:42 +02:00
Yuri Kuznetsov
ade06f0f7a header menu items improvement 2020-01-27 10:15:31 +02:00
Yuri Kuznetsov
d9f4a1c2e1 add BYN currency 2020-01-27 10:14:26 +02:00
Yuri Kuznetsov
789e01c58d appParams framework 2020-01-24 15:22:36 +02:00
Yuri Kuznetsov
75514fc96d diff scripts param 2020-01-24 12:46:46 +02:00
Yuri Kuznetsov
4250514792 lang update 2020-01-24 11:15:12 +02:00
Yuri Kuznetsov
53f0932ecf bg_BG lang 2020-01-24 10:57:36 +02:00
Yuri Kuznetsov
6d1cc60947 language list in metadata 2020-01-24 10:53:13 +02:00
Yuri Kuznetsov
632fb63102 Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2020-01-23 16:55:45 +02:00
Taras Machyshyn
ac1c46303d Upgrade fixes 2020-01-23 16:55:30 +02:00
Yuri Kuznetsov
8cb7689a61 fix upgrade 2020-01-23 15:31:55 +02:00
Yuri Kuznetsov
b264dfbead templates list acl 2020-01-23 12:34:16 +02:00
Yuri Kuznetsov
aa2b89530a print pdf additional data 2020-01-23 11:29:33 +02:00
Yuri Kuznetsov
372fbc7771 Merge branch 'hotfix/5.7.12' 2020-01-23 10:22:04 +02:00
Taras Machyshyn
7051d2c072 Installation: fix notice 2020-01-22 16:59:41 +02:00
Taras Machyshyn
f489400947 Extension installation bug fixes 2020-01-22 15:50:15 +02:00
Yuri Kuznetsov
1b61bdac91 pdf service factory 2020-01-22 13:10:13 +02:00
Yuri Kuznetsov
05c74fa848 pdfTemplate param in scope 2020-01-22 12:51:25 +02:00
Yuri Kuznetsov
311f167814 confirm layout fix 2020-01-22 12:04:03 +02:00
Yuri Kuznetsov
9060d299da list view scroll code 2020-01-22 11:43:36 +02:00
Yuri Kuznetsov
b274823087 rebuild order change 2020-01-21 15:32:19 +02:00
Yuri Kuznetsov
42797edfb8 entity manager helper load with class 2020-01-21 15:28:55 +02:00
Taras Machyshyn
39ef9ebd3b Merge branch 'hotfix/5.7.12' of ssh://172.20.0.1/var/git/espo/backend into hotfix/5.7.12 2020-01-21 14:56:26 +02:00
Taras Machyshyn
5c4128e5ee Rebuild minor improvements 2020-01-21 14:40:48 +02:00
Yuri Kuznetsov
f1fdeb38a0 Merge branch 'hotfix/5.7.12' 2020-01-21 11:50:55 +02:00
Yuri Kuznetsov
8fa65bc965 fix naming 2020-01-21 11:47:14 +02:00
Yuri Kuznetsov
db334baa2e fix case portal user follow 2020-01-21 11:46:28 +02:00
Yuri Kuznetsov
af77ee2222 Merge branch 'hotfix/5.7.12' 2020-01-21 10:30:20 +02:00
Yuri Kuznetsov
080f31fd8f Merge branch 'hotfix/5.7.12' of ssh://172.20.0.1/var/git/espo/backend into hotfix/5.7.12 2020-01-21 10:29:36 +02:00
Yuri Kuznetsov
52b7350278 Merge branch 'hotfix/5.7.12' of github.com:espocrm/espocrm into hotfix/5.7.12 2020-01-21 10:24:34 +02:00
beppe9000
6699e66c29 Increase logging of many-to-many relation operations and log invalid foreach parameter error for mid keys (#1579)
closes #1577
2020-01-21 10:24:04 +02:00
Yuri Kuznetsov
f3596df5f0 add xaf currency 2020-01-20 13:12:07 +02:00
Yuri Kuznetsov
db134c7912 bull update 2020-01-20 13:04:13 +02:00
Yuri Kuznetsov
97dfe2e8d7 update bull 2020-01-20 11:34:57 +02:00
Yuri Kuznetsov
4b895ac442 dynamic logic checklist support 2020-01-20 10:12:55 +02:00
Yuri Kuznetsov
9d832484dc Merge branch 'hotfix/5.7.12' 2020-01-17 16:41:54 +02:00
Yuri Kuznetsov
38dfa91058 fix link parent missing current entity type 2020-01-17 16:41:46 +02:00
Taras Machyshyn
c404d47473 LDAP fixes 2020-01-17 14:30:21 +02:00
Yuri Kuznetsov
d5106a6f79 Merge branch 'hotfix/5.7.12' 2020-01-17 13:16:48 +02:00
Yuri Kuznetsov
6f9259b750 fix test 2020-01-17 13:16:35 +02:00
Yuri Kuznetsov
db04a0550b Merge branch 'hotfix/5.7.12' of ssh://172.20.0.1/var/git/espo/backend 2020-01-16 15:58:00 +02:00
Taras Machyshyn
30afaa56ab LDAP bug fixes 2020-01-16 15:28:48 +02:00
Yuri Kuznetsov
e05261bd17 role ui change 2020-01-16 11:24:31 +02:00
Yuri Kuznetsov
79e2086e0c v 2020-01-16 10:45:28 +02:00
Yuri Kuznetsov
c36788ba26 mass email service refactoring 2020-01-15 16:37:41 +02:00
Yuri Kuznetsov
548c76b93d full text search ignore if quotes number is odd 2020-01-15 14:13:18 +02:00
Yuri Kuznetsov
bb2383076a field manager: hide disable inline edit for foreign fields 2020-01-15 12:18:28 +02:00
Yuri Kuznetsov
a2e48e6252 foreign field: array 2020-01-15 12:09:47 +02:00
Yuri Kuznetsov
89d2d01414 foreign field ordered lists 2020-01-15 11:31:52 +02:00
Yuri Kuznetsov
1f617e2103 foreign field: support currency converted 2020-01-15 11:15:55 +02:00
Yuri Kuznetsov
ff4e696d74 foreign field: support link-one 2020-01-15 10:40:04 +02:00
Yuri Kuznetsov
3689ac0253 new notification number in title 2020-01-14 16:28:11 +02:00
Yuri Kuznetsov
ee97d82ed5 disable full-text search for autocomplete 2020-01-14 12:26:23 +02:00
Yuri Kuznetsov
02ab368256 frontend acl team level fix 2020-01-14 12:07:13 +02:00
Yuri Kuznetsov
8e5b05ff75 Merge branch 'hotfix/5.7.12' 2020-01-14 10:57:43 +02:00
Yuri Kuznetsov
9c4345ec9e fix kanban css 2020-01-14 10:57:36 +02:00
Yuri Kuznetsov
cd6ada92fd mass email: verp support 2020-01-09 13:22:08 +02:00
Yuri Kuznetsov
fc73ffb89a fix tests 2020-01-09 11:01:10 +02:00
Yuri Kuznetsov
f1696df4f9 mutlitple dynamic handlers 2020-01-09 10:43:19 +02:00
Yuri Kuznetsov
14deff7e0e middle name 2020-01-08 16:04:44 +02:00
Yuri Kuznetsov
7980887e50 group email: import bounced if not mass 2020-01-08 10:32:31 +02:00
Taras Machyshyn
fec23a0e93 New 2020 year 2020-01-03 16:33:30 +02:00
Yuri Kuznetsov
f7e7bc43e3 settings: person name format 2020-01-03 12:52:06 +02:00
Yuri Kuznetsov
a62e48f0bd loader container class name metadata change 2020-01-03 11:18:17 +02:00
Yuri Kuznetsov
07a84bac4f cleanup 2020-01-03 10:59:29 +02:00
Yuri Kuznetsov
99b03e40ac chevron-right usage 2020-01-02 16:08:05 +02:00
Yuri Kuznetsov
1e31b26815 Merge branch 'hotfix/5.7.12' 2020-01-02 11:57:40 +02:00
Yuri Kuznetsov
a999ed8177 fix view helper options 2020-01-02 11:56:26 +02:00
Yuri Kuznetsov
735a7e6085 tabAclPermission and portal users tab 2020-01-02 11:46:10 +02:00
Yuri Kuznetsov
6eab2fb177 fix stream for portal user 2020-01-02 11:32:39 +02:00
Yuri Kuznetsov
7bfd2f32de fix mail sender params merge 2020-01-02 11:09:13 +02:00
Yuri Kuznetsov
3d3cb031c1 mass email: apply reply-to from group email account 2020-01-02 10:50:48 +02:00
Yuri Kuznetsov
f898beb199 fix email 2020-01-02 10:28:12 +02:00
Yuri Kuznetsov
c43578984b reply button color 2019-12-30 13:19:12 +02:00
Yuri Kuznetsov
dfb8c22a14 tracking url show message 2019-12-27 11:39:27 +02:00
Yuri Kuznetsov
6f9e6eecbf Merge branch 'hotfix/5.7.12' 2019-12-27 10:30:31 +02:00
Yuri Kuznetsov
c8204dcd58 campaign tracking url: hash 2019-12-26 11:27:09 +02:00
Yuri Kuznetsov
c62a5cf360 tracking url not required 2019-12-25 12:52:12 +02:00
Yuri Kuznetsov
8ea8c54c9a tracking url in menu 2019-12-25 12:51:13 +02:00
Yuri Kuznetsov
143a2a8af2 header menu items labelTranslation 2019-12-25 12:51:03 +02:00
Yuri Kuznetsov
b82aa1b305 campaign: fix clicked stats 2019-12-24 13:38:55 +02:00
Yuri Kuznetsov
338f03ca79 fix layout service exception 2019-12-24 12:48:21 +02:00
Yuri Kuznetsov
73183e8cf9 update timezones 2019-12-23 13:03:32 +02:00
Yuri Kuznetsov
03ce2d1a04 lock v 2019-12-23 11:29:19 +02:00
Yuri Kuznetsov
b7c3f2b13e enum: list missing value 2019-12-20 16:09:24 +02:00
Yuri Kuznetsov
b6ee6f98f2 pdf: totalPageNumber 2019-12-20 14:55:01 +02:00
Yuri Kuznetsov
dd76e873fe v 2019-12-20 10:32:14 +02:00
Yuri Kuznetsov
3f772f6882 fix email plain sanitize 2019-12-20 10:29:40 +02:00
Yuri Kuznetsov
f032b24eee breadcrumb char change 2019-12-19 16:31:22 +02:00
Yuri Kuznetsov
4ea6dc7c46 Merge branch 'stable' 2019-12-19 15:02:49 +02:00
Yuri Kuznetsov
d9f3b83a41 v 2019-12-19 14:56:47 +02:00
Yuri Kuznetsov
96b2f9e1a6 fix integrations 2019-12-19 14:56:21 +02:00
Yuri Kuznetsov
1a3797cf59 Merge branch 'stable' 2019-12-18 16:03:10 +02:00
Yuri Kuznetsov
500e8ca89b Merge branch 'hotfix/5.7.10' of ssh://172.20.0.1/var/git/espo/backend into hotfix/5.7.10 2019-12-18 12:15:37 +02:00
Taras Machyshyn
f7fb3f50c3 Сompatibility fix 2019-12-18 12:15:10 +02:00
Yuri Kuznetsov
4763cc80c3 fix div 2019-12-18 10:52:26 +02:00
Yuri Kuznetsov
0d744c5e7f fix email 2019-12-18 10:11:37 +02:00
Yuri Kuznetsov
f132e06f67 opp primary contact fix 2019-12-17 16:03:36 +02:00
Yuri Kuznetsov
2615cffd82 case contact save refactor 2019-12-17 15:43:29 +02:00
Yuri Kuznetsov
d2f87537c9 Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2019-12-17 13:08:09 +02:00
Yuri Kuznetsov
629f410204 Merge branch 'hotfix/5.7.10' of ssh://172.20.0.1/var/git/espo/backend into hotfix/5.7.10 2019-12-17 13:07:38 +02:00
Taras Machyshyn
3f40c6b18f Display all indexes in ORM metadata 2019-12-17 13:05:28 +02:00
Yuri Kuznetsov
34b3f52276 oauth debug 2019-12-17 10:33:25 +02:00
Taras Machyshyn
4b508e3295 Installer changes 2019-12-16 17:16:28 +02:00
Taras Machyshyn
dfdde2ef83 File permissions changes 2019-12-16 16:28:48 +02:00
Yuri Kuznetsov
7dc5f4a557 fix date time usage 2019-12-16 16:22:11 +02:00
Yuri Kuznetsov
ec4e86c332 lead convert duplicate check 2019-12-16 12:21:05 +02:00
Yuri Kuznetsov
e8978c654b _skipDuplicateCheck 2019-12-16 11:08:32 +02:00
Yuri Kuznetsov
cb29ee3304 Merge branch 'hotfix/5.7.10' 2019-12-16 11:03:25 +02:00
Yuri Kuznetsov
88cac5c6c0 css fix 2019-12-16 10:44:47 +02:00
Yuri Kuznetsov
a968726810 fix scripts 2019-12-13 16:17:17 +02:00
Yuri Kuznetsov
9508903cf5 fix after upgrade 2019-12-13 16:16:09 +02:00
Yuri Kuznetsov
113649ba3d note number index 2019-12-13 15:42:47 +02:00
Yuri Kuznetsov
0fb9fe5e4c Merge branch 'hotfix/5.7.10' 2019-12-13 13:23:11 +02:00
Yuri Kuznetsov
5e877dd374 grunt fixes 2019-12-13 11:57:45 +02:00
Yuri Kuznetsov
bcf54d9fb0 diff fix and npm dep 2019-12-13 11:01:14 +02:00
Yuri Kuznetsov
5c42133e7b grunt zip 2019-12-12 17:18:00 +02:00
Yuri Kuznetsov
93c9afe338 readme fix 2019-12-12 16:42:41 +02:00
Yuri Kuznetsov
5dc3492f34 Merge branch 'hotfix/5.7.10' 2019-12-12 16:40:03 +02:00
Yuri Kuznetsov
9b12c5c9c1 grunt improvements 2019-12-12 16:39:54 +02:00
Yuri Kuznetsov
3d96381b3f Merge branch 'hotfix/5.7.10' 2019-12-12 15:49:15 +02:00
Yuri Kuznetsov
1bd4468f57 grunt composer install 2019-12-12 15:48:50 +02:00
Yuri Kuznetsov
e183bb4fa6 diff vendor 2019-12-12 15:21:35 +02:00
Yuri Kuznetsov
a79ece4a3d Merge branch 'hotfix/5.7.10' of ssh://172.20.0.1/var/git/espo/backend into hotfix/5.7.10 2019-12-12 12:25:33 +02:00
Taras Machyshyn
93bfa83b46 Installer: improvements 2019-12-12 12:24:28 +02:00
Yuri Kuznetsov
97fa72042e currency translation 2019-12-12 12:21:29 +02:00
Yuri Kuznetsov
d5069487ae add currencies 2019-12-12 12:01:14 +02:00
Yuri Kuznetsov
0a5f852d04 diff zip 2019-12-12 11:47:08 +02:00
Yuri Kuznetsov
dcc2fd0382 diff fix 2019-12-11 17:10:04 +02:00
Yuri Kuznetsov
bf7f0d5cbc settings get rid of required 2019-12-11 16:29:15 +02:00
Yuri Kuznetsov
a337aef8a7 settings validation 2019-12-11 16:15:28 +02:00
Yuri Kuznetsov
30dec3be52 orm intefrace changes and cleanup 2019-12-11 15:27:57 +02:00
Yuri Kuznetsov
604aca50c8 array valiation 2019-12-11 15:08:12 +02:00
Yuri Kuznetsov
949dc96e7b diff imrovements 2019-12-11 13:52:07 +02:00
Yuri Kuznetsov
fd4998b365 amend 2019-12-11 11:08:56 +02:00
Yuri Kuznetsov
fc28bee3d4 email draft ui improvements 2019-12-11 10:53:34 +02:00
Yuri Kuznetsov
d126cb5a25 email: sending draft from list view 2019-12-10 12:54:34 +02:00
Yuri Kuznetsov
d8bc83ae22 breadcrumb-separator change 2019-12-10 12:28:25 +02:00
Yuri Kuznetsov
b1a1ea068a Merge branch 'hotfix/5.7.10' 2019-12-10 12:24:07 +02:00
Yuri Kuznetsov
e4c2d4eae1 v 2019-12-10 11:50:08 +02:00
Yuri Kuznetsov
66bdb7b547 email template placeholders ui improvement 2019-12-10 11:49:28 +02:00
Yuri Kuznetsov
9fccc3c1f3 fix css 2019-12-10 10:26:47 +02:00
Yuri Kuznetsov
4e2bc0658d Merge branch 'stable' 2019-12-09 16:00:32 +02:00
Yuri Kuznetsov
0effcab5c2 Merge branch 'hotfix/5.7.9' of ssh://172.20.0.1/var/git/espo/backend into hotfix/5.7.9 2019-12-09 15:52:36 +02:00
Taras Machyshyn
1f5ab5f45c Installer: currency fixes 2019-12-09 15:44:51 +02:00
Yuri Kuznetsov
4789fc15a5 Merge branch 'hotfix/5.7.9' of ssh://172.20.0.1/var/git/espo/backend into hotfix/5.7.9 2019-12-09 15:32:27 +02:00
Taras Machyshyn
6f2270eea7 Installer: currency fixes 2019-12-09 15:31:56 +02:00
Yuri Kuznetsov
a0f43c8f8f fix modal resize 2019-12-09 12:15:46 +02:00
Yuri Kuznetsov
b36b5857c1 diff improvement 2019-12-06 16:14:04 +02:00
Yuri Kuznetsov
c6de42fd80 v 2019-12-06 15:16:18 +02:00
Yuri Kuznetsov
18f9026acf Merge branch 'hotfix/5.7.8' 2019-12-06 14:36:04 +02:00
Yuri Kuznetsov
5e7f61b46d Merge branch 'hotfix/5.7.8' of ssh://172.20.0.1/var/git/espo/backend into hotfix/5.7.8 2019-12-06 12:38:42 +02:00
Taras Machyshyn
c5e41faa0f Upgrade fixes 2019-12-06 12:38:28 +02:00
Yuri Kuznetsov
465377c67b email update fix 2019-12-06 12:09:24 +02:00
Yuri Kuznetsov
f41cc85cba Merge branch 'hotfix/5.7.8' of ssh://172.20.0.1/var/git/espo/backend into hotfix/5.7.8 2019-12-05 16:26:33 +02:00
Taras Machyshyn
fdf08624cb Added cli installation 2019-12-05 16:26:11 +02:00
Yuri Kuznetsov
5c89f4f389 fix 2019-12-05 15:34:24 +02:00
Yuri Kuznetsov
acce8f1b1f fix 2019-12-05 15:30:07 +02:00
Yuri Kuznetsov
f1382e802e fix 2019-12-05 15:17:12 +02:00
Yuri Kuznetsov
f64e59b0de Merge branch 'hotfix/5.7.8' of ssh://172.20.0.1/var/git/espo/backend into hotfix/5.7.8 2019-12-05 15:08:03 +02:00
Yuri Kuznetsov
5b41abe76f auth refactoring 2019-12-05 15:07:48 +02:00
Taras Machyshyn
f286d2277e Fixed typo 2019-12-05 10:45:47 +02:00
Yuri Kuznetsov
b38c983e73 wysiwyg copy image issue 2019-12-04 15:51:06 +02:00
Yuri Kuznetsov
18ddd05631 wysiwyg copy image issue 2019-12-04 15:50:51 +02:00
Yuri Kuznetsov
be8cfcf47a Merge branch 'hotfix/5.7.8' 2019-12-04 15:09:26 +02:00
Yuri Kuznetsov
a70d133471 fix sumRelated 2019-12-04 15:06:53 +02:00
Yuri Kuznetsov
bc3d488bfe message fix 2019-12-04 13:25:47 +02:00
Yuri Kuznetsov
e9578d8d44 fix smtp message 2019-12-04 13:21:33 +02:00
Yuri Kuznetsov
4c38d96730 fix users teams positions 2019-12-04 13:01:45 +02:00
Yuri Kuznetsov
b962d1572a fix users positions 2019-12-04 12:58:56 +02:00
Yuri Kuznetsov
9f21a722ec service container definition in metadata 2019-12-04 12:45:04 +02:00
Yuri Kuznetsov
4deb9d6d77 Merge branch 'hotfix/5.7.8' 2019-12-04 11:06:22 +02:00
Yuri Kuznetsov
472073ee5a link manager: parent 2019-12-04 11:06:13 +02:00
Yuri Kuznetsov
3f1f686bd1 fix layout acl check 2019-12-04 10:30:32 +02:00
Yuri Kuznetsov
dc962d868f update symfony/http-foundation 2019-12-03 10:49:36 +02:00
Yuri Kuznetsov
9e32211168 update phpspreadsheet 2019-12-02 12:05:28 +02:00
Yuri Kuznetsov
0f9281812d formula relation column 2019-12-02 11:09:12 +02:00
Yuri Kuznetsov
56b099983f fix htmlizer 2019-11-29 16:24:23 +02:00
Yuri Kuznetsov
dbef224120 pdf: checkboxTag 2019-11-29 13:54:35 +02:00
Yuri Kuznetsov
388e0f3478 template custom helpers 2019-11-29 12:56:18 +02:00
Yuri Kuznetsov
280d7f328e formula string pad 2019-11-28 15:22:20 +02:00
Yuri Kuznetsov
6ec6ffc470 Merge branch 'hotfix/5.7.8' 2019-11-28 13:25:59 +02:00
Yuri Kuznetsov
611bbb8fb2 fallback dashboard overflow hidden 2019-11-28 12:06:01 +02:00
Yuri Kuznetsov
7dc5d5583f import silent mode by default 2019-11-28 11:47:52 +02:00
Yuri Kuznetsov
cab31c7dc6 pdf table 2019-11-28 10:55:24 +02:00
Yuri Kuznetsov
43d7b702f1 pdf template placeholders improment 2019-11-27 15:57:17 +02:00
Yuri Kuznetsov
c8dbce18f7 Merge branch 'hotfix/5.7.8' 2019-11-27 15:04:33 +02:00
Yuri Kuznetsov
b89b39cd44 fix enum 2019-11-27 15:04:18 +02:00
Yuri Kuznetsov
24084d4c30 Merge branch 'hotfix/5.7.8' 2019-11-27 13:14:10 +02:00
Yuri Kuznetsov
9a6e2d6578 enum: options w/ quotes not working 2019-11-27 13:10:41 +02:00
Yuri Kuznetsov
3968caf2bc pdf image fix 2019-11-27 10:33:26 +02:00
Yuri Kuznetsov
192faa9ce9 pdf pagebreak 2019-11-26 16:32:57 +02:00
Yuri Kuznetsov
beedfa700d Merge branch 'hotfix/5.7.8' 2019-11-26 13:30:18 +02:00
Yuri Kuznetsov
9f63c00f5c portal user list view access 2019-11-26 13:29:56 +02:00
Yuri Kuznetsov
a851d71c1c Merge branch 'hotfix/5.7.8' 2019-11-26 13:20:45 +02:00
Yuri Kuznetsov
f11b9c0bbc user access to portal users 2019-11-26 13:13:10 +02:00
Yuri Kuznetsov
6ea109f712 app error 2019-11-26 12:57:44 +02:00
Yuri Kuznetsov
275b3b879e cleanup 2019-11-26 12:22:45 +02:00
Yuri Kuznetsov
70e2e49d88 htmlizer imageTag 2019-11-26 12:15:04 +02:00
Yuri Kuznetsov
fe36d049af QR Code 2019-11-26 11:36:08 +02:00
Yuri Kuznetsov
f029ea2c81 Merge branch 'hotfix/5.7.8' 2019-11-21 11:28:44 +02:00
Yuri Kuznetsov
1c3dc61264 fix stream input disapear 2019-11-21 11:23:53 +02:00
Yuri Kuznetsov
c415ce677d stream noteRelate 2019-11-21 11:09:57 +02:00
Yuri Kuznetsov
927a580dce stream follow check acl 2019-11-21 10:37:45 +02:00
Yuri Kuznetsov
fa35516c94 fix frontend tests 2019-11-20 16:27:00 +02:00
Yuri Kuznetsov
e05eafb9a9 fix link manager 2019-11-20 15:16:48 +02:00
Yuri Kuznetsov
7c3f7dd494 field manager: refresh after field remove 2019-11-20 15:07:46 +02:00
Yuri Kuznetsov
b41ec363c5 one to one unlink 2019-11-20 11:55:51 +02:00
Yuri Kuznetsov
bebbeecac3 noEditAccessRequiredForLink 2019-11-20 11:30:49 +02:00
Yuri Kuznetsov
424a365d5d orm: mapper fixes and tests 2019-11-19 13:23:33 +02:00
Yuri Kuznetsov
3e63d03ced mapper type constraints 2019-11-19 11:05:33 +02:00
Yuri Kuznetsov
83bd4458a2 fix stream 2019-11-18 16:00:31 +02:00
Yuri Kuznetsov
eac8ce736c notes about emails for portal users 2019-11-18 15:47:54 +02:00
Yuri Kuznetsov
0a096ce926 Merge branch 'hotfix/5.7.8' 2019-11-18 14:01:14 +02:00
Yuri Kuznetsov
8e3b44c2e1 email import: support multiple references 2019-11-18 13:55:06 +02:00
Yuri Kuznetsov
7a580599cf Merge branch 'hotfix/5.7.8' 2019-11-18 13:09:11 +02:00
Yuri Kuznetsov
4048b7207b lang fix 2019-11-18 13:09:02 +02:00
Yuri Kuznetsov
c82da61193 Merge branch 'hotfix/5.7.8' 2019-11-18 13:01:01 +02:00
Yuri Kuznetsov
a87231552b case distribution fixes 2019-11-18 13:00:38 +02:00
Yuri Kuznetsov
0ec73779bf fix tests 2019-11-15 16:34:20 +02:00
Yuri Kuznetsov
2a705fcc84 fix htmlizer 2019-11-15 16:23:28 +02:00
Yuri Kuznetsov
6eff3b3eae fix datetime 2019-11-15 16:22:04 +02:00
Yuri Kuznetsov
a260e15ba7 one-to-one link 2019-11-15 16:14:08 +02:00
Yuri Kuznetsov
2a7d8cbc2e cs fix 2019-11-15 10:41:02 +02:00
Yuri Kuznetsov
84f1d8f625 currency rates api 2019-11-14 16:12:15 +02:00
Yuri Kuznetsov
1b852fbd04 cleanup 2019-11-14 13:00:28 +02:00
Yuri Kuznetsov
d770dd26e0 barcode field 2019-11-14 12:52:19 +02:00
Yuri Kuznetsov
b79bd72c8a Merge branch 'hotfix/5.7.8' 2019-11-13 12:49:23 +02:00
Yuri Kuznetsov
a234f503a1 list with categories no data if text filter 2019-11-13 12:07:52 +02:00
Yuri Kuznetsov
55be5b12b2 formula record relate 2019-11-13 10:43:51 +02:00
Yuri Kuznetsov
1f400649f5 Merge branch 'hotfix/5.7.8' of ssh://172.20.0.1/var/git/espo/backend into hotfix/5.7.8 2019-11-12 15:23:24 +02:00
Yuri Kuznetsov
e6f65440f2 add more currencies 2019-11-12 14:59:05 +02:00
Taras Machyshyn
def8455d78 Improved Integration tests 2019-11-12 14:58:25 +02:00
Yuri Kuznetsov
1ad2144432 currency list in app metadata 2019-11-12 14:55:30 +02:00
Yuri Kuznetsov
c2828e3273 v 2019-11-12 14:46:36 +02:00
Yuri Kuznetsov
725e428626 Merge branch 'stable' 2019-11-12 14:34:58 +02:00
Yuri Kuznetsov
b1f272215a email index skip mysql 5.7 2019-11-12 11:08:46 +02:00
Taras Machyshyn
032199d9c7 Save database type and version while rebuild 2019-11-12 10:56:12 +02:00
Yuri Kuznetsov
cce78ac258 fix metadata and language acl 2019-11-11 10:22:22 +02:00
Yuri Kuznetsov
ea41d2c40c mass actions refactoring 2019-11-08 13:07:07 +02:00
Yuri Kuznetsov
befb2327a3 mass follow refactoring 2019-11-08 12:23:16 +02:00
Yuri Kuznetsov
eae677f846 date time language support 2019-11-07 16:01:17 +02:00
Yuri Kuznetsov
26f65def3e remove supporting different mail parsers 2019-11-07 15:26:37 +02:00
Yuri Kuznetsov
69b275deb1 fix date format 2019-11-07 12:27:49 +02:00
Yuri Kuznetsov
95ccc38759 date format Do 2019-11-07 12:14:07 +02:00
Yuri Kuznetsov
31099827d4 pdf date format 2019-11-07 11:50:53 +02:00
Yuri Kuznetsov
91944c617c Merge branch 'hotfix/5.7.7' 2019-11-06 15:43:39 +02:00
Yuri Kuznetsov
67074f2b0a dashlet options button 2019-11-06 15:29:00 +02:00
Yuri Kuznetsov
4f2f7c05ca opportunity primary contact 2019-11-06 15:08:46 +02:00
Yuri Kuznetsov
c4bfa05e2f iframe dashlet 2019-11-06 11:49:02 +02:00
Yuri Kuznetsov
a8e86433ce view helper calculateContentContainerHeight 2019-11-06 10:38:32 +02:00
Yuri Kuznetsov
3b1950bc6e view map 2019-11-05 17:03:06 +02:00
Yuri Kuznetsov
8e666da93a Merge branch 'master' of github.com:espocrm/espocrm 2019-11-05 11:54:34 +02:00
Yuri Kuznetsov
7031afe9df Merge branch 'hotfix/5.7.7' 2019-11-05 11:52:57 +02:00
Taras Machyshyn
b1da843702 Update README.md 2019-11-05 10:47:12 +02:00
Yuri Kuznetsov
ea3189ebc3 metadata & language acl dependencies 2019-11-04 14:04:10 +02:00
Yuri Kuznetsov
83e7e0b517 fix link multiple with role acl 2019-11-04 13:36:12 +02:00
Yuri Kuznetsov
2c1fed8adf fix email header 2019-11-04 10:33:42 +02:00
Yuri Kuznetsov
45e6f3bb34 array field: display as list param 2019-11-01 16:46:27 +02:00
Yuri Kuznetsov
f53708c38e remove no joins 2019-11-01 14:34:57 +02:00
Yuri Kuznetsov
d1aa3f721d no full text threshold for emails 2019-11-01 13:16:08 +02:00
Yuri Kuznetsov
0afe715d9a full text search threshold 2019-11-01 13:08:40 +02:00
Yuri Kuznetsov
9cbe31300a lock user table before checking duplicate 2019-11-01 11:59:33 +02:00
Yuri Kuznetsov
dde139f0a1 full text changes 2019-10-31 16:53:26 +02:00
Yuri Kuznetsov
5fb8b2c71c orm match test 2019-10-31 15:56:21 +02:00
Yuri Kuznetsov
63c07a1f17 fulltext search improvements 2019-10-31 15:42:08 +02:00
Yuri Kuznetsov
a338bbca59 integration language 2019-10-31 13:38:34 +02:00
Yuri Kuznetsov
157bf87d40 ouathcallback message 2019-10-31 12:49:53 +02:00
Yuri Kuznetsov
911a9f80de bool search change 2019-10-29 15:56:19 +02:00
Yuri Kuznetsov
c9bbbeb2c4 fix history email list 2019-10-29 12:03:52 +02:00
Yuri Kuznetsov
109847f604 email addresses & phone numbers lists 2019-10-29 11:52:36 +02:00
Yuri Kuznetsov
ff033e88d5 Merge branch 'hotfix/5.7.7' 2019-10-29 10:34:25 +02:00
Yuri Kuznetsov
57803c0828 v 2019-10-28 12:24:03 +02:00
Yuri Kuznetsov
3d8be61fbf amend 2019-10-28 12:05:33 +02:00
Yuri Kuznetsov
690e87a3fb select manager error if order by non existing field 2019-10-28 12:05:00 +02:00
Yuri Kuznetsov
72569af873 Merge branch 'stable' 2019-10-25 15:46:33 +03:00
Yuri Kuznetsov
cd45f07e54 fix account description 2019-10-24 14:34:46 +03:00
Yuri Kuznetsov
a35f9625af fix email reply id 2019-10-24 13:33:07 +03:00
Yuri Kuznetsov
f5245ef3eb email import message id fix 2019-10-24 13:06:11 +03:00
Yuri Kuznetsov
49e8fdff95 email import message id fix 2019-10-24 13:05:40 +03:00
yuri
e9d35dd26d drop php 7.1 and mysql 5.6 2019-10-23 11:17:09 +03:00
yuri
4ad9ef770b pdf: not latin filename support 2019-10-23 11:05:26 +03:00
yuri
acbc74d858 fix entity plural label 2019-10-22 15:42:41 +03:00
yuri
8da3350523 base plus emails link 2019-10-22 15:40:29 +03:00
yuri
496879dd79 pdf link support 2019-10-22 15:30:49 +03:00
yuri
84cda80fd8 forbid base entity type name 2019-10-22 13:13:13 +03:00
yuri
50a81b1247 date picker disable keyboard navigation 2019-10-22 12:56:57 +03:00
yuri
f0f225f349 propagate remove event for stored main view 2019-10-22 12:25:40 +03:00
yuri
d49fff1289 cleanup 2019-10-22 11:44:26 +03:00
yuri
abaa1b302b email filters from to 2019-10-22 11:38:44 +03:00
yuri
0eaa7825ea email filters layout change 2019-10-22 10:40:34 +03:00
yuri
1028b7c5b3 v 2019-10-22 10:32:36 +03:00
yuri
f319e5219d Merge branch 'hotfix/5.7.6' of ssh://172.20.0.1/var/git/espo/backend into hotfix/5.7.6 2019-10-22 10:05:32 +03:00
Taras Machyshyn
0daae5ced5 Integration tests changes 2019-10-21 16:38:46 +03:00
Taras Machyshyn
abee63d269 FieldManager fix 2019-10-21 16:38:15 +03:00
yuri
be33d90986 all of filter 2019-10-21 15:44:41 +03:00
yuri
3a7cac824d formula comments 2019-10-21 13:44:16 +03:00
yuri
7d616b075f fix formula sumRelated 2019-10-21 12:22:05 +03:00
yuri
b718765138 system requirements tpl fix 2019-10-21 11:46:27 +03:00
yuri
3104be7c99 link multiple default 2019-10-21 10:46:29 +03:00
yuri
a8d182b4cd Merge branch 'hotfix/5.7.5' into stable 2019-10-18 16:14:48 +03:00
yuri
3bfc99c88b entity array clone 2019-10-18 14:46:18 +03:00
yuri
ac3300a5cf fix password labels 2019-10-18 12:58:49 +03:00
yuri
636587a22c Merge branch 'hotfix/5.7.5' of ssh://172.20.0.1/var/git/espo/backend into hotfix/5.7.5 2019-10-18 12:48:48 +03:00
Taras Machyshyn
4ed2c71dfd Integration tests fix 2019-10-18 12:48:30 +03:00
yuri
723229d8e6 Merge branch 'hotfix/5.7.5' of ssh://172.20.0.1/var/git/espo/backend into hotfix/5.7.5 2019-10-18 12:12:31 +03:00
yuri
080ab488fa fix json object save 2019-10-18 11:11:55 +03:00
Taras Machyshyn
fd32696c5a Integration tests optimization 2019-10-18 10:40:28 +03:00
Taras Machyshyn
9a56858f12 Label changes 2019-10-18 10:40:20 +03:00
Taras Machyshyn
5923757810 Database indexes changes 2019-10-18 10:40:07 +03:00
yuri
62948a7740 v 2019-10-17 17:21:22 +03:00
yuri
821d57ce00 fix stream 2019-10-17 17:20:47 +03:00
yuri
efd0505ead fix 2019-10-17 16:59:37 +03:00
yuri
91c55965a7 fix 2019-10-17 16:43:16 +03:00
yuri
974305e152 v 2019-10-17 16:42:57 +03:00
yuri
016abaf7b6 fix 2019-10-17 16:16:14 +03:00
yuri
f3ec50dcbd fix 2019-10-17 16:10:39 +03:00
yuri
baeee7caf5 timestamp diff orm functions 2019-10-17 16:07:14 +03:00
yuri
56280224f9 access control disabled 2019-10-17 12:14:47 +03:00
yuri
4b3e341606 fix 2019-10-17 11:38:06 +03:00
yuri
58fad48d5e languageAclDisabled param 2019-10-17 11:03:28 +03:00
yuri
841a73b886 email address lookup fix 2019-10-17 10:17:03 +03:00
yuri
f74ae46ec9 orm additionalSelect 2019-10-16 16:32:00 +03:00
yuri
542d78425c fix email address lookup 2019-10-16 15:39:23 +03:00
yuri
7b241b90a0 fix email search 2019-10-16 11:27:12 +03:00
yuri
de77b1b1d0 v 2019-10-16 10:34:13 +03:00
yuri
8199692df7 calendar ui fixes 2019-10-15 16:38:08 +03:00
yuri
1d3a340d3a duplicate returnUrl 2019-10-15 15:19:53 +03:00
yuri
d664f29388 fix 2019-10-15 14:04:00 +03:00
yuri
4d0e1af000 save and continue action 2019-10-15 14:00:55 +03:00
yuri
97ea0c71e1 fix handle action 2019-10-15 14:00:45 +03:00
yuri
d9fbcda231 lanf 2019-10-15 11:57:28 +03:00
yuri
f4b5cfa5b6 add global search test 2019-10-15 11:43:37 +03:00
yuri
4391c7a7ac fix test 2019-10-15 11:43:27 +03:00
yuri
6c14f390f6 fix global search 2019-10-15 11:31:08 +03:00
yuri
4a6829cf10 fix output 2019-10-15 11:15:45 +03:00
yuri
2b6c493be5 fix link parent 2019-10-14 13:24:42 +03:00
yuri
597406f70d fix test 2019-10-14 13:00:31 +03:00
yuri
110e2fbc37 string pos formula function 2019-10-14 12:32:30 +03:00
yuri
3e1fab487a htmlizer ifInArray 2019-10-14 11:30:50 +03:00
yuri
c76e34fe81 fix enum 2019-10-11 15:49:53 +03:00
yuri
eb922103a8 v 2019-10-11 13:02:04 +03:00
yuri
9b946c6a1f compose email layout columns 2019-10-11 13:01:45 +03:00
yuri
e2df819e57 call allow 0 duration 2019-10-11 11:17:21 +03:00
yuri
9b00d50079 fix select manager user from team 2019-10-11 10:50:25 +03:00
yuri
814f79d53b Merge branch 'hotfix/5.7.2' of github.com:espocrm/espocrm into hotfix/5.7.2 2019-10-10 15:17:42 +03:00
yuri
0d6482374e Merge branch 'hotfix/5.7.2' of ssh://172.20.0.1/var/git/espo/backend into hotfix/5.7.2 2019-10-10 15:06:34 +03:00
Karthik Bhat K
427e3d466a count(): Parameter must be an array or an object that implements Countable (#1460) 2019-10-10 10:13:27 +03:00
yuri
ae72768f8c v 2019-10-09 11:14:28 +03:00
yuri
bd4e92d892 multi-enum display as list 2019-10-09 11:06:34 +03:00
yuri
afc17ac54c fix filter by foreign array 2019-10-09 10:48:21 +03:00
Taras Machyshyn
52dda066cd Index name consists of a list of fields for relation tables 2019-10-09 10:34:26 +03:00
yuri
29bec8fcd6 fix email storing 2019-10-09 10:15:27 +03:00
yuri
5c4fd344e4 smtp default tls 2019-10-08 17:54:12 +03:00
yuri
e936ad907b outbound email settings fixes 2019-10-08 17:50:45 +03:00
yuri
bc59dab9ec fix lang acl 2019-10-08 17:40:17 +03:00
yuri
48652e35ee fix integrations 2019-10-08 17:04:35 +03:00
yuri
381a51b836 Merge branch 'hotfix/5.7.1' of ssh://172.20.0.1/var/git/espo/backend into hotfix/5.7.1 2019-10-08 15:10:15 +03:00
Taras Machyshyn
a9f36a352d Orm: defined index name for relations 2019-10-08 15:07:55 +03:00
yuri
6c8a0bbb66 orm useIndex change 2019-10-08 13:43:31 +03:00
yuri
b21b69eed5 cs fix 2019-10-08 13:43:09 +03:00
yuri
ef0d3febd8 buttons small fix 2019-10-08 11:54:15 +03:00
yuri
2d6db7570c fix record next/prev 2019-10-08 11:44:47 +03:00
yuri
a7804742e7 fix select manager order 2019-10-08 11:18:50 +03:00
yuri
09301e9d7c fix reminders 2019-10-08 10:45:07 +03:00
yuri
5d10da3b78 orm fix 2019-10-07 14:42:37 +03:00
yuri
dcc4cce872 update reserved words 2019-10-07 14:23:53 +03:00
yuri
02fbc20838 orm join only middle 2019-10-07 13:37:59 +03:00
yuri
6641075043 orm fix 2019-10-07 13:22:30 +03:00
yuri
6624b178c0 fix select manager is not linked filter 2019-10-07 13:08:19 +03:00
yuri
4ec6708cb4 v 2019-10-07 12:41:17 +03:00
yuri
f9752eab02 orm more sanitizing 2019-10-07 12:28:10 +03:00
yuri
3de816e03a formula entity get link column 2019-10-07 12:27:42 +03:00
yuri
b854ebab43 lead capture fix 2019-10-07 11:23:41 +03:00
yuri
ffab7c3e6b external account fix 2019-10-07 10:26:47 +03:00
yuri
b6e09ec75a stream fix 2019-10-04 15:24:06 +03:00
yuri
083c768af9 globas search optimization 2019-10-04 12:38:39 +03:00
yuri
fd052c1cdb email select manager fix 2019-10-04 10:35:36 +03:00
yuri
41e0e29500 select manager apply default order 2019-10-03 18:03:57 +03:00
yuri
3cbd918507 full text change 2019-10-03 17:57:07 +03:00
yuri
94c9db2fde full text changes 2019-10-03 17:43:20 +03:00
yuri
da29d6149b Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2019-10-03 17:29:18 +03:00
Taras Machyshyn
abd887363f Label changes 2019-10-03 17:26:45 +03:00
Taras Machyshyn
8e2fe95e0c Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2019-10-03 17:11:09 +03:00
Taras Machyshyn
75e5349475 DBAL bug fixes 2019-10-03 17:02:22 +03:00
yuri
9a081d784e fix 2019-10-03 14:56:08 +03:00
yuri
960446f9fa enity manager: disable count 2019-10-03 14:44:10 +03:00
yuri
7cac38f39d Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2019-10-03 14:30:22 +03:00
yuri
98e69436d9 sum related support children 2019-10-03 13:42:17 +03:00
yuri
415eff0486 fix stream portal user 2019-10-03 13:41:53 +03:00
yuri
850f6ad41e cs fix 2019-10-03 13:12:51 +03:00
yuri
a5433ec82a stream use index 2019-10-03 13:09:54 +03:00
yuri
9b2ac56563 email use index fix 2019-10-03 10:27:29 +03:00
yuri
43fed19d07 formula password functions 2019-10-02 14:58:20 +03:00
yuri
2f93dfd653 array displayAsList 2019-10-02 12:18:27 +03:00
yuri
c752e8fc91 job front end fixes 2019-10-02 11:44:28 +03:00
yuri
00230f50d6 remove notifications sound disabled 2019-10-02 10:46:19 +03:00
yuri
3b880de16d preferences fix 2019-10-02 10:43:42 +03:00
Taras Machyshyn
6acba3efb8 Fixes for 'indexes' attribute for manyMany relationships 2019-10-01 17:17:39 +03:00
yuri
57843f5f86 calendar apply color 2019-10-01 17:13:12 +03:00
yuri
73b00190f7 colorpicker fix 2019-10-01 17:06:32 +03:00
yuri
20ede11bdd css fix 2019-10-01 16:40:03 +03:00
yuri
9d485624a8 fix 2019-10-01 16:00:21 +03:00
yuri
3fe4bc34ef fix 2019-10-01 15:51:02 +03:00
yuri
a38fd487f4 lang fix 2019-10-01 15:43:22 +03:00
yuri
91506a8ca6 unsubscribe without mass email 2019-10-01 14:21:51 +03:00
yuri
d01748a24c hasher 2019-10-01 14:21:38 +03:00
yuri
a3f7f4e2d2 fix smtp account field 2019-10-01 11:19:01 +03:00
yuri
2df476d734 Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2019-10-01 10:16:48 +03:00
yuri
bf5fe492b3 user data fix 2019-10-01 10:10:08 +03:00
Taras Machyshyn
87036f83e1 Added 'indexes' attribute for manyMany relationships 2019-09-30 17:47:55 +03:00
yuri
cf65e40b35 fix case portal acl 2019-09-30 16:20:54 +03:00
yuri
5fe98cbbbc fix validation 2019-09-30 16:19:22 +03:00
yuri
1b94573502 fix acl portal 2019-09-30 16:12:04 +03:00
yuri
d28638136a fix 2019-09-30 16:00:40 +03:00
yuri
ca05495e9e fix metadata filter 2019-09-30 15:48:40 +03:00
yuri
c572d0110f dashboard fix 2019-09-30 15:36:26 +03:00
yuri
3057f749c4 fix language filter 2019-09-30 14:16:04 +03:00
yuri
62c865bdc3 subscription index 2019-09-30 13:28:25 +03:00
yuri
7e2bd60382 filter relationships layout by acl 2019-09-30 12:39:25 +03:00
yuri
84434fa14a acl frontend fix 2019-09-30 12:38:36 +03:00
yuri
1c1b8b3985 restrict settings lists 2019-09-28 15:13:47 +03:00
yuri
ea15452db4 restrict user data and acl 2019-09-28 14:52:39 +03:00
yuri
b39d2b34e2 acl portal additions 2019-09-28 14:52:15 +03:00
yuri
e6d79e0847 dashboard layout fix 2019-09-28 14:14:00 +03:00
yuri
1f334c2690 clear frontend cache on role change 2019-09-28 13:46:46 +03:00
yuri
6cfd5db8ac fix portal 2019-09-28 13:46:32 +03:00
yuri
3478aa772c metadata hide by acl 2019-09-28 13:04:48 +03:00
yuri
f2c769a062 fix acl 2019-09-28 12:23:59 +03:00
yuri
6e1d905db9 team role by default 2019-09-28 12:19:19 +03:00
yuri
882eeffdd5 modal backdrop fix 2019-09-28 12:16:17 +03:00
yuri
1e4e8b3fcf follow access 2019-09-28 12:07:08 +03:00
yuri
4b25456acd fix teams select manager 2019-09-28 11:55:31 +03:00
yuri
68615ba8bb language hide labels by acl 2019-09-28 11:33:20 +03:00
yuri
8bafcded50 portal role scope 2019-09-28 11:20:42 +03:00
Taras Machyshyn
2e7dca6540 Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2019-09-27 16:34:16 +03:00
Taras Machyshyn
d25b4a4e3a Bug fixes 2019-09-27 16:34:08 +03:00
yuri
fbf6b39dae Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2019-09-27 16:21:39 +03:00
yuri
60bb06c6af dashlets records number change 2019-09-27 16:21:33 +03:00
Taras Machyshyn
a169aca4f0 Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2019-09-27 16:19:02 +03:00
Taras Machyshyn
3e83e97197 Apache / nginx rewrite changes 2019-09-27 16:18:50 +03:00
yuri
70cdbe6020 stream union all 2019-09-27 16:17:22 +03:00
yuri
36d089cfe7 maintainence mode close button 2019-09-27 15:21:50 +03:00
yuri
0ea1be6307 modal buttons 2019-09-27 15:17:53 +03:00
yuri
73cebf7e5f msg change 2019-09-27 15:02:23 +03:00
yuri
bbd943eb93 fix confirm 2019-09-27 14:54:55 +03:00
yuri
2a891c01e7 Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2019-09-27 13:10:38 +03:00
yuri
c6b1bb9c57 header popover touchscreen 2019-09-27 13:09:44 +03:00
yuri
03d06a5919 ui popover 2019-09-27 13:09:28 +03:00
Taras Machyshyn
c02f39cf93 Upgrade: bug fixes 2019-09-27 13:06:22 +03:00
yuri
d064d3ea1c Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2019-09-27 12:03:20 +03:00
yuri
670cbc4971 maintenance mode message 2019-09-27 12:01:33 +03:00
yuri
2eedc93d27 modal improvements 2019-09-27 12:01:15 +03:00
yuri
8e80153a1a confirm fix 2019-09-27 11:37:40 +03:00
yuri
a80f1f4662 cs fix 2019-09-27 11:12:43 +03:00
yuri
0602074554 fix stream 2019-09-27 11:06:15 +03:00
Taras Machyshyn
8f49f25057 Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2019-09-27 10:36:22 +03:00
Taras Machyshyn
374d827edd Upgrade: bug fixes 2019-09-27 10:36:14 +03:00
yuri
6648e9ba02 stream skip own param 2019-09-27 10:36:03 +03:00
yuri
45773c5fce stream performance fix 2019-09-27 10:26:22 +03:00
yuri
c9336b882c Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2019-09-26 15:43:18 +03:00
Taras Machyshyn
b39d220f82 Added database version checking for upgrades, extensions 2019-09-26 15:42:38 +03:00
yuri
064d63abed acceptance status modal improvement 2019-09-26 15:40:12 +03:00
yuri
104fc41895 css fix 2019-09-26 12:04:34 +03:00
yuri
b0fc7ffd0a job count disabled 2019-09-26 11:38:11 +03:00
yuri
ce2861b337 Merge branch 'master' of github.com:espocrm/espocrm 2019-09-26 11:29:33 +03:00
yuri
ccb5baf025 drop mysql 5.5 2019-09-26 11:29:22 +03:00
Yuri Kuznetsov
ff227c9813 Update README.md 2019-09-26 11:17:51 +03:00
yuri
a3a60713ef lang fix 2019-09-26 10:46:57 +03:00
yuri
5bae4c7968 small screen list wider 2019-09-26 10:25:06 +03:00
yuri
57e7556424 layout manager link param tooltip 2019-09-25 16:57:14 +03:00
yuri
de7e573dbe link manager label fix 2019-09-25 16:43:37 +03:00
yuri
27579a0111 fix webhook 2019-09-25 16:27:44 +03:00
yuri
9933e2bff2 stream user fix 2019-09-25 12:47:06 +03:00
yuri
061aeaeecc stream service use orm 2019-09-25 12:35:56 +03:00
yuri
07eb8daee2 aclStrictMode system param 2019-09-25 11:46:09 +03:00
yuri
1d0fdbd73b aclStrictMode true if not set 2019-09-25 11:39:54 +03:00
yuri
f9a9f60ad4 small screen footer to the bottom 2019-09-25 11:37:35 +03:00
yuri
21bf0953e6 lang fix 2019-09-25 11:27:34 +03:00
yuri
a6b31c48af close notification panel in mobile mode 2019-09-25 10:51:49 +03:00
yuri
62ac499867 css fix 2019-09-24 17:33:52 +03:00
yuri
d7d0e79e4b cs fix 2019-09-24 17:25:03 +03:00
yuri
4667d62ad5 email store when message id is set 2019-09-24 17:24:05 +03:00
yuri
017ac9c547 email store right after send 2019-09-24 17:20:36 +03:00
yuri
b73db26a41 webhook fix 2019-09-24 16:29:57 +03:00
yuri
3634872a33 import support link multiple ids 2019-09-24 15:55:22 +03:00
yuri
cbe6711a83 scheduled job status default 2019-09-24 12:06:56 +03:00
yuri
bcad4a9e88 Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2019-09-24 11:28:31 +03:00
Taras Machyshyn
4b6e6928c6 Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2019-09-24 11:28:17 +03:00
Taras Machyshyn
fe32fd86c5 Fix upgrade tests 2019-09-24 11:28:08 +03:00
yuri
b704730e18 stream dashlet view label 2019-09-24 11:15:35 +03:00
yuri
11562ff515 fix notice 2019-09-24 11:07:03 +03:00
yuri
bf3abeaa1d Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2019-09-24 11:04:38 +03:00
yuri
3731a5558b note notification number bigint 2019-09-24 10:42:05 +03:00
yuri
66e15a4404 email address lookup access check 2019-09-24 10:36:10 +03:00
yuri
23dc2f09a2 email address search optimization 2019-09-24 10:33:06 +03:00
yuri
925702516c upgrade strong text warning 2019-09-24 10:26:37 +03:00
yuri
5bcea44ecb fix user activities 2019-09-24 10:18:58 +03:00
Taras Machyshyn
054f3851be Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2019-09-23 16:52:35 +03:00
Taras Machyshyn
fffa95a206 Improved Upgrade process 2019-09-23 16:50:33 +03:00
yuri
9d9e13a07d Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2019-09-23 16:08:27 +03:00
yuri
afeff90096 fix activities 2019-09-23 16:06:32 +03:00
yuri
fffb214e5d user history performance 2019-09-23 15:48:07 +03:00
Taras Machyshyn
acb8f95929 Fix file permission after copy 2019-09-23 15:42:36 +03:00
yuri
3323e947b6 relation panel set filter ui improvement 2019-09-23 14:48:38 +03:00
yuri
efc4bf2a89 use history query optimization 2019-09-23 14:20:59 +03:00
yuri
47618a3555 lang 2019-09-23 12:23:01 +03:00
yuri
e89694c8b9 user history no count 2019-09-23 11:13:45 +03:00
yuri
69c6b2db1c scheduled job log perfrormance 2019-09-20 16:53:01 +03:00
yuri
89818b2eea scheduled job log index 2019-09-20 16:33:21 +03:00
yuri
806461750a layout manager button group 2019-09-20 15:13:44 +03:00
yuri
8ac7a855cc merge buttons fix 2019-09-20 15:11:12 +03:00
yuri
e85f7a533f select multiple records button style 2019-09-20 15:09:26 +03:00
yuri
b58561e46f stickButtonsFormBottomSelector 2019-09-20 14:54:41 +03:00
yuri
21909f985b stick buttons z-index 5 2019-09-20 14:49:05 +03:00
yuri
a1c0269443 formula field change 2019-09-19 16:58:42 +03:00
yuri
96bdd54782 fix diff 2019-09-19 15:50:31 +03:00
yuri
8d68305e38 v 2019-09-19 15:19:30 +03:00
yuri
554d105aac update mail-mime-parser 2019-09-19 15:16:24 +03:00
yuri
f3681e8ad7 naming fix 2019-09-19 13:54:11 +03:00
yuri
d088225542 bool filter OR 2019-09-19 13:54:01 +03:00
yuri
e4be1156db followed filter use orm 2019-09-19 12:59:51 +03:00
yuri
76599130cf Merge branch 'stable' 2019-09-19 12:31:35 +03:00
yuri
e9208602f6 css fix 2019-09-19 12:00:03 +03:00
yuri
e2f57d4869 formula record attribute 2019-09-18 16:21:22 +03:00
yuri
98dd4bc51c formula record findOne 2019-09-18 16:20:57 +03:00
yuri
cb4356c689 afterClick hook 2019-09-18 13:11:15 +03:00
yuri
99e8642ef6 fix 2019-09-18 12:59:27 +03:00
yuri
e5575ee673 generate password method fix 2019-09-18 12:34:57 +03:00
yuri
e1d7733848 meeting/call do not show send invitees if only own user and accepted 2019-09-18 11:07:10 +03:00
yuri
b08f7de0cb email address fix double escaping 2019-09-18 10:48:12 +03:00
yuri
d83f02010a fix inbound email from address 2019-09-18 10:26:10 +03:00
yuri
02b66272bb markdown hint fix 2019-09-17 17:42:17 +03:00
yuri
4ef3b2975e Merge branch 'hotfix/5.6.14' 2019-09-17 17:36:52 +03:00
yuri
88bc592fcd Merge branch 'hotfix/5.6.14' of ssh://172.20.0.1/var/git/espo/backend into hotfix/5.6.14 2019-09-17 17:35:54 +03:00
yuri
2fe1d892c5 password strength params 2019-09-17 17:05:07 +03:00
Taras Machyshyn
9c2a125365 Field Manager fix 2019-09-17 17:04:36 +03:00
yuri
d21e61bdf5 2fa labels fixes 2019-09-17 14:00:49 +03:00
yuri
a2e6bb6fd9 fix label 2019-09-17 13:37:39 +03:00
yuri
381f4886a9 passwordGenerateLength param 2019-09-17 13:35:31 +03:00
yuri
ab538e1901 password both cases 2019-09-17 13:19:05 +03:00
yuri
506200901d generate and send password 2019-09-17 12:25:13 +03:00
yuri
764b0c6705 fix generate password 2019-09-17 11:59:11 +03:00
yuri
34209c0811 fix passwordRecoveryEnabled 2019-09-17 11:43:29 +03:00
yuri
0e3b94e1bb confirm return promise 2019-09-17 11:28:15 +03:00
yuri
fd95fa73ce generate password improvement 2019-09-17 11:02:26 +03:00
yuri
3f056c8472 ability to disable password recovery 2019-09-16 15:47:06 +03:00
yuri
ef48999614 hide forgot password if smtp is not configured 2019-09-16 14:04:50 +03:00
yuri
087ab2b954 Merge branch 'hotfix/5.6.14' 2019-09-16 12:33:06 +03:00
yuri
e79e75c0d5 text field remove default rows param 2019-09-16 12:32:14 +03:00
yuri
cb37ee88b2 lang fix 2019-09-16 12:14:23 +03:00
yuri
9ead5dad66 stream performance fix 2019-09-16 12:06:04 +03:00
yuri
4b39626b83 stream onlyNotified param 2019-09-16 11:59:19 +03:00
yuri
2b5b7eb601 varchar: support conditional options dynamic logic 2019-09-16 10:50:57 +03:00
yuri
0785e2a059 Merge branch 'hotfix/5.6.14' 2019-09-16 10:48:40 +03:00
yuri
2187073e2b css fix side navbar tab 2019-09-16 10:45:54 +03:00
yuri
3c36e81502 add ouath-callback to build 2019-09-16 10:34:39 +03:00
yuri
fe6b6bc869 enum fix 2019-09-13 16:35:15 +03:00
yuri
d9cdcfa332 markdown in tooltips 2019-09-13 15:38:23 +03:00
yuri
0db2dbc0f3 field manager custom field tooltip 2019-09-13 14:57:47 +03:00
yuri
e319ead6a7 tooltip ascept custom string 2019-09-13 14:50:33 +03:00
yuri
0dae38943f file accept param 2019-09-13 13:58:14 +03:00
yuri
f9e4ae7b71 orm attribute changed check for json object 2019-09-13 13:26:01 +03:00
yuri
2f4f4dc023 Merge branch 'hotfix/5.6.14' 2019-09-13 13:05:21 +03:00
yuri
f8bafa5221 fix orm order 2019-09-13 12:58:44 +03:00
yuri
00a0cb1394 fix test 2019-09-13 12:58:31 +03:00
yuri
3a37f8421d fix action handler 2019-09-13 12:25:50 +03:00
yuri
2dbde4e2c8 fix detail action label 2019-09-13 11:58:04 +03:00
yuri
98084e9314 formula addLinkMultipleId do not throw error 2019-09-13 11:37:55 +03:00
yuri
2946969e3a detail custom actions 2019-09-13 11:36:01 +03:00
yuri
75c3891654 action history user type 2019-09-12 17:21:51 +03:00
yuri
c0866c8fea fix email template insert 2019-09-12 16:57:19 +03:00
yuri
5d3a785a49 v 2019-09-12 16:41:20 +03:00
yuri
4bcf88dcee fix mail sender 2019-09-12 16:39:32 +03:00
yuri
889f976c5f Merge branch 'stable' 2019-09-12 11:21:51 +03:00
yuri
022d9a42ec transfromMarkdownText 2019-09-12 11:06:57 +03:00
yuri
ac80f67533 fix view helper 2019-09-11 15:55:02 +03:00
yuri
1ffbf63731 dynamicLogicOptions field param 2019-09-11 15:26:14 +03:00
yuri
83fa22852a lang no quote escaping 2019-09-10 16:52:42 +03:00
yuri
7ffd8a54a1 v 2019-09-10 11:07:44 +03:00
yuri
739cb5e98f emailFoldersDisabled param 2019-09-10 11:04:13 +03:00
yuri
f5e1b7175e utils checkActionAvailability 2019-09-10 11:03:56 +03:00
yuri
81cb2aaeb8 fix navbar tpl 2019-09-09 13:28:53 +03:00
yuri
bc54bafc3a lang 2019-09-09 13:26:56 +03:00
yuri
fe635064d5 Merge branch 'stable' 2019-09-06 16:36:18 +03:00
yuri
01ba132a62 field manager fix 2019-09-06 16:19:49 +03:00
yuri
ac318bb302 Merge branch 'hotfix/5.6.12' 2019-09-06 15:21:57 +03:00
yuri
4b31173355 multi enum fix 2019-09-06 15:21:39 +03:00
yuri
34cd265fc1 afterRelate hook for link multiple save 2019-09-04 11:27:27 +03:00
yuri
22f19c0ac9 Merge branch 'hotfix/5.6.12' 2019-09-03 11:05:06 +03:00
yuri
93f8ef9daa Merge branch 'hotfix/5.6.12' of ssh://172.20.0.1/var/git/espo/backend into hotfix/5.6.12 2019-09-03 11:04:15 +03:00
Taras Machyshyn
81ffbc8e6d Merge branch 'hotfix/5.6.12' of ssh://172.20.0.1/var/git/espo/backend into hotfix/5.6.12 2019-09-02 18:18:40 +03:00
Taras Machyshyn
061dda1a1e Fixed index name issue 2019-09-02 18:18:30 +03:00
yuri
c83a24794d hide console commands metadata 2019-09-02 14:52:44 +03:00
yuri
5ab6d25e82 fix dashboard fallback css 2019-09-02 10:31:19 +03:00
yuri
36aab22272 metadata loaders hidden 2019-09-02 10:27:08 +03:00
yuri
a21d5dba9f fix detail nav buttons 2019-08-30 16:33:08 +03:00
yuri
bb8e543509 preferences: hide smtp if email accoint is available 2019-08-30 16:01:31 +03:00
yuri
b93112aaff group email accont refactoring 2019-08-30 15:44:25 +03:00
yuri
c303ec9479 smtp send test fix 2019-08-30 14:04:39 +03:00
yuri
76f10fefa3 css fix 2019-08-30 12:42:44 +03:00
yuri
becd564420 user calendar button icon 2019-08-30 12:41:29 +03:00
yuri
c4f3c1dbd1 email account ui improvement 2019-08-30 12:36:41 +03:00
yuri
f4d1b4a5b8 email account: smtp auth mechanism param 2019-08-30 12:22:01 +03:00
yuri
045264d95f formula tests 2019-08-29 12:49:57 +03:00
yuri
797fab769f Merge branch 'hotfix/5.6.12' 2019-08-29 10:46:42 +03:00
yuri
41d8605e17 fix typo 2019-08-29 10:41:56 +03:00
yuri
18bcaf7e6e Merge branch 'hotfix/5.6.12' 2019-08-28 16:59:30 +03:00
yuri
13a2ba47e7 fix wysiwyg 2019-08-28 16:58:33 +03:00
yuri
1ef60781a0 custom navbar view 2019-08-28 16:43:04 +03:00
yuri
64dfad8cc1 orm binary function 2019-08-28 16:14:25 +03:00
yuri
9862c6d960 list layout fix not sortable fields 2019-08-28 15:39:59 +03:00
yuri
1cfa5ce2b3 fix link multiple list overflow 2019-08-28 13:51:24 +03:00
yuri
4a09baef3a fix layout manager 2019-08-28 12:50:21 +03:00
yuri
5893243ae3 Merge branch 'hotfix/5.6.12' 2019-08-28 12:13:44 +03:00
yuri
4c598d19b5 link one empty filters 2019-08-28 12:13:27 +03:00
yuri
dbc5a47d79 link one empty filters 2019-08-28 12:13:10 +03:00
yuri
0fda920610 acl portal changes and tests 2019-08-28 11:57:12 +03:00
yuri
a6a6ce6722 fix layout 2019-08-28 10:37:23 +03:00
yuri
4db421a75f stream note changes 2019-08-27 17:09:32 +03:00
yuri
3f6cfe3749 stream notes created modified by 2019-08-27 17:00:09 +03:00
yuri
ec9653ff48 fix typo 2019-08-27 15:51:09 +03:00
yuri
24c19f12e5 convert currency changes 2019-08-27 15:45:06 +03:00
yuri
172bba9de5 record service setUser 2019-08-27 15:27:56 +03:00
yuri
7d4227c98d Merge branch 'hotfix/5.6.12' of ssh://172.20.0.1/var/git/espo/backend into hotfix/5.6.12 2019-08-27 15:19:15 +03:00
yuri
4e64ebb346 record service setAcl 2019-08-27 15:18:56 +03:00
Taras Machyshyn
1102e9f1e8 Added support PHPUnit 8 2019-08-27 14:57:31 +03:00
yuri
f5f16a7eb3 convert currency fixes 2019-08-27 12:28:51 +03:00
yuri
7901df4221 covnert currency all fields 2019-08-27 12:09:50 +03:00
yuri
41b114684e mass update currency stubs 2019-08-27 11:59:58 +03:00
yuri
03788be209 client field manager fix 2019-08-27 11:56:34 +03:00
yuri
685226c4d4 fix convert currency 2019-08-27 11:50:01 +03:00
yuri
f8d9548ed5 convert currency detail view action and fixes 2019-08-27 11:40:03 +03:00
yuri
49798c8f7f convert currency fix 2019-08-27 10:56:56 +03:00
yuri
ab4e85ea45 client field manager improvements 2019-08-27 10:56:44 +03:00
yuri
7d7d2d4276 convert currency fix 2019-08-27 10:28:34 +03:00
Taras Machyshyn
607ee9a080 Fix errors in a test 2019-08-26 17:13:33 +03:00
yuri
3f3b65ad90 revert 2019-08-23 16:42:22 +03:00
yuri
354866a809 fix convert currency 2019-08-23 16:41:14 +03:00
yuri
58cda4f31a convert currency mass action 2019-08-23 16:15:28 +03:00
yuri
454c388d10 grid layout highlight droppable 2019-08-23 14:53:10 +03:00
yuri
e0125fa8f9 layout manager css load 2019-08-23 14:44:21 +03:00
yuri
540c594b1c loader fix 2019-08-23 14:44:09 +03:00
yuri
025ac8fe34 update bull js 2019-08-23 14:43:47 +03:00
yuri
6d18cac9a9 contact side panel layout 2019-08-23 13:33:37 +03:00
yuri
f555ee9f9d side panel fields layout 2019-08-23 13:20:48 +03:00
yuri
5ac2e9b516 grid layout with 3 and 4 cells in row 2019-08-22 16:38:02 +03:00
yuri
2cc8c3710f not actual statuses 2019-08-22 13:09:17 +03:00
yuri
72d93cbae4 Merge branch 'hotfix/5.6.12' 2019-08-22 12:15:40 +03:00
yuri
e30838cf27 link fields empty name fix 2019-08-22 12:10:08 +03:00
yuri
790355fb63 lead converted at 2019-08-22 11:46:46 +03:00
yuri
371fbf9864 email skip index if filter 2019-08-21 16:35:45 +03:00
yuri
6e157db23d fix preferences cancel 2019-08-21 15:26:22 +03:00
yuri
85c3d6c4e5 assignment notifications in preferences 2019-08-21 13:53:50 +03:00
yuri
d947236bcc checklist field 2019-08-21 12:44:51 +03:00
yuri
98343cb099 Merge branch 'hotfix/5.6.12' 2019-08-21 12:44:27 +03:00
Taras Machyshyn
e3ac8c3f67 Bug fixes for url params util 2019-08-20 13:58:37 +03:00
Taras Machyshyn
2087894c3a Added 'binary' option for a field 2019-08-19 17:21:00 +03:00
yuri
5c00a7ad43 fix email fitler duplicate 2019-08-19 11:44:25 +03:00
yuri
fe0dcc5342 remove duplicate label 2019-08-19 11:24:34 +03:00
Taras Machyshyn
f05381cc43 Corrected file permissions 2019-08-15 17:18:08 +03:00
yuri
a9a30d7237 duplicate silent confict exception 2019-08-14 13:09:22 +03:00
yuri
5312c1d141 image original link 2019-08-14 12:07:51 +03:00
yuri
a97d516c4f restrict common entity type name 2019-08-13 17:03:28 +03:00
Taras Machyshyn
16c24abb55 Integration tests: create database if not exists 2019-08-13 16:09:02 +03:00
Taras Machyshyn
ed897e9b97 Util changes 2019-08-13 11:56:15 +03:00
Taras Machyshyn
b4b222c1d7 Unit tests for sanitizeHtml() 2019-08-12 15:23:29 +03:00
yuri
a68d711249 summernote fix fullscreen 2019-08-12 15:15:57 +03:00
Taras Machyshyn
d6834f7f97 Installer changes 2019-08-12 14:53:11 +03:00
Taras Machyshyn
20818659e8 Installer changes 2019-08-12 14:49:25 +03:00
yuri
1c668ce983 signature toolbar 2019-08-12 11:39:59 +03:00
yuri
a9dacd74c6 v 2019-08-12 10:56:29 +03:00
yuri
b7c9ddc4e6 auth token secret fixes 2019-08-12 10:56:11 +03:00
yuri
d5ee599f9f language fix 2019-08-12 10:25:12 +03:00
yuri
252d6bccd3 Merge branch 'stable' 2019-08-10 19:16:13 +03:00
yuri
742f4e21b5 comment out auth token secret 2019-08-10 19:11:03 +03:00
yuri
78fc80a619 v 2019-08-10 19:08:57 +03:00
yuri
5a30c6a229 Merge branch 'stable' 2019-08-09 15:26:37 +03:00
yuri
e74fdce568 notifications lower case first 2019-08-09 15:17:16 +03:00
yuri
20139a88af email reply fix 2019-08-09 12:55:54 +03:00
yuri
3d1f632a73 fix lead capture 2019-08-09 12:29:00 +03:00
yuri
9e459e1287 escape error message 2019-08-09 12:22:10 +03:00
yuri
7b9cf6c039 wysiwyg fixes 2019-08-09 12:00:04 +03:00
yuri
1cebef107e dompurify target blank 2019-08-09 11:59:19 +03:00
yuri
47fe232c78 summernote css fixes 2019-08-09 11:31:32 +03:00
yuri
2c458a69a1 skipReRender and summernote fixes 2019-08-09 10:47:09 +03:00
yuri
54a290121e summernote fixes 2019-08-08 19:06:53 +03:00
yuri
11420dc0af summernote updates 2019-08-08 18:51:52 +03:00
yuri
957680a3d0 wysiwyg custom dialogs 2019-08-08 18:18:09 +03:00
yuri
3c6e19f4c0 wysiwyg codeviewFilter 2019-08-08 15:04:33 +03:00
yuri
4253915eed update summernote 2019-08-08 14:56:12 +03:00
yuri
da34789020 remove not needed escaping 2019-08-08 13:10:53 +03:00
yuri
cc057af59a filename escaping 2019-08-08 12:46:31 +03:00
yuri
ebaa3ed958 Merge branch 'hotfix/5.6.10' of ssh://172.20.0.1/var/git/espo/backend into hotfix/5.6.10 2019-08-08 11:49:05 +03:00
yuri
307c045c0e css fixes 2019-08-08 11:44:24 +03:00
Taras Machyshyn
8e09b81cf0 Fix instalation warnings 2019-08-08 10:16:08 +03:00
yuri
f40aeb0830 keep admin view on return 2019-08-07 14:31:42 +03:00
yuri
135b56001c admin icons 2019-08-07 12:38:54 +03:00
yuri
cc97454c58 Merge branch 'hotfix/5.6.10' 2019-08-07 12:00:19 +03:00
yuri
9d3e3e282f more admin icons 2019-08-07 11:56:53 +03:00
yuri
1bcd54dfe1 wysiwyg dom purify for edit except pdf templates 2019-08-07 11:19:41 +03:00
yuri
727f3a4707 attachment entry point allow only image types 2019-08-07 10:49:28 +03:00
yuri
d5473f9985 css fix 2019-08-06 17:54:39 +03:00
yuri
85c06f7ca3 admin icons 2019-08-06 17:42:41 +03:00
yuri
1d4d9882b6 portal users default order by date 2019-08-06 16:00:54 +03:00
yuri
e633984f7e fix tests 2019-08-06 15:15:09 +03:00
yuri
2dabecbae3 acl strict mode by default 2019-08-06 14:59:55 +03:00
yuri
1a4e40d0cd login 2nd step send header 2019-08-06 13:56:19 +03:00
yuri
6ea5ed4f55 merge manual 2019-08-06 13:55:59 +03:00
yuri
c0800a4d16 auth token secret 2019-08-06 13:37:34 +03:00
yuri
85c62c0789 dashlets wo scroll on small screen 2019-08-06 12:48:50 +03:00
yuri
551e82ad8b css fixes 2019-08-06 11:11:30 +03:00
yuri
7f4328499b task priority on activities dashlet 2019-08-06 11:05:29 +03:00
yuri
de4d794d72 mention de_DE template 2019-08-06 10:31:28 +03:00
yuri
e2e374301a escape string 2019-08-05 16:58:22 +03:00
yuri
7a919dedfd lead capture improvements 2019-08-05 16:47:12 +03:00
yuri
06c8cbac52 mail sender fix 2019-08-05 16:29:52 +03:00
yuri
f54ad3ab0d lead capture dont log twice 2019-08-05 15:43:42 +03:00
yuri
197fb26beb campaign log filter 2019-08-05 15:30:32 +03:00
yuri
9e4582af17 langauge sanitize 2019-08-05 15:25:52 +03:00
yuri
b399c4444d global restriction fix 2019-08-05 14:05:04 +03:00
yuri
b7e9e69f35 confirm leave out backdrop 2019-08-05 10:27:49 +03:00
yuri
105b6444ed fix popovers 2019-08-02 17:16:16 +03:00
yuri
3559ff9f4e de lang fix 2019-08-02 16:54:04 +03:00
yuri
4be2962567 remove html from language 2019-08-02 16:46:48 +03:00
yuri
1cce748af5 fix test 2019-08-02 15:22:12 +03:00
yuri
64d3e3b5dd acl globalrestriction test 2019-08-02 15:18:47 +03:00
yuri
2e0233a239 task priority label 2019-08-02 15:07:26 +03:00
yuri
5b4bd88907 case priority label 2019-08-02 15:05:40 +03:00
yuri
6176ead935 GlobalRestricton cache fix 2019-08-02 14:12:07 +03:00
yuri
46ddf3b127 language fixes 2019-08-02 13:58:25 +03:00
yuri
2944e64de5 css fix 2019-08-02 12:23:44 +03:00
yuri
372cf20145 css fixes 2019-08-01 18:38:57 +03:00
yuri
de68227d49 Merge branch 'hotfix/5.6.10' 2019-08-01 17:14:26 +03:00
yuri
633cc12650 css fixes 2019-08-01 16:51:39 +03:00
yuri
202d799436 header changes 2019-08-01 16:44:59 +03:00
yuri
f14d12853b header grid auto fit 2019-08-01 16:13:49 +03:00
yuri
a98f7f5068 lead capture optInDateTime placeholder 2019-08-01 13:55:47 +03:00
yuri
ebe249bd6b mobile ui fixes 2019-08-01 12:31:04 +03:00
yuri
7957296479 fix 2019-07-31 16:48:08 +03:00
yuri
b7eac5ba42 flexible titles 2019-07-31 16:43:54 +03:00
yuri
14cab0dbde dashboard changes 2019-07-31 15:26:41 +03:00
yuri
5db39d14e7 Merge branch 'hotfix/5.6.10' of github.com:espocrm/espocrm into hotfix/5.6.10 2019-07-31 13:06:49 +03:00
yuri
cf473d6f16 ui improvements 2019-07-31 13:06:40 +03:00
Karthik Bhat K
a082ea6acc added use Forbidden and removed unused class (#1372) 2019-07-31 09:06:47 +03:00
yuri
f770074be2 v 2019-07-30 18:53:33 +03:00
yuri
106e7726ba xs view navbar improvements 2019-07-30 18:50:50 +03:00
yuri
ed0ca19ed5 Merge branch 'hotfix/5.6.10' 2019-07-30 15:50:36 +03:00
yuri
e680be54ad fix mapper 2019-07-30 14:58:56 +03:00
yuri
3224795368 sth collection fix 2019-07-30 13:41:09 +03:00
yuri
ec5bd78a33 access modal backdrop 2019-07-30 12:43:36 +03:00
yuri
d0c5d2aace lead capture hooks 2019-07-30 11:26:16 +03:00
yuri
f8d0688f2f fix invalid json 2019-07-30 11:07:31 +03:00
yuri
2b2b2b9faa Merge branch 'hotfix/5.6.9' 2019-07-30 11:07:02 +03:00
yuri
ed4ce1a36e user disable mass update emailAddress and unset password 2019-07-30 11:06:42 +03:00
yuri
a6d7f91a58 disable inline edit for user type 2019-07-30 11:03:06 +03:00
yuri
f6f6c2b2ac email signature fit height 2019-07-30 11:01:51 +03:00
yuri
8c628df639 fix typo 2019-07-30 10:59:06 +03:00
yuri
ffd3f762ce xss fixes 2019-07-30 10:57:44 +03:00
yuri
24628a8487 returnSthCollection param 2019-07-29 17:56:15 +03:00
yuri
573d147dad v 2019-07-29 13:13:45 +03:00
yuri
4ab767e95b hook service factrory 2019-07-29 12:50:04 +03:00
yuri
18b64238ee fix list expanded overflow 2019-07-29 12:48:34 +03:00
yuri
65ded811b4 calendar height fix 2019-07-26 16:50:39 +03:00
yuri
57f454693a lead capture addition 2019-07-26 10:59:07 +03:00
yuri
b6409b5cba panel list border top 2019-07-26 10:42:47 +03:00
yuri
e6a83f7d19 reset button text 2019-07-26 10:35:16 +03:00
yuri
c39e1d140f css flip class 2019-07-26 10:35:10 +03:00
yuri
1c69f1ca95 categories fix 2019-07-25 17:50:30 +03:00
yuri
a21c071349 categories panel style change 2019-07-25 17:46:12 +03:00
yuri
d8d8e68914 Merge branch 'stable' 2019-07-25 17:35:47 +03:00
yuri
741a6d5dab wysiwyg fixes 2019-07-25 16:25:18 +03:00
yuri
0c0a602330 list w categoties expand when text search 2019-07-25 13:06:30 +03:00
yuri
7d13018eba fix category expanding storing 2019-07-25 12:38:20 +03:00
yuri
44c65c0117 kb min body height in portal 2019-07-25 11:59:00 +03:00
yuri
e9e758c4b3 v 2019-07-25 11:26:02 +03:00
yuri
7e7acb8d28 fix template comments stripped 2019-07-25 11:25:48 +03:00
yuri
4b28687c37 gMerge branch 'stable' 2019-07-24 16:27:31 +03:00
yuri
1ab897db28 fix email address field 2019-07-24 16:17:22 +03:00
yuri
1a990850ca add MMK currency 2019-07-24 16:05:37 +03:00
yuri
36e360e167 v 2019-07-24 15:49:55 +03:00
yuri
9ffdb1a1f0 title for some fields in list mode 2019-07-24 13:00:08 +03:00
yuri
64b15f9282 stream dont show create post for portal 2019-07-24 12:54:37 +03:00
yuri
e8ebe51f1c note create acl 2019-07-24 12:53:03 +03:00
yuri
ec2a7d2f48 fix no join name null 2019-07-24 12:25:24 +03:00
yuri
6782e7c15c dashboard fixes 2019-07-24 12:20:02 +03:00
yuri
3c73e3e8cf more string escaping 2019-07-24 12:04:24 +03:00
yuri
321306c42d Merge branch 'stable' 2019-07-23 18:22:53 +03:00
yuri
4ab7d19776 xss fixes 2019-07-23 17:50:02 +03:00
yuri
92864d9133 fix typo 2019-07-23 14:21:39 +03:00
yuri
34e33bd13a searchPanelInPortalDisabled 2019-07-23 13:29:01 +03:00
yuri
49fa22fa3d v 2019-07-23 11:37:07 +03:00
yuri
10fcd79155 portal home tab 2019-07-23 11:36:39 +03:00
yuri
00598170af fix user dashboard template 2019-07-22 18:33:44 +03:00
yuri
ac5b2f38d4 portal user dashboard template 2019-07-22 18:29:21 +03:00
yuri
82d486a2b4 Merge branch 'hotfix/5.6.6' 2019-07-22 18:27:25 +03:00
yuri
6cdc8f2823 mass update for portal users 2019-07-22 15:07:40 +03:00
yuri
d611ebfc86 cleanup try catch 2019-07-22 14:04:21 +03:00
yuri
599a7c6080 cleanup record service method 2019-07-22 13:53:02 +03:00
yuri
4c21f1192d email send: dont fail if attachment deleted 2019-07-22 13:00:25 +03:00
yuri
63e78baf21 fix orm join conditions 2019-07-22 12:46:14 +03:00
yuri
fa2c689a34 email skip index when search by link 2019-07-19 17:37:05 +03:00
yuri
a53b440b8b mass update hide not accessible fields 2019-07-19 17:13:30 +03:00
yuri
8189832af2 style option color 2019-07-19 17:07:58 +03:00
yuri
135f869e1a dynamic logix support currency 2019-07-19 13:12:18 +03:00
yuri
2d56525a25 fix autocomplete empty name 2019-07-19 12:57:48 +03:00
yuri
9e78276f3d Merge branch 'hotfix/5.6.5' 2019-07-18 17:23:53 +03:00
yuri
03773dd929 fix xss document file 2019-07-18 17:10:20 +03:00
yuri
5b8dba68f3 fix orm getAllAttributesFromComplexExpression 2019-07-18 16:55:55 +03:00
yuri
f63c75e18d v 2019-07-18 16:37:09 +03:00
yuri
6dd0bd8b90 sanitize wysiwyg 2019-07-18 16:36:00 +03:00
yuri
94e86f875a lead capture changes 2019-07-18 13:43:35 +03:00
yuri
b582b20003 array field improvement 2019-07-17 13:02:24 +03:00
yuri
e58e82eea1 entry point dont log stop error 2019-07-17 12:14:11 +03:00
yuri
dddc4feda8 image silent error not found 2019-07-17 12:13:52 +03:00
yuri
a65421a268 pt br lang 2019-07-17 12:01:45 +03:00
yuri
b6696dcc26 ru lang 2019-07-17 11:59:35 +03:00
yuri
4e3d8fb98f pl lang 2019-07-17 11:58:53 +03:00
yuri
e0aaff932e nl lang 2019-07-17 11:58:08 +03:00
yuri
bd61c12ea2 Merge branch 'stable' 2019-07-17 11:26:23 +03:00
yuri
010f757452 totp fix input max length 2019-07-10 13:26:03 +03:00
yuri
4230f768e5 login form fix 2019-07-10 13:22:36 +03:00
yuri
4197f30ad5 frontendHiddenPathList in metadata 2019-07-10 12:27:13 +03:00
yuri
b4eecbd0af fix 2fa 2019-07-10 12:14:24 +03:00
yuri
6560c0e0bd 2fa totp 2019-07-10 12:04:18 +03:00
yuri
a9f2fe8590 Merge branch 'hotfix/5.6.4' 2019-07-05 11:31:42 +03:00
yuri
0d4b548160 auth prepare for 2 factor 2019-07-04 16:44:41 +03:00
yuri
2240819930 Merge branch 'hotfix/5.6.4' 2019-07-04 14:39:09 +03:00
yuri
5d857f6a86 install css font weight fix 2019-06-27 12:21:52 +03:00
yuri
44947f8844 Merge branch 'hotfix/5.6.4' 2019-06-27 12:18:50 +03:00
yuri
172af61b6b Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2019-06-26 15:23:10 +03:00
yuri
e6bdaa1c86 Merge branch 'stable' 2019-06-26 15:22:52 +03:00
yuri
77a884c951 add field in modal 2019-06-10 15:54:28 +03:00
yuri
6a2974845a dashboard template append 2019-06-10 14:51:08 +03:00
yuri
0095cfd68c dashboard tab id 2019-06-10 13:36:25 +03:00
yuri
22f0e5b399 dashboard layout fix 2019-06-10 12:58:14 +03:00
yuri
1abc853bc5 dashboard templates 2019-06-10 12:37:35 +03:00
yuri
6f9dc66104 entity manager fetchEntity function 2019-06-10 12:37:23 +03:00
yuri
d9094238c1 edit for modal 2019-06-10 12:14:23 +03:00
yuri
25ea320042 Merge branch 'hotfix/5.6.3' 2019-06-10 10:41:07 +03:00
yuri
0c143eb8a1 Merge branch 'hotfix/5.6.3' 2019-06-06 11:45:40 +03:00
Taras Machyshyn
16bad37dc5 Installer config improvements 2019-05-16 12:41:17 +03:00
Taras Machyshyn
76b8009323 Gruntfile: ignore installation config 2019-05-16 12:31:59 +03:00
yuri
d67f806ec8 remove tabs 2019-05-16 12:21:38 +03:00
yuri
72bed367e4 webhooks 2019-05-16 12:19:42 +03:00
yuri
fe2a4f91ee Merge branch 'hotfix/5.6.3' 2019-05-16 12:19:18 +03:00
Taras Machyshyn
471dd1ab49 Added config file for installation 2019-05-16 11:56:43 +03:00
Taras Machyshyn
8efc395ca1 FileManager fix 2019-05-15 15:54:01 +03:00
yuri
07fa53d0c2 Merge branch 'hotfix/5.6.2' 2019-05-10 15:04:36 +03:00
yuri
698f70a358 Merge branch 'hotfix/5.6.2' 2019-05-03 11:23:12 +03:00
yuri
3170571cb9 Merge branch 'hotfix/5.6.2' 2019-05-01 12:40:28 +03:00
yuri
e48c067b05 Merge branch 'hotfix/5.6.2' 2019-04-24 11:58:12 +03:00
Pomazan Bogdan
492670eb7d Правка перевода, логически не подходит (#1298) 2019-04-23 12:44:23 +03:00
2994 changed files with 44018 additions and 14045 deletions

3
.gitignore vendored
View File

@@ -15,4 +15,5 @@ npm-debug.log
/tests/integration/config.php
composer.phar
vendor/
/custom/Espo/Custom/*
/custom/Espo/Custom/*
/install/config.php

View File

@@ -9,13 +9,9 @@ DirectoryIndex index.php index.html
# PROTECTED DIRECTORIES
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^/?(data|api|client)/ - [F]
RewriteRule ^/?(api|client)/ - [F]
RewriteRule ^/?data/config\.php$ - [F]
RewriteRule ^/?data/logs/ - [F]
RewriteRule ^/?data/cache/ - [F]
RewriteRule ^/?data/upload/ - [F]
RewriteRule ^/?data/\.backup/ - [F]
RewriteRule ^/?data/ - [F]
RewriteRule ^/?application/ - [F]
RewriteRule ^/?custom/ - [F]
RewriteRule ^/?vendor/ - [F]

View File

@@ -2,7 +2,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -18,6 +18,15 @@
* You should have received a copy of the GNU General Public License
* along with EspoCRM. If not, see http://www.gnu.org/licenses/.
************************************************************************/
/**
* * `grunt` - full build
* * `grunt dev` - build only items needed for development
* * `grunt offline` - skips *composer install*
* * `grant release` - full build plus upgrade packages`
* * `grant tests` - build and run tests
*/
module.exports = function (grunt) {
var jsFilesToMinify = [
@@ -71,6 +80,7 @@ module.exports = function (grunt) {
'client/src/theme-manager.js',
'client/src/session-storage.js',
'client/src/view-helper.js',
'client/src/page-title.js',
'client/src/app.js'
];
@@ -83,6 +93,10 @@ module.exports = function (grunt) {
}
var fs = require('fs');
var cp = require('child_process');
var path = require('path');
var currentPath = path.dirname(fs.realpathSync(__filename));
var themeList = [];
fs.readdirSync('application/Espo/Resources/metadata/themes').forEach(function (file) {
@@ -108,8 +122,10 @@ module.exports = function (grunt) {
lessData[theme] = o;
});
var pkg = grunt.file.readJSON('package.json');
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
pkg: pkg,
mkdir: {
tmp: {
@@ -125,8 +141,13 @@ module.exports = function (grunt) {
clean: {
start: ['build/EspoCRM-*'],
final: ['build/tmp'],
release: ['build/EspoCRM-' + pkg.version],
beforeFinal: {
src: ['build/tmp/custom/Espo/Custom/*', '!build/tmp/custom/Espo/Custom/.htaccess']
src: [
'build/tmp/custom/Espo/Custom/*',
'!build/tmp/custom/Espo/Custom/.htaccess',
'build/tmp/install/config.php',
]
}
},
less: lessData,
@@ -146,6 +167,9 @@ module.exports = function (grunt) {
})
},
copy: {
options: {
mode: true,
},
frontendFolders: {
expand: true,
cwd: 'client',
@@ -190,6 +214,7 @@ module.exports = function (grunt) {
'extension.php',
'websocket.php',
'command.php',
'oauth-callback.php',
'index.php',
'LICENSE.txt',
'.htaccess',
@@ -206,9 +231,6 @@ module.exports = function (grunt) {
},
},
chmod: {
options: {
mode: '755'
},
php: {
options: {
mode: '644'
@@ -237,7 +259,21 @@ module.exports = function (grunt) {
'build/EspoCRM-<%= pkg.version %>/api/v1/portal-access',
'build/EspoCRM-<%= pkg.version %>',
]
}
},
foldersWritable: {
options: {
mode: '775'
},
src: [
'build/EspoCRM-<%= pkg.version %>/data',
'build/EspoCRM-<%= pkg.version %>/custom',
'build/EspoCRM-<%= pkg.version %>/custom/Espo',
'build/EspoCRM-<%= pkg.version %>/custom/Espo/Custom',
'build/EspoCRM-<%= pkg.version %>/client/custom',
'build/EspoCRM-<%= pkg.version %>/client/modules',
'build/EspoCRM-<%= pkg.version %>/application/Espo/Modules',
]
},
},
replace: {
version: {
@@ -257,17 +293,53 @@ module.exports = function (grunt) {
]
}
},
compress: {
final: {
options: {
archive: 'build/EspoCRM-<%= pkg.version %>.zip',
mode: 'zip'
},
src: ['**'],
cwd: 'build/EspoCRM-<%= pkg.version %>',
dest: 'EspoCRM-<%= pkg.version %>'
}
}
});
grunt.registerTask("chmod-folders", function() {
cp.execSync("find . -type d -exec chmod 755 {} + ", {stdio: 'ignore', cwd: 'build/EspoCRM-' + pkg.version});
});
grunt.registerTask("composer", function() {
cp.execSync("composer install", {stdio: 'ignore'});
});
grunt.registerTask("upgrade", function() {
cp.execSync("node diff --all --vendor", {stdio: 'inherit'});
});
grunt.registerTask("unit-tests", function() {
cp.execSync("phpunit --bootstrap=vendor/autoload.php tests/unit", {stdio: 'inherit'});
});
grunt.registerTask("integration-tests", function() {
cp.execSync("phpunit --bootstrap=vendor/autoload.php tests/integration", {stdio: 'inherit'});
});
grunt.registerTask("zip", function() {
var fs = require('fs');
var resolve = this.async();
var folder = 'EspoCRM-' + pkg.version;
var zipPath = 'build/' + folder +'.zip';
if (fs.existsSync(zipPath)) fs.unlinkSync(zipPath);
var archiver = require('archiver');
var archive = archiver('zip');
archive.on('error', function (err) {
grunt.fail.warn(err);
});
var zipOutput = fs.createWriteStream(zipPath);
zipOutput.on('close', function () {
console.log("EspoCRM package has been built.");
resolve();
});
archive.directory(currentPath + '/build/' + folder, folder).pipe(zipOutput);
archive.finalize();
});
grunt.loadNpmTasks('grunt-contrib-clean');
@@ -277,10 +349,9 @@ module.exports = function (grunt) {
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-copy');
grunt.loadNpmTasks('grunt-replace');
grunt.loadNpmTasks('grunt-contrib-compress');
grunt.loadNpmTasks('grunt-chmod');
grunt.registerTask('default', [
grunt.registerTask('offline', [
'clean:start',
'mkdir:tmp',
'less',
@@ -292,7 +363,33 @@ module.exports = function (grunt) {
'replace',
'clean:beforeFinal',
'copy:final',
'chmod',
'clean:final'
'chmod-folders',
'chmod:php',
'chmod:folders',
'chmod:foldersWritable',
'clean:final',
]);
grunt.registerTask('default', [
'composer',
'offline',
]);
grunt.registerTask('release', [
'default',
'upgrade',
'zip',
'clean:release',
]);
grunt.registerTask('tests', [
'default',
'unit-tests',
'integration-tests',
]);
grunt.registerTask('dev', [
'composer',
'less',
]);
};

View File

@@ -1,15 +1,15 @@
## EspoCRM
<a href='http://www.espocrm.com'>EspoCRM is an Open Source CRM</a> (Customer Relationship Management) software that allows you to see, enter and evaluate all your company relationships regardless of the type. People, companies or opportunities - all in an easy and intuitive interface.
<a href='https://www.espocrm.com'>EspoCRM is an Open Source CRM</a> (Customer Relationship Management) software that allows you to see, enter and evaluate all your company relationships regardless of the type. People, companies or opportunities - all in an easy and intuitive interface.
It's a web application with a frontend designed as a single page application based on backbone.js and a REST API backend written in PHP.
Download the latest release from our [website](http://www.espocrm.com).
Download the latest release from our [website](https://www.espocrm.com).
### Requirements
* PHP 7.1 or above (with pdo, json, gd, openssl, zip, imap, mbstring, curl extensions);
* MySQL 5.5.3 or above, or MariaDB.
* PHP 7.2 and later (with pdo, json, gd, openssl, zip, imap, mbstring, curl extensions);
* MySQL 5.7 (and later), or MariaDB 10.1 (and later).
For more information about server configuration see [this article](https://www.espocrm.com/documentation/administration/server-configuration/).
@@ -25,7 +25,7 @@ Create an issue [here](https://github.com/espocrm/espocrm/issues) or post on our
[Download](https://www.espocrm.com/download/) the latest version. See the [instructions](https://www.espocrm.com/documentation/administration/installation/) about installation.
### How to get started (for developers)
### Getting started (for developers)
1. Clone repository to your local computer.
2. Change to the project's root directory.
@@ -48,15 +48,33 @@ You need to have nodejs and Grunt CLI installed.
The build will be created in the `build` directory.
### How to contribute
Upgrade packages can be built with `grunt upgrade`.
### How to contribute (for developers)
Before we can merge your pull request you need to accept our CLA [here](https://github.com/espocrm/cla). It's very simple to do.
Branches:
* hotfix/* upcoming maintenance release; fixes should be pushed to this branch;
* master develop branch; new features should be pushed to this branch;
* stable last stable release.
* *hotfix/** upcoming maintenance release; fixes should be pushed to this branch;
* *master* develop branch; new features should be pushed to this branch;
* *stable* last stable release.
### Running tests (for developers)
You need to have *phpunit* installed.
Unit tests:
```
phpunit --bootstrap=vendor/autoload.php tests/unit
```
Integration tests:
```
phpunit --bootstrap=vendor/autoload.php tests/integration
```
### How to make a translation

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -46,6 +46,21 @@ class Note extends \Espo\Core\Acl\Base
return false;
}
public function checkEntityCreate(EntityUser $user, Entity $entity, $data)
{
if ($entity->get('parentId') && $entity->get('parentType')) {
$parent = $this->getEntityManager()->getEntity($entity->get('parentType'), $entity->get('parentId'));
if ($parent) {
if ($this->getAclManager()->checkEntity($user, $parent, 'stream')) {
return true;
}
}
return false;
}
return true;
}
public function checkEntityEdit(EntityUser $user, Entity $entity, $data)
{
if ($user->isAdmin()) {

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -39,6 +39,16 @@ class User extends \Espo\Core\Acl\Base
return $user->id === $entity->id;
}
public function checkEntityRead(EntityUser $user, Entity $entity, $data)
{
if (!$user->isAdmin() && $entity->isPortal()) {
if ($this->getAclManager()->get($user, 'portalPermission') === 'yes') {
return true;
}
}
return $this->checkEntity($user, $entity, $data, 'read');
}
public function checkEntityCreate(EntityUser $user, Entity $entity, $data)
{
if (!$user->isAdmin()) {

View File

@@ -0,0 +1,73 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM 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.
*
* EspoCRM 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 EspoCRM. If not, see http://www.gnu.org/licenses/.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU General Public License version 3.
*
* In accordance with Section 7(b) of the GNU General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
namespace Espo\Acl;
use \Espo\Entities\User as EntityUser;
use \Espo\ORM\Entity;
class Webhook extends \Espo\Core\Acl\Base
{
public function checkIsOwner(EntityUser $user, Entity $entity)
{
return $user->id === $entity->get('userId') && $user->isApi();
}
public function checkEntityCreate(EntityUser $user, Entity $entity, $data)
{
if ($user->isAdmin()) return true;
if (!$data) return false;
if ($user->isApi() && $user->id === $entity->get('userId')) return true;
return false;
}
public function checkEntityRead(EntityUser $user, Entity $entity, $data)
{
if ($user->isAdmin()) return true;
if (!$data) return false;
if ($user->isApi() && $user->id === $entity->get('userId')) return true;
return false;
}
public function checkEntityDelete(EntityUser $user, Entity $entity, $data)
{
if ($user->isAdmin()) return true;
if (!$data) return false;
if ($user->isApi() && $user->id === $entity->get('userId')) return true;
return false;
}
public function checkEntityEdit(EntityUser $user, Entity $entity, $data)
{
if ($user->isAdmin()) return true;
if (!$data) return false;
if ($user->isApi() && $user->id === $entity->get('userId')) return true;
return false;
}
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -41,5 +41,26 @@ class Note extends \Espo\Core\AclPortal\Base
}
return false;
}
}
public function checkEntityCreate(EntityUser $user, Entity $entity, $data)
{
if ($entity->get('type') !== 'Post') return false;
if ($entity->get('type') === 'Post' && $entity->get('targetType')) {
return false;
}
if (!$entity->get('parentId') || !$entity->get('parentType')) {
return false;
}
$parent = $this->getEntityManager()->getEntity($entity->get('parentType'), $entity->get('parentId'));
if ($parent) {
if ($this->getAclManager()->checkEntity($user, $parent, 'stream')) {
return true;
}
}
return false;
}
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -67,4 +67,9 @@ class ActionHistoryRecord extends \Espo\Core\Controllers\Record
{
throw new Forbidden();
}
public function beforeMassConvertCurrency()
{
throw new Forbidden();
}
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -64,4 +64,9 @@ class AuthLogRecord extends \Espo\Core\Controllers\Record
{
throw new Forbidden();
}
public function beforeMassConvertCurrency()
{
throw new Forbidden();
}
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -94,4 +94,9 @@ class AuthToken extends \Espo\Core\Controllers\Record
{
throw new Forbidden();
}
public function beforeMassConvertCurrency()
{
throw new Forbidden();
}
}

View File

@@ -0,0 +1,59 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM 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.
*
* EspoCRM 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 EspoCRM. If not, see http://www.gnu.org/licenses/.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU General Public License version 3.
*
* In accordance with Section 7(b) of the GNU General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
namespace Espo\Controllers;
use Espo\Core\Exceptions\Forbidden;
use Espo\Core\Exceptions\BadRequest;
class CurrencyRate extends \Espo\Core\Controllers\Base
{
protected function checkControllerAccess()
{
if (!$this->getAcl()->check('Currency')) {
throw new Forbidden();
}
}
public function getActionIndex()
{
if ($this->getAcl()->getLevel('Currency', 'read') !== 'yes') throw new Forbidden();
return $this->getService('CurrencyRate')->get();
}
public function putActionUpdate($params, $data)
{
if ($this->getAcl()->getLevel('Currency', 'edit') !== 'yes') throw new Forbidden();
if (empty($data) || !is_object($data)) throw new BadRequest();
return $this->getService('CurrencyRate')->set($data);
}
}

View File

@@ -0,0 +1,67 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM 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.
*
* EspoCRM 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 EspoCRM. If not, see http://www.gnu.org/licenses/.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU General Public License version 3.
*
* In accordance with Section 7(b) of the GNU General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
namespace Espo\Controllers;
use \Espo\Core\Exceptions\Forbidden;
use \Espo\Core\Exceptions\BadRequest;
class DashboardTemplate extends \Espo\Core\Controllers\Record
{
protected function checkControllerAccess()
{
if (!$this->getUser()->isAdmin()) {
throw new Forbidden();
}
}
public function postActionDeployToUsers($params, $data)
{
if (empty($data->id)) throw new BadRequest();
if (empty($data->userIdList)) throw new BadRequest();
return $this->getServiceFactory()->create('DashboardTemplate')->deployToUsers(
$data->id,
$data->userIdList,
!empty($data->append)
);
}
public function postActionDeployToTeam($params, $data)
{
if (empty($data->id)) throw new BadRequest();
if (empty($data->teamId)) throw new BadRequest();
return $this->getServiceFactory()->create('DashboardTemplate')->deployToTeam(
$data->id,
$data->teamId,
!empty($data->append)
);
}
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -75,7 +75,7 @@ class Email extends \Espo\Core\Controllers\Record
throw new NotFound();
}
if (!$this->getUser()->isAdmin()) {
if ($emailAccount->get('assigniedUserId') !== $this->getUser()->id) {
if ($emailAccount->get('assignedUserId') !== $this->getUser()->id) {
throw new Forbidden();
}
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -60,7 +60,7 @@ class EntityManager extends \Espo\Core\Controllers\Base
$name = filter_var($name, \FILTER_SANITIZE_STRING);
$type = filter_var($type, \FILTER_SANITIZE_STRING);
$params = array();
$params = [];
if (!empty($data['labelSingular'])) {
$params['labelSingular'] = $data['labelSingular'];
@@ -92,6 +92,9 @@ class EntityManager extends \Espo\Core\Controllers\Base
if (isset($data['fullTextSearch'])) {
$params['fullTextSearch'] = $data['fullTextSearch'];
}
if (isset($data['countDisabled'])) {
$params['countDisabled'] = $data['countDisabled'];
}
$params['kanbanViewMode'] = !empty($data['kanbanViewMode']);
if (!empty($data['kanbanStatusIgnoreList'])) {
@@ -184,19 +187,19 @@ class EntityManager extends \Espo\Core\Controllers\Base
$paramList = [
'entity',
'entityForeign',
'link',
'linkForeign',
'label',
'labelForeign',
'linkType'
'linkType',
];
$additionalParamList = [
'entityForeign',
'relationName',
'labelForeign',
];
$params = array();
$params = [];
foreach ($paramList as $item) {
if (empty($data[$item])) {
@@ -206,9 +209,11 @@ class EntityManager extends \Espo\Core\Controllers\Base
}
foreach ($additionalParamList as $item) {
$params[$item] = filter_var($data[$item], \FILTER_SANITIZE_STRING);
$params[$item] = filter_var($data[$item] ?? null, \FILTER_SANITIZE_STRING);
}
$params['labelForeign'] = $params['labelForeign'] ?? $params['linkForeign'];
if (array_key_exists('linkMultipleField', $data)) {
$params['linkMultipleField'] = $data['linkMultipleField'];
}
@@ -222,6 +227,12 @@ class EntityManager extends \Espo\Core\Controllers\Base
if (array_key_exists('auditedForeign', $data)) {
$params['auditedForeign'] = $data['auditedForeign'];
}
if (array_key_exists('parentEntityTypeList', $data)) {
$params['parentEntityTypeList'] = $data['parentEntityTypeList'];
}
if (array_key_exists('foreignLinkEntityTypeList', $data)) {
$params['foreignLinkEntityTypeList'] = $data['foreignLinkEntityTypeList'];
}
$result = $this->getContainer()->get('entityManagerUtil')->createLink($params);
@@ -248,12 +259,12 @@ class EntityManager extends \Espo\Core\Controllers\Base
'link',
'linkForeign',
'label',
'labelForeign'
'labelForeign',
];
$additionalParamList = [];
$params = array();
$params = [];
foreach ($paramList as $item) {
if (array_key_exists($item, $data)) {
$params[$item] = filter_var($data[$item], \FILTER_SANITIZE_STRING);
@@ -277,6 +288,12 @@ class EntityManager extends \Espo\Core\Controllers\Base
if (array_key_exists('auditedForeign', $data)) {
$params['auditedForeign'] = $data['auditedForeign'];
}
if (array_key_exists('parentEntityTypeList', $data)) {
$params['parentEntityTypeList'] = $data['parentEntityTypeList'];
}
if (array_key_exists('foreignLinkEntityTypeList', $data)) {
$params['foreignLinkEntityTypeList'] = $data['foreignLinkEntityTypeList'];
}
$result = $this->getContainer()->get('entityManagerUtil')->updateLink($params);

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -75,7 +75,7 @@ class ExternalAccount extends \Espo\Core\Controllers\Record
$id = $request->get('id');
list($integration, $userId) = explode('__', $id);
if ($this->getUser()->id != $userId) {
if ($this->getUser()->id != $userId && !$this->getUser()->isAdmin()) {
throw new Forbidden();
}
@@ -93,7 +93,7 @@ class ExternalAccount extends \Espo\Core\Controllers\Record
{
list($integration, $userId) = explode('__', $params['id']);
if ($this->getUser()->id != $userId) {
if ($this->getUser()->id != $userId && !$this->getUser()->isAdmin()) {
throw new Forbidden();
}
@@ -114,7 +114,7 @@ class ExternalAccount extends \Espo\Core\Controllers\Record
list($integration, $userId) = explode('__', $params['id']);
if ($this->getUser()->id != $userId) {
if ($this->getUser()->id != $userId && !$this->getUser()->isAdmin()) {
throw new Forbidden();
}
@@ -140,7 +140,7 @@ class ExternalAccount extends \Espo\Core\Controllers\Record
list($integration, $userId) = explode('__', $id);
if ($this->getUser()->id != $userId) {
if ($this->getUser()->id != $userId && !$this->getUser()->isAdmin()) {
throw new Forbidden();
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -121,6 +121,8 @@ class FieldManager extends \Espo\Core\Controllers\Base
$this->getContainer()->get('fieldManager')->resetToDefault($data->scope, $data->name);
$this->getContainer()->get('dataManager')->clearCache();
$this->getContainer()->get('dataManager')->rebuildMetadata();
return true;

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -33,9 +33,13 @@ class I18n extends \Espo\Core\Controllers\Base
{
public function actionRead($params, $data, $request)
{
if ($request->get('default')) {
$default = $request->get('default') === 'true';
return $this->getServiceFactory()->create('Language')->getDataForFrontend($default);
/*if ($request->get('default')) {
return $this->getContainer()->get('defaultLanguage')->getAll();
}
return $this->getContainer()->get('language')->getAll();
return $this->getContainer()->get('language')->getAll();*/
}
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -39,11 +39,7 @@ class Layout extends \Espo\Core\Controllers\Base
{
public function actionRead($params, $data)
{
$data = $this->getContainer()->get('layout')->get($params['scope'], $params['name']);
if (empty($data)) {
throw new NotFound("Layout " . $params['scope'] . ":" . $params['name'] . ' is not found.');
}
return $data;
return $this->getServiceFactory()->create('Layout')->getForFrontend($params['scope'], $params['name']);
}
public function actionUpdate($params, $data, $request)

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -69,4 +69,11 @@ class LeadCapture extends \Espo\Core\Controllers\Record
return $this->getRecordService()->generateNewApiKeyForEntity($data->id)->getValueMap();
}
public function getActionSmtpAccountDataList()
{
if (!$this->getUser()->isAdmin()) throw new Forbidden();
return $this->getServiceFactory()->create('LeadCapture')->getSmtpAccountDataList();
}
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -36,7 +36,7 @@ class Metadata extends \Espo\Core\Controllers\Base
public function actionRead($params, $data)
{
return $this->getMetadata()->getAllForFrontend();
return $this->getServiceFactory()->create('Metadata')->getDataForFrontend();
}
public function getActionGet($params, $data, $request)

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -0,0 +1,37 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM 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.
*
* EspoCRM 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 EspoCRM. If not, see http://www.gnu.org/licenses/.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU General Public License version 3.
*
* In accordance with Section 7(b) of the GNU General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
namespace Espo\Controllers;
use \Espo\Core\Exceptions\Forbidden;
class PhoneNumber extends \Espo\Core\Controllers\Record
{
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -25,10 +25,12 @@
*
* In accordance with Section 7(b) of the GNU General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
************************************************************************/
namespace Espo\Controllers;
use Espo\Core\Exceptions\Forbidden;
class ScheduledJob extends \Espo\Core\Controllers\Record
{
protected function checkControllerAccess()

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -25,10 +25,12 @@
*
* In accordance with Section 7(b) of the GNU General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
************************************************************************/
namespace Espo\Controllers;
use Espo\Core\Exceptions\Forbidden;
class ScheduledJobLogRecord extends \Espo\Core\Controllers\Record
{
protected function checkControllerAccess()
@@ -38,4 +40,3 @@ class ScheduledJobLogRecord extends \Espo\Core\Controllers\Record
}
}
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,13 +29,11 @@
namespace Espo\Controllers;
use \Espo\Core\Exceptions\Error;
use \Espo\Core\Exceptions\Forbidden;
use \Espo\Core\Exceptions\BadRequest;
use Espo\Core\Exceptions\Forbidden;
use Espo\Core\Exceptions\BadRequest;
class Settings extends \Espo\Core\Controllers\Base
{
protected function getConfigData()
{
$data = $this->getServiceFactory()->create('Settings')->getConfigData();

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -46,6 +46,7 @@ class Stream extends \Espo\Core\Controllers\Base
$maxSize = intval($request->get('maxSize'));
$after = $request->get('after');
$filter = $request->get('filter');
$skipOwn = $request->get('skipOwn') === 'true';
$service = $this->getService('Stream');
@@ -61,7 +62,8 @@ class Stream extends \Espo\Core\Controllers\Base
'offset' => $offset,
'maxSize' => $maxSize,
'after' => $after,
'filter' => $filter
'filter' => $filter,
'skipOwn' => $skipOwn,
]);
return (object) [
@@ -96,7 +98,7 @@ class Stream extends \Espo\Core\Controllers\Base
'maxSize' => $maxSize,
'after' => $after,
'filter' => 'posts',
'where' => $where
'where' => $where,
]);
return (object) [

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -69,24 +69,28 @@ class User extends \Espo\Core\Controllers\Record
throw new BadRequest();
}
$p = $this->getEntityManager()->getRepository('PasswordChangeRequest')->where(array(
'requestId' => $data->requestId
))->findOne();
if ($this->getConfig()->get('passwordRecoveryDisabled')) {
throw new Forbidden("Password recovery disabled");
}
if (!$p) {
$request = $this->getEntityManager()->getRepository('PasswordChangeRequest')->where([
'requestId' => $data->requestId
])->findOne();
if (!$request) {
throw new Forbidden();
}
$userId = $p->get('userId');
$userId = $request->get('userId');
if (!$userId) {
throw new Error();
}
$this->getEntityManager()->removeEntity($p);
if ($this->getService('User')->changePassword($userId, $data->password)) {
return array(
'url' => $p->get('url')
);
$this->getEntityManager()->removeEntity($request);
return [
'url' => $request->get('url')
];
}
}
@@ -113,6 +117,14 @@ class User extends \Espo\Core\Controllers\Record
return $this->getRecordService()->generateNewApiKeyForEntity($data->id)->getValueMap();
}
public function postActionGenerateNewPassword($params, $data, $request)
{
if (empty($data->id)) throw new BadRequest();
if (!$this->getUser()->isAdmin()) throw new Forbidden();
$this->getRecordService()->generateNewPasswordForUser($data->id);
return true;
}
public function beforeCreateLink()
{
if (!$this->getUser()->isAdmin()) throw new Forbidden();

View File

@@ -0,0 +1,77 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM 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.
*
* EspoCRM 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 EspoCRM. If not, see http://www.gnu.org/licenses/.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU General Public License version 3.
*
* In accordance with Section 7(b) of the GNU General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
namespace Espo\Controllers;
use \Espo\Core\Exceptions\Error;
use \Espo\Core\Exceptions\Forbidden;
use \Espo\Core\Exceptions\NotFound;
use \Espo\Core\Exceptions\BadRequest;
class UserSecurity extends \Espo\Core\Controllers\Base
{
protected function checkControllerAccess()
{
if (!$this->getUser()->isAdmin() && !$this->getUser()->isRegular()) {
throw new Forbidden();
}
}
public function getActionRead($params, $data, $request)
{
$id = $params['id'] ?? null;
if (!$id) throw new BadRequest();
if (!$this->getUser()->isAdmin() && $id !== $this->getUser()->id) throw new Forbidden();
return $this->getService('UserSecurity')->read($id);
}
public function postActionGenerate2FAData($params, $data)
{
$data = $data ?? (object) [];
$id = $data->id;
if (!$id) throw new BadRequest();
if (!$this->getUser()->isAdmin() && $id !== $this->getUser()->id) throw new Forbidden();
return $this->getService('UserSecurity')->generate2FAData($id, $data);
}
public function putActionUpdate($params, $data)
{
$id = $params['id'] ?? null;
$data = $data ?? (object) [];
if (!$id) throw new BadRequest();
if (!$this->getUser()->isAdmin() && $id !== $this->getUser()->id) throw new Forbidden();
return $this->getService('UserSecurity')->update($id, $data);
}
}

View File

@@ -0,0 +1,50 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM 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.
*
* EspoCRM 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 EspoCRM. If not, see http://www.gnu.org/licenses/.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU General Public License version 3.
*
* In accordance with Section 7(b) of the GNU General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
namespace Espo\Controllers;
use \Espo\Core\Exceptions\Error;
use \Espo\Core\Exceptions\Forbidden;
class Webhook extends \Espo\Core\Controllers\Record
{
protected function checkControllerAccess()
{
if (!$this->getUser()->isAdmin() && !$this->getUser()->isApi()) {
throw new Forbidden();
}
}
public function actionCreate($params, $data, $request, $response = null)
{
$result = parent::actionCreate($params, $data, $request, $response);
if ($response) $response->setStatus(201);
return $result;
}
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -60,21 +60,45 @@ class GlobalRestricton
public function __construct(
\Espo\Core\Utils\Metadata $metadata,
\Espo\Core\Utils\File\Manager $fileManager,
\Espo\Core\Utils\FieldManagerUtil $fieldManagerUtil
\Espo\Core\Utils\FieldManagerUtil $fieldManagerUtil,
bool $useCache = true
)
{
$this->metadata = $metadata;
$this->fileManager = $fileManager;
$this->fieldManagerUtil = $fieldManagerUtil;
if (!file_exists($this->cacheFilePath)) {
$this->buildCacheFile();
$isFromCache = false;
if ($useCache) {
if (file_exists($this->cacheFilePath)) {
$this->data = include($this->cacheFilePath);
$isFromCache = true;
if (!($this->data instanceof \StdClass)) {
$GLOBALS['log']->error("ACL GlobalRestricton: Bad data fetched from cache.");
$this->data = null;
}
}
}
$this->data = include($this->cacheFilePath);
if (!$this->data) {
$this->buildData();
}
if ($useCache) {
if (!$isFromCache) {
$this->storeCacheFile();
}
}
}
protected function buildCacheFile()
protected function storeCacheFile()
{
$this->getFileManager()->putPhpContents($this->cacheFilePath, $this->data, true);
}
protected function buildData()
{
$scopeList = array_keys($this->getMetadata()->get(['entityDefs'], []));
@@ -127,8 +151,6 @@ class GlobalRestricton
}
$this->data = $data;
$this->getFileManager()->putPhpContents($this->cacheFilePath, $data, true);
}
protected function getMetadata()

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -88,7 +88,7 @@ class Table
if ($this->isStrictModeForced) {
$this->isStrictMode = true;
} else {
$this->isStrictMode = $config->get('aclStrictMode', false);
$this->isStrictMode = $config->get('aclStrictMode', true);
}
$this->user = $user;
@@ -182,12 +182,13 @@ class Table
return 'no';
}
public function getHighestLevel($action)
public function getHighestLevel($scope, $action)
{
if (in_array($action, $this->booleanActionList)) {
return 'yes';
} else {
return 'all';
$level = $this->metadata->get(['scopes', $scope, $this->type . 'HighestLevel']);
return $level ?? 'all';
}
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -59,7 +59,8 @@ class AclManager
$this->globalRestricton = new \Espo\Core\Acl\GlobalRestricton(
$container->get('metadata'),
$container->get('fileManager'),
$container->get('fieldManagerUtil')
$container->get('fieldManagerUtil'),
$container->get('config')->get('useCache')
);
}
@@ -133,7 +134,7 @@ class AclManager
public function getLevel(User $user, $scope, $action)
{
if ($user->isAdmin()) {
return $this->getTable($user)->getHighestLevel($action);
return $this->getTable($user)->getHighestLevel($scope, $action);
}
return $this->getTable($user)->getLevel($scope, $action);
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -104,6 +104,13 @@ class Base extends \Espo\Core\Acl\Base
}
if ($inAccount) {
return true;
} else {
if (is_null($isOwnContact) && $entity) {
$isOwnContact = $this->checkIsOwnContact($user, $entity);
}
if ($isOwnContact) {
return true;
}
}
}
@@ -117,7 +124,6 @@ class Base extends \Espo\Core\Acl\Base
}
return false;
}
public function checkReadOnlyAccount(User $user, $data)
@@ -152,13 +158,13 @@ class Base extends \Espo\Core\Acl\Base
{
$accountIdList = $user->getLinkMultipleIdList('accounts');
if (count($accountIdList)) {
if ($entity->hasAttribute('accountId')) {
if ($entity->hasAttribute('accountId') && $entity->getRelationParam('account', 'entity') === 'Account') {
if (in_array($entity->get('accountId'), $accountIdList)) {
return true;
}
}
if ($entity->hasRelation('accounts')) {
if ($entity->hasRelation('accounts') && $entity->getRelationParam('accounts', 'entity') === 'Account') {
$repository = $this->getEntityManager()->getRepository($entity->getEntityType());
foreach ($accountIdList as $accountId) {
if ($repository->isRelated($entity, 'accounts', $accountId)) {
@@ -183,13 +189,13 @@ class Base extends \Espo\Core\Acl\Base
{
$contactId = $user->get('contactId');
if ($contactId) {
if ($entity->hasAttribute('contactId')) {
if ($entity->hasAttribute('contactId') && $entity->getRelationParam('contact', 'entity') === 'Contact') {
if ($entity->get('contactId') === $contactId) {
return true;
}
}
if ($entity->hasRelation('contacts')) {
if ($entity->hasRelation('contacts') && $entity->getRelationParam('contacts', 'entity') === 'Contact') {
$repository = $this->getEntityManager()->getRepository($entity->getEntityType());
if ($repository->isRelated($entity, 'contacts', $contactId)) {
return true;
@@ -207,6 +213,4 @@ class Base extends \Espo\Core\Acl\Base
return false;
}
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -0,0 +1,65 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM 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.
*
* EspoCRM 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 EspoCRM. If not, see http://www.gnu.org/licenses/.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU General Public License version 3.
*
* In accordance with Section 7(b) of the GNU General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
namespace Espo\Core\AppParams;
class TemplateEntityTypeList extends \Espo\Core\Injectable
{
protected function init()
{
$this->addDependency('acl');
$this->addDependency('selectManagerFactory');
$this->addDependency('entityManager');
}
public function get()
{
if (!$this->getInjection('acl')->checkScope('Template')) {
return [];
}
$list = [];
$selectManager = $this->getInjection('selectManagerFactory')->create('Template');
$selectParams = $selectManager->getEmptySelectParams();
$selectManager->applyAccess($selectParams);
$templateList = $this->getInjection('entityManager')->getRepository('Template')
->select(['entityType'])
->groupBy(['entityType'])
->find($selectParams);
foreach ($templateList as $template) {
$list[] = $template->get('entityType');
}
return $list;
}
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -48,6 +48,7 @@ class Application
$GLOBALS['log'] = $this->getContainer()->get('log');
$this->initAutoloads();
$this->initPreloads();
}
protected function initContainer()
@@ -133,7 +134,9 @@ class Application
$slim->run();
} catch (\Exception $e) {
$container->get('output')->processError($e->getMessage(), $e->getCode(), true, $e);
try {
$container->get('output')->processError($e->getMessage(), $e->getCode(), true, $e);
} catch (\Slim\Exception\Stop $e) {}
}
}
@@ -179,7 +182,7 @@ class Application
}
}
$processList = array_values($processList);
if (count($runningCount) >= $maxProcessNumber) {
if ($runningCount >= $maxProcessNumber) {
$toSkip = true;
}
if (!$toSkip) {
@@ -344,6 +347,15 @@ class Application
$autoload->register();
}
protected function initPreloads()
{
foreach ($this->getMetadata()->get(['app', 'containerServices']) ?? [] as $name => $defs) {
if ($defs['preload'] ?? false) {
$this->getContainer()->get($name);
}
}
}
public function setBasePath($basePath)
{
$this->getContainer()->get('clientManager')->setBasePath($basePath);

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,9 +29,137 @@
namespace Espo\Core\Console\Commands;
use Espo\Core\Exceptions\Error;
class Upgrade extends Base
{
public function run()
protected $upgradeManager;
protected $upgradeStepList = [
'copyBefore',
'rebuild',
'beforeUpgradeScript',
'rebuild',
'copy',
'rebuild',
'copyAfter',
'rebuild',
'afterUpgradeScript',
'rebuild',
];
public function run($options, $flagList, $argumentList)
{
$params = $this->normalizeParams($options, $flagList, $argumentList);
switch ($params['mode']) {
case 'local':
$this->runLocalUpgrade($params);
break;
default:
case 'remote':
$this->runRemoteUpgrade($params);
break;
}
}
/**
* Normalize params. Permitted options and flags and $arguments:
* -y - without confirmation
* -s - single process
* --file="EspoCRM-upgrade.zip"
* --step="beforeUpgradeScript"
* @param array $options
* @param array $flagList
* @param array $argumentList
* @return array
*/
protected function normalizeParams($options, $flagList, $argumentList)
{
$params = [
'mode' => 'remote',
'skipConfirmation' => false,
'singleProcess' => false,
];
if (!empty($options['file'])) {
$params['mode'] = 'local';
$params['file'] = $options['file'];
}
if (in_array('y', $flagList)) {
$params['skipConfirmation'] = true;
}
if (in_array('s', $flagList)) {
$params['singleProcess'] = true;
}
if (!empty($options['step'])) {
$params['step'] = $options['step'];
}
return $params;
}
protected function runLocalUpgrade(array $params)
{
if (empty($params['file']) || !file_exists($params['file'])) {
echo "Upgrade package is not found.\n";
return;
}
$packageFile = $params['file'];
$fromVersion = $this->getConfig()->get('version');
fwrite(\STDOUT, "Current version is {$fromVersion}.\n");
$upgradeId = $this->upload($packageFile);
$manifest = $this->getUpgradeManager()->getManifestById($upgradeId);
$nextVersion = $manifest['version'];
if (!$params['skipConfirmation']) {
fwrite(\STDOUT, "EspoCRM will be upgraded to version {$nextVersion} now. Enter [Y] to continue.\n");
if (!$this->confirm()) {
echo "Upgrade canceled.\n";
return;
}
}
fwrite(\STDOUT, "Upgrading... This may take a while...");
try {
$this->runUpgradeProcess($upgradeId, $params);
} catch (\Exception $e) {
fwrite(\STDOUT, "\n");
fwrite(\STDOUT, $e->getMessage() . "\n");
return;
}
fwrite(\STDOUT, "\n");
$app = new \Espo\Core\Application();
$currentVerison = $app->getContainer()->get('config')->get('version');
fwrite(\STDOUT, "Upgrade is complete. Current version is {$currentVerison}.\n");
$infoData = $this->getVersionInfo();
$lastVersion = $infoData->lastVersion ?? null;
if ($lastVersion && $lastVersion !== $currentVerison && $fromVersion !== $currentVerison) {
fwrite(\STDOUT, "Newer version is available.\n");
return;
}
if ($lastVersion && $lastVersion === $currentVerison) {
fwrite(\STDOUT, "You have the latest version.\n");
return;
}
}
protected function runRemoteUpgrade(array $params)
{
$infoData = $this->getVersionInfo();
if (!$infoData) return;
@@ -48,11 +176,13 @@ class Upgrade extends Base
return;
}
fwrite(\STDOUT, "EspoCRM will be upgraded to version {$nextVersion} now. Enter [Y] to continue.\n");
if (!$params['skipConfirmation']) {
fwrite(\STDOUT, "EspoCRM will be upgraded to version {$nextVersion} now. Enter [Y] to continue.\n");
if (!$this->confirm()) {
echo "Upgrade canceled.\n";
return;
if (!$this->confirm()) {
echo "Upgrade canceled.\n";
return;
}
}
fwrite(\STDOUT, "Downloading...");
@@ -64,13 +194,22 @@ class Upgrade extends Base
fwrite(\STDOUT, "Upgrading... This may take a while...");
$this->upgrade($upgradePackageFilePath);
$upgradeId = $this->upload($upgradePackageFilePath);
try {
$this->runUpgradeProcess($upgradeId, $params);
} catch (\Exception $e) {
$error = $e->getMessage();
}
$this->getFileManager()->unlink($upgradePackageFilePath);
fwrite(\STDOUT, "\n");
fwrite(\STDOUT, $resultText);
$this->getFileManager()->unlink($upgradePackageFilePath);
if (!empty($error)) {
echo $error;
return;
}
$app = new \Espo\Core\Application();
$currentVerison = $app->getContainer()->get('config')->get('version');
@@ -88,22 +227,66 @@ class Upgrade extends Base
}
}
protected function upgrade($filePath)
protected function upload($filePath)
{
$app = new \Espo\Core\Application();
$app->setupSystemUser();
$upgradeManager = new \Espo\Core\UpgradeManager($app->getContainer());
try {
$fileData = file_get_contents($filePath);
$fileData = 'data:application/zip;base64,' . base64_encode($fileData);
$upgradeId = $upgradeManager->upload($fileData);
$upgradeManager->install(['id' => $upgradeId]);
$upgradeId = $this->getUpgradeManager()->upload($fileData);
} catch (\Exception $e) {
die("Error: " . $e->getMessage() . "\n");
}
return $upgradeId;
}
protected function runUpgradeProcess($upgradeId, array $params = [])
{
$useSingleProcess = array_key_exists('singleProcess', $params) ? $params['singleProcess'] : false;
$stepList = !empty($params['step']) ? [$params['step']] : $this->upgradeStepList;
array_unshift($stepList, 'init');
array_push($stepList, 'finalize');
if (!$useSingleProcess && $this->isShellEnabled()) {
return $this->runSteps($upgradeId, $stepList);
}
return $this->runStepsInSingleProcess($upgradeId, $stepList);
}
protected function runStepsInSingleProcess($upgradeId, array $stepList)
{
$GLOBALS['log']->debug('Installation process ['.$upgradeId.']: Single process mode.');
try {
foreach ($stepList as $stepName) {
$upgradeManager = $this->getUpgradeManager(true);
$upgradeManager->runInstallStep($stepName, ['id' => $upgradeId]);
}
} catch (\Exception $e) {
$GLOBALS['log']->error('Upgrade Error: ' . $e->getMessage());
throw new Error($e->getMessage());
}
return true;
}
protected function runSteps($upgradeId, array $stepList)
{
$phpExecutablePath = $this->getPhpExecutablePath();
foreach ($stepList as $stepName) {
$command = $phpExecutablePath . " command.php upgrade-step --step=". ucfirst($stepName) ." --id=". $upgradeId;
$shellResult = shell_exec($command);
if ($shellResult !== 'true') {
$GLOBALS['log']->error('Upgrade Error: ' . $shellResult);
throw new Error($shellResult);
}
}
return true;
}
protected function confirm()
@@ -127,6 +310,29 @@ class Upgrade extends Base
return $this->getContainer()->get('fileManager');
}
protected function getUpgradeManager($reload = false)
{
if (!$this->upgradeManager || $reload) {
$app = new \Espo\Core\Application();
$app->setupSystemUser();
$this->upgradeManager = new \Espo\Core\UpgradeManager($app->getContainer());
}
return $this->upgradeManager;
}
protected function getPhpExecutablePath()
{
$phpExecutablePath = $this->getConfig()->get('phpExecutablePath');
if (!$phpExecutablePath) {
$phpExecutablePath = (new \Symfony\Component\Process\PhpExecutableFinder)->find();
}
return $phpExecutablePath;
}
protected function getVersionInfo()
{
$url = 'https://s.espocrm.com/upgrade/next/';
@@ -183,4 +389,18 @@ class Upgrade extends Base
return realpath($localFilePath);
}
protected function isShellEnabled()
{
if (!function_exists('exec') || !is_callable('shell_exec')) {
return false;
}
$result = shell_exec("echo test");
if (empty($result)) {
return false;
}
return true;
}
}

View File

@@ -0,0 +1,71 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM 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.
*
* EspoCRM 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 EspoCRM. If not, see http://www.gnu.org/licenses/.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU General Public License version 3.
*
* In accordance with Section 7(b) of the GNU General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
namespace Espo\Core\Console\Commands;
class UpgradeStep extends Base
{
public function run($options, $flagList, $argumentList)
{
if (empty($options['step'])) {
echo "Step is not specified.\n";
return;
}
if (empty($options['id'])) {
echo "Upgrade ID is not specified.\n";
return;
}
$stepName = $options['step'];
$upgradeId = $options['id'];
return $this->runUpgradeStep($stepName, ['id' => $upgradeId]);
}
protected function runUpgradeStep($stepName, array $params)
{
$app = new \Espo\Core\Application();
$app->setupSystemUser();
$upgradeManager = new \Espo\Core\UpgradeManager($app->getContainer());
try {
$result = $upgradeManager->runInstallStep($stepName, $params); // throw Exception on error
} catch (\Exception $e) {
die("Error: " . $e->getMessage() . "\n");
}
if (is_bool($result)) {
$result = $result ? "true" : "false";
}
return $result;
}
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -61,9 +61,13 @@ class Container
$obj = $this->$loadMethod();
$this->data[$name] = $obj;
} else {
$metadata = $this->get('metadata');
try {
$className = $this->get('metadata')->get(['app', 'loaders', ucfirst($name)]);
$className = $metadata->get(['app', 'containerServices', $name, 'loaderClassName']);
if (!$className) {
$className = $metadata->get(['app', 'loaders', ucfirst($name)]);
}
} catch (\Exception $e) {}
if (!isset($className) || !class_exists($className)) {
@@ -73,19 +77,46 @@ class Container
}
}
$object = null;
if (class_exists($className)) {
$loadClass = new $className($this);
$this->data[$name] = $loadClass->load();
$loadClass = new $className($this);
$object = $loadClass->load();
$this->data[$name] = $object;
} else {
$className = $this->getServiceClassName($name);
if ($className && class_exists($className)) {
$dependencyList = $metadata->get(['app', 'containerServices', $name, 'dependencyList']) ?? [];
$dependencyObjectList = [];
foreach ($dependencyList as $item) {
$dependencyObjectList[] = $this->get($item);
}
$reflector = new \ReflectionClass($className);
if ($reflector->isSubclassOf('\\Espo\\Core\\Interfaces\\InjectableService')) {
$object = $reflector->newInstance();
foreach ($dependencyObjectList as $i => $item) {
$object->inject($dependencyList[$i], $item);
}
} else {
$object = $reflector->newInstanceArgs($dependencyObjectList);
}
$this->data[$name] = $object;
}
}
}
return null;
}
public function getServiceClassName(string $name, string $default)
public function getServiceClassName(string $name, ?string $default = null)
{
$metadata = $this->get('metadata');
$className = $metadata->get(['app', 'serviceContainer', 'classNames', $name], $default);
$className = $metadata->get(['app', 'containerServices', $name, 'className']) ??
$metadata->get(['app', 'serviceContainer', 'classNames', $name], $default);
return $className;
}
@@ -177,7 +208,8 @@ class Container
return new \Espo\Core\Utils\DateTime(
$this->get('config')->get('dateFormat'),
$this->get('config')->get('timeFormat'),
$this->get('config')->get('timeZone')
$this->get('config')->get('timeZone'),
$this->get('config')->get('language')
);
}
@@ -291,7 +323,7 @@ class Container
'en_US',
$this->get('fileManager'),
$this->get('metadata'),
$this->get('useCache')
$this->get('config')->get('useCache')
);
}
@@ -301,7 +333,7 @@ class Container
\Espo\Core\Utils\Language::detectLanguage($this->get('config')),
$this->get('fileManager'),
$this->get('metadata'),
$this->get('useCache')
$this->get('config')->get('useCache')
);
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -254,28 +254,28 @@ class Record extends Base
$byWhere = isset($data->byWhere) ? $data->byWhere : false;
$selectData = isset($data->selectData) ? json_decode(json_encode($data->selectData), true) : null;
$params = array();
$actionParams = [];
if ($byWhere) {
$params['selectData'] = $selectData;
$params['where'] = $where;
$actionParams['selectData'] = $selectData;
$actionParams['where'] = $where;
} else {
$params['ids'] = $ids;
$actionParams['ids'] = $ids;
}
if (isset($data->attributeList)) {
$params['attributeList'] = $data->attributeList;
$actionParams['attributeList'] = $data->attributeList;
}
if (isset($data->fieldList)) {
$params['fieldList'] = $data->fieldList;
$actionParams['fieldList'] = $data->fieldList;
}
if (isset($data->format)) {
$params['format'] = $data->format;
$actionParams['format'] = $data->format;
}
return [
'id' => $this->getRecordService()->export($params)
'id' => $this->getRecordService()->export($actionParams),
];
}
@@ -296,21 +296,11 @@ class Record extends Base
throw new Forbidden();
}
$params = array();
if (property_exists($data, 'where') && !empty($data->byWhere)) {
$params['where'] = json_decode(json_encode($data->where), true);
if (property_exists($data, 'selectData')) {
$params['selectData'] = json_decode(json_encode($data->selectData), true);
}
} else if (property_exists($data, 'ids')) {
$params['ids'] = $data->ids;
}
$actionParams = $this->getMassActionParamsFromData($data);
$attributes = $data->attributes;
$idsUpdated = $this->getRecordService()->massUpdate($params, $attributes);
return $idsUpdated;
return $this->getRecordService()->massUpdate($actionParams, $attributes);
}
public function postActionMassDelete($params, $data, $request)
@@ -482,11 +472,9 @@ class Record extends Base
throw new Forbidden();
}
if (property_exists($data, 'ids')) {
$params['ids'] = $data->ids;
}
$actionParams = $this->getMassActionParamsFromData($data);
return $this->getRecordService()->massFollow($params);
return $this->getRecordService()->massFollow($actionParams);
}
public function postActionMassUnfollow($params, $data, $request)
@@ -495,11 +483,9 @@ class Record extends Base
throw new Forbidden();
}
if (property_exists($data, 'ids')) {
$params['ids'] = $data->ids;
}
$actionParams = $this->getMassActionParamsFromData($data);
return $this->getRecordService()->massUnfollow($params);
return $this->getRecordService()->massUnfollow($actionParams);
}
protected function getMassActionParamsFromData($data)
@@ -511,8 +497,7 @@ class Record extends Base
if (property_exists($data, 'selectData')) {
$params['selectData'] = json_decode(json_encode($data->selectData), true);
}
}
if (property_exists($data, 'ids')) {
} else if (property_exists($data, 'ids')) {
$params['ids'] = $data->ids;
}
@@ -536,4 +521,46 @@ class Record extends Base
return $this->getRecordService()->restoreDeleted($id);
}
public function postActionMassConvertCurrency($params, $data, $request)
{
if (!$this->getAcl()->checkScope($this->name, 'edit')) throw new Forbidden();
if ($this->getAcl()->get('massUpdatePermission') !== 'yes') throw new Forbidden();
$actionParams = $this->getMassActionParamsFromData($data);
$fieldList = $data->fieldList ?? null;
if (!empty($data->field)) {
if (!is_array($fieldList)) $fieldList = [];
$fieldList[] = $data->field;
}
if (empty($data->currencyRates)) throw new BadRequest();
if (empty($data->targetCurrency)) throw new BadRequest();
if (empty($data->baseCurrency)) throw new BadRequest();
return $this->getRecordService()->massConvertCurrency(
$actionParams, $data->targetCurrency, $data->baseCurrency, $data->currencyRates, $fieldList
);
}
public function postActionConvertCurrency($params, $data, $request)
{
if (!$this->getAcl()->checkScope($this->name, 'edit')) throw new Forbidden();
$fieldList = $data->fieldList ?? null;
if (!empty($data->field)) {
if (!is_array($fieldList)) $fieldList = [];
$fieldList[] = $data->field;
}
if (empty($data->id)) throw new BadRequest();
if (empty($data->currencyRates)) throw new BadRequest();
if (empty($data->targetCurrency)) throw new BadRequest();
if (empty($data->baseCurrency)) throw new BadRequest();
return $this->getRecordService()->convertCurrency(
$data->id, $data->targetCurrency, $data->baseCurrency, $data->currencyRates, $fieldList
);
}
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2020 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

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