Compare commits

...

1194 Commits
5.5.4 ... 5.7.2

Author SHA1 Message Date
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
17ea760851 layout fix 2019-07-16 17:55:57 +03:00
yuri
f3d11aede3 disable inlide edit for email accounts 2019-07-16 14:23:56 +03:00
yuri
8053d65f33 dynamic logic in options 2019-07-16 11:00:48 +03:00
yuri
01809d2cc3 confirm focus 2019-07-16 10:47:21 +03:00
yuri
ac8e3d1a69 fix portal base path 2019-07-16 10:41:47 +03:00
yuri
b669ccf733 fix portal isCustom undefined 2019-07-16 10:22:26 +03:00
yuri
8c42c6bf0b fix bool opted out search 2019-07-16 10:17:06 +03:00
yuri
97bdd22795 sanitize complex text 2019-07-15 12:37:23 +03:00
yuri
0f3cd7913c link skip acl param 2019-07-11 16:54:49 +03:00
yuri
502cfc8d76 fix foreign enum 2019-07-11 10:40:52 +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
d31e826305 fix websocket 2019-07-08 16:18:22 +03:00
yuri
a9f2fe8590 Merge branch 'hotfix/5.6.4' 2019-07-05 11:31:42 +03:00
yuri
28a62a2581 auth method list from metadata 2019-07-05 11:31:29 +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
deff6bad36 login page changes 2019-07-04 13:30:36 +03:00
yuri
f2bc80b7d9 auth settings changes 2019-07-04 12:15:29 +03:00
yuri
b5b5cac0ac calendar mode buttons improvement 2019-07-03 13:25:54 +03:00
yuri
308f30510b calendar css fixes 2019-07-03 11:51:35 +03:00
yuri
574513a9c8 fix navbar more scroll 2019-07-03 11:27:52 +03:00
yuri
f37bc7d46b external account token renewal fix 2019-07-02 16:09:25 +03:00
yuri
9f5db434df fix attachment multiple 2019-07-02 15:54:41 +03:00
yuri
1c8abd6e36 mutliple attachment multiple fields 2019-07-02 15:46:10 +03:00
yuri
c95fcd6fbd action configCheck 2019-07-01 16:31:02 +03:00
yuri
e6009366e8 version 2019-07-01 12:47:27 +03:00
yuri
286502d872 cssList fix 2019-07-01 12:47:07 +03:00
yuri
0749bdc006 cs fix 2019-07-01 12:45:54 +03:00
yuri
72ef137dbe fix app js logout request url 2019-07-01 12:45:50 +03:00
yuri
f624bdef5c settings global params 2019-07-01 12:30:44 +03:00
yuri
9730680e41 fix htmlizer 2019-07-01 10:30:23 +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
c59fa40615 log exception message line and file 2019-06-27 11:51:34 +03:00
yuri
4dc08dd37c custom login view 2019-06-27 11:34:35 +03:00
yuri
e76c7564dc custom unsubscribe template 2019-06-27 11:05:44 +03:00
yuri
802bac82f0 fix create activity from panel 2019-06-26 16:37:58 +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
c64cc13e4c link additional select params 2019-06-26 12:06:30 +03:00
yuri
30be62eabe fix google maps 2019-06-26 10:37:16 +03:00
yuri
1c1703b349 fix pdf 2019-06-25 13:35:50 +03:00
yuri
6916f3242c external account after connect hook 2019-06-25 11:07:32 +03:00
yuri
d2630a5c3f fix deleted user view 2019-06-24 14:25:52 +03:00
yuri
3e02776fcd email fixes 2019-06-24 13:29:45 +03:00
yuri
376bfe63e0 fix meeting set held 2019-06-20 16:33:09 +03:00
yuri
950a3b4703 calendar fix 2019-06-20 13:35:02 +03:00
yuri
2f5ffb7421 external acount acl 2019-06-18 13:32:18 +03:00
yuri
043ef8ef3e oauth client support header string 2019-06-13 16:30:10 +03:00
yuri
a959a2deaf view followers all users 2019-06-12 15:33:08 +03:00
yuri
65a3f4e5f3 external account return uri path 2019-06-12 13:36:34 +03:00
yuri
97355ad024 fix redirect uri 2019-06-12 11:26:50 +03:00
yuri
99300d2d61 integration redirect uri custom 2019-06-12 11:24:11 +03:00
yuri
e070d9d9f1 oauth-callback file 2019-06-12 11:11:43 +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
8f9bb79978 button handler init 2019-06-07 16:37:02 +03:00
yuri
405a5c29df layout manager css fix 2019-06-07 14:24:20 +03:00
yuri
4f2a2b290b fix calendar custom event 2019-06-07 11:32:30 +03:00
yuri
fd5218c10b btn-text color 2019-06-06 16:05:22 +03:00
yuri
73ab4aa42e meeting modal acceptance right 2019-06-06 13:16:48 +03:00
yuri
66a60b1257 timeline tpl change 2019-06-06 12:53:39 +03:00
yuri
c975954944 stream page btn-text 2019-06-06 12:42:47 +03:00
yuri
86799ed742 btn-text normal weight 2019-06-06 12:41:34 +03:00
yuri
0c143eb8a1 Merge branch 'hotfix/5.6.3' 2019-06-06 11:45:40 +03:00
yuri
1da6eca3be update npm packages 2019-06-06 11:45:31 +03:00
yuri
a462158582 category folder style fix 2019-06-05 16:22:35 +03:00
yuri
152b8991d3 email apply filters on sending 2019-06-05 14:15:36 +03:00
yuri
5adcf013d7 fix client manager 2019-06-05 12:56:02 +03:00
yuri
9d6401cbd3 fix iframe css 2019-06-05 12:49:49 +03:00
yuri
9f178bb467 next/prev fix on email remove to trash 2019-06-05 12:45:59 +03:00
yuri
f3b2cc9bcb cleanup 2019-06-05 12:19:10 +03:00
yuri
b18a8c1b2b fix 2019-06-05 12:15:42 +03:00
yuri
30dd7e560b search buttons narrow on small screen 2019-06-05 11:51:57 +03:00
yuri
ca35a4df75 fix dashboard tpl 2019-06-05 11:46:01 +03:00
yuri
fe0a6d1a8b map none label 2019-06-05 11:43:46 +03:00
yuri
f9223087df xlsx export array 2019-06-05 11:26:46 +03:00
yuri
f3980ef9a1 fix theme manager default css 2019-06-05 11:09:50 +03:00
yuri
93553d18fc fix job text filter 2019-06-05 11:05:05 +03:00
yuri
e35561093d css fix 2019-05-20 16:37:43 +03:00
yuri
b0742aa0c6 edit dashboard fix 2019-05-20 15:46:03 +03:00
yuri
efad2b142a font fixes 2019-05-20 15:40:50 +03:00
yuri
362f895e72 client link crossorigin 2019-05-20 15:22:26 +03:00
yuri
224b73eb89 font fix 2019-05-20 15:00:48 +03:00
yuri
c4cf45e7f8 fix preload font 2019-05-20 14:46:28 +03:00
yuri
cb45e57a99 client link noTimestamp 2019-05-20 14:00:50 +03:00
yuri
e7f62f79ef font swap 2019-05-20 13:56:21 +03:00
yuri
6fb21ccd77 client links 2019-05-20 13:51:05 +03:00
yuri
f55d814cbb font display block 2019-05-20 13:50:58 +03:00
yuri
8fa22a6c7d css fix 2019-05-20 13:18:03 +03:00
yuri
b86ca3a4ec stream popover fix 2019-05-20 12:19:54 +03:00
yuri
ab51e70ff4 add dashlet style fix 2019-05-20 12:02:38 +03:00
yuri
0bde83c0e7 css fix 2019-05-20 11:49:04 +03:00
yuri
589754851c font update 2019-05-20 11:47:27 +03:00
yuri
253930ba6d btn-text fix 2019-05-20 10:40:46 +03:00
yuri
09c19bbba5 remove cancel buttons from 2 modals 2019-05-17 16:38:41 +03:00
yuri
ac96ebffa5 btn-text 2019-05-17 16:10:26 +03:00
yuri
f01715452f last viewed date short 2019-05-17 13:18:19 +03:00
yuri
875b01dcd6 lastViewed metadata scopes param 2019-05-17 13:16:07 +03:00
yuri
61def7e332 pdf currency symbol 2019-05-17 12:50:36 +03:00
yuri
86b24ff618 orm field type attribute role 2019-05-17 12:50:27 +03:00
yuri
1d29d74204 cs fix 2019-05-17 12:46:39 +03:00
yuri
2cf820e181 user activities fix and optimization 2019-05-16 16:53:09 +03:00
yuri
bf8ab4dec2 account shipping address copy button hidden 2019-05-16 16:18:41 +03:00
yuri
7b772bde3c cs fix 2019-05-16 15:24:12 +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
dfbad82ba8 version 2019-05-15 14:34:11 +03:00
yuri
84938d88fc fix cleanup deleted records 2019-05-15 14:24:44 +03:00
yuri
ed5f66729d date time getSystemNowString 2019-05-14 16:49:47 +03:00
yuri
ee5218c46d orm entity id is changed fix 2019-05-14 15:48:27 +03:00
yuri
6758d71e2e lead capture skip email address is opted out field 2019-05-13 15:11:58 +03:00
yuri
1eec3d88cf integration test auth method 2019-05-13 12:31:49 +03:00
yuri
34f1c196f1 fix command upgrade msg 2019-05-13 10:43:59 +03:00
yuri
a87e2fb5db css fix 2019-05-13 10:25:57 +03:00
yuri
cecafa5e28 diff only one version from 2019-05-10 16:25:54 +03:00
yuri
a0e5f2d8ec cleanup 2019-05-10 16:06:58 +03:00
yuri
47080f9b78 search view changes 2019-05-10 16:06:41 +03:00
yuri
07fa53d0c2 Merge branch 'hotfix/5.6.2' 2019-05-10 15:04:36 +03:00
yuri
dd15767263 email is replied for expanded list 2019-05-10 13:37:28 +03:00
yuri
a698085196 list expanded changes 2019-05-10 12:48:06 +03:00
yuri
2d4e1a94a4 add dashlet modal change 2019-05-10 12:02:28 +03:00
yuri
dad49b9ac8 create button icon 2019-05-10 11:57:54 +03:00
yuri
c5c1abaeff Merge branch 'hotfix/5.6.2' of ssh://172.20.0.1/var/git/espo/backend into hotfix/5.6.2 2019-05-10 11:35:12 +03:00
yuri
eb4f933753 css list margin on wide screen 2019-05-10 11:34:49 +03:00
yuri
931f27cb70 css fix 2019-05-10 11:10:22 +03:00
Taras Machyshyn
e6e00d4c7f Bug fixes 2019-05-10 11:05:57 +03:00
yuri
3cf48129c6 css layout centered 2019-05-10 11:04:45 +03:00
yuri
b50bf02e90 updgrate info text 2019-05-09 17:36:02 +03:00
yuri
431e3428b3 fix wysiwyg stripping event handlers 2019-05-09 16:01:25 +03:00
yuri
6d2e056b10 email import not fetched text 2019-05-09 15:24:56 +03:00
yuri
1cbfacc864 Merge branch 'hotfix/5.6.2' of ssh://172.20.0.1/var/git/espo/backend into hotfix/5.6.2 2019-05-09 12:53:59 +03:00
Taras Machyshyn
f2b51d321f Fix 2019-05-09 12:53:32 +03:00
yuri
0fe0b8906c Merge branch 'hotfix/5.6.2' of ssh://172.20.0.1/var/git/espo/backend into hotfix/5.6.2 2019-05-09 11:41:26 +03:00
Taras Machyshyn
0876f03fe4 Merge branch 'hotfix/5.6.2' of ssh://172.20.0.1/var/git/espo/backend into hotfix/5.6.2 2019-05-09 11:41:08 +03:00
yuri
dd239af810 orm metadata index 2019-05-09 11:40:01 +03:00
Taras Machyshyn
5f2fae940c Added index key for ORM metadata 2019-05-09 10:52:55 +03:00
Taras Machyshyn
02f94875b1 Added defined index names 2019-05-09 10:27:39 +03:00
yuri
52536f9803 record service fix 2019-05-08 15:15:50 +03:00
yuri
7f963bd9f3 pass model to view after create 2019-05-08 12:21:28 +03:00
yuri
fcfbd478ca cleanup 2019-05-08 12:15:10 +03:00
yuri
d7164dd588 duplicateDisabled param 2019-05-08 11:51:29 +03:00
yuri
d20b2768e1 service create load additional fields 2019-05-08 11:46:59 +03:00
yuri
68301c52c1 logger cleanup 2019-05-08 11:31:35 +03:00
yuri
57aa9fa817 Merge branch 'hotfix/5.6.2' of ssh://172.20.0.1/var/git/espo/backend into hotfix/5.6.2 2019-05-08 11:13:59 +03:00
Taras Machyshyn
910291796b Merge branch 'hotfix/5.6.2' of ssh://172.20.0.1/var/git/espo/backend into hotfix/5.6.2 2019-05-08 11:13:01 +03:00
Taras Machyshyn
e4a661721f Added setLevel() for logger 2019-05-08 11:08:48 +03:00
yuri
4068a20b8e cleanup 2019-05-08 11:08:38 +03:00
yuri
c3be6db4f3 log changes 2019-05-07 18:28:57 +03:00
yuri
80678c97f0 field removal reload metadata 2019-05-07 16:07:57 +03:00
yuri
711d20f874 typo fixes 2019-05-07 14:53:08 +03:00
yuri
7f299e1aa2 email created by id index 2019-05-07 11:58:59 +03:00
yuri
ab612a3f32 event entity duration on list view fix 2019-05-07 10:57:56 +03:00
yuri
c0c244adc6 email select manager fix 2019-05-06 11:46:57 +03:00
yuri
46a985076e email from name caching 2019-05-03 16:41:09 +03:00
yuri
7f82fab69b email abort xht on select folder 2019-05-03 16:09:20 +03:00
yuri
12ed1b3383 email reset collection on folder change 2019-05-03 16:03:29 +03:00
yuri
eab279dd12 email draft optimization 2019-05-03 15:46:59 +03:00
yuri
e59a927faa email index skip 2019-05-03 15:25:42 +03:00
yuri
1c1cb13c4d fix select manager 2019-05-03 15:25:31 +03:00
yuri
45a37eabe2 orm use index optimization 2019-05-03 15:12:57 +03:00
yuri
bbe6d81aa2 Merge branch 'hotfix/5.6.2' of github.com:espocrm/espocrm into hotfix/5.6.2 2019-05-03 13:12:41 +03:00
Eymen Elkum
5d19b1bb72 fix additional css script (#1304) 2019-05-03 13:12:22 +03:00
yuri
866f05fea5 orm agragate wo joins 2019-05-03 12:55:34 +03:00
yuri
bd22554756 link parent display entity type 2019-05-03 12:20:38 +03:00
yuri
703e170773 cleanup orphan attachments change 2019-05-03 11:55:49 +03:00
yuri
698f70a358 Merge branch 'hotfix/5.6.2' 2019-05-03 11:23:12 +03:00
yuri
a226242e69 update package.json 2019-05-03 11:22:31 +03:00
yuri
1438f8aa10 add created at fields 2019-05-03 11:09:12 +03:00
yuri
79564bab81 fix cleanup 2019-05-03 11:09:04 +03:00
yuri
5c7dd0b536 fix stream after remove 2019-05-03 11:08:30 +03:00
yuri
7e340b8b78 fix client field manager 2019-05-02 17:50:32 +03:00
yuri
a026dc577c diff fix 2019-05-02 16:14:42 +03:00
yuri
ed6c56629e css fix 2019-05-02 15:38:42 +03:00
yuri
97574707e5 wysiwyg strip all event handlers 2019-05-02 10:50:47 +03:00
yuri
3170571cb9 Merge branch 'hotfix/5.6.2' 2019-05-01 12:40:28 +03:00
yuri
942726eb74 diff fix 2019-05-01 12:17:11 +03:00
yuri
e1eb3f804e op admin stage probability 50 by default 2019-05-01 11:53:36 +03:00
yuri
2133a1390c bad request error msg 2019-05-01 11:48:23 +03:00
yuri
7fab959a2f Merge branch 'hotfix/5.6.2' of ssh://172.20.0.1/var/git/espo/backend into hotfix/5.6.2 2019-05-01 11:36:53 +03:00
yuri
88f64ab82f admin jobs link 2019-05-01 11:36:39 +03:00
Taras Machyshyn
1563d63051 Added params for an extension script 2019-05-01 11:33:04 +03:00
yuri
82026658e2 fix colors 2019-05-01 11:05:52 +03:00
yuri
26eec19a62 chart gray color 2019-05-01 11:01:11 +03:00
yuri
f548db2783 fix export 2019-05-01 10:43:18 +03:00
yuri
2da689e7e9 scope exportFormatList 2019-05-01 10:38:39 +03:00
yuri
8afb4804c3 orm sanitizeSelectAlias fix 2019-05-01 10:33:45 +03:00
yuri
56b8902969 orm fix week number 2019-05-01 10:31:01 +03:00
yuri
95cee6c845 email service get entity fix 2019-05-01 10:15:50 +03:00
yuri
dc58bcbd91 cleanup 2019-04-30 11:18:37 +03:00
yuri
8d3698e6a3 cleanup 2019-04-30 11:17:43 +03:00
yuri
c04526dc11 extension list layout fix 2019-04-30 11:17:05 +03:00
yuri
6a0d622344 event invitation smtp params fix 2019-04-30 11:13:35 +03:00
yuri
74797e0768 css fix 2019-04-30 11:09:41 +03:00
yuri
6fd0851dc9 fix dashboard 2019-04-30 11:00:26 +03:00
yuri
41e2773781 fix dashlet aftet adding 2019-04-30 10:58:50 +03:00
yuri
bf03412bf0 dashlet after adding 2019-04-30 10:49:44 +03:00
yuri
6b25aa1274 flotr fix 2019-04-26 13:50:03 +03:00
yuri
634acdd770 fix tasks meeting date filter 2019-04-25 15:26:07 +03:00
yuri
f2f01adfc9 phone number is opted out attribute 2019-04-25 12:26:07 +03:00
yuri
9cd2d1d21f import default phone number 2019-04-25 12:14:42 +03:00
yuri
fa144847e5 ability to import multiple email addresses 2019-04-25 11:55:03 +03:00
yuri
17138f715b controller before action usage 2019-04-24 15:36:49 +03:00
yuri
0babd05bff record service filter create update input methods 2019-04-24 13:35:47 +03:00
yuri
c5f14e55c5 record service validation order fix 2019-04-24 13:26:11 +03:00
yuri
e48c067b05 Merge branch 'hotfix/5.6.2' 2019-04-24 11:58:12 +03:00
yuri
03918c8ada charts si mul 2019-04-24 11:37:03 +03:00
yuri
80c7008a6c chart fixes 2019-04-24 11:02:02 +03:00
yuri
3d143cd3f0 fix notification badge overlapping 2019-04-23 17:00:32 +03:00
Pomazan Bogdan
365264b393 Правка перевода, логически не подходит (#1298) 2019-04-23 13:39:17 +03:00
Pomazan Bogdan
492670eb7d Правка перевода, логически не подходит (#1298) 2019-04-23 12:44:23 +03:00
yuri
3b4aea4966 email address rep change 2019-04-23 12:02:10 +03:00
yuri
cb77bc9085 list changes 2019-04-23 12:00:04 +03:00
yuri
691aff990b css fix 2019-04-22 15:35:45 +03:00
yuri
0f6ca667d9 vi lang 2019-04-22 13:57:59 +03:00
yuri
ba41229a83 tr lang 2019-04-22 13:57:19 +03:00
yuri
7c9d28098b es_mx lang 2019-04-22 13:56:44 +03:00
yuri
eccf9e4d85 nl lang 2019-04-22 13:55:53 +03:00
yuri
96dffc0b74 it lang 2019-04-22 13:55:06 +03:00
yuri
308d0bfc0c hr lang 2019-04-22 13:54:27 +03:00
yuri
f9dcf2db7d orm order by complex expression 2019-04-22 12:13:07 +03:00
yuri
88798f2b86 orm foreign select for foreign fields 2019-04-19 17:26:50 +03:00
yuri
28ecdc46b6 upgrade text 2019-04-19 13:48:39 +03:00
yuri
6a30031f49 css addition 2019-04-17 13:26:24 +03:00
yuri
d4f23e391f cleanup 2019-04-16 16:05:26 +03:00
yuri
79b7463886 additional css 2019-04-16 16:04:06 +03:00
Yurii Kondratskyi
eddae25d7f fix get acl level method (#1294) 2019-04-16 11:08:53 +03:00
Taras Machyshyn
5e9c85fc06 Merge branch 'hotfix/5.6.2' of ssh://172.20.0.1/var/git/espo/backend into hotfix/5.6.2 2019-04-12 14:34:29 +03:00
Taras Machyshyn
b44adb34ec Metadata changes 2019-04-12 14:34:09 +03:00
yuri
f0f6cac84a fix; php clear_cache.php 2019-04-12 13:25:08 +03:00
yuri
17e87f58c3 css fix 2019-04-11 16:30:41 +03:00
yuri
273698e2fc imap hander case insensitive 2019-04-11 11:46:16 +03:00
yuri
66f88e0e8e fix email address smtp apply case insesitive 2019-04-11 11:44:01 +03:00
yuri
de945008fb fix email send 2019-04-10 16:32:29 +03:00
yuri
5f91505b8e fix typo 2019-04-10 14:49:16 +03:00
yuri
6a25c283ec upgrade info msg 2019-04-10 13:45:02 +03:00
yuri
74fa9289a7 lead capture enhancements 2019-04-10 13:13:35 +03:00
yuri
ab4b975912 version 2019-04-10 11:59:38 +03:00
yuri
2260089301 upgrade message 2019-04-10 11:57:22 +03:00
yuri
9dd35f1e32 opp empty probability for stages 2019-04-10 11:45:47 +03:00
yuri
6b90cee851 fix opcache warning 2019-04-09 11:11:01 +03:00
yuri
6da132c034 fix date time between filter 2019-04-09 11:08:38 +03:00
yuri
bc966a8ea8 fix date time filter 2019-04-08 15:31:20 +03:00
yuri
6eab0c9b75 flotr fix 2019-04-08 15:01:46 +03:00
yuri
cf253fae8a fix 2019-04-08 13:54:57 +03:00
yuri
c0eaa8fb50 attachment multiple link disabled 2019-04-08 13:52:45 +03:00
yuri
a4889de80a image link disabled 2019-04-08 13:52:01 +03:00
yuri
acac599f6b file disabled link 2019-04-08 13:41:54 +03:00
yuri
1436ffa53f opp lead source translation param 2019-04-08 12:28:10 +03:00
yuri
c68a3dd0a6 fix stream panel 2019-04-05 17:03:27 +03:00
yuri
29c42022ef allow empty dashlet title 2019-04-05 16:52:49 +03:00
yuri
dd814c1b5e edit button default style 2019-04-05 16:33:29 +03:00
yuri
7fc2c71f58 fix account contact 2019-04-05 15:49:57 +03:00
yuri
e6a3d3c982 css fix 2019-04-05 15:02:09 +03:00
yuri
46380ee9ff css fix 2019-04-05 14:58:47 +03:00
yuri
1fa3908888 chart mouse track centered 2019-04-05 14:49:51 +03:00
yuri
914e6a1789 fix admin rebuild clear cache 2019-04-04 11:38:28 +03:00
yuri
9a1d073072 many-to-many same entity types 2019-04-04 11:28:28 +03:00
yuri
3712caf7b1 email inline attachments fix 2019-04-03 13:11:45 +03:00
yuri
a770e18bb2 Merge branch 'hotfix/5.6.1' of ssh://172.20.0.1/var/git/espo/backend into hotfix/5.6.1 2019-04-03 11:50:55 +03:00
Taras Machyshyn
5dc0cfb666 NamespaceLoader fix 2019-04-03 11:49:59 +03:00
yuri
e4ab02c77a fix ws 2019-04-02 12:25:47 +03:00
yuri
a0f729cd8d fix ws 2019-04-02 12:04:14 +03:00
yuri
d544b1c264 fix flotr2 2019-04-01 16:31:59 +03:00
yuri
d8549cbebe v 2019-04-01 16:29:30 +03:00
yuri
4ae4734dbf fix flotr2 2019-04-01 16:26:40 +03:00
yuri
cc72de7121 da_DK 2019-03-28 16:09:23 +02:00
yuri
29bf2c2e40 Merge branch 'hotfix/5.5.7' 2019-03-28 15:17:48 +02:00
yuri
e31771c8a9 Merge branch 'hotfix/5.5.7' of ssh://172.20.0.1/var/git/espo/backend into hotfix/5.5.7 2019-03-28 15:11:05 +02:00
yuri
b938942c78 fix upgrade 2019-03-28 11:14:41 +02:00
yuri
262bc6d44d escaping fixes 2019-03-28 10:53:34 +02:00
yuri
acd8d23c6c stream store is internal and default 2019-03-27 11:46:16 +02:00
yuri
940bb8f9b1 fix clint storage 2019-03-27 11:46:02 +02:00
yuri
27d22d4c9c int field refactoring 2019-03-26 16:08:31 +02:00
yuri
4024055755 date field search data change 2019-03-26 15:35:37 +02:00
yuri
441c046fbd home view 2019-03-26 12:08:31 +02:00
yuri
649fd579e2 quick detail disable quick edit param 2019-03-26 11:13:55 +02:00
yuri
c08478e156 tests fix 2019-03-26 10:32:31 +02:00
yuri
389327ae63 cs fix 2019-03-26 10:29:51 +02:00
yuri
122ee3e259 fix formula cache issue 2019-03-26 10:22:42 +02:00
yuri
ef5f048343 preserve root url on model switch over 2019-03-25 16:14:48 +02:00
yuri
9f56efada1 record controller restore options on back 2019-03-25 16:04:18 +02:00
yuri
c3553b1fb1 clnup 2019-03-25 15:55:07 +02:00
yuri
1eebfefc79 orm: now function 2019-03-25 11:04:28 +02:00
yuri
f7391c04d4 timeline dashlet no loading message 2019-03-25 10:58:49 +02:00
yuri
90537515fa css fix 2019-03-25 10:53:48 +02:00
yuri
1da3d093be css fix 2019-03-25 10:47:28 +02:00
yuri
c923134b97 fix typo in least busy 2019-03-25 10:37:16 +02:00
yuri
8eb11787de update bull.js 2019-03-25 10:29:15 +02:00
yuri
727062cf9e client custom routes 2019-03-22 17:09:11 +02:00
yuri
4054b9497d record detail left class name 2019-03-22 14:55:42 +02:00
yuri
4ea7154c9e orm expression without value 2019-03-22 13:15:38 +02:00
yuri
a35f12dffb select manager fix 2019-03-22 12:09:13 +02:00
yuri
8b6022bada multi enum restore on backspace 2019-03-22 10:53:00 +02:00
yuri
1bbbac2cc7 fix orm 2019-03-21 17:39:14 +02:00
yuri
ca632f6467 orm math functions 2019-03-21 16:27:54 +02:00
yuri
256d9555b4 orm char length 2019-03-21 16:05:49 +02:00
yuri
7db73f0688 orm: not 2019-03-21 15:19:44 +02:00
yuri
b9d6650298 fix notification check updates 2019-03-21 12:04:54 +02:00
yuri
f17d4922dd orm: in, not in functions 2019-03-21 10:51:13 +02:00
yuri
6a1b6cc922 chart colors fix 2019-03-21 10:34:35 +02:00
yuri
3ec088d485 colors fix 2019-03-20 17:04:21 +02:00
yuri
b11cb0059e orm: sanitizeSelectAlias change 2019-03-20 12:03:06 +02:00
yuri
989e5d1845 orm: new functions 2019-03-20 11:40:05 +02:00
yuri
f8d0c4e3f9 orm IF function 2019-03-20 10:24:57 +02:00
yuri
3af1850600 fix email address validation 2019-03-19 13:26:04 +02:00
yuri
f8c0a4d2e5 fix ws 2019-03-19 12:21:51 +02:00
yuri
c0c28c912e fix notification 2019-03-19 12:21:44 +02:00
yuri
ad55c66e77 ws fix 2019-03-18 16:11:37 +02:00
yuri
d276b1a5e1 naming fix 2019-03-18 15:58:53 +02:00
yuri
e899781cb5 websocket fixes 2019-03-18 15:37:21 +02:00
yuri
5dd014f835 lang fix 2019-03-15 17:15:51 +02:00
yuri
136bad46ce websocket settings 2019-03-15 16:50:59 +02:00
yuri
bd09d2a2cb config superAdminSystemItems 2019-03-15 16:50:51 +02:00
yuri
2b2428021f websocket fix 2019-03-15 16:16:39 +02:00
yuri
a9537f210a fix activities 2019-03-15 11:30:48 +02:00
yuri
3993bb5c27 fix target list 2019-03-14 13:53:33 +02:00
yuri
0c35b59ac1 fix 2019-03-14 13:15:26 +02:00
yuri
f68effefe6 fix field manager options with style 2019-03-14 11:58:02 +02:00
yuri
45f1b4c427 cs fix, allow 201 http code 2019-03-13 16:43:42 +02:00
yuri
9c0a53728b multi-enum is sorted fetch 2019-03-13 14:48:23 +02:00
yuri
84c4fb4468 fix multi-enum 2019-03-13 14:41:47 +02:00
yuri
da2310a011 portal home tab 2019-03-12 16:23:58 +02:00
yuri
96fe58bafc fix prferences 2019-03-12 16:21:26 +02:00
yuri
da5328f725 defaultSidePanelFieldList 2019-03-12 15:47:54 +02:00
yuri
e741502528 Merge branch 'master' of github.com:espocrm/espocrm 2019-03-12 15:20:34 +02:00
rodrigoscoelho
25988d7c3d ``CODE`` was missing... (#1271)
Thanks
2019-03-12 15:20:14 +02:00
yuri
61b68a5b41 lang 2019-03-11 12:18:57 +02:00
yuri
7b6626d8eb templates link in admin 2019-03-11 11:06:53 +02:00
yuri
f864bc8fec text field displayRawText param 2019-03-11 11:01:18 +02:00
yuri
5c5277b54a view helper cleanup 2019-03-11 11:00:59 +02:00
yuri
7eff19547c grunt clean change 2019-03-11 10:21:27 +02:00
yuri
05b6bcbab2 fix campaign opted out count 2019-03-08 15:38:12 +02:00
yuri
7640279a6b fix controller bc 2019-03-08 15:16:32 +02:00
yuri
2447117b03 frontend controller change 2019-03-08 15:09:21 +02:00
yuri
334b96807c ORM: week fix 2019-03-08 13:08:57 +02:00
yuri
3dcba630fe dynamic logic support file type 2019-03-08 11:51:37 +02:00
yuri
d43f78b5d2 formula trigger change 2019-03-07 18:16:53 +02:00
yuri
d197391668 orm select manager changes 2019-03-07 17:40:28 +02:00
yuri
50fe25eab3 select manager improvements 2019-03-07 16:06:33 +02:00
yuri
4192964217 select manager fix 2019-03-07 14:08:00 +02:00
yuri
247b42474d fix email account controller 2019-03-06 16:19:32 +02:00
yuri
5e3a4359f8 templates hide direct access disabled fields 2019-03-06 15:04:52 +02:00
yuri
5a051d1c45 userData entity 2019-03-06 14:08:33 +02:00
yuri
fd63de7706 fix 2019-03-06 11:52:04 +02:00
yuri
08d5edd991 fix imap smtp handlers 2019-03-06 11:33:27 +02:00
yuri
7074467fc2 smtp fixes 2019-03-06 11:30:48 +02:00
yuri
e61aecd0ff update libs 2019-03-06 11:04:11 +02:00
yuri
dbf1145c53 update smtp params for zend 2019-03-06 11:00:52 +02:00
yuri
d34b74297e oauth reason log 2019-03-06 10:06:27 +02:00
yuri
e8ce1b1592 ExternalAccountClientManager 2019-03-06 09:47:45 +02:00
yuri
663c5df115 zend validator update 2019-03-05 19:26:08 +02:00
yuri
62c24bbad0 fix 2019-03-05 18:56:32 +02:00
yuri
2e07791d43 fix smtp 2019-03-05 18:23:53 +02:00
yuri
bc397f9dcf smtp fixes 2019-03-05 18:16:21 +02:00
yuri
e91184064c smtp change 2019-03-05 17:58:06 +02:00
yuri
abe9ef19ca cs fix 2019-03-05 17:39:09 +02:00
yuri
18d3e357f7 fix 2019-03-05 17:27:35 +02:00
yuri
4c02636027 smtpAuthClassName 2019-03-05 17:24:01 +02:00
yuri
98d47bc832 fix 2019-03-05 17:17:37 +02:00
yuri
a990cc771d fix 2019-03-05 17:16:09 +02:00
yuri
3a8fa432de smtp handler fix imap handler 2019-03-05 17:13:01 +02:00
yuri
d41c7e2298 pferences entity acl 2019-03-05 16:05:21 +02:00
yuri
636906de6f prepareImapStorageProtocol 2019-03-05 15:56:29 +02:00
yuri
9323bb07a7 imap handler 2019-03-05 15:30:06 +02:00
yuri
bfc5f27e30 fix field 2019-03-05 14:12:00 +02:00
yuri
aeee88602c email account required fields fix 2019-03-05 12:52:29 +02:00
yuri
251a2e46a8 fix field tepmlate content 2019-03-05 12:41:27 +02:00
yuri
87ab67dd4c email account address autocomplete 2019-03-05 12:27:19 +02:00
yuri
75e537e428 naming fix 2019-03-05 11:58:15 +02:00
yuri
383605b597 meeting: do not copy acceptance status on duplicate 2019-03-05 11:53:00 +02:00
yuri
9a18ce2868 admin iframe height 2019-03-05 11:43:36 +02:00
yuri
79a99e042f fix admin iframe css 2019-03-04 09:46:41 +02:00
yuri
ce6627282c css fix 2019-03-01 17:28:06 +02:00
yuri
775e66f1ed css fix 2019-03-01 16:55:06 +02:00
yuri
d09ad3a7b7 css iframe 2019-03-01 13:50:08 +02:00
yuri
429a334d35 field view template content 2019-02-28 18:35:58 +02:00
yuri
978784c267 fix currency change 2019-02-28 17:03:49 +02:00
yuri
18736600ef Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2019-02-28 13:55:36 +02:00
Taras Machyshyn
94ee8c6491 Extensions: bug fixes 2019-02-28 13:54:17 +02:00
yuri
225704d1f7 aclPortal strict default for case and kb 2019-02-27 16:34:07 +02:00
yuri
ffb56703c6 free busy ignore fetched events 2019-02-27 12:54:47 +02:00
yuri
8694d1e924 modal dropdown items, meeting set held on modal 2019-02-27 12:45:18 +02:00
yuri
2408d086a0 fix user limit check 2019-02-27 10:58:05 +02:00
yuri
09f4b0b494 fix wysiwyg 2019-02-27 10:49:15 +02:00
yuri
6c55a35445 pdf fix 2019-02-27 10:39:58 +02:00
yuri
97a572cf96 pdf custom page size fixes 2019-02-27 10:35:06 +02:00
Eymen Elkum
de78c92808 pdf template custom page size. (#1258) 2019-02-26 20:46:27 +02:00
yuri
e38f967b1b upgrade command 2019-02-26 17:26:07 +02:00
Taras Machyshyn
a07fe944c5 AdminNotifications changes 2019-02-26 15:28:18 +02:00
yuri
32e32ddc51 2019 license 2019-02-25 16:45:32 +02:00
yuri
042780b4a1 email notifications about post markdown 2019-02-25 13:44:38 +02:00
yuri
70ad78a398 fix flotr2 2019-02-25 13:16:56 +02:00
yuri
805027bb8c Merge branch 'hotfix/5.5.7' 2019-02-25 12:04:45 +02:00
yuri
9453c93966 Merge branch 'hotfix/5.5.7' of github.com:espocrm/espocrm into hotfix/5.5.7 2019-02-25 12:04:36 +02:00
Eymen Elkum
b74d2d8bba fix typo in 'views/fields/file' (#1252)
remove duplicated event showImagePreview
2019-02-25 12:04:00 +02:00
yuri
b709892311 stream service fix 2019-02-25 12:02:29 +02:00
yuri
aba8b21d66 cleanup fix 2019-02-25 11:58:49 +02:00
yuri
abd2801ac8 console auth 2019-02-25 11:56:58 +02:00
yuri
ee7ce8221d fix rdb 2019-02-25 11:50:39 +02:00
yuri
89079362b6 fix 2019-02-25 11:40:13 +02:00
yuri
79fe419f13 fix notifications 2019-02-25 11:01:34 +02:00
yuri
b4a528c05e fix layout email 2019-02-22 17:34:28 +02:00
yuri
60c375dbca fix link parent 2019-02-22 17:24:09 +02:00
yuri
c7dfcfe426 fix css 2019-02-22 17:02:21 +02:00
yuri
0456dbfa42 list this.forcedCheckAllResultMassActionList 2019-02-22 15:03:16 +02:00
yuri
c806e0ad8d email received notification send even if email is related to user 2019-02-22 13:19:49 +02:00
yuri
a8acafdb69 update and extension message changes 2019-02-22 12:42:45 +02:00
yuri
208a7f8620 command fix 2019-02-22 12:03:08 +02:00
yuri
31ed07648e daemon fix 2019-02-22 11:57:58 +02:00
yuri
bf08bddec3 modal add button before specific 2019-02-22 11:53:20 +02:00
yuri
8d4ae8950a orm refactoring and cs fix 2019-02-22 11:43:08 +02:00
yuri
c95d7e5548 fix lang 2019-02-22 11:37:15 +02:00
yuri
c90ac7cc6a list force displat tobBar 2019-02-22 10:48:45 +02:00
yuri
0678ba47de action history layout fix 2019-02-22 10:46:14 +02:00
yuri
60f43d40e4 logs seconds 2019-02-22 10:42:01 +02:00
yuri
43e6332bd8 command hyphen options converted to camelCase 2019-02-21 17:08:08 +02:00
yuri
9142783564 email notifications delay 2019-02-21 16:28:48 +02:00
yuri
d3b0e9ed5d find by query sth 2019-02-21 16:20:23 +02:00
yuri
0721bd5c27 list topBar forced 2019-02-21 15:27:13 +02:00
yuri
1d5e9c67f0 orm relate unrelate belongs to 2019-02-21 14:31:33 +02:00
yuri
20ad921cb2 cs fix 2019-02-21 14:11:24 +02:00
yuri
aeee20ab42 cs fix 2019-02-21 13:55:10 +02:00
yuri
26c1df6168 acceptance in modal 2019-02-21 13:40:37 +02:00
yuri
b037423621 fix acceptance 2019-02-21 12:31:27 +02:00
yuri
8e040a83d0 meeting/call: acceptance status button 2019-02-21 12:26:51 +02:00
yuri
a450342e93 cleanup 2019-02-21 10:46:28 +02:00
yuri
d4c0331f41 fix number 2019-02-21 10:42:46 +02:00
yuri
5f74ca9504 email template insert field fix 2019-02-20 15:38:48 +02:00
yuri
141a6f218b fix number 2019-02-20 15:33:42 +02:00
yuri
0bb3464e81 case icon 2019-02-20 13:36:56 +02:00
yuri
e5dfc1af82 meeting icon 2019-02-20 13:33:21 +02:00
yuri
5b130dd876 source map 2019-02-20 13:04:54 +02:00
yuri
196422de87 sth collection 2019-02-20 12:40:51 +02:00
yuri
2a5bcf0bdd fix list all result 2019-02-20 12:22:56 +02:00
yuri
638908acb8 Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2019-02-20 12:18:07 +02:00
yuri
f7ffcafb27 number format float 2019-02-20 12:12:26 +02:00
yuri
cca4aa7f6f ldap no password change 2019-02-20 12:12:02 +02:00
yuri
ec60f2b0f3 cleanup 2019-02-20 11:23:32 +02:00
yuri
5f595bd86f frontend number util 2019-02-20 11:23:20 +02:00
yuri
13909fc1bd fix preferences 2019-02-20 10:58:53 +02:00
Taras Machyshyn
a589d369bc Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2019-02-20 10:56:30 +02:00
Taras Machyshyn
5ac88a7b1a Corrected Ukrainian language 2019-02-20 10:55:40 +02:00
yuri
e3f1baacbe version 2019-02-19 18:19:48 +02:00
yuri
bc09e9a797 cssmin 2019-02-19 18:02:19 +02:00
yuri
f93eb3a5b3 fix theme is applied 2019-02-19 17:53:13 +02:00
yuri
6922e942ba npm updates 2019-02-19 17:21:51 +02:00
yuri
6397650183 fix 2019-02-19 15:31:54 +02:00
yuri
6fd89db736 cs fix 2019-02-19 15:25:32 +02:00
yuri
d6071bd894 export using temp file 2019-02-19 14:38:33 +02:00
yuri
5c1d088744 export csv fixes 2019-02-19 13:33:26 +02:00
yuri
4bc01767c8 Merge branch 'hotfix/5.5.7' 2019-02-19 13:21:43 +02:00
yuri
acb532db89 isLinkStub 2019-02-19 13:21:31 +02:00
yuri
8c9ccde962 npm update 2019-02-19 12:51:52 +02:00
yuri
c1958d76b1 fa lang 2019-02-18 17:02:54 +02:00
yuri
a804f17934 export please wait 2019-02-18 16:15:42 +02:00
yuri
8fb05d4fe3 fix 2019-02-18 14:12:09 +02:00
yuri
ee9d0355d4 fix api user name validate 2019-02-18 14:10:36 +02:00
yuri
139b58ce6d fix 2019-02-18 14:02:32 +02:00
yuri
4a8eff32cb Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2019-02-18 11:48:41 +02:00
Taras Machyshyn
6c6d1a7f53 Autoload: added psr-0, psr-4, classmap, autoloadFileList, files 2019-02-18 11:44:38 +02:00
yuri
a59825a79b group email account keep unseen 2019-02-18 11:39:07 +02:00
yuri
81bb4a43f5 Merge branch 'hotfix/5.5.7' 2019-02-18 11:26:53 +02:00
yuri
184369af9c fix portal role cache 2019-02-18 11:26:45 +02:00
yuri
d492ca15da autocomplete select 2019-02-18 11:23:50 +02:00
yuri
5a17c923f0 user mention url fix 2019-02-18 11:15:13 +02:00
yuri
dfcaa60e04 Merge branch 'hotfix/5.5.7' 2019-02-18 11:05:43 +02:00
yuri
f3317793cb cs fix 2019-02-18 11:03:25 +02:00
yuri
41a3e7eaa3 mass email open tracking param 2019-02-18 11:03:19 +02:00
yuri
4357e331ad css fix 2019-02-18 10:42:03 +02:00
yuri
49fe1a75db array field escaping 2019-02-15 17:01:33 +02:00
yuri
68dfa92425 muli-enum style and label 2019-02-15 16:16:45 +02:00
yuri
987fd7f922 Merge branch 'hotfix/5.5.7' 2019-02-15 15:57:46 +02:00
yuri
449f0d6237 enum label changes 2019-02-15 15:57:36 +02:00
yuri
dcbdf94023 console run job 2019-02-15 14:23:16 +02:00
yuri
6e7150cef2 fix command manager 2019-02-15 14:08:15 +02:00
yuri
949209d708 multi enum max count param 2019-02-15 13:36:04 +02:00
yuri
0aab014af1 COALESCE function, null, true, false 2019-02-15 12:20:23 +02:00
yuri
a5941e472e cleanup 2019-02-15 12:11:51 +02:00
yuri
9a18a461be forbidden names 2019-02-15 11:49:59 +02:00
yuri
95bbba4607 zmq submit timeout 2019-02-15 11:37:58 +02:00
yuri
d8efe74126 Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2019-02-14 18:12:21 +02:00
yuri
dafe9d8274 fix 2019-02-14 17:36:41 +02:00
yuri
505862efad frontend bc fix 2019-02-14 17:36:03 +02:00
yuri
3e3616bc36 orm functions improvements 2019-02-14 15:42:25 +02:00
yuri
f72c16a604 select manager forbid complex expressions 2019-02-14 15:42:09 +02:00
yuri
d1be813d05 multi enum: is sorted param 2019-02-13 16:05:46 +02:00
yuri
17cdecf45c fix opp amount weighted 2019-02-13 15:40:00 +02:00
yuri
0906e79211 layoutAvailabilityList and contact role on opportunities panel 2019-02-13 12:55:14 +02:00
yuri
4acb5ee4c8 restore deleted tests 2019-02-13 12:23:27 +02:00
yuri
0bce33e92a service read exception 2019-02-13 12:23:14 +02:00
yuri
929fa2f620 cleanup 2019-02-13 12:04:56 +02:00
yuri
fb66c5ec60 deleted record view changes 2019-02-13 12:00:12 +02:00
yuri
54850f62a8 frontend record controller changes 2019-02-13 11:34:08 +02:00
yuri
ea0e38277d fix contact filter by account is inactive 2019-02-13 11:17:13 +02:00
yuri
e099fd43dd forbidden action link name 2019-02-12 18:33:26 +02:00
yuri
d90efae709 restore deleted 2019-02-12 18:29:12 +02:00
yuri
2131232e14 isFollowed disabled 2019-02-12 17:51:52 +02:00
yuri
c823e9e06f cs fix 2019-02-12 17:18:13 +02:00
yuri
d325d92f89 import silent mode 2019-02-12 16:19:22 +02:00
yuri
84143cd096 cs fix 2019-02-12 16:05:26 +02:00
yuri
d7f5993665 htaccess fix 2019-02-12 15:20:36 +02:00
yuri
88ddd5546a htaccess fix 2019-02-12 15:19:31 +02:00
yuri
25d6ca3fea forbid mass remove by where if no mass update permission 2019-02-12 14:12:05 +02:00
yuri
3709523836 fix stream websocket 2019-02-12 14:02:15 +02:00
yuri
0e17079b03 websocket fixes 2019-02-12 13:50:00 +02:00
yuri
2752924d16 websocket changes 2019-02-12 13:19:32 +02:00
yuri
7c1144fa2c concole command changes 2019-02-12 11:54:29 +02:00
yuri
6008f1abb2 check for duplicate improvement 2019-02-12 11:30:39 +02:00
yuri
d4f200171f fix activities 2019-02-11 16:56:03 +02:00
yuri
2dd8d8b442 websocket changes 2019-02-11 16:50:20 +02:00
yuri
d5dc0fa2e6 console command changes 2019-02-11 15:37:19 +02:00
yuri
8cb9568334 record service populate default currency 2019-02-11 15:26:00 +02:00
yuri
4cc33fc06e orm selectForeign 2019-02-11 13:23:18 +02:00
Taras Machyshyn
73c94b861e Fix delete custom entity 2019-02-11 11:51:08 +02:00
yuri
7b0fde72b8 orm optimization 2019-02-11 11:14:06 +02:00
yuri
564d7dd567 Merge branch 'hotfix/5.5.7' 2019-02-11 10:59:03 +02:00
yuri
3f21bd618c modal headerHtml 2019-02-11 10:55:20 +02:00
yuri
ed1f803647 fix wysiwyg 2019-02-11 10:37:52 +02:00
yuri
4b03f3aba9 fix typo 2019-02-11 10:36:54 +02:00
yuri
7b7fa5aa24 fix typo 2019-02-11 10:36:24 +02:00
yuri
15a1c68ede Merge branch 'hotfix/5.5.7' 2019-02-08 17:36:47 +02:00
yuri
9e252298cf fix 2019-02-08 17:36:39 +02:00
yuri
89d4a04d85 Merge branch 'hotfix/5.5.7' 2019-02-08 17:25:53 +02:00
yuri
1cd0c5d925 fix 2019-02-08 17:25:46 +02:00
yuri
43ab711254 fix 2019-02-08 17:22:11 +02:00
yuri
c671e47a5d fix 2019-02-08 17:21:54 +02:00
yuri
983988c9e1 ConsoleCommand framework 2019-02-08 16:44:54 +02:00
yuri
790a206e0a Merge branch 'hotfix/5.5.7' 2019-02-08 16:03:06 +02:00
yuri
f5759c3327 fix dashlet chart 2019-02-08 15:54:38 +02:00
yuri
a15a2f4ee5 flotr fix 2019-02-08 15:52:35 +02:00
yuri
2e4dc5a2ea merge 2019-02-08 14:11:20 +02:00
yuri
9b78cf401b fix mass actions 2019-02-08 14:02:47 +02:00
yuri
ed64c93aa0 custom mass action ignore select all result 2019-02-08 13:44:29 +02:00
yuri
618792b541 fix flotr 2019-02-08 12:56:49 +02:00
yuri
1bbba0e9b3 fix formula floatval 2019-02-08 11:23:08 +02:00
yuri
3a8300f172 container changes 2019-02-07 15:47:15 +02:00
yuri
6e40357e3f validate skip type field list 2019-02-07 13:56:33 +02:00
yuri
20a767b452 massUpdate function change 2019-02-07 13:47:32 +02:00
yuri
ff96f18adb fix tests 2019-02-07 13:47:22 +02:00
yuri
a768181a75 field validation additions and tests 2019-02-07 13:15:44 +02:00
yuri
edb52e253b edit save error revert edit mode 2019-02-07 11:57:12 +02:00
yuri
ee52b8d4d9 field validation additions 2019-02-06 16:37:53 +02:00
yuri
7154fa0f4a field validation framework 2019-02-06 14:24:20 +02:00
yuri
7e54239710 field manager changes 2019-02-06 11:50:56 +02:00
yuri
a54be505d4 client field manager methods 2019-02-06 11:20:34 +02:00
yuri
3efa23fb71 moment timezone update 2019-02-05 16:07:15 +02:00
yuri
2254257250 gitignore add debug log 2019-02-05 14:44:05 +02:00
yuri
18f4f057eb cleanup 2019-02-05 14:04:17 +02:00
yuri
246f2186a5 app use ajax class 2019-02-05 13:59:49 +02:00
yuri
ed6c248bbe update moment 2019-02-05 13:50:44 +02:00
yuri
c22b1c0e9d Merge branch 'hotfix/5.5.7' 2019-02-05 11:48:58 +02:00
yuri
5087b19135 missing license fix 2019-02-05 11:48:42 +02:00
yuri
26175c8795 frontend naming fix 2019-02-05 11:47:53 +02:00
yuri
4400c9bfa8 autobahn js minify 2019-02-05 11:40:48 +02:00
yuri
f99cac5d4c serverside email address validation 2019-02-05 11:20:07 +02:00
yuri
d81d66ea5d fix add email address regex 2019-02-04 14:07:25 +02:00
yuri
00d6e2a58c portal siteUrl 2019-02-04 12:27:58 +02:00
yuri
e48fa00893 kb fix send email 2019-02-04 12:00:36 +02:00
yuri
98bf4594b4 update about 2019-02-04 10:52:51 +02:00
yuri
2e38270083 fix email address add 2019-02-04 10:49:39 +02:00
yuri
9e578f4edd composer update 2019-02-01 17:07:14 +02:00
yuri
2186673b2a find php executable 2019-02-01 16:58:47 +02:00
yuri
4080c8c877 reminder popup fix 2019-02-01 16:42:27 +02:00
yuri
8af40f2444 css fixes 2019-02-01 16:11:58 +02:00
yuri
6619abb02b fix loader warn 2019-02-01 15:58:51 +02:00
yuri
9806e092df cleanup 2019-02-01 15:56:48 +02:00
yuri
f1d8af128d websocket 2019-02-01 15:42:18 +02:00
Taras Machyshyn
84e5fb33c0 Upgrades: enable maintenanceMode while installation 2019-01-31 17:47:14 +02:00
yuri
a42afcf6e4 Merge branch 'hotfix/5.5.7' 2019-01-31 11:00:26 +02:00
yuri
3d16450dd8 update bull 2019-01-30 17:07:42 +02:00
yuri
ad9edb2b43 restrcted mode hide params 2019-01-30 16:49:06 +02:00
yuri
0b1671e1a3 tooltip fix 2019-01-30 16:35:34 +02:00
yuri
7361488270 amend 2019-01-30 15:24:10 +02:00
yuri
f75e6f6ad0 import time formats with seconds 2019-01-30 15:14:50 +02:00
yuri
dd3a075c24 settings layout changes 2019-01-30 14:28:43 +02:00
yuri
263949134c update bull 2019-01-30 13:54:14 +02:00
yuri
ebf7c78199 fix 2019-01-30 11:19:41 +02:00
yuri
68634edc0d model collection factory promise support 2019-01-30 11:18:59 +02:00
yuri
c7be90e1ad wysiwyg css fix 2019-01-29 13:10:32 +02:00
yuri
6fa3d8c769 compose email append signature 2019-01-29 12:48:31 +02:00
yuri
42e2f247e1 fix wysiwyg 2019-01-29 12:44:06 +02:00
yuri
005b9c0a8a fix job parallel 2019-01-29 12:03:02 +02:00
yuri
137e559d2e email reply to fields 2019-01-29 11:24:34 +02:00
yuri
f20b7d6577 fix email notification 2019-01-29 11:19:35 +02:00
yuri
4b22936d66 call phone dial 2019-01-28 16:00:05 +02:00
yuri
b47d738e94 Merge branch 'hotfix/5.5.7' 2019-01-28 13:11:04 +02:00
yuri
200f70c813 address state list and fixes 2019-01-28 13:08:14 +02:00
yuri
a0535c8127 meeting support assigned users 2019-01-28 12:25:26 +02:00
yuri
750d15134f entity more link multiple methods 2019-01-28 12:20:19 +02:00
yuri
43e398e078 css fix 2019-01-28 11:28:12 +02:00
yuri
e1965e6ad9 email action order 2019-01-28 10:57:49 +02:00
yuri
79d69dcb32 detail action item unshift 2019-01-28 10:57:43 +02:00
yuri
e21ac44427 Merge branch 'hotfix/5.5.7' 2019-01-28 10:47:48 +02:00
yuri
0211e4fa86 email template currency decimal places 2019-01-28 10:44:25 +02:00
yuri
dba0579b92 fix 2019-01-25 17:07:24 +02:00
yuri
8524095e75 Merge branch 'hotfix/5.5.7' 2019-01-25 17:00:08 +02:00
yuri
6d2a6feae2 fix 2019-01-25 16:50:43 +02:00
yuri
1898065da5 foreign access phone opt out 2019-01-25 16:45:24 +02:00
yuri
e76ee39840 Merge branch 'hotfix/5.5.7' 2019-01-25 16:44:53 +02:00
yuri
1b484b1c25 fix 2019-01-25 16:44:46 +02:00
yuri
a8dcaffd19 text filter foreign fields 2019-01-25 15:45:45 +02:00
yuri
5b960b476c fix 2019-01-25 14:05:37 +02:00
yuri
bd13f01718 fix tests 2019-01-25 13:57:07 +02:00
yuri
6bb717d8a9 naming fix 2019-01-25 13:53:57 +02:00
yuri
828440785e select manager changes 2019-01-25 13:13:52 +02:00
yuri
55d6d3620d Merge branch 'hotfix/5.5.7' 2019-01-25 11:20:40 +02:00
yuri
09d7d578b6 fix test 2019-01-24 16:24:20 +02:00
yuri
807991ea7d v 2019-01-24 16:03:47 +02:00
yuri
8b59919829 contact accountId disabled 2019-01-24 15:10:31 +02:00
yuri
13d8351166 orm fix foreign type 2019-01-24 12:51:44 +02:00
yuri
dfd527ae68 fix aborted stored view issue 2019-01-24 12:17:06 +02:00
yuri
40d2c95df4 fix autocomplete 2019-01-24 11:31:36 +02:00
yuri
57ef395ad2 fix autocomplete 2019-01-24 11:31:15 +02:00
yuri
8b68db4c75 Merge branch 'hotfix/5.5.7' 2019-01-23 16:38:04 +02:00
yuri
38d9085acf template importable 2019-01-23 16:37:50 +02:00
yuri
659cd2c92b Merge branch 'hotfix/5.5.7' 2019-01-22 16:41:07 +02:00
yuri
df3a449a72 fix output error 2019-01-22 16:33:56 +02:00
yuri
c7b47b1e6c recalculte formula 2019-01-22 15:38:49 +02:00
yuri
f2a090169f skipDuplicateCheck 2019-01-22 12:19:07 +02:00
yuri
3acd3a5209 acceptrance status export disabled 2019-01-22 12:00:10 +02:00
yuri
1887d25497 fix currency float 2019-01-21 15:22:56 +02:00
yuri
6d4ac8e10e default currency 2019-01-21 15:22:05 +02:00
yuri
57d47ca1d4 Merge branch 'hotfix/5.5.7' 2019-01-21 14:57:45 +02:00
yuri
fe1922586e formula function list 2019-01-21 14:44:12 +02:00
yuri
ddaef1a827 formula record count support filter as only param 2019-01-21 14:34:20 +02:00
yuri
e327457af7 Merge branch 'hotfix/5.5.6' of ssh://172.20.0.1/var/git/espo/backend into hotfix/5.5.7 2019-01-21 13:36:00 +02:00
yuri
fc184d42f7 Merge branch 'hotfix/5.5.6' 2019-01-21 12:59:41 +02:00
yuri
c0e9d3b347 fix 2019-01-21 12:54:00 +02:00
yuri
757757af2b merge manual 2019-01-21 12:26:06 +02:00
yuri
5803e3bc85 rerun query if deadlock 2019-01-21 12:08:53 +02:00
yuri
442e62d76c duplicate list limit 2019-01-21 11:21:06 +02:00
yuri
086e9a926f fix user password clear after save 2019-01-21 11:20:08 +02:00
yuri
90a341de2f fix list mass action 2019-01-21 11:02:54 +02:00
yuri
d4ea6d146a fix 2019-01-18 16:37:24 +02:00
yuri
af991b4008 formula record count and exists 2019-01-18 13:45:02 +02:00
yuri
c17017be9b fix lang 2019-01-18 13:44:14 +02:00
yuri
e9fcca84db fix css 2019-01-18 11:52:40 +02:00
yuri
6aa7fa589e lead layout fix 2019-01-18 11:39:51 +02:00
yuri
5a07b0a8be drop php 5.6 and 7.0 2019-01-17 17:31:56 +02:00
yuri
d9363e7486 empty merge 2019-01-17 17:28:58 +02:00
yuri
7aab1b611a fix email addres phone number 2019-01-17 17:24:43 +02:00
yuri
64be22f08e jobPopulateOptedOutPhoneNumbers 2019-01-17 17:22:31 +02:00
yuri
83a13b83d3 phone number optout invalid 2019-01-17 17:08:24 +02:00
yuri
abbf3e8a4f Merge branch 'hotfix/5.5.6' 2019-01-17 15:56:58 +02:00
yuri
971265eb6b selectAttributesDependancyMap 2019-01-17 15:09:03 +02:00
yuri
f14a699c08 post link handled on backend 2019-01-17 12:11:10 +02:00
yuri
2aea0350eb orm fix 2019-01-16 14:58:57 +02:00
yuri
18a556bce0 address list on settings layout 2019-01-16 13:56:18 +02:00
yuri
783adab8a5 city list param 2019-01-16 13:40:11 +02:00
yuri
1a802b5822 date time year quarter filters timezone 2019-01-16 12:24:37 +02:00
yuri
99bf56d031 email template current year 2019-01-16 11:29:37 +02:00
yuri
34135f0e17 fix export json 2019-01-15 15:34:23 +02:00
yuri
c22f23a1c4 phone email max length 2019-01-15 13:49:09 +02:00
yuri
5ef8588ad1 fix css 2019-01-15 13:12:57 +02:00
yuri
cef5e09a58 fix css 2019-01-15 13:09:06 +02:00
yuri
6933c599ad css hr color 2019-01-15 12:34:10 +02:00
Taras Machyshyn
10f6a202af Bug fixes 2019-01-15 12:33:39 +02:00
Taras Machyshyn
47bd030293 Installer: changed loading icon 2019-01-15 12:16:17 +02:00
yuri
86cb201539 fix css 2019-01-15 12:14:03 +02:00
yuri
619856ad58 fix cron is running check 2019-01-15 12:02:40 +02:00
yuri
b539273351 date time system formats static prop 2019-01-15 12:02:22 +02:00
yuri
dc4c4c3742 user controller restore lost code 2019-01-15 11:45:20 +02:00
Taras Machyshyn
78e81a5e7d 2019 year for installer 2019-01-14 16:48:06 +02:00
yuri
ae18ce444c fix typo 2019-01-10 14:53:02 +02:00
yuri
d1b35594e7 fix select manager 2019-01-10 14:47:44 +02:00
yuri
79befe9508 select manager originalType 2019-01-10 14:47:07 +02:00
yuri
cc75457e50 select manager transform date time 2019-01-10 14:28:18 +02:00
yuri
0fa58aaee6 text email address compose email links 2019-01-10 12:37:12 +02:00
yuri
a3f3f7cdaa fix email address modal view name 2019-01-10 12:36:58 +02:00
yuri
30dc174d30 Merge branch 'hotfix/5.5.6' 2019-01-10 12:18:19 +02:00
yuri
400198f7a3 invitation fix 2019-01-10 12:08:29 +02:00
yuri
347d3d7fef email sender fix 2019-01-10 12:08:19 +02:00
yuri
716af071b8 Merge branch 'hotfix/5.5.6' 2019-01-10 11:28:31 +02:00
yuri
43f8bbc360 v 2019-01-09 16:12:55 +02:00
yuri
1ff76bf1a0 fix field params 2019-01-09 16:12:32 +02:00
yuri
6da9662110 Merge branch 'hotfix/5.5.5' 2019-01-09 15:09:54 +02:00
yuri
8d13668595 fix ea pn repositories 2019-01-09 14:46:01 +02:00
yuri
62dcc1f55b version 2019-01-09 14:16:08 +02:00
yuri
efb0c354a5 improve select manager checkWhere 2019-01-09 13:49:35 +02:00
yuri
09c9faba9c fix typo 2019-01-09 13:35:39 +02:00
yuri
c9a6bd2d64 select manager check link restricted 2019-01-09 13:35:03 +02:00
yuri
5d32485fc5 email/phone tpl fix 2019-01-09 13:15:20 +02:00
yuri
b4aa93a185 fix sumRelated 2019-01-09 12:30:09 +02:00
yuri
a0fddbec27 Merge branch 'hotfix/5.5.5' 2019-01-08 16:43:06 +02:00
yuri
533faad8c2 footer year 2019-01-08 16:40:34 +02:00
yuri
3a24a45ade fix readme 2019-01-08 16:39:31 +02:00
yuri
643501b25d email view users 2019-01-08 16:14:48 +02:00
yuri
3c5abf88e7 cleanup 2019-01-08 15:57:18 +02:00
yuri
bec6011c8e Merge branch 'stable' 2019-01-08 14:56:08 +02:00
yuri
efc8b02d11 Merge branch 'hotfix/5.5.4' 2019-01-04 16:15:34 +02:00
yuri
1c64b7bd54 related list fix 2019-01-04 16:14:50 +02:00
yuri
1f6b7ce6ab view followers 2019-01-04 15:33:33 +02:00
yuri
0b518c4eb8 Merge branch 'hotfix/5.5.4' 2019-01-04 15:31:39 +02:00
yuri
5c5c3113bc Merge branch 'hotfix/5.5.4' 2018-12-28 14:50:54 +02:00
yuri
26b7420a2d Merge branch 'stable' 2018-12-25 18:12:16 +02:00
yuri
c0d04f5870 Merge branch 'stable' 2018-12-25 14:54:50 +02:00
yuri
53f3a18245 allowing reminders for tasks when only date is specified 2018-12-21 14:44:40 +02:00
yuri
4b01bdb0d8 Merge branch 'hotfix/5.5.2' 2018-12-21 14:35:50 +02:00
yuri
4222b0be1d Merge branch 'hotfix/5.5.2' 2018-12-20 11:46:15 +02:00
Eymen Elkum
3b99ca74ab small fix to activities service (#1158)
$selectParams in the line https://github.com/espocrm/espocrm/blob/master/application/Espo/Modules/Crm/Services/Activities.php#L1057 was not defined so I moved it to be after initialized
$selectManager->addLeftJoin(['assignedUsers', 'assignedUsers'], $selectParams); seems not needed as it is added in the line 1095
2018-12-20 11:31:02 +02:00
yuri
42641396c6 activity all day select 2018-12-19 17:13:04 +02:00
yuri
04326171e7 fix event repository 2018-12-19 17:03:50 +02:00
yuri
d90d450bef all day event 2018-12-19 16:48:06 +02:00
2914 changed files with 52194 additions and 20156 deletions

4
.gitignore vendored
View File

@@ -6,6 +6,7 @@
/data/config.php
/build
/node_modules
npm-debug.log
/test.php
/main.html
@@ -14,4 +15,5 @@
/tests/integration/config.php
composer.phar
vendor/
/custom/Espo/Custom/*
/custom/Espo/Custom/*
/install/config.php

View File

@@ -9,16 +9,13 @@ DirectoryIndex index.php index.html
# PROTECTED DIRECTORIES
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^/?(data|api)/ - [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]
RewriteRule ^/?client/?$ - [F]
#END PROTECTED DIRECTORIES
RewriteRule .* - [E=HTTP_ESPO_CGI_AUTH:%{HTTP:Authorization}]

View File

@@ -2,8 +2,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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
@@ -30,13 +30,15 @@ module.exports = function (grunt) {
'client/lib/jquery-ui.min.js',
'client/lib/jquery.ui.touch-punch.min.js',
'client/lib/moment.min.js',
'client/lib/moment-timezone-with-data.min.js',
'client/lib/moment-timezone.min.js',
'client/lib/moment-timezone-data.js',
'client/lib/jquery.timepicker.min.js',
'client/lib/jquery.autocomplete.js',
'client/lib/bootstrap.min.js',
'client/lib/bootstrap-datepicker.js',
'client/lib/bull.js',
'client/lib/marked.min.js',
'client/lib/autobahn.js',
'client/src/namespace.js',
'client/src/exceptions.js',
@@ -87,12 +89,16 @@ module.exports = function (grunt) {
themeList.push(file.substr(0, file.length - 5));
});
var cssminFilesData = {};
var lessData = {};
themeList.forEach(function (theme) {
var name = camelCaseToHyphen(theme);
var files = {};
files['client/css/espo/'+name+'.css'] = 'frontend/less/'+name+'/main.less';
files['client/css/espo/'+name+'-iframe.css'] = 'frontend/less/'+name+'/iframe/main.less';
cssminFilesData['client/css/espo/'+name+'.css'] = 'client/css/espo/'+name+'.css';
cssminFilesData['client/css/espo/'+name+'-iframe.css'] = 'client/css/espo/'+name+'-iframe.css';
var o = {
options: {
yuicompress: true,
@@ -117,16 +123,22 @@ module.exports = function (grunt) {
}
},
clean: {
start: ['build/*'],
start: ['build/EspoCRM-*'],
final: ['build/tmp'],
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,
cssmin: {
themes: {
files: cssminFilesData
}
},
uglify: {
options: {
mangle: false,
sourceMap: true,
banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n',
},
'build/tmp/client/espo.min.js': jsFilesToMinify.map(function (item) {
@@ -176,6 +188,9 @@ module.exports = function (grunt) {
'clear_cache.php',
'upgrade.php',
'extension.php',
'websocket.php',
'command.php',
'oauth-callback.php',
'index.php',
'LICENSE.txt',
'.htaccess',
@@ -226,26 +241,6 @@ module.exports = function (grunt) {
}
},
replace: {
timestamp: {
options: {
patterns: [
{
match: 'timestamp',
replacement: '<%= new Date().getTime() %>'
}
]
},
files: [
{
src: 'build/tmp/html/main.html',
dest: 'build/tmp/html/main.html'
},
{
src: 'build/tmp/html/portal.html',
dest: 'build/tmp/html/portal.html'
}
]
},
version: {
options: {
patterns: [
@@ -290,6 +285,7 @@ module.exports = function (grunt) {
'clean:start',
'mkdir:tmp',
'less',
'cssmin',
'uglify',
'copy:frontendFolders',
'copy:frontendLib',
@@ -300,5 +296,4 @@ module.exports = function (grunt) {
'chmod',
'clean:final'
]);
};

View File

@@ -8,8 +8,8 @@ Download the latest release from our [website](http://www.espocrm.com).
### Requirements
* PHP 5.6 or above (with pdo, json, gd, openssl, zip, imap, mbstring, curl extensions);
* MySQL 5.5.3 or above, or MariaDB.
* PHP 7.1 or above (with pdo, json, gd, openssl, zip, imap, mbstring, curl extensions);
* MySQL 5.6.0 or above, or MariaDB.
For more information about server configuration see [this article](https://www.espocrm.com/documentation/administration/server-configuration/).
@@ -54,9 +54,9 @@ Before we can merge your pull request you need to accept our CLA [here](https://
Branches:
* hotfix/* an upcoming maintenance release; fixes should be pushed to this branch;
* master an upcoming minor or major release; new features should be pushed to this branch;
* stable a 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.
### How to make a translation
@@ -76,4 +76,3 @@ Json files will be created in build directory grouped by folders.
### License
EspoCRM is published under the GNU GPLv3 [license](https://raw.githubusercontent.com/espocrm/espocrm/master/LICENSE.txt).

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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
@@ -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,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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

View File

@@ -0,0 +1,73 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 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,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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
@@ -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,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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
@@ -33,39 +33,43 @@ use \Espo\Core\Exceptions\Forbidden;
class ActionHistoryRecord extends \Espo\Core\Controllers\Record
{
public function actionUpdate($params, $data, $request)
public function beforeUpdate()
{
throw new Forbidden();
}
public function actionCreate($params, $data, $request)
public function beforeCreate()
{
throw new Forbidden();
}
public function actionListLinked($params, $data, $request)
public function beforeListLinked()
{
throw new Forbidden();
}
public function actionMassUpdate($params, $data, $request)
public function beforeMassUpdate()
{
throw new Forbidden();
}
public function actionCreateLink($params, $data, $request)
public function beforeCreateLink()
{
throw new Forbidden();
}
public function actionRemoveLink($params, $data, $request)
public function beforeRemoveLink()
{
throw new Forbidden();
}
public function actionMassDelete($params, $data, $request)
public function beforeMassDelete()
{
throw new Forbidden();
}
public function beforeMassConvertCurrency()
{
throw new Forbidden();
}
}

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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
@@ -40,27 +40,32 @@ class AuthLogRecord extends \Espo\Core\Controllers\Record
}
}
public function actionUpdate($params, $data, $request)
public function beforeUpdate()
{
throw new Forbidden();
}
public function actionMassUpdate($params, $data, $request)
public function beforeMassUpdate()
{
throw new Forbidden();
}
public function actionCreate($params, $data, $request)
public function beforeCreate()
{
throw new Forbidden();
}
public function actionCreateLink($params, $data, $request)
public function beforeCreateLink()
{
throw new Forbidden();
}
public function actionRemoveLink($params, $data, $request)
public function beforeRemoveLink()
{
throw new Forbidden();
}
public function beforeMassConvertCurrency()
{
throw new Forbidden();
}

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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
@@ -80,17 +80,22 @@ class AuthToken extends \Espo\Core\Controllers\Record
throw new Forbidden();
}
public function actionCreate($params, $data, $request)
public function beforeCreate()
{
throw new Forbidden();
}
public function actionCreateLink($params, $data, $request)
public function beforeCreateLink()
{
throw new Forbidden();
}
public function actionRemoveLink($params, $data, $request)
public function beforeRemoveLink()
{
throw new Forbidden();
}
public function beforeMassConvertCurrency()
{
throw new Forbidden();
}

View File

@@ -0,0 +1,67 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 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,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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
@@ -46,12 +46,8 @@ class Email extends \Espo\Core\Controllers\Record
return $this->getRecordService()->getCopiedAttachments($id);
}
public function actionSendTestEmail($params, $data, $request)
public function postActionSendTestEmail($params, $data, $request)
{
if (!$request->isPost()) {
throw new BadRequest();
}
if (!$this->getAcl()->checkScope('Email')) {
throw new Forbidden();
}

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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
@@ -34,16 +34,18 @@ use \Espo\Core\Exceptions\BadRequest;
class EmailAccount extends \Espo\Core\Controllers\Record
{
public function actionGetFolders($params, $data, $request)
public function postActionGetFolders($params, $data)
{
return $this->getRecordService()->getFolders(array(
'host' => $request->get('host'),
'port' => $request->get('port'),
'ssl' => $request->get('ssl') === 'true',
'username' => $request->get('username'),
'password' => $request->get('password'),
'id' => $request->get('id')
));
return $this->getRecordService()->getFolders([
'host' => $data->host ?? null,
'port' => $data->port ?? null,
'ssl' => $data->ssl ?? false,
'username' => $data->username ?? null,
'password' => $data->password ?? null,
'id' => $data->id ?? null,
'emailAddress' => $data->emailAddress ?? null,
'userId' => $data->userId ?? null,
]);
}
protected function checkControllerAccess()
@@ -53,12 +55,8 @@ class EmailAccount extends \Espo\Core\Controllers\Record
}
}
public function actionTestConnection($params, $data, $request)
public function postActionTestConnection($params, $data, $request)
{
if (!$request->isPost()) {
throw new BadRequest();
}
if (is_null($data->password)) {
$emailAccount = $this->getEntityManager()->getEntity('EmailAccount', $data->id);
if (!$emailAccount || !$emailAccount->id) {
@@ -75,4 +73,3 @@ class EmailAccount extends \Espo\Core\Controllers\Record
return $this->getRecordService()->testConnection(get_object_vars($data));
}
}

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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
@@ -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'])) {

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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
@@ -94,25 +94,6 @@ class Extension extends \Espo\Core\Controllers\Record
return true;
}
public function actionCreate($params, $data, $request)
{
throw new Forbidden();
}
public function actionUpdate($params, $data, $request)
{
throw new Forbidden();
}
public function actionPatch($params, $data, $request)
{
throw new Forbidden();
}
public function actionListLinked($params, $data, $request)
{
throw new Forbidden();
}
public function actionDelete($params, $data, $request)
{
@@ -129,22 +110,42 @@ class Extension extends \Espo\Core\Controllers\Record
return true;
}
public function actionMassUpdate($params, $data, $request)
public function beforeCreate()
{
throw new Forbidden();
}
public function actionMassDelete($params, $data, $request)
public function beforeUpdate()
{
throw new Forbidden();
}
public function actionCreateLink($params, $data, $request)
public function beforePatch()
{
throw new Forbidden();
}
public function actionRemoveLink($params, $data, $request)
public function beforeListLinked()
{
throw new Forbidden();
}
public function beforeMassUpdate()
{
throw new Forbidden();
}
public function beforeMassDelete()
{
throw new Forbidden();
}
public function beforeCreateLink()
{
throw new Forbidden();
}
public function beforeRemoveLink()
{
throw new Forbidden();
}

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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
@@ -47,17 +47,27 @@ class ExternalAccount extends \Espo\Core\Controllers\Record
public function actionList($params, $data, $request)
{
$integrations = $this->getEntityManager()->getRepository('Integration')->find();
$arr = array();
$list = [];
foreach ($integrations as $entity) {
if ($entity->get('enabled') && $this->getMetadata()->get('integrations.' . $entity->id .'.allowUserAccounts')) {
$arr[] = array(
$userAccountAclScope = $this->getMetadata()->get(['integrations', $entity->id, 'userAccountAclScope']);
if ($userAccountAclScope) {
if (!$this->getAcl()->checkScope($userAccountAclScope)) {
continue;
}
}
$list[] = [
'id' => $entity->id
);
];
}
}
return array(
'list' => $arr
);
return [
'list' => $list
];
}
public function actionGetOAuth2Info($params, $data, $request)

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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
@@ -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,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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
@@ -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,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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
@@ -43,27 +43,27 @@ class Import extends \Espo\Core\Controllers\Record
}
}
public function actionPatch($params, $data, $request)
public function beforePatch()
{
throw new BadRequest();
}
public function actionUpdate($params, $data, $request)
public function beforeUpdate()
{
throw new BadRequest();
}
public function actionMassUpdate($params, $data, $request)
public function beforeMassUpdate()
{
throw new BadRequest();
}
public function actionCreateLink($params, $data, $request)
public function beforeCreateLink()
{
throw new BadRequest();
}
public function actionRemoveLink($params, $data, $request)
public function beforeRemoveLink()
{
throw new BadRequest();
}
@@ -93,9 +93,9 @@ class Import extends \Espo\Core\Controllers\Record
$attachment->set('contents', $contents);
$this->getEntityManager()->saveEntity($attachment);
return array(
return [
'attachmentId' => $attachment->id
);
];
}
public function actionRevert($params, $data, $request)
@@ -175,7 +175,7 @@ class Import extends \Espo\Core\Controllers\Record
$timezone = $data->timezone;
}
$importParams = array(
$importParams = [
'headerRow' => !empty($data->headerRow),
'delimiter' => $data->delimiter,
'textQualifier' => $data->textQualifier,
@@ -188,8 +188,9 @@ class Import extends \Espo\Core\Controllers\Record
'defaultValues' => $data->defaultValues,
'action' => $data->action,
'skipDuplicateChecking' => !empty($data->skipDuplicateChecking),
'idleMode' => !empty($data->idleMode)
);
'idleMode' => !empty($data->idleMode),
'silentMode' => !empty($data->silentMode),
];
if (property_exists($data, 'updateBy')) {
$importParams['updateBy'] = $data->updateBy;

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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
@@ -41,24 +41,20 @@ class InboundEmail extends \Espo\Core\Controllers\Record
}
}
public function actionGetFolders($params, $data, $request)
public function postActionGetFolders($params, $data, $request)
{
return $this->getRecordService()->getFolders(array(
'host' => $request->get('host'),
'port' => $request->get('port'),
'ssl' => $request->get('ssl') === 'true',
'username' => $request->get('username'),
'password' => $request->get('password'),
'id' => $request->get('id')
));
return $this->getRecordService()->getFolders([
'host' => $data->host ?? null,
'port' => $data->port ?? null,
'ssl' => $data->ssl ?? false,
'username' => $data->username ?? null,
'password' => $data->password ?? null,
'id' => $data->id ?? null,
]);
}
public function actionTestConnection($params, $data, $request)
public function postActionTestConnection($params, $data, $request)
{
if (!$request->isPost()) {
throw new BadRequest();
}
if (is_null($data->password)) {
$inboundEmail = $this->getEntityManager()->getEntity('InboundEmail', $data->id);
if (!$inboundEmail || !$inboundEmail->id) {
@@ -69,5 +65,4 @@ class InboundEmail extends \Espo\Core\Controllers\Record
return $this->getRecordService()->testConnection(get_object_vars($data));
}
}

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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
@@ -41,37 +41,37 @@ class Job extends \Espo\Core\Controllers\Record
}
}
public function actionCreate($params, $data, $request)
public function beforeCreate()
{
throw new Forbidden();
}
public function actionUpdate($params, $data, $request)
public function beforeUpdate()
{
throw new Forbidden();
}
public function actionPatch($params, $data, $request)
public function beforePatch()
{
throw new Forbidden();
}
public function actionListLinked($params, $data, $request)
public function beforeListLinked()
{
throw new Forbidden();
}
public function actionMassUpdate($params, $data, $request)
public function beforeMassUpdate()
{
throw new Forbidden();
}
public function actionCreateLink($params, $data, $request)
public function beforeCreateLink()
{
throw new Forbidden();
}
public function actionRemoveLink($params, $data, $request)
public function beforeRemoveLink()
{
throw new Forbidden();
}

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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
@@ -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,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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
@@ -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,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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
@@ -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,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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
@@ -35,7 +35,7 @@ class Notification extends \Espo\Core\Controllers\Record
{
public static $defaultAction = 'list';
public function actionList($params, $data, $request)
public function getActionList($params, $data, $request, $response)
{
$userId = $this->getUser()->id;
@@ -73,29 +73,28 @@ class Notification extends \Espo\Core\Controllers\Record
return $this->getService('Notification')->markAllRead($userId);
}
public function actionExport($params, $data, $request)
public function beforeExport()
{
throw new Error();
}
public function actionMassUpdate($params, $data, $request)
public function beforeMassUpdate()
{
throw new Error();
}
public function actionCreateLink($params, $data, $request)
public function beforeCreateLink()
{
throw new Error();
}
public function actionRemoveLink($params, $data, $request)
public function beforeRemoveLink()
{
throw new Error();
}
public function actionMerge($params, $data, $request)
public function beforeMerge()
{
throw new Error();
}
}

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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
@@ -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,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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
@@ -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,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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
@@ -29,18 +29,22 @@
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();
$data->jsLibs = $this->getMetadata()->get('app.jsLibs');
$data->jsLibs = $this->getMetadata()->get(['app', 'jsLibs']);
unset($data->loginView);
$loginView = $this->getMetadata()->get(['clientDefs', 'App', 'loginView']);
if ($loginView) {
$data->loginView = $loginView;
}
return $data;
}

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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
@@ -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,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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
@@ -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')
];
}
}
@@ -106,17 +110,28 @@ class User extends \Espo\Core\Controllers\Record
return $this->getService('User')->passwordChangeRequest($userName, $emailAddress, $url);
}
public function actionCreateLink($params, $data, $request)
public function postActionGenerateNewApiKey($params, $data, $request)
{
if (empty($data->id)) throw new BadRequest();
if (!$this->getUser()->isAdmin()) throw new Forbidden();
return parent::actionCreateLink($params, $data, $request);
return $this->getRecordService()->generateNewApiKeyForEntity($data->id)->getValueMap();
}
public function actionRemoveLink($params, $data, $request)
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();
}
return parent::actionRemoveLink($params, $data, $request);
public function beforeRemoveLink($params, $data, $request)
{
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-2019 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-2019 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,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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
@@ -124,6 +124,11 @@ class Acl
return $this->getAclManager()->getScopeForbiddenFieldList($this->getUser(), $scope, $action, $thresholdLevel);
}
public function getScopeForbiddenLinkList($scope, $action = 'read', $thresholdLevel = 'no')
{
return $this->getAclManager()->getScopeForbiddenLinkList($this->getUser(), $scope, $action, $thresholdLevel);
}
public function checkUserPermission($target, $permissionType = 'userPermission')
{
return $this->getAclManager()->checkUserPermission($this->getUser(), $target, $permissionType);

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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
@@ -36,15 +36,17 @@ use \Espo\ORM\Entity;
class Base implements Injectable
{
protected $dependencies = array(
protected $dependencyList = [
'config',
'entityManager',
'aclManager'
);
'aclManager',
];
protected $dependencies = []; // for backward compatibility
protected $scope;
protected $injections = array();
protected $injections = [];
protected $ownerUserIdAttribute = null;
@@ -79,12 +81,12 @@ class Base implements Injectable
protected function addDependency($name)
{
$this->dependencies[] = $name;
$this->dependencyList[] = $name;
}
public function getDependencyList()
{
return $this->dependencies;
return array_merge($this->dependencyList, $this->dependencies);
}
protected function getConfig()

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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
@@ -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,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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
@@ -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;

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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
@@ -41,9 +41,9 @@ class AclManager
private $metadata;
private $implementationHashMap = array();
private $implementationHashMap = [];
private $tableHashMap = array();
private $tableHashMap = [];
protected $tableClassName = '\\Espo\\Core\\Acl\\Table';
@@ -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')
);
}
@@ -93,8 +94,8 @@ class AclManager
if (class_exists($className)) {
$acl = new $className($scope);
$dependencies = $acl->getDependencyList();
foreach ($dependencies as $name) {
$dependencyList = $acl->getDependencyList();
foreach ($dependencyList as $name) {
$acl->inject($name, $this->getContainer()->get($name));
}
$this->implementationHashMap[$scope] = $acl;
@@ -309,6 +310,22 @@ class AclManager
return $list;
}
public function getScopeForbiddenLinkList(User $user, $scope, $action = 'read', $thresholdLevel = 'no')
{
$list = [];
if ($thresholdLevel === 'no') {
$list = array_merge(
$list,
$this->getScopeRestrictedLinkList($scope, $this->getGlobalRestrictionTypeList($user, $action))
);
$list = array_values($list);
}
return $list;
}
public function checkUserPermission(User $user, $target, $permissionType = 'userPermission')
{
$permission = $this->get($user, $permissionType);

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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
@@ -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,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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
@@ -99,7 +99,7 @@ class Application
exit;
}
public function runEntryPoint($entryPoint, $data = array(), $final = false)
public function runEntryPoint($entryPoint, $data = [], $final = false)
{
if (empty($entryPoint)) {
throw new \Error();
@@ -133,7 +133,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) {}
}
}
@@ -157,6 +159,11 @@ class Application
$interval = $this->getConfig()->get('daemonInterval');
$timeout = $this->getConfig()->get('daemonProcessTimeout');
$phpExecutablePath = $this->getConfig()->get('phpExecutablePath');
if (!$phpExecutablePath) {
$phpExecutablePath = (new \Symfony\Component\Process\PhpExecutableFinder)->find();
}
if (!$maxProcessNumber || !$interval) {
$GLOBALS['log']->error("Daemon config params are not set.");
return;
@@ -169,18 +176,19 @@ class Application
foreach ($processList as $i => $process) {
if ($process->isRunning()) {
$runningCount++;
} else if ($process->isRunning()) {
} else {
unset($processList[$i]);
}
}
$processList = array_values($processList);
if (count($runningCount) >= $maxProcessNumber) {
if ($runningCount >= $maxProcessNumber) {
$toSkip = true;
}
if (!$toSkip) {
$process = new \Symfony\Component\Process\Process(['php', 'cron.php']);
$process = new \Symfony\Component\Process\Process([$phpExecutablePath, 'cron.php']);
$process->setTimeout($timeout);
$process->run();
$processList[] = $process;
}
sleep($interval);
}
@@ -207,6 +215,15 @@ class Application
$dataManager->clearCache();
}
public function runCommand(string $command)
{
$auth = $this->createAuth();
$auth->useNoAuth();
$consoleCommandManager = $this->getContainer()->get('consoleCommandManager');
return $consoleCommandManager->run($command);
}
public function isInstalled()
{
$config = $this->getConfig();
@@ -247,7 +264,7 @@ class Application
}
$routeOptions = call_user_func($route->getCallable());
$routeKeys = is_array($routeOptions) ? array_keys($routeOptions) : array();
$routeKeys = is_array($routeOptions) ? array_keys($routeOptions) : [];
if (!in_array('controller', $routeKeys, true)) {
return $container->get('output')->render($routeOptions);
@@ -299,8 +316,6 @@ class Application
protected function getRouteList()
{
$routes = new \Espo\Core\Utils\Route($this->getConfig(), $this->getMetadata(), $this->getContainer()->get('fileManager'));
return $routes->getAll();
}
@@ -315,7 +330,7 @@ class Application
continue;
}
$currentRoute = $this->getSlim()->$method($route['route'], function() use ($route) { //todo change "use" for php 5.4
$currentRoute = $this->getSlim()->$method($route['route'], function() use ($route) {
return $route['params'];
});
@@ -328,30 +343,7 @@ class Application
protected function initAutoloads()
{
$autoload = new \Espo\Core\Utils\Autoload($this->getConfig(), $this->getMetadata(), $this->getContainer()->get('fileManager'));
try {
$autoloadList = $autoload->getAll();
} catch (\Exception $e) {} //bad permissions
if (empty($autoloadList)) {
return;
}
$namespacesPath = 'vendor/composer/autoload_namespaces.php';
$existingNamespaces = file_exists($namespacesPath) ? include($namespacesPath) : array();
if (!empty($existingNamespaces) && is_array($existingNamespaces)) {
$existingNamespaces = array_keys($existingNamespaces);
}
$classLoader = new \Composer\Autoload\ClassLoader();
foreach ($autoloadList as $prefix => $path) {
if (!in_array($prefix, $existingNamespaces)) {
$classLoader->add($prefix, $path);
}
}
$classLoader->register(true);
$autoload->register();
}
public function setBasePath($basePath)
@@ -370,7 +362,9 @@ class Application
return $_GET['portalId'];
}
if (!empty($_COOKIE['auth-token'])) {
$token = $this->getContainer()->get('entityManager')->getRepository('AuthToken')->where(array('token' => $_COOKIE['auth-token']))->findOne();
$token =
$this->getContainer()->get('entityManager')
->getRepository('AuthToken')->where(['token' => $_COOKIE['auth-token']])->findOne();
if ($token && $token->get('portalId')) {
return $token->get('portalId');

View File

@@ -0,0 +1,78 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 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;
class CommandManager
{
private $container;
public function __construct(\Espo\Core\Container $container)
{
$this->container = $container;
}
public function run(string $command)
{
$command = ucfirst(\Espo\Core\Utils\Util::hyphenToCamelCase($command));
$argumentList = [];
$options = [];
$flagList = [];
$skipIndex = 1;
if (isset($_SERVER['argv'][0]) && $_SERVER['argv'][0] === 'command.php') {
$skipIndex = 2;
}
foreach ($_SERVER['argv'] as $i => $item) {
if ($i < $skipIndex) continue;
if (strpos($item, '--') === 0 && strpos($item, '=') > 2) {
list($name, $value) = explode('=', substr($item, 2));
$name = \Espo\Core\Utils\Util::hyphenToCamelCase($name);
$options[$name] = $value;
} else if (strpos($item, '-') === 0) {
$flagList[] = substr($item, 1);
} else {
$argumentList[] = $item;
}
}
$className = '\\Espo\\Core\\Console\\Commands\\' . $command;
$className = $this->container->get('metadata')->get(['app', 'consoleCommands', $command, 'className'], $className);
if (!class_exists($className)) {
$msg = "Command '{$command}' does not exist.";
echo $msg . "\n";
throw new \Espo\Core\Exceptions\Error($msg);
}
$impl = new $className($this->container);
return $impl->run($options, $flagList, $argumentList);
}
}

View File

@@ -0,0 +1,87 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 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 AclCheck extends Base
{
public function run($options)
{
$userId = $options['userId'] ?? null;
$scope = $options['scope'] ?? null;
$id = $options['id'] ?? null;
$action = $options['action'] ?? null;
if (empty($userId)) return;
if (empty($scope)) return;
if (empty($id)) return;
$container = $this->getContainer();
$entityManager = $container->get('entityManager');
$user = $entityManager->getEntity('User', $userId);
if (!$user) return;
if ($user->isPortal()) {
$portalIdList = $user->getLinkMultipleIdList('portals');
foreach ($portalIdList as $portalId) {
$application = new \Espo\Core\Portal\Application($portalId);
$containerPortal = $application->getContainer();
$entityManager = $containerPortal->get('entityManager');
$user = $entityManager->getEntity('User', $userId);
if (!$user) return;
$result = $this->check($user, $scope, $id, $action, $containerPortal);
if ($result) {
return 'true';
}
}
return;
}
if ($this->check($user, $scope, $id, $action, $container)) {
return 'true';
}
}
protected function check($user, $scope, $id, $action, $container)
{
$entityManager = $container->get('entityManager');
$entity = $entityManager->getEntity($scope, $id);
if (!$entity) return;
$aclManager = $container->get('aclManager');
if ($aclManager->check($user, $entity, $action)) {
return true;
}
}
}

View File

@@ -0,0 +1,56 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 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 AuthTokenCheck extends Base
{
public function run($options, $flagList, $argumentList)
{
$token = $argumentList[0] ?? null;
if (empty($token)) return;
$entityManager = $this->getContainer()->get('entityManager');
$authToken = $entityManager->getRepository('AuthToken')->where([
'token' => $token,
'isActive' => true,
])->findOne();
if (!$authToken) return;
if (!$authToken->get('userId')) return;
$userId = $authToken->get('userId');
$user = $entityManager->getEntity('User', $userId);
if (!$user) return;
return $user->id;
}
}

View File

@@ -0,0 +1,45 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 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;
abstract class Base
{
private $container;
public function __construct(\Espo\Core\Container $container)
{
$this->container = $container;
}
protected function getContainer()
{
return $this->container;
}
}

View File

@@ -0,0 +1,39 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 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 ClearCache extends Base
{
public function run()
{
$this->getContainer()->get('dataManager')->clearCache();
echo "Cache has been cleared.\n";
}
}

View File

@@ -0,0 +1,39 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 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 Rebuild extends Base
{
public function run()
{
$this->getContainer()->get('dataManager')->rebuild();
echo "Rebuild has been done.\n";
}
}

View File

@@ -0,0 +1,68 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 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 RunJob extends Base
{
public function run($options, $flags, $argumentList)
{
$jobName = $options['job'] ?? null;
$targetId = $options['targetId'] ?? null;
$targetType = $options['targetType'] ?? null;
if (!$jobName && count($argumentList)) {
$jobName = $argumentList[0];
}
if (!$jobName) echo "No job specified.\n";
$jobName = ucfirst(\Espo\Core\Utils\Util::hyphenToCamelCase($jobName));
$container = $this->getContainer();
$entityManager = $container->get('entityManager');
$job = $entityManager->createEntity('Job', [
'name' => $jobName,
'job' => $jobName,
'targetType' => $targetType,
'targetId' => $targetId,
]);
$cronManager = new \Espo\Core\CronManager($container);
$result = $cronManager->runJob($job);
if ($result) {
echo "Job '{$jobName}' has been executed.\n";
} else {
echo "Job '{$jobName}' failed to execute.\n";
}
}
}

View File

@@ -0,0 +1,406 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2019 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;
use Espo\Core\Exceptions\Error;
class Upgrade extends Base
{
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;
$nextVersion = $infoData->nextVersion ?? null;
$lastVersion = $infoData->lastVersion ?? null;
$fromVersion = $this->getConfig()->get('version');
fwrite(\STDOUT, "Current version is {$fromVersion}.\n");
if (!$nextVersion) {
echo "There are no available upgrades.\n";
return;
}
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, "Downloading...");
$upgradePackageFilePath = $this->downloadFile($infoData->nextPackage);
if (!$upgradePackageFilePath) return;
fwrite(\STDOUT, "\n");
fwrite(\STDOUT, "Upgrading... This may take a while...");
$upgradeId = $this->upload($upgradePackageFilePath);
try {
$this->runUpgradeProcess($upgradeId, $params);
} catch (\Exception $e) {
$error = $e->getMessage();
}
$this->getFileManager()->unlink($upgradePackageFilePath);
fwrite(\STDOUT, "\n");
if (!empty($error)) {
echo $error;
return;
}
$app = new \Espo\Core\Application();
$currentVerison = $app->getContainer()->get('config')->get('version');
fwrite(\STDOUT, "Upgrade is complete. Current version is {$currentVerison}.\n");
if ($lastVersion && $lastVersion !== $currentVerison && $fromVersion !== $currentVerison) {
fwrite(\STDOUT, "Newer version is available. Run command again to upgrade.\n");
return;
}
if ($lastVersion && $lastVersion === $currentVerison) {
fwrite(\STDOUT, "You have the latest version.\n");
return;
}
}
protected function upload($filePath)
{
try {
$fileData = file_get_contents($filePath);
$fileData = 'data:application/zip;base64,' . base64_encode($fileData);
$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()
{
$fh = fopen('php://stdin', 'r');
$inputLine = trim(fgets($fh));
fclose($fh);
if (strtolower($inputLine) !== 'y'){
return false;
}
return true;
}
protected function getConfig()
{
return $this->getContainer()->get('config');
}
protected function getFileManager()
{
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/';
$url = $this->getConfig()->get('upgradeNextVersionUrl', $url);
$url .= '?fromVersion=' . $this->getConfig()->get('version');
$ch = curl_init();
curl_setopt($ch, \CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, \CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, \CURLOPT_URL, $url);
$result = curl_exec($ch);
curl_close($ch);
try {
$data = json_decode($result);
} catch (\Exception $e) {
echo "Could not parse info about next version.\n";
return;
}
if (!$data) {
echo "Could not get info about next version.\n";
return;
}
return $data;
}
protected function downloadFile($url)
{
$localFilePath = 'data/upload/upgrades/' . \Espo\Core\Utils\Util::generateId() . '.zip';
$this->getFileManager()->putContents($localFilePath, '');
if (is_file($url)) {
copy($url, $localFilePath);
} else {
$options = [
CURLOPT_FILE => fopen($localFilePath, 'w'),
CURLOPT_TIMEOUT => 3600,
CURLOPT_URL => $url
];
$ch = curl_init();
curl_setopt_array($ch, $options);
curl_exec($ch);
curl_close($ch);
}
if (!$this->getFileManager()->isFile($localFilePath)) {
echo "\nCould not download upgrade file.\n";
$this->getFileManager()->unlink($localFilePath);
return;
}
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-2019 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,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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
@@ -34,15 +34,11 @@ class Container
private $data = [];
/**
* Constructor
*/
public function __construct()
{
}
public function get($name)
public function get(string $name)
{
if (empty($this->data[$name])) {
$this->load($name);
@@ -67,7 +63,7 @@ class Container
} else {
try {
$className = $this->get('metadata')->get('app.loaders.' . ucfirst($name));
$className = $this->get('metadata')->get(['app', 'loaders', ucfirst($name)]);
} catch (\Exception $e) {}
if (!isset($className) || !class_exists($className)) {
@@ -86,10 +82,10 @@ class Container
return null;
}
protected function getServiceClassName($name, $default)
public function getServiceClassName(string $name, string $default)
{
$metadata = $this->get('metadata');
$className = $metadata->get('app.serviceContainer.classNames.' . $name, $default);
$className = $metadata->get(['app', 'serviceContainer', 'classNames', $name], $default);
return $className;
}
@@ -119,7 +115,7 @@ class Container
$rotation = $config->get('logger.rotation', true);
$log = new \Espo\Core\Utils\Log('Espo');
$levelCode = $log->getLevelCode($config->get('logger.level', 'WARNING'));
$levelCode = $log::toMonologLevel($config->get('logger.level', 'WARNING'));
if ($rotation) {
$maxFileNumber = $config->get('logger.maxFileNumber', 30);
@@ -131,7 +127,7 @@ class Container
$errorHandler = new \Monolog\ErrorHandler($log);
$errorHandler->registerExceptionHandler(null, false);
$errorHandler->registerErrorHandler(array(), false);
$errorHandler->registerErrorHandler([], false);
return $log;
}
@@ -176,15 +172,6 @@ class Container
);
}
protected function loadMailSender()
{
$className = $this->getServiceClassName('mailSender', '\\Espo\\Core\\Mail\\Sender');
return new $className(
$this->get('config'),
$this->get('entityManager')
);
}
protected function loadDateTime()
{
return new \Espo\Core\Utils\DateTime(
@@ -209,19 +196,6 @@ class Container
);
}
protected function loadSelectManagerFactory()
{
return new \Espo\Core\SelectManagerFactory(
$this->get('entityManager'),
$this->get('user'),
$this->get('acl'),
$this->get('aclManager'),
$this->get('metadata'),
$this->get('config'),
$this->get('injectableFactory')
);
}
protected function loadNotificatorFactory()
{
return new \Espo\Core\NotificatorFactory(
@@ -317,7 +291,7 @@ class Container
'en_US',
$this->get('fileManager'),
$this->get('metadata'),
$this->get('useCache')
$this->get('config')->get('useCache')
);
}
@@ -327,7 +301,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')
);
}
@@ -374,15 +348,6 @@ class Container
);
}
protected function loadClientManager()
{
return new \Espo\Core\Utils\ClientManager(
$this->get('config'),
$this->get('themeManager'),
$this->get('metadata')
);
}
protected function loadInjectableFactory()
{
return new \Espo\Core\InjectableFactory(
@@ -395,4 +360,3 @@ class Container
$this->set('user', $user);
}
}

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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
@@ -69,9 +69,7 @@ class Record extends Base
$id = $params['id'];
$entity = $this->getRecordService()->read($id);
if (empty($entity)) {
throw new NotFound();
}
if (!$entity) throw new NotFound();
return $entity->getValueMap();
}
@@ -142,9 +140,16 @@ class Record extends Base
$result = $this->getRecordService()->find($params);
if (is_array($result)) {
return [
'total' => $result['total'],
'list' => isset($result['collection']) ? $result['collection']->getValueMapList() : $result['list']
];
}
return [
'total' => $result['total'],
'list' => isset($result['collection']) ? $result['collection']->getValueMapList() : $result['list']
'total' => $result->total,
'list' => isset($result->collection) ? $result->collection->getValueMapList() : $result->list
];
}
@@ -197,10 +202,17 @@ class Record extends Base
$result = $this->getRecordService()->findLinked($id, $link, $params);
return array(
'total' => $result['total'],
'list' => isset($result['collection']) ? $result['collection']->getValueMapList() : $result['list']
);
if (is_array($result)) {
return [
'total' => $result['total'],
'list' => isset($result['collection']) ? $result['collection']->getValueMapList() : $result['list']
];
}
return (object) [
'total' => $result->total,
'list' => isset($result->collection) ? $result->collection->getValueMapList() : $result->list
];
}
public function actionDelete($params, $data, $request)
@@ -296,33 +308,26 @@ class Record extends Base
$attributes = $data->attributes;
$idsUpdated = $this->getRecordService()->massUpdate($attributes, $params);
$idsUpdated = $this->getRecordService()->massUpdate($params, $attributes);
return $idsUpdated;
}
public function actionMassDelete($params, $data, $request)
public function postActionMassDelete($params, $data, $request)
{
if (!$request->isPost()) {
throw new BadRequest();
}
if (!$this->getAcl()->check($this->name, 'delete')) {
throw new Forbidden();
}
$params = array();
if (property_exists($data, 'where') && !empty($data->byWhere)) {
$where = json_decode(json_encode($data->where), true);
$params['where'] = $where;
if (property_exists($data, 'selectData')) {
$params['selectData'] = json_decode(json_encode($data->selectData), true);
$actionParams = $this->getMassActionParamsFromData($data);
if (array_key_exists('where', $actionParams)) {
if ($this->getAcl()->get('massUpdatePermission') !== 'yes') {
throw new Forbidden();
}
}
if (property_exists($data, 'ids')) {
$params['ids'] = $data->ids;
}
return $this->getRecordService()->massDelete($params);
return $this->getRecordService()->massDelete($actionParams);
}
public function actionCreateLink($params, $data, $request)
@@ -496,4 +501,85 @@ class Record extends Base
return $this->getRecordService()->massUnfollow($params);
}
protected function getMassActionParamsFromData($data)
{
$params = [];
if (property_exists($data, 'where') && !empty($data->byWhere)) {
$where = json_decode(json_encode($data->where), true);
$params['where'] = $where;
if (property_exists($data, 'selectData')) {
$params['selectData'] = json_decode(json_encode($data->selectData), true);
}
}
if (property_exists($data, 'ids')) {
$params['ids'] = $data->ids;
}
return $params;
}
public function postActionMassRecalculateFormula($params, $data, $request)
{
if (!$this->getUser()->isAdmin()) throw new Forbidden();
if (!$this->getAcl()->check($this->name, 'edit')) throw new Forbidden();
return $this->getRecordService()->massRecalculateFormula($this->getMassActionParamsFromData($data));
}
public function postActionRestoreDeleted($params, $data, $request)
{
if (!$this->getUser()->isAdmin()) throw new Forbidden();
$id = $data->id ?? null;
if (!$id) throw new Forbidden();
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();
$fieldList = $data->fieldList ?? null;
if (!empty($data->field)) {
if (!is_array($fieldList)) $fieldList = [];
$fieldList[] = $data->field;
}
$params = [];
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;
}
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($params, $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,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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
@@ -59,7 +59,7 @@ class CronManager
'* * *',
'* * * *',
'* * * * *',
'* * * * * *'
'* * * * * *',
];
const PENDING = 'Pending';
@@ -182,8 +182,6 @@ class CronManager
/**
* Run Cron
*
* @return void
*/
public function run()
{
@@ -299,7 +297,7 @@ class CronManager
$this->runJob($job);
}
public function runJob($job)
public function runJob(\Espo\Entities\Job $job)
{
$isSuccess = true;
$skipLog = false;
@@ -307,10 +305,12 @@ class CronManager
try {
if ($job->get('scheduledJobId')) {
$this->runScheduledJob($job);
} else if ($job->get('job')) {
$this->runJobByName($job);
} else {
$this->runService($job);
}
} catch (\Exception $e) {
} catch (\Throwable $e) {
$isSuccess = false;
if ($e->getCode() === -1) {
$job->set('attempts', 0);
@@ -333,6 +333,9 @@ class CronManager
if ($job->get('scheduledJobId') && !$skipLog) {
$this->getCronScheduledJobUtil()->addLogRecord($job->get('scheduledJobId'), $status, null, $job->get('targetId'), $job->get('targetType'));
}
if ($isSuccess) return true;
return false;
}
protected function runScheduledJob($job)
@@ -340,18 +343,14 @@ class CronManager
$jobName = $job->get('scheduledJobJob');
$className = $this->getScheduledJobUtil()->get($jobName);
if ($className === false) {
throw new NotFound();
}
if ($className === false) throw new Error("No class name for job {$jobName}.");
$jobClass = new $className($this->container);
$method = 'run';
if (!method_exists($jobClass, $method)) {
throw new NotFound();
}
if (!method_exists($jobClass, $method)) throw new Error();
$data = null;
if ($job->get('data')) {
$data = $job->get('data');
}
@@ -359,43 +358,47 @@ class CronManager
$jobClass->$method($data, $job->get('targetId'), $job->get('targetType'));
}
/**
* Run Service
*
* @param array $job
*
* @return void
*/
protected function runService($job)
{
$serviceName = $job->get('serviceName');
if (!$serviceName) {
throw new Error('Job with empty serviceName.');
throw new Error("Job with empty serviceName.");
}
if (!$this->getServiceFactory()->checkExists($serviceName)) {
throw new NotFound();
}
if (!$this->getServiceFactory()->checkExists($serviceName)) throw new Error();
$service = $this->getServiceFactory()->create($serviceName);
$methodNameDeprecated = $job->get('method');
$methodName = $job->get('methodName');
if (!$methodName) {
throw new Error('Job with empty methodName.');
}
if (!$methodName) throw new Error('Job with empty methodName.');
if (!method_exists($service, $methodName)) {
throw new NotFound();
}
if (!method_exists($service, $methodName)) throw new Error();
$data = $job->get('data');
$service->$methodName($data, $job->get('targetId'), $job->get('targetType'));
}
protected function runJobByName($job)
{
$jobName = $job->get('job');
$className = $this->getScheduledJobUtil()->get($jobName);
if ($className === false) throw new Error("No class name for job {$jobName}.");
$jobClass = new $className($this->container);
$method = 'run';
if (!method_exists($jobClass, $method)) throw new Error();
$data = $job->get('data') ?: null;
$jobClass->$method($data, $job->get('targetId'), $job->get('targetType'));
}
protected function createJobsFromScheduledJobs()
{
$activeScheduledJobList = $this->getCronScheduledJobUtil()->getActiveScheduledJobList();

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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
@@ -119,6 +119,7 @@ class DataManager
$metadata->init(true);
$ormData = $this->getContainer()->get('ormMetadata')->getData(true);
$this->getContainer()->get('entityManager')->setMetadata($ormData);
$this->updateCacheTimestamp();

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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

View File

@@ -3,8 +3,8 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
* Copyright (C) 2014-2019 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

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