Compare commits

..

1018 Commits
4.0.2 ... 4.4.0

Author SHA1 Message Date
yuri
6623d9fa8b change install footer 2017-01-27 12:09:26 +02:00
yuri
774984a5a4 fix field manager tpl 2017-01-26 16:54:19 +02:00
yuri
30dec6bc02 fix css 2017-01-26 15:34:10 +02:00
yuri
3e56a1117d mass email filters 2017-01-26 15:08:12 +02:00
yuri
c28d680bf4 fix labels 2017-01-26 12:46:38 +02:00
yuri
89aa2950fa fix person name 2017-01-26 12:45:03 +02:00
yuri
d1c13bf03f css 2017-01-26 12:44:55 +02:00
yuri
5dc79086b7 fix attachment 2017-01-26 10:54:04 +02:00
yuri
406d241bc8 fix css 2017-01-25 14:57:21 +02:00
yuri
021760d75f fix css 2017-01-25 14:53:17 +02:00
yuri
77bae5a5e2 error message 2017-01-25 13:56:04 +02:00
yuri
d2cacdc8d9 text field fix 2017-01-25 11:12:59 +02:00
yuri
30097c32b5 fix list view 2017-01-24 17:35:56 +02:00
yuri
c114e08541 fix css 2017-01-24 16:00:26 +02:00
yuri
bf660e81ae css fix 2017-01-24 11:18:54 +02:00
yuri
cf9c4ec0b1 word wrapping in list view 2017-01-23 17:15:50 +02:00
yuri
7649f4d680 user acl fixes 2017-01-23 13:27:59 +02:00
yuri
9d238d270e css fixes 2017-01-23 12:47:00 +02:00
yuri
b89a128292 default tab list and theme change 2017-01-23 12:35:53 +02:00
yuri
ac2e244b11 fix notification update 2017-01-20 17:19:51 +02:00
yuri
76551a59fe modal fixes 2017-01-20 15:46:07 +02:00
yuri
61c1732b9c export fix 2017-01-20 14:34:47 +02:00
yuri
c54c4e9a17 cleanup 2017-01-19 16:29:40 +02:00
yuri
9bc7cefbc5 test fix 2017-01-19 16:22:27 +02:00
yuri
9a918e5d97 after x days filter 2017-01-19 15:21:14 +02:00
yuri
5f578298b4 Merge branch 'master' of https://github.com/espocrm/espocrm 2017-01-19 12:26:36 +02:00
Alasdair Campbell
cf63b1c779 Add .editorconfig file (#373) 2017-01-19 12:26:19 +02:00
yuri
85992dde1a installer fix 2017-01-19 11:58:55 +02:00
yuri
17dac5bde8 diff change 2017-01-18 16:18:21 +02:00
yuri
3887acfbf8 Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2017-01-18 16:07:45 +02:00
Taras Machyshyn
ad5a0b2060 Added support PHP 7.1 2017-01-18 16:06:06 +02:00
yuri
bb2ddb3d1d version 2017-01-18 16:05:33 +02:00
yuri
6a6e0adb57 css change 2017-01-18 15:21:59 +02:00
yuri
4fa8d9b919 ui dialog change 2017-01-18 15:21:49 +02:00
yuri
908d2f69d3 css change 2017-01-18 11:13:26 +02:00
yuri
4c3c0db2c5 theme changes 2017-01-17 15:28:15 +02:00
yuri
fb4db584c2 Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2017-01-17 15:11:57 +02:00
yuri
fcf645e73f changes theme 2017-01-17 15:10:09 +02:00
Taras Machyshyn
fac5704c9e Added 2017 year 2017-01-17 15:07:08 +02:00
Taras Machyshyn
a3548bc194 Improved crontab command for scheduled jobs 2017-01-17 13:59:03 +02:00
yuri
055a7daad5 theme change 2017-01-17 13:02:24 +02:00
Taras Machyshyn
e4a8bc38df Merge branch 'hotfix/4.3.2' 2017-01-17 12:59:58 +02:00
yuri
86bd451b05 fix theme 2017-01-17 12:44:53 +02:00
yuri
1101510817 cleanup 2017-01-17 12:27:33 +02:00
yuri
01d8dddeac portal tab list 2017-01-17 12:27:21 +02:00
yuri
ee2a8d2a39 theme changes 2017-01-17 12:21:15 +02:00
yuri
d8894d6645 fix nav 2017-01-16 18:03:34 +02:00
yuri
07daf6f5a0 rename theme 2017-01-16 16:44:40 +02:00
yuri
496ede69ac navbar: more delimiter 2017-01-16 16:34:45 +02:00
yuri
6068cbf3cc fix settings page title 2017-01-16 15:57:10 +02:00
yuri
7264fce1dd Merge branch 'hotfix/4.3.2' 2017-01-13 17:45:05 +02:00
yuri
a8a1acdbd0 fix dashlet translation 2017-01-13 17:44:54 +02:00
yuri
059c43f840 slim version certain 2017-01-13 16:56:10 +02:00
yuri
a5cb393447 ditch mcrypt 2017-01-13 16:12:17 +02:00
yuri
0b98c7beb5 fix theme 2017-01-12 16:00:13 +02:00
yuri
be735e572e sortable side panels 2017-01-12 15:28:29 +02:00
yuri
807dcb7901 theme changes 2017-01-12 12:19:12 +02:00
yuri
19241aca7a smtp admin changes 2017-01-12 12:10:59 +02:00
yuri
05e1145084 fix z index 2017-01-12 12:06:44 +02:00
yuri
22972b32b4 internal smtp 2017-01-12 11:58:39 +02:00
yuri
0d89218031 theme changes 2017-01-11 17:57:27 +02:00
yuri
baa0dd91d0 theme changes 2017-01-11 16:48:42 +02:00
yuri
09c11b2d7a calendar shadow 2017-01-11 16:37:00 +02:00
yuri
bb26bc1eab theme fixes 2017-01-11 16:31:41 +02:00
yuri
26a60fb68b theme lang change 2017-01-11 15:15:05 +02:00
yuri
3cebf73464 rtl and new cool theme 2017-01-11 15:11:12 +02:00
yuri
9e8550b572 Merge branch 'master' of https://github.com/espocrm/espocrm 2017-01-10 16:05:29 +02:00
yuri
cb8b6654e7 Merge branch 'hotfix/4.3.2' 2017-01-10 16:05:03 +02:00
yuri
8969866aec fix nl in email template text field 2017-01-10 16:04:54 +02:00
Taras Machyshyn
91ba7dfaf0 Fixed warnig for preg_match for some class names 2017-01-10 15:20:16 +02:00
Mauricio Panuncio
deb4dad643 Translate es (#359)
* Translate es_ES: Globals. Admin.

* Tickets.

* Emails.

* New translations (missing).

* New translations (missing) II.

* Various.

* Opportunities: Improvement. Self-explanatory names.

* Some small fixes.

* Undo Tickets. Redo Casos.

* Fix: 'Lenguaje' to 'Idioma'.

* Fix some erros in the installation screens.

* Fix some erros in the installation screens II.

* Chamge mod

* Translate. Round 1.

* Translate ES. Stream: Actividades to Historia.

* Translate ES. Lead: Potencial to Posible Cliente.

* Translate ES. Log: Registros.

* Translate ES. Round 2.

* Translate ES. Round 3.

* Translate ES. Round 4.

* Translate ES. New translations.

* Translate ES. Fix bugs.

* Translate ES. Activity: Actividades to Actividades planeadas.

* Translate ES. Hostory: Historia to Historial de aactividades.

* Translate ES. Improvements.
2017-01-09 20:57:42 +02:00
yuri
720635d7a3 older than x days filter 2017-01-09 13:18:35 +02:00
yuri
e5e082c48b permissions 2017-01-09 12:41:52 +02:00
yuri
d8b2a13c20 mass follow/unfollow actions 2017-01-09 12:36:34 +02:00
yuri
535607e089 Merge branch 'hotfix/4.3.2' 2017-01-09 11:42:18 +02:00
yuri
20f15e749e automatically follow case by portal user 2017-01-09 11:42:09 +02:00
yuri
d14faee83d es_ES lang 2017-01-09 11:12:15 +02:00
yuri
a53ccb66c5 change permissions 2017-01-09 11:02:57 +02:00
yuri
90bc01e467 Merge branch 'master' of https://github.com/espocrm/espocrm 2017-01-09 10:50:44 +02:00
Yuri Kuznetsov
399ac5348a Revert "es_ES - Update translations to today" (#357) 2017-01-08 00:18:39 +02:00
Mauricio Panuncio
61c8a125c3 es_ES - Update translations to today (#356)
* Translate es_ES: Globals. Admin.

* Tickets.

* Emails.

* New translations (missing).

* New translations (missing) II.

* Various.

* Opportunities: Improvement. Self-explanatory names.

* Some small fixes.

* Undo Tickets. Redo Casos.

* Fix: 'Lenguaje' to 'Idioma'.

* Fix some erros in the installation screens.

* Fix some erros in the installation screens II.

* Chamge mod

* Translate. Round 1.

* Translate ES. Stream: Actividades to Historia.

* Translate ES. Lead: Potencial to Posible Cliente.

* Translate ES. Log: Registros.

* Translate ES. Round 2.

* Translate ES. Round 3.

* Translate ES. Round 4.
2017-01-07 18:13:15 +02:00
yuri
84f261752f fix calendar edit 2017-01-05 17:32:39 +02:00
ayman-alkom
ec37ea62a2 add number fields to text filter list (#354) 2017-01-05 11:25:08 +02:00
ayman-alkom
6736f15f61 add number fields to text filter list (#354) 2017-01-05 11:23:13 +02:00
Alasdair Campbell
bc64e7ffe4 Compose from email address not sorted by primary (#351) 2017-01-04 12:54:25 +02:00
Alasdair Campbell
1e51006786 Compose from email address not sorted by primary (#351) 2017-01-04 12:53:10 +02:00
yuri
7357054517 Merge branch 'hotfix/4.3.2' 2017-01-04 12:49:02 +02:00
yuri
b25ff943e4 fix pdf footer 2017-01-04 12:48:53 +02:00
yuri
4446bc520b about 2017-01-03 12:58:18 +02:00
yuri
924d55de6e Merge branch 'hotfix/4.3.2' 2017-01-03 12:29:07 +02:00
yuri
eab9705e08 fix calendar 2017-01-03 12:28:56 +02:00
yuri
25ccc9f685 fix orm 2017-01-03 12:24:12 +02:00
yuri
62894366e6 fix opp stage change 2016-12-30 15:50:52 +02:00
yuri
d06c3f82c3 naming 2016-12-30 15:39:35 +02:00
yuri
a0fd9e05e8 read only param 2016-12-29 17:24:35 +02:00
yuri
dd3e52f230 metadata unset formula 2016-12-29 16:23:46 +02:00
yuri
af60f82322 formula ui 2016-12-29 16:17:54 +02:00
Taras Machyshyn
2e8e466a22 Unit tests fixes 2016-12-29 13:38:29 +02:00
yuri
a3ad4130af Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2016-12-29 13:37:49 +02:00
yuri
37f718f26e formula dev 2016-12-29 13:37:36 +02:00
Taras Machyshyn
c7e46ecc03 Unit tests fixes 2016-12-27 16:07:40 +02:00
yuri
1e368757ec fix dynamic logic isEmpty 2016-12-27 15:29:07 +02:00
yuri
54122e6ea2 fix dynamic logic isEmpty 2016-12-27 15:28:50 +02:00
yuri
9e3096b674 date/datetime default values 2016-12-27 15:24:14 +02:00
yuri
f0dbe8b78b field manager: opporunity probabilities 2016-12-27 12:42:45 +02:00
yuri
ab89b3c91b Merge branch 'hotfix/4.3.2' 2016-12-27 11:16:26 +02:00
yuri
54e0ee08e6 field manager: enum default 2016-12-27 11:16:14 +02:00
yuri
803e06c019 formula substring 2016-12-26 16:46:14 +02:00
yuri
2057fd7357 Merge branch 'hotfix/4.3.2' 2016-12-26 16:27:51 +02:00
yuri
2561660cf4 fix notice 2016-12-26 16:27:44 +02:00
yuri
e382c59556 formula field 2016-12-26 15:54:07 +02:00
yuri
a003efe7c9 Merge branch 'hotfix/4.3.2' 2016-12-26 11:15:55 +02:00
yuri
1975d16f3a orm: fix issue with bool column in relation table 2016-12-26 11:15:45 +02:00
yuri
da74c37ab1 Merge branch 'hotfix/4.3.1' 2016-12-23 17:15:28 +02:00
yuri
3df9c7eb02 fix stream panel 2016-12-23 16:55:22 +02:00
yuri
5951ac930a fix stream post 2016-12-23 16:31:53 +02:00
yuri
7160c0a65b fix stream panel 2016-12-23 16:30:19 +02:00
yuri
19a9b5c91e fix language.js 2016-12-23 15:56:58 +02:00
yuri
b6d1f26af0 fix cache 2016-12-23 15:52:19 +02:00
yuri
6094c69fc1 formula null 2016-12-23 13:09:36 +02:00
yuri
a11c6a23c4 formula ui 1 2016-12-23 12:52:00 +02:00
yuri
52afd6f11c Merge branch 'hotfix/4.3.1' 2016-12-22 17:23:48 +02:00
yuri
0c10657351 fix import 2016-12-22 17:23:39 +02:00
yuri
36ade17f67 formula item 2016-12-22 17:02:54 +02:00
yuri
469e35d8a0 industries 2016-12-22 11:18:32 +02:00
yuri
39219b6b78 Merge branch 'hotfix/4.3.1' 2016-12-21 17:40:36 +02:00
yuri
977b8fa8e9 fix enum none 2016-12-21 17:40:17 +02:00
yuri
7e0604409a varchar/text none 2016-12-21 17:37:10 +02:00
yuri
83f78cc02c Merge branch 'hotfix/4.3.1' 2016-12-21 16:07:11 +02:00
yuri
c21ec8d5f2 template fix 2016-12-21 16:06:16 +02:00
yuri
41c566e227 template ui improve 2016-12-21 15:56:15 +02:00
yuri
ae82ebbf74 htmlizer file helper 2016-12-21 15:29:12 +02:00
yuri
177018daae entity manager: check reserved names 2016-12-21 15:05:17 +02:00
yuri
003e884056 Merge branch 'hotfix/4.3.1' 2016-12-21 12:33:26 +02:00
yuri
5f481fa2dd fix 2016-12-21 12:20:29 +02:00
yuri
f425584822 Merge branch 'hotfix/4.3.1' 2016-12-21 12:08:35 +02:00
yuri
8c1142481d campaign log fix 2016-12-21 12:08:19 +02:00
yuri
569b995a94 Merge branch 'hotfix/4.3.1' 2016-12-21 12:00:43 +02:00
yuri
d20a26680a fix markdown 2016-12-21 12:00:29 +02:00
yuri
472e1ece5a Merge branch 'hotfix/4.3.1' 2016-12-20 17:52:44 +02:00
yuri
84c56256f7 css 2016-12-20 17:52:30 +02:00
yuri
632467a9a6 close modal on location change 2016-12-20 16:11:20 +02:00
yuri
d2faec45bb close modal on location change 2016-12-20 16:10:33 +02:00
yuri
480772e022 change css list view 2016-12-20 15:17:17 +02:00
yuri
e7bd4c1790 select records create change 2016-12-20 14:37:30 +02:00
yuri
5910b28362 css modal list cache 2016-12-20 14:29:01 +02:00
yuri
a3c32d8389 css modal changes 2016-12-20 14:21:44 +02:00
yuri
e2b0bba6e6 portal users 2016-12-20 14:01:13 +02:00
yuri
4813657568 Merge branch 'hotfix/4.3.1' 2016-12-19 11:56:23 +02:00
yuri
2989181723 fix calendar create acl check 2016-12-19 11:45:01 +02:00
yuri
5df8d833d5 fix lang 2016-12-19 11:26:41 +02:00
yuri
449fc4cddc fix css 2016-12-16 17:24:21 +02:00
yuri
fb87926318 cleanup 2016-12-16 16:43:39 +02:00
yuri
623d94b77f change 2016-12-16 16:34:40 +02:00
yuri
74ad0cab35 fix detailsmall edit small 2016-12-16 16:22:27 +02:00
yuri
4f81706b92 Merge branch 'hotfix/4.3.1' 2016-12-16 15:01:29 +02:00
yuri
4e61bd6048 fix user field list view tpl 2016-12-16 15:00:41 +02:00
yuri
252ae4e18f v 2016-12-16 14:53:06 +02:00
yuri
3249c07bcd Merge branch 'hotfix/4.3.1' 2016-12-16 12:14:28 +02:00
yuri
3def2ef0da enum: show none 2016-12-16 12:14:16 +02:00
yuri
cb0321aa20 lead layout change 2016-12-16 11:56:28 +02:00
yuri
1096f719ae panels fixes 2016-12-16 11:53:55 +02:00
yuri
9bfe12587f formula hook order change 2016-12-15 17:35:58 +02:00
yuri
91d4b26c1c formula 2016-12-15 16:52:29 +02:00
yuri
ef317064b4 fix modified and created fields 2016-12-15 16:42:53 +02:00
yuri
fa3b4f3ac2 export fix 2016-12-15 10:53:55 +02:00
yuri
052c489bf7 fix export error 2016-12-15 10:45:36 +02:00
yuri
f3402e2c4e dont send invitation for self if accepted 2016-12-14 12:23:15 +02:00
yuri
34a3cd9ce5 fix list js error 2016-12-12 11:17:09 +02:00
yuri
4d5f3bcbfe v 2016-12-08 11:41:55 +02:00
yuri
339e1dc897 defaultSidePanelFieldList 2016-12-07 17:32:43 +02:00
yuri
c4e617f18e css 2016-12-07 15:48:35 +02:00
yuri
89bc329ea6 css 2016-12-07 13:21:47 +02:00
yuri
eee49b215e portal user field show up 2016-12-07 11:32:22 +02:00
yuri
d9a8b83268 remove isToSelf not used field 2016-12-07 10:56:32 +02:00
yuri
def7abe3ba fix mention notification 2016-12-07 10:55:33 +02:00
yuri
75e64b3836 Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2016-12-06 15:52:56 +02:00
yuri
efb106c597 fix translated options 2016-12-06 15:50:48 +02:00
Taras Machyshyn
5e1087c6b4 Cache in language 2016-12-06 13:18:06 +02:00
yuri
5f8800defa fix css 2016-12-06 13:08:06 +02:00
yuri
445c0b3834 integration check 2016-12-06 12:24:07 +02:00
yuri
61c1e5ab6c fix mass action list 2016-12-06 11:37:40 +02:00
yuri
2502cad0c1 settings activityEntityList no emails 2016-12-05 14:20:50 +02:00
yuri
76032493b9 fix 2016-12-01 12:33:34 +02:00
yuri
0a3a6b3773 load users config params after login 2016-12-01 12:29:26 +02:00
yuri
014d47d017 Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2016-12-01 11:45:00 +02:00
Taras Machyshyn
8bd7734ae3 Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2016-12-01 11:22:48 +02:00
Taras Machyshyn
7aa2ba917f Added 'userItems' 2016-12-01 11:21:20 +02:00
yuri
96f0ce2381 fix template 2016-11-30 17:41:30 +02:00
yuri
f1eb5b9862 email notification about email received 2016-11-30 15:54:23 +02:00
yuri
45cb5a6e38 Merge branch 'master' of https://github.com/espocrm/espocrm 2016-11-30 11:13:43 +02:00
ayman-alkom
4131ea54ae remove decleration duplicate (#319) 2016-11-30 11:12:56 +02:00
yuri
3806affe1b add industry 2016-11-30 10:58:17 +02:00
yuri
6ea3a03de3 readme change 2016-11-29 17:55:59 +02:00
yuri
5b25e8b7e6 fix address validate error 2016-11-29 17:04:27 +02:00
yuri
60c96ba5f7 import status colors 2016-11-29 15:29:09 +02:00
yuri
9732852891 job search fix 2016-11-29 15:27:28 +02:00
yuri
326b46a6e6 fix setting max records per page and int max length 2016-11-29 15:18:31 +02:00
yuri
29924ea3b1 css fix 2016-11-29 12:37:47 +02:00
yuri
434506699b fix list width 2016-11-29 12:00:13 +02:00
yuri
eeaaaf7af1 deferred filter 2016-11-29 11:19:32 +02:00
yuri
3f5dab0680 fix task date end field 2016-11-29 11:03:51 +02:00
yuri
dd69658f2a css change 2016-11-29 10:37:23 +02:00
yuri
3c2d998a30 added industries 2016-11-28 16:54:09 +02:00
yuri
a0ead9d774 fix css 2016-11-25 16:24:39 +02:00
yuri
4460a105a8 dynamic logic ID field and mass email duplicate fix 2016-11-25 15:52:05 +02:00
yuri
c6b369587d fix css 2016-11-25 12:46:13 +02:00
yuri
8c19ad5f7f fix warning 2016-11-25 12:22:48 +02:00
yuri
1824e0d0a6 version 2016-11-22 14:29:35 +02:00
yuri
404bb0c3cd layout panel colors 2 2016-11-22 12:27:03 +02:00
yuri
7fd6b16cf3 fix color panels 2016-11-22 10:39:28 +02:00
yuri
47abd1ab52 middle panel styles 2016-11-21 15:32:10 +02:00
yuri
5c8d728ac5 cleanup 2016-11-21 15:09:55 +02:00
yuri
2706bc461e fix error 2016-11-21 15:09:36 +02:00
yuri
91f52e4f42 panel color and sidePanels Small layout 2016-11-21 14:58:08 +02:00
yuri
5538dd45d3 preferences: reload page after theme or language changed 2016-11-21 11:00:06 +02:00
yuri
105205a9aa change in record base 2016-11-21 10:59:50 +02:00
yuri
e3547717a0 change varchar filter type order 2016-11-21 10:35:09 +02:00
yuri
1714e0e9a0 Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2016-11-21 10:30:50 +02:00
yuri
afdd15ac44 text field: contains filter by default 2016-11-21 10:28:54 +02:00
yuri
09097dba4a cleanup 2016-11-21 10:28:23 +02:00
yuri
01a8fbd5b1 fix label 2016-11-21 10:27:21 +02:00
yuri
f2d5eed7e3 company entity: check for duplicates 2016-11-21 10:26:27 +02:00
Taras Machyshyn
cfae3cde1d Label correction 2016-11-18 18:18:01 +02:00
Taras Machyshyn
87a0c1b293 Installer bug fixes 2016-11-18 18:17:37 +02:00
Taras Machyshyn
486c8c8f37 Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2016-11-18 17:33:45 +02:00
Taras Machyshyn
ea99ca3d38 FileManager: bug fixes 2016-11-18 17:33:29 +02:00
yuri
2069a25f30 b2c mode in settings 2016-11-18 11:31:25 +02:00
yuri
baf3493044 show up date time on mouse over shortened dates 2016-11-18 11:23:12 +02:00
yuri
543a12a475 note post textarea height 2016-11-18 11:11:00 +02:00
yuri
a73f97744a fix email address add 2016-11-18 10:58:59 +02:00
yuri
ae135ab678 fix mention text 2016-11-17 17:25:08 +02:00
yuri
96366548a3 fix avatar for deleted user and campaign tracker 1px 2016-11-17 10:49:00 +02:00
yuri
54cdd5180d industry 2016-11-17 10:25:56 +02:00
yuri
0a5ce2a4d4 industries 2016-11-16 17:09:50 +02:00
yuri
a4e1ccc4bb fix label 2016-11-16 15:28:30 +02:00
Taras Machyshyn
55c632979e Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2016-11-16 15:25:01 +02:00
Taras Machyshyn
b1208a449e Integration tests: added tests for upgrade, extension installation 2016-11-16 15:24:48 +02:00
Taras Machyshyn
9e2b329beb Integration tests improvements 2016-11-16 15:23:49 +02:00
Taras Machyshyn
10d329094c Added 'deleteBeforeCopy' for upgrade/extensions 2016-11-16 15:21:39 +02:00
yuri
38f44b3e5f cases layout change 2016-11-16 13:06:42 +02:00
yuri
c99a1261d5 lead industry field 2016-11-16 11:54:17 +02:00
yuri
4e2e344892 industry field additions 2016-11-16 11:45:31 +02:00
yuri
e0128bf54f contact-document relation 2016-11-16 11:17:46 +02:00
yuri
a683e6bdf8 improve export 2016-11-15 12:15:01 +02:00
yuri
bc64effb14 cleanup 2016-11-14 13:23:22 +02:00
yuri
6b0a280e2c fix layout swaping 2016-11-14 12:44:36 +02:00
yuri
ddf25e02e3 email: has attachment filter 2016-11-14 10:39:18 +02:00
yuri
967d5a6387 addition to about page 2016-11-11 16:46:11 +02:00
yuri
a5137b85af downgrade zendservicemanager 2016-11-11 16:34:38 +02:00
yuri
1ed79fedf0 Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2016-11-10 14:44:40 +02:00
yuri
8a8cb08b99 order export 2016-11-10 14:41:39 +02:00
yuri
b49aaa69cc fix audited 2016-11-10 14:14:46 +02:00
yuri
015357d551 industries 2016-11-10 13:19:34 +02:00
yuri
5419d76080 link field empty name and audited note change 2016-11-10 12:58:54 +02:00
yuri
21e1422994 filed manager hook change 2016-11-09 11:43:30 +02:00
yuri
dafb076659 field manager inficate that field is readOnly 2016-11-09 10:56:19 +02:00
Taras Machyshyn
491f3d27ff Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2016-11-08 12:13:35 +02:00
Taras Machyshyn
3be58d5d09 Integration test improvements 2016-11-08 12:13:25 +02:00
yuri
8aeb23a985 version 2016-11-08 11:46:19 +02:00
yuri
fa99040232 downgrade zend 2016-11-08 11:45:32 +02:00
yuri
2e928f2442 clenup 2016-11-08 11:33:51 +02:00
yuri
8ebb35c0d5 my activities dashlet entity list 2016-11-07 17:18:04 +02:00
yuri
7d17bee201 Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2016-11-07 16:06:12 +02:00
yuri
5c345fb4d9 import: idle mode 2016-11-07 16:01:52 +02:00
yuri
d2cd098ab0 fix record view readOnly 2016-11-07 15:09:15 +02:00
yuri
f4a88df067 import: skip search for duplicates 2016-11-07 12:54:14 +02:00
yuri
8f4917eb24 delete duplicates before import 2016-11-07 11:46:09 +02:00
yuri
a9310b108a fix warning 2016-11-07 10:45:52 +02:00
Taras Machyshyn
8c638dffd4 commented out sendRequest tests 2016-11-04 18:56:07 +02:00
yuri
0151273a75 cleanup 2016-11-04 17:39:00 +02:00
yuri
b10dc8128c conrollerManager in container 2016-11-04 17:32:58 +02:00
yuri
476d36c9c5 comment sendRequest tests 2016-11-04 17:22:55 +02:00
yuri
64087defd0 Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2016-11-04 17:21:18 +02:00
yuri
807b7bc349 tooltip 2016-11-04 16:57:18 +02:00
yuri
3018c345fa entity manager tooltips 2016-11-04 16:34:12 +02:00
yuri
8f35c59943 ckeanup 2016-11-04 15:34:49 +02:00
yuri
348332f7ca entity manager: fix loading after creation 2016-11-04 12:52:24 +02:00
yuri
9ebd992222 default status styles 2016-11-04 12:43:49 +02:00
yuri
9597ea0dbd stream messages improvements 2016-11-04 12:29:39 +02:00
yuri
23fb6c6e1f status field in entity manager 2016-11-04 11:36:28 +02:00
Taras Machyshyn
ddb5033de8 Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2016-11-03 18:00:15 +02:00
Taras Machyshyn
43a49e3c31 Integration tests: added 'createUser' method, portal support 2016-11-03 18:00:03 +02:00
yuri
5a06ee50d8 fix notice 2016-11-03 16:19:43 +02:00
yuri
c02f65ef81 audited relations 2016-11-03 16:14:19 +02:00
yuri
dbb9b20b7f fix case compose email 2016-11-03 11:37:39 +02:00
yuri
3bfd540f53 kb: move to top move to bottom 2016-11-03 11:11:03 +02:00
yuri
a971f7357f fix dynamic logic 2016-11-02 16:31:04 +02:00
yuri
4918f8f985 task reminders 2016-11-02 16:30:56 +02:00
Taras Machyshyn
988388ed16 Added 'sendRequest' possibility 2016-11-02 15:52:38 +02:00
yuri
f1de9deb80 event entity: reminders 2016-11-02 12:08:01 +02:00
yuri
2642a6ea6e fix notice 2016-11-02 11:52:42 +02:00
yuri
74b82c92d8 fix default layout detailSmall 2016-11-02 11:15:38 +02:00
yuri
ded3d112b2 created and modified fields fixes 2016-11-02 11:11:51 +02:00
yuri
c9e7f02b23 cut text columns 2016-11-01 15:07:18 +02:00
yuri
c7fb864e04 email changes and test 2016-11-01 12:54:51 +02:00
yuri
16d300445c fix emails 2016-11-01 12:43:20 +02:00
yuri
edc24621a6 fix php mime mail parser 2016-10-31 15:52:38 +02:00
yuri
17b48c0e4c fix wysywyg issue with base tags 2016-10-31 15:52:29 +02:00
yuri
771d58f425 phpmimemailparser 2016-10-31 11:30:14 +02:00
Felix Kaechele
fd76459077 Fix de_DE translation (#269)
* Fix escape symbols in translations

Signed-off-by: Felix Kaechele <felix@kaechele.ca>

* Update German translation

Signed-off-by: Felix Kaechele <felix@kaechele.ca>
2016-10-28 15:21:27 +03:00
yuri
1955dff68e manual merge 2016-10-28 14:50:48 +03:00
yuri
730b5fb8a9 fix calendar dashlet 2016-10-28 14:46:37 +03:00
yuri
c1a115e2b0 reminders: skip if declined 2016-10-21 15:55:03 +03:00
yuri
7773e41ad4 convert lead changes 2016-10-21 14:48:58 +03:00
yuri
304bbb62ad fix naming 2016-10-21 12:05:36 +03:00
yuri
7b439ace04 cleanup 2016-10-21 11:32:10 +03:00
yuri
d9ef87fb90 fix naming 2016-10-21 11:30:21 +03:00
yuri
2333b7a1ef user permission = all by default 2016-10-21 11:21:03 +03:00
yuri
1a00932c63 Merge branch 'hotfix/4.2.7' 2016-10-20 15:48:49 +03:00
yuri
1f09015c86 fix ids 2016-10-20 15:48:33 +03:00
yuri
5d79d8520f email: show group email account if email address matches 2016-10-20 15:04:26 +03:00
yuri
dde044d8c5 imptove email/phone filters 2016-10-20 14:53:47 +03:00
yuri
aeeb84b626 fix text and varchar 2016-10-20 14:47:18 +03:00
yuri
ccb9022e16 fix email address search 2016-10-20 12:47:44 +03:00
yuri
a9e783b5f1 email autocomplete: users first 2016-10-20 11:36:52 +03:00
yuri
46190df6ff fix notice 2016-10-20 11:30:19 +03:00
yuri
1eb258cab7 email filtering fix 2016-10-20 11:26:48 +03:00
yuri
a3836b0091 email fix 2016-10-19 16:38:27 +03:00
yuri
7fbc9fbac8 email fix 2016-10-19 16:38:00 +03:00
yuri
d0b5e2188b add marketing industry 2016-10-19 16:13:01 +03:00
yuri
dfa2d6be89 email notifications related to parent 2016-10-19 16:04:43 +03:00
yuri
276941197f email importer refactoring 2016-10-19 15:46:07 +03:00
yuri
20569e4252 fix notices 2016-10-19 12:47:54 +03:00
yuri
3b7f99daa1 fix import 2016-10-19 12:14:21 +03:00
Taras Machyshyn
5ee30d9f3f Integration test improvements 2016-10-17 17:35:44 +03:00
yuri
3cde7fa5e3 company type fix 2016-10-11 15:11:36 +03:00
yuri
aecb9bbdf4 lang 2016-10-11 15:11:25 +03:00
yuri
1a95e14ee8 entity manager improvements 2016-10-11 12:32:28 +03:00
yuri
83aa07b918 entity manager remove layouts 2016-10-11 11:30:53 +03:00
yuri
4f8eea59fe removeDir method 2016-10-11 11:28:45 +03:00
yuri
248280e086 fix entity manager 2016-10-11 11:28:38 +03:00
yuri
02b465ab8c company entity type 2016-10-11 11:22:48 +03:00
yuri
c9d26dc1d8 base plus entity template 2016-10-10 17:32:03 +03:00
yuri
389b158134 look up email address in custom entities 2016-10-10 16:35:30 +03:00
yuri
312af9befb change person layouts 2016-10-10 16:19:34 +03:00
yuri
b7f22bf687 Merge branch 'stable' 2016-10-10 15:33:27 +03:00
yuri
f062ac255a version 2016-10-10 15:19:14 +03:00
yuri
dd8082244c activities and tasks for person type 2016-10-10 12:37:21 +03:00
yuri
25ff7e17c1 activities dashlet change 2016-10-07 15:27:17 +03:00
yuri
f4b3071a92 change readme 2016-10-07 14:50:34 +03:00
yuri
0c7b182215 Merge branch 'stable' 2016-10-07 14:36:32 +03:00
yuri
2223a1ecf4 getActivitiesQuery change 2016-10-07 12:54:10 +03:00
yuri
3a24784980 fix email filter 2016-10-07 12:46:46 +03:00
yuri
f86564a580 tests 2016-10-07 12:46:27 +03:00
yuri
58897949eb fix email filter 2016-10-07 12:46:19 +03:00
yuri
2dee859b2a fix link field 2016-10-07 12:10:57 +03:00
yuri
b1dbd173ad fix mail filters 2016-10-07 11:14:37 +03:00
yuri
a9fc290627 mail filter test 2016-10-07 11:14:15 +03:00
yuri
12794968fc fix mail filters 2016-10-07 11:14:02 +03:00
yuri
1b4cbb91ee activities refactor additional 2016-10-06 17:26:51 +03:00
yuri
62f1362cf6 activities big refactor 2016-10-06 16:46:52 +03:00
yuri
49031d0b33 fix orm 2016-10-06 11:49:57 +03:00
yuri
22fea07b0a fix orm 2016-10-05 17:54:00 +03:00
yuri
81692371ec search by hasOne link 2016-10-05 15:35:53 +03:00
yuri
a96314f0f0 Merge branch 'hotfix/4.2.6' 2016-10-05 12:37:45 +03:00
yuri
a92c294255 fix layout manager reset to default 2016-10-05 12:37:38 +03:00
yuri
7c554a605e originalLead field 2016-10-05 12:07:08 +03:00
yuri
57eeec63c1 remove opportunities link from lead 2016-10-05 11:44:07 +03:00
yuri
bd158008b2 update tcpdf 2016-10-04 12:58:24 +03:00
yuri
c0ae8d5cdd Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2016-10-03 12:17:33 +03:00
yuri
78347920aa fix settings entityDefs 2016-10-03 12:17:26 +03:00
yuri
c88e662a30 mass email: massEmailDisableMandatoryOptOutLink 2016-10-03 12:03:28 +03:00
yuri
5ae57ff5f6 fix campaign log percentage 2016-10-03 11:32:06 +03:00
Taras Machyshyn
7c74c85a66 Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2016-09-29 17:48:00 +03:00
Taras Machyshyn
07fc2123e7 Added testData cache folder to gitignore 2016-09-29 17:47:46 +03:00
yuri
afdb47b601 fix test email 2016-09-29 17:35:57 +03:00
yuri
5ea437afbb Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2016-09-29 17:30:49 +03:00
yuri
c7041546c4 fix number test 2016-09-29 17:27:26 +03:00
yuri
1d2fd21a06 Merge branch 'hotfix/4.2.6' 2016-09-29 17:25:35 +03:00
yuri
27624ead8d number fix 2 2016-09-29 17:25:25 +03:00
Taras Machyshyn
fefc003984 Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2016-09-29 17:21:23 +03:00
Taras Machyshyn
70d3bf9fff Integration tests: rename method to 'createApplication' 2016-09-29 17:21:05 +03:00
yuri
4a64c4b648 Merge branch 'hotfix/4.2.6' 2016-09-29 17:21:01 +03:00
yuri
15c980e57f rename number to number util 2016-09-29 17:20:52 +03:00
yuri
9d8fc5b8ea sort by address field 2016-09-28 17:46:14 +03:00
yuri
8184221d2b Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2016-09-28 16:15:31 +03:00
yuri
5786983d8b add team to roles 2016-09-28 16:13:53 +03:00
yuri
1e1468ab68 acl changes and user role 2016-09-28 15:36:41 +03:00
yuri
e3f0177759 role changes 2016-09-27 16:46:14 +03:00
yuri
f1fc6160fe fix typo 2016-09-27 16:30:59 +03:00
yuri
38d4a39014 campaign log to target list 2016-09-27 15:13:25 +03:00
yuri
566d0c1aa0 fix orm query in array 2016-09-27 12:35:40 +03:00
yuri
ce752b32fd naming fix 2016-09-27 11:15:59 +03:00
Taras Machyshyn
a61553d08b Improved tests 2016-09-26 16:36:47 +03:00
yuri
daacb026d8 panel actions changes 2016-09-26 16:16:40 +03:00
yuri
0ae637fba2 Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2016-09-26 12:50:41 +03:00
yuri
b81fd66b85 remove note with parent remval 2016-09-26 12:48:57 +03:00
yuri
071e94ac97 Merge branch 'hotfix/4.2.6' 2016-09-26 12:04:32 +03:00
yuri
a98465f30e skip notification checking while upgrade 2016-09-26 12:04:10 +03:00
yuri
e949a0bae6 dashboard: ability to rename tabs 2016-09-26 11:31:29 +03:00
yuri
f7f9e2fda0 fix export 2016-09-23 11:37:21 +03:00
yuri
80a0571b0c export: skip attributes 2016-09-23 11:31:38 +03:00
yuri
d91897a922 fix export 2016-09-22 17:31:42 +03:00
Taras Machyshyn
05180ece92 Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2016-09-22 17:25:40 +03:00
Taras Machyshyn
ee8e960ce4 Added integration tests 2016-09-22 17:25:26 +03:00
yuri
5b4a8666cd Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2016-09-22 17:17:21 +03:00
yuri
7240757a28 export field list 2016-09-22 17:15:27 +03:00
yuri
2a8baa2f34 export: use POST request 2016-09-22 14:54:35 +03:00
yuri
0c44e0d101 duplicate target list only not opted out 2016-09-22 12:45:23 +03:00
yuri
63ab5b77f3 relationship copy change 2016-09-22 12:32:53 +03:00
yuri
300198c9fa duplicate with links 2016-09-22 11:24:21 +03:00
yuri
340af18beb Merge branch 'hotfix/4.2.6' 2016-09-20 15:58:34 +03:00
yuri
8862fd279e fix language enum translation 2016-09-20 15:47:58 +03:00
Taras Machyshyn
83cff1bc42 Added favicon to installator 2016-09-20 11:54:51 +03:00
yuri
a75534e32a Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2016-09-20 11:52:07 +03:00
Taras Machyshyn
462eb8792c Added test cache to gitignore 2016-09-20 11:51:57 +03:00
yuri
19f29c0401 Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2016-09-20 11:49:41 +03:00
Taras Machyshyn
27657260fc Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2016-09-20 11:47:40 +03:00
yuri
c17fb9ab1e Merge branch 'hotfix/4.2.6' 2016-09-16 17:46:31 +03:00
yuri
bd6eafd291 version 2016-09-16 17:44:26 +03:00
yuri
a63306603a fix email filter 2016-09-16 17:44:10 +03:00
yuri
d3b1114b1e filters refactor 2016-09-16 16:38:10 +03:00
yuri
87340e29e8 base field: search data 2016-09-16 15:38:21 +03:00
yuri
4f1f8d9301 lead: created fields filter populate 2016-09-16 14:51:20 +03:00
yuri
664b294471 bool notNull 2016-09-16 11:23:44 +03:00
yuri
7774c12ab2 lang 2016-09-16 11:02:14 +03:00
yuri
6592dfc4da mass retrive from trash 2016-09-16 11:00:19 +03:00
yuri
e823ecc178 user: create portal user fix 2016-09-15 12:59:06 +03:00
yuri
74d5a737db int/float: isEmpty, isNotEmpty filters 2016-09-15 12:07:26 +03:00
yuri
bf9799af66 fix markdown link syntax 2016-09-14 17:09:10 +03:00
yuri
fc9b67672f date: isEmpty filter 2016-09-14 16:14:06 +03:00
yuri
6e8342511f lang 2016-09-14 16:01:29 +03:00
yuri
da2cebd765 fix orm 3 2016-09-14 14:03:30 +03:00
yuri
ef19dc3330 fix orm 2 2016-09-14 13:53:11 +03:00
Taras Machyshyn
2f73a2d19b Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2016-09-14 13:25:07 +03:00
yuri
fab257eb97 fix orm 2016-09-14 13:07:32 +03:00
yuri
850c3fd696 orm: get parent relation 2016-09-14 13:00:22 +03:00
yuri
a619738652 fix dashboard javascript error 2016-09-13 16:53:06 +03:00
Taras Machyshyn
395c575f78 Moved tests into 'unit' folder 2016-09-13 16:20:42 +03:00
yuri
ecf8256b14 fix textFilterFields list 2016-09-13 15:26:51 +03:00
yuri
2d6d6a2b19 link parent: search by parent type 2016-09-13 15:17:49 +03:00
yuri
ee404fa400 parentType = null if empty 2016-09-13 15:05:38 +03:00
yuri
10fc546369 Merge branch 'hotfix/4.2.5' 2016-09-13 13:13:00 +03:00
yuri
0ea0c09007 fix acl 2016-09-13 13:12:39 +03:00
yuri
85b2dbac11 Merge branch 'hotfix/4.2.5' 2016-09-13 10:28:39 +03:00
yuri
d69f994f4c fix insert template issue with signature 2016-09-13 10:28:24 +03:00
yuri
12a368054a dynamic logic options 2016-09-12 17:27:39 +03:00
yuri
7a2a9de174 Merge branch 'hotfix/4.2.5' of ssh://172.20.0.1/var/git/espo/backend into hotfix/4.2.5 2016-09-12 11:17:15 +03:00
yuri
0e14f2b987 fix dynamic logic save 2016-09-12 11:16:36 +03:00
yuri
a50d97adf5 cleanup 2016-09-09 16:36:57 +03:00
yuri
62e9138cf1 minor core changes, metadata delete fix 2016-09-09 16:33:43 +03:00
yuri
657e7f0e37 email sender: define sender header 2016-09-08 15:05:58 +03:00
yuri
66d648c7d4 hack zend messageId bug 2016-09-08 12:42:53 +03:00
yuri
08dd77a6b6 metadata refactoring 2016-09-08 11:59:33 +03:00
yuri
037f0d4db1 dynamicLogic edit 3 2016-09-07 17:18:40 +03:00
yuri
19ff591105 fix date field default null 2016-09-07 15:17:00 +03:00
Taras Machyshyn
7d2655f757 Fixed warnings on PHP 7 2016-09-07 15:04:06 +03:00
yuri
7b1a1be366 dynamicLogic edit 2 2016-09-06 16:59:50 +03:00
yuri
1fc3ae72b5 dynamicLogic edit 1 2016-09-05 17:01:41 +03:00
yuri
991b864881 tabs fix 2016-09-05 11:35:04 +03:00
yuri
f95fa96ae1 fix package.json 2016-09-05 11:13:23 +03:00
yuri
e33cdf268a dynamicLogic change 2016-09-05 11:12:36 +03:00
yuri
dcae13f4dc dynamicLogic string dev 2016-09-02 17:17:31 +03:00
yuri
96ac275970 client: fix naming 2016-09-02 16:17:09 +03:00
yuri
e58a4c4bbf fix stream status update message 2016-09-02 12:43:26 +03:00
yuri
c35985e658 Merge branch 'master' of https://github.com/espocrm/espocrm 2016-09-02 12:40:19 +03:00
yuri
4bc5a89ac2 fix stream status update message 2016-09-02 12:40:09 +03:00
yuri
b7e14d60cc dynamicLogic string change 2016-09-02 12:31:45 +03:00
Mauricio Panuncio
7164a71d88 es_ES - Complete translations to today (#219)
* Translate es_ES: Globals. Admin.

* Tickets.

* Emails.

* New translations (missing).

* New translations (missing) II.

* Various.

* Opportunities: Improvement. Self-explanatory names.

* Some small fixes.

* Undo Tickets. Redo Casos.
2016-09-02 12:30:13 +03:00
yuri
6bedd86e08 dynamic logic development 2016-09-01 17:38:47 +03:00
yuri
d39e99cbdd dynamic logic changes 2016-09-01 11:24:13 +03:00
yuri
ab3134f44a dynamicLogic additional compare types 2016-08-31 17:23:00 +03:00
yuri
5aaca9921c dynamicLogic core 2 2016-08-31 16:28:25 +03:00
yuri
9223e43b7c htmlizer: format number fix 2016-08-31 14:55:12 +03:00
yuri
3766dd16e7 dynamicLogic core 1 2016-08-31 14:48:51 +03:00
yuri
e53aff0031 fill primary account on selecting from account 2016-08-30 15:30:06 +03:00
yuri
4a40f1fba7 trim smtp credentials 2016-08-30 14:51:08 +03:00
yuri
8432e9dcc8 fix endWidth search 2016-08-30 13:05:41 +03:00
yuri
04e9bd9de3 fix endWidth search 2016-08-30 13:04:52 +03:00
yuri
ed8ed591f7 user: search by position 2016-08-30 13:00:37 +03:00
yuri
34ff0218b9 email notifications about posts w/o parent 2016-08-29 17:12:42 +03:00
yuri
2f6c928077 fix notification parent not null 2016-08-29 16:40:24 +03:00
yuri
eff0152f44 layout manager: Side Panels 2016-08-29 15:51:17 +03:00
yuri
a3188ce694 preferences: doNotFillAssignedUserIfNotRequired 2016-08-29 12:36:21 +03:00
yuri
4bf81be56f fix naming 2016-08-29 12:22:37 +03:00
yuri
7c22960f42 Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2016-08-26 17:44:40 +03:00
yuri
3d6f90ad93 fix field manager 2016-08-26 17:44:04 +03:00
yuri
a02aebeed2 tooltips editable 2016-08-26 15:01:41 +03:00
Taras Machyshyn
d06afd4def Deleted unnecessary file 2016-08-26 14:25:30 +03:00
Taras Machyshyn
88e148fca8 Possibility to redefine hooks 2016-08-26 14:23:41 +03:00
Taras Machyshyn
2d00ef314f Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2016-08-26 14:22:35 +03:00
yuri
0b6a29a035 field manager: reset to detault 2016-08-26 12:19:50 +03:00
yuri
5feb0eb7c7 fix FieldManager controller 2016-08-26 11:21:09 +03:00
yuri
48cb718fbe naming change 2016-08-26 10:51:09 +03:00
yuri
13ad6ec0d0 field manager: change tpl 2016-08-26 10:48:36 +03:00
yuri
9cfdb3a00b Merge branch 'master' of https://github.com/espocrm/espocrm 2016-08-25 17:24:16 +03:00
rodrigoscoelho
b560254df2 Adding Home Page APP meta info for Android and IOS (#145)
This will allow the program to start as a separated program on Android and IOS. As a native program.
2016-08-25 17:23:44 +03:00
yuri
101ed19073 shortcut icon 2016-08-25 17:23:03 +03:00
yuri
65868fd26a fix unsubscribe 2016-08-25 17:07:30 +03:00
yuri
d2e5b26765 update zend 2016-08-25 17:00:34 +03:00
yuri
2cac1ea608 unsubscribe changes 2016-08-25 16:54:30 +03:00
yuri
9d37e68e24 sync contact name on portal user update 2016-08-25 13:01:08 +03:00
yuri
290a1c5b31 php 5.4 drop 2 2016-08-25 13:00:50 +03:00
yuri
ff924f666f drop php 5.4 support 2016-08-25 12:25:30 +03:00
yuri
8c5eb9c913 update zend 2016-08-25 12:19:06 +03:00
yuri
25e72fa6a5 Merge branch 'hotfix/4.2.5' 2016-08-25 11:58:24 +03:00
yuri
76602aede1 email import: fix for emails w/o subject header 2016-08-25 11:45:56 +03:00
Ayman Alkom
77411702a7 remove repeated key (#205) 2016-08-25 10:44:29 +03:00
Ayman Alkom
1aeee24d97 remove repeated key (#205) 2016-08-25 10:43:53 +03:00
yuri
d8cd0d31db email template foreign fields and acl 2016-08-25 10:43:06 +03:00
yuri
e72557bb59 Merge branch 'hotfix/4.2.5' 2016-08-24 11:09:41 +03:00
yuri
84e587fcaf mass email: automatically fill name 2016-08-24 10:49:53 +03:00
yuri
f8e75dccdf version 2016-08-23 15:41:32 +03:00
yuri
b6eca1db17 fix email entityDefs 2016-08-23 15:39:00 +03:00
yuri
6ff414ffcd fix users teams field 2016-08-23 15:26:00 +03:00
yuri
b54c9a797d Merge branch 'hotfix/4.2.5' 2016-08-23 12:05:51 +03:00
yuri
7acbf3084d template: related attributes 2016-08-23 12:05:29 +03:00
yuri
87847446a8 css cleanup 2016-08-23 11:18:20 +03:00
yuri
59f250b386 allow template entity 2016-08-23 11:17:39 +03:00
yuri
f93ce594d0 add mobile phone type to account 2016-08-23 11:13:58 +03:00
yuri
c41f4e51e5 fix filter fields css 2016-08-23 11:01:17 +03:00
yuri
6efd355864 remove tabs 2016-08-23 10:11:37 +03:00
Ayman Alkom
7ee2ee9d35 small syntax fixes (#197)
* fix variable name

* init $number variable

* another fix
2016-08-23 10:09:15 +03:00
Ayman Alkom
737215c599 small syntax fixes (#197)
* fix variable name

* init $number variable

* another fix
2016-08-23 10:08:17 +03:00
Yuri Kuznetsov
ced0c25a08 Merge pull request #194 from grzegorzgie/patch-3
Fix pl_PL
2016-08-22 19:51:22 +03:00
Yuri Kuznetsov
5e810d2aa3 Merge pull request #193 from grzegorzgie/patch-2
Fix pl_PL
2016-08-22 19:51:09 +03:00
Yuri Kuznetsov
c9e27dd190 Merge pull request #192 from grzegorzgie/patch-2
Fix pl_PL
2016-08-22 19:50:12 +03:00
yuri
1f8a14aca0 fix warning 2016-08-22 15:50:21 +03:00
yuri
f518ae59c0 activities small refactoring 2016-08-22 12:27:18 +03:00
Taras Machyshyn
c5866f3d86 Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2016-08-22 12:21:16 +03:00
yuri
4d4bde46f8 version 2016-08-22 11:02:41 +03:00
yuri
cb89ad59af cleanup 2016-08-22 11:00:03 +03:00
yuri
092b5024fe it_IT language 2016-08-22 10:36:17 +03:00
grzegorzgie
8221f7182b Fix pl_PL 2016-08-21 13:21:43 +02:00
grzegorzgie
ecee739b1a Fix pl_PL 2016-08-21 13:16:03 +02:00
grzegorzgie
702b47296c Fix pl_PL
Repair linguistic errors
2016-08-21 13:02:22 +02:00
yuri
517edf2ced undo comment 2016-08-19 17:52:09 +03:00
yuri
219c28313c fix mass select 2016-08-19 17:48:14 +03:00
Taras Machyshyn
656bba1d3f Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2016-08-19 17:34:57 +03:00
yuri
311d92202b fix assignment notification if user is removed 2016-08-19 14:43:44 +03:00
yuri
05cb2ee272 email: fix move to trash update counts 2016-08-18 17:07:16 +03:00
yuri
f896a2d71a fix calendar range issue 2016-08-18 11:13:24 +03:00
yuri
dd6704ace5 fix moving to trash 2016-08-18 10:40:16 +03:00
yuri
1dc4d44a65 es_ES lang fix 2016-08-17 17:52:22 +03:00
yuri
bfb28ea178 Merge branch 'hotfix/4.2.3' of ssh://172.20.0.1/var/git/espo/backend into hotfix/4.2.3 2016-08-17 17:43:43 +03:00
yuri
ec6f3a22f2 version 2016-08-17 17:30:34 +03:00
yuri
5a0c7c330c fix email imported error in php4 2016-08-17 17:28:17 +03:00
Taras Machyshyn
f64df5af87 LDAP fixed admin login 2016-08-17 11:54:59 +03:00
Taras Machyshyn
d4dc7a4051 LDAP fixes 2016-08-16 16:53:40 +03:00
Taras Machyshyn
d676f85c8f LDAP fixes 2016-08-16 16:01:32 +03:00
Taras Machyshyn
ab382f2387 LDAP: changed ldapUserObjectClass attribute. 2016-08-15 16:46:55 +03:00
yuri
206219c738 Merge branch 'hotfix/4.2.2' of ssh://172.20.0.1/var/git/espo/backend into hotfix/4.2.2 2016-08-15 15:51:40 +03:00
Taras Machyshyn
37d1c707cb LDAP: label corrections 2016-08-15 15:51:10 +03:00
Taras Machyshyn
93af1c9bfc LDAP improvements: added possibility to define user objectClass 2016-08-15 15:47:25 +03:00
yuri
a021c4c8d5 open attachments in new window 2016-08-15 11:08:45 +03:00
yuri
a125244cdf Merge branch 'hotfix/4.2.2' of ssh://172.20.0.1/var/git/espo/backend into hotfix/4.2.2 2016-08-15 10:50:10 +03:00
yuri
1cfd251c4c copy attachments for duplicate 2016-08-12 12:51:02 +03:00
Taras Machyshyn
d2f4f312e5 Improvements 2016-08-11 16:21:35 +03:00
Taras Machyshyn
c468b061d9 Bug fixes for installation 2016-08-11 16:21:03 +03:00
yuri
7bf945f0b6 v 2016-08-11 15:31:19 +03:00
yuri
fecbb26cbf email acl fix 2016-08-11 15:30:47 +03:00
yuri
a5ae33ab81 fix dateTime exception 2016-08-11 13:01:25 +03:00
yuri
c6fa0e464e prevent stream request after remove record 2016-08-11 12:49:56 +03:00
yuri
38bae6238a portal: disable teams field 2016-08-11 12:28:14 +03:00
yuri
79de4c874f portal: follow created 2016-08-11 12:16:51 +03:00
yuri
814748ec61 fix map 2016-08-11 11:48:46 +03:00
yuri
1f0ad0cbec fix inbound email duplicate 2016-08-11 11:12:36 +03:00
yuri
7224f566d6 email import: bad date catch 2016-08-10 16:50:22 +03:00
yuri
eefb01ec4f fix salesByMonth 2016-08-10 16:22:17 +03:00
yuri
24d46ed81d fix currency rates 2016-08-10 15:51:20 +03:00
yuri
37c749faf8 remove messageIdInternal index 2016-08-10 15:34:23 +03:00
yuri
4306a3131e fix inbound email ui 2016-08-10 15:32:59 +03:00
yuri
8fa95fcce3 email: fix whitespace subject 2016-08-09 11:12:30 +03:00
yuri
b7c41ce640 email fix 2016-08-08 13:09:51 +03:00
yuri
a21be94ed3 fix acl 2016-08-08 13:06:40 +03:00
yuri
9d59edcae2 v 2016-08-08 11:51:54 +03:00
yuri
deaa26a355 es_ES lang fix 2016-08-08 10:29:49 +03:00
yuri
25d6fb6d82 theme fixes 2016-08-08 10:18:06 +03:00
yuri
c1bcc44f04 fix error 2016-08-08 10:03:00 +03:00
yuri
fdf8183385 fix massRemove acl check 2016-08-08 09:57:06 +03:00
yuri
db40426f00 lang fix 2016-08-05 11:00:24 +03:00
yuri
eb92e648a0 dashlet action url 2016-08-04 12:52:37 +03:00
yuri
5df26c324f fix scheduled job running 2016-08-04 12:30:26 +03:00
yuri
c36a064fdc lang 2016-08-04 11:01:39 +03:00
yuri
a28baa6a75 fix install footer date 2016-08-03 17:29:19 +03:00
yuri
27aed29ddf Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2016-08-03 17:26:43 +03:00
yuri
744fb176cc fix code to meet standards 2016-08-03 17:25:29 +03:00
Taras Machyshyn
5f8a0736e4 LDAP corrections 2016-08-03 16:25:33 +03:00
yuri
7fb179e769 Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2016-08-03 16:09:55 +03:00
Taras Machyshyn
48239c53ca Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2016-08-03 12:41:50 +03:00
Taras Machyshyn
4e18afb80f LDAP: added 'Test Connection' button 2016-08-03 12:41:33 +03:00
yuri
e9d3d7c807 fix date stringify 2016-08-03 12:23:58 +03:00
Taras Machyshyn
60923197e5 Ldap: added user teams, user default team 2016-08-03 10:56:08 +03:00
Taras Machyshyn
a9f7c90323 Improvements 2016-08-03 10:37:48 +03:00
yuri
cc723095c2 fix file manager 2016-08-02 15:04:53 +03:00
yuri
373b77f83f fix tests 2016-08-02 14:57:47 +03:00
Taras Machyshyn
68ab589f3e Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2016-08-02 13:09:26 +03:00
Taras Machyshyn
23ccbb226f Test fixes 2016-08-02 13:09:14 +03:00
yuri
48edf2a2b5 selectManager test 2016-08-02 13:03:56 +03:00
yuri
082c65ef05 fix unit test 2016-08-02 10:54:12 +03:00
yuri
6553d8ec6c Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2016-08-01 17:45:07 +03:00
yuri
c54b6fcc7c test addition 2016-08-01 17:44:43 +03:00
yuri
655ee740e0 importer test 2016-08-01 17:40:47 +03:00
Taras Machyshyn
b02f77b8f9 LDAP improvements 2016-08-01 16:29:26 +03:00
yuri
351c46af06 fix kb order 2016-08-01 15:36:24 +03:00
yuri
d3db25d98a fix portal user password email 2016-08-01 15:24:01 +03:00
yuri
ef1fe1bd1d Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2016-08-01 11:12:51 +03:00
Taras Machyshyn
6c2cd93826 Default config 2016-08-01 11:12:26 +03:00
yuri
4859f54f42 email import: get rid of file manager 2016-08-01 10:16:09 +03:00
Taras Machyshyn
749c2dc1e9 Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2016-07-29 17:54:02 +03:00
Taras Machyshyn
3d13026084 LDAP fixes 2016-07-29 17:53:49 +03:00
yuri
6cf66aa88e account: recently created filter 2016-07-29 11:51:23 +03:00
yuri
d10ef7038b meetings and assignmentPermissions 2016-07-29 11:41:37 +03:00
yuri
cda612810d Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2016-07-28 11:31:42 +03:00
yuri
a7aaac513d composer.lock 2016-07-28 11:30:57 +03:00
yuri
329dbdf408 it_IT lang 2016-07-28 11:28:47 +03:00
Taras Machyshyn
007f705904 Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2016-07-27 16:53:24 +03:00
Taras Machyshyn
36cddbe0cf Fixed LDAP authorization 2016-07-27 16:53:11 +03:00
yuri
e9409ccf72 remove tab 2016-07-27 16:44:46 +03:00
yuri
b5a1ede962 Merge branch 'hotfix/4.1.7' 2016-07-27 11:26:28 +03:00
yuri
2dc6951ef9 v 2016-07-27 11:26:07 +03:00
yuri
66f686c013 fix kb order 2016-07-27 10:56:20 +03:00
yuri
937aab2b1c massAction successMessage 2016-07-26 15:31:49 +03:00
yuri
43bee97055 massAction fix 2016-07-26 12:22:36 +03:00
yuri
a31f5ea87a email address book filter by portal permissions 2016-07-26 12:06:50 +03:00
yuri
0c4d5f3405 mass action defs 2016-07-26 11:31:07 +03:00
yuri
4e70ea0586 fix email 2016-07-25 17:13:34 +03:00
yuri
7736f6cd76 fix email update 2016-07-25 17:07:14 +03:00
yuri
2db6eaa344 Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2016-07-25 14:48:08 +03:00
Taras Machyshyn
38b6cbda0e Merge pull request #159 from ecm4u/master
Support AD with LDAP Auth
2016-07-25 14:47:36 +03:00
Taras Machyshyn
9292f18b5b WARNING fixes 2016-07-25 12:35:52 +03:00
Taras Machyshyn
193cf2438a Cron manager bug fixes 2016-07-25 12:31:27 +03:00
yuri
155e0e3841 import: allow created at and created by 2016-07-25 12:01:03 +03:00
yuri
019c03ed2f email-to-task name 2016-07-25 11:24:23 +03:00
yuri
316e54df92 fix message id issue 2016-07-25 11:17:00 +03:00
yuri
40691ae899 fix entity manager text filter list 2016-07-25 11:16:53 +03:00
yuri
ab8ba168ac move kb articles 2016-07-22 14:50:09 +03:00
yuri
b066d91cf5 fix warning 2016-07-21 15:24:01 +03:00
yuri
2833581cde email folders side panel: remove edit link 2016-07-21 13:28:53 +03:00
yuri
279c8b3188 email folder and email filter email link 2016-07-21 13:24:20 +03:00
yuri
eca6408415 prevent changing users email address and phone numbers for non admins 2016-07-21 13:07:13 +03:00
yuri
35cfb1a480 scheduled job mass actions 2016-07-21 10:58:09 +03:00
yuri
30f3d4ab5e stream notifications 2016-07-20 16:40:21 +03:00
yuri
7e5424e40a activities and history listen to save 2016-07-19 12:23:46 +03:00
Heiko Robert
82612326bf fixed wrong method syntax 2016-07-18 09:04:41 +02:00
Heiko Robert
da2e5c835a removed unnecessary comments 2016-07-14 15:06:31 +02:00
Heiko Robert
af8eb51c76 fix: setting ldap user fields array after constructor in createUser to support getConfig() 2016-07-14 14:51:26 +02:00
Heiko Robert
7253e257f1 moved hard coded ldap config to conf.php, added default config for Active Directory (cn --> samaccountname) 2016-07-13 17:50:43 +02:00
Heiko Robert
37e93edf25 Merge pull request #2 from espocrm/master
Update from original
2016-07-13 17:40:48 +02:00
yuri
36a56f050f multiple smtp 2016-07-08 16:25:27 +03:00
yuri
31c2d1360d fix warnings 2016-07-08 11:18:28 +03:00
yuri
4addc48339 fix import 2016-07-08 11:00:19 +03:00
yuri
a7267bc920 fix import of noJoin relations 2016-07-08 10:49:06 +03:00
yuri
93e94f40c3 fix move to folder 2016-07-07 17:36:58 +03:00
yuri
bd75790c29 change email list layout 2016-07-07 17:26:43 +03:00
yuri
f1cffcae38 email actions 2016-07-07 17:08:05 +03:00
yuri
9111bce47a move to folder email 2016-07-07 16:30:08 +03:00
yuri
73ec161ac4 fix RDB findRelated if new 2016-07-07 15:55:53 +03:00
yuri
495a07639e email folders dev 2016-07-07 15:55:37 +03:00
yuri
044223e70e fix RDB findRelated if new 2016-07-07 15:27:53 +03:00
yuri
42c9250995 email folders url 2016-07-07 12:07:51 +03:00
yuri
8b4a1d96fd replyInHtml 2016-07-07 11:32:42 +03:00
yuri
fff06d7e92 email folder dev 2016-07-06 17:14:08 +03:00
yuri
726adc550c email folders 2016-07-06 16:38:29 +03:00
yuri
f5bde670f6 fix mapper fatal error 2016-07-06 10:26:22 +03:00
yuri
050873dd3a Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2016-07-06 10:12:50 +03:00
yuri
d3886c1c94 dev 2016-07-06 10:12:40 +03:00
yuri
84f03cf3f9 email improvements 2 2016-07-05 12:41:57 +03:00
yuri
f8953d56f4 fix link multiple with role 2016-07-05 10:23:01 +03:00
yuri
ebbf14160b email folder changes 2016-07-04 17:29:46 +03:00
yuri
4df0a09de0 lang 2016-07-04 10:22:58 +03:00
yuri
c485aa9a62 email folder entity 2016-07-01 17:18:32 +03:00
yuri
ae474022b9 email filters skip 2016-07-01 15:23:41 +03:00
yuri
f994cdf7c4 email filter changes 2016-06-30 16:56:04 +03:00
yuri
7ff514e5a7 email sentBy field 2016-06-30 11:48:53 +03:00
yuri
344403de54 fix email sent filter 2016-06-30 11:18:15 +03:00
yuri
836243d170 fix email sent filter 2016-06-30 11:17:31 +03:00
yuri
0dc9129d79 notification improvements 2 2016-06-29 16:54:23 +03:00
yuri
61c9d07ad8 notifications improvements 2016-06-29 16:50:01 +03:00
yuri
a238295ba8 control followers after reassignment 2016-06-29 16:23:30 +03:00
yuri
dbabd0dd45 Merge branch 'hotfix/4.1.6' 2016-06-29 16:03:10 +03:00
yuri
f87ff8db8a fix 2016-06-29 15:38:21 +03:00
yuri
60d121f1e1 portal acl fixes 2016-06-29 15:17:52 +03:00
yuri
1497abff07 v 2016-06-29 13:12:09 +03:00
yuri
935ba7d4e4 fix 2016-06-29 13:10:36 +03:00
yuri
fba79cde8f notification chanfes 2016-06-29 11:51:30 +03:00
yuri
ce79d14a29 duplicate by default 2016-06-28 15:53:18 +03:00
yuri
14b2083226 google maps key 2016-06-28 15:28:50 +03:00
yuri
779a841817 kba ordering 2016-06-28 11:56:29 +03:00
yuri
3647523150 naming fix 2016-06-28 10:59:32 +03:00
yuri
eb5b941fe6 email accounts massUpdate 2016-06-28 10:56:25 +03:00
yuri
c542d99536 fix stream header long texts 2016-06-27 10:50:48 +03:00
yuri
918031a9c6 fix long texts in stream 2016-06-27 10:49:00 +03:00
yuri
163e0cac2a drag and drop additional 2016-06-24 17:08:49 +03:00
Taras Machyshyn
95096dd8fd Correct translations for installer 2016-06-24 15:28:28 +03:00
yuri
67bd98bf4b iso week numbers 2016-06-24 15:22:03 +03:00
yuri
ac434c00d6 stream drag and drop 2016-06-24 15:04:54 +03:00
yuri
0fb8330ecf preferenses: hide notifications if not enabled 2016-06-24 12:36:55 +03:00
yuri
3f969cee5b Merge branch 'hotfix/4.1.6' 2016-06-24 12:15:59 +03:00
yuri
ea5f6300f3 fix text overflow in list expanded 2016-06-24 12:15:51 +03:00
yuri
0d5e75db23 activities dashlet: show only todays and next day 2016-06-23 17:18:49 +03:00
yuri
7d667a1d1b notification about mention 2016-06-23 16:18:32 +03:00
yuri
610922c8e0 fix client notification 2016-06-23 15:20:17 +03:00
yuri
36e0882542 rename method 2016-06-23 11:44:13 +03:00
yuri
b9979e87af email notifications: dont notify old emails 2016-06-23 11:21:38 +03:00
yuri
bcd38dd853 fix email filters 2016-06-23 10:52:22 +03:00
yuri
b018580c0b fix email reminder 2016-06-23 10:36:08 +03:00
yuri
38a7f42a1e remove ob_clean and flush 2016-06-22 16:26:52 +03:00
yuri
1387d856ba remove ob_clean from installer 2016-06-22 16:20:11 +03:00
yuri
f2bbc872d6 lang fixes 2016-06-22 16:00:45 +03:00
yuri
c74e7b416e lang 2016-06-22 15:03:33 +03:00
yuri
f008688c14 orm: fix order by list 2016-06-22 12:14:15 +03:00
yuri
dff0d5a992 fix email notification from person 2016-06-22 12:01:38 +03:00
yuri
6fe6f8960f fix stream note.js 2016-06-22 10:28:25 +03:00
yuri
0b0184098d fix gender in stream 2016-06-21 17:25:18 +03:00
yuri
647515d21a gender support 2016-06-21 17:21:45 +03:00
yuri
2ee944ef7b change assignment templates 2016-06-21 12:23:51 +03:00
yuri
f4d2325b8b reminder and invitations change 2016-06-21 12:08:55 +03:00
yuri
c0904125eb notification changes and stream message changes 2016-06-20 17:35:57 +03:00
yuri
7dad30ad0c fix notices 2016-06-20 11:24:15 +03:00
yuri
d6acb6dfdc fix notice 2016-06-20 11:06:26 +03:00
yuri
b6da94fe2e fix modal backdrop close 2016-06-17 11:54:09 +03:00
yuri
dc5e292a02 fix modal backdrop close 2016-06-17 11:53:30 +03:00
yuri
4bf938107d portal id 2016-06-16 16:59:10 +03:00
yuri
ec7d49cdbc fix validate message if empty element 2016-06-15 17:20:19 +03:00
yuri
3c73062b91 email: is replied 2016-06-15 16:38:01 +03:00
yuri
5122f112d1 task dashlet: dont show if date start is future 2016-06-15 12:43:47 +03:00
yuri
5e20fa6717 orm: skip text fields param 2016-06-15 11:41:52 +03:00
yuri
d4599d9377 fix mapper test 2016-06-15 11:40:26 +03:00
yuri
adb9ce4d7e email: rename name label 2016-06-15 11:17:16 +03:00
yuri
e777413a7b enum order 2016-06-15 11:15:02 +03:00
yuri
2cb0ac6221 email: forward info 2016-06-14 17:30:24 +03:00
yuri
8f7fafb990 email import: fetch parent from replied 2016-06-14 16:37:54 +03:00
yuri
158c911787 fix label 2016-06-14 13:01:58 +03:00
yuri
aa67575ecb internal post dev 2016-06-14 12:56:18 +03:00
yuri
81cf82c99f fix stream posting 2016-06-14 11:56:42 +03:00
yuri
e638bf2eec Merge branch 'hotfix/4.1.6' 2016-06-14 11:44:55 +03:00
yuri
6c9d1dbb3d fix notification sounds 2016-06-14 11:43:31 +03:00
yuri
fbb034ef92 intenal post dev 2016-06-14 11:24:42 +03:00
yuri
335601d6b8 fix multienum validate message 2016-06-13 15:57:37 +03:00
yuri
f6ad51ca74 fix calendar colors 2016-06-13 15:30:16 +03:00
yuri
e119f8b008 fix entity manager tabList 2016-06-13 15:23:29 +03:00
yuri
5af0eeff3b entity manager: event type 2016-06-13 13:12:41 +03:00
yuri
f685feb312 Merge branch 'hotfix/4.1.6' 2016-06-13 10:56:38 +03:00
yuri
c78254a8fa no dashboard layout for portal useres 2016-06-13 10:52:20 +03:00
yuri
9c3758b92c Merge branch 'stable' 2016-06-10 16:10:48 +03:00
yuri
4ca2a7fa1a fix notice 2016-06-10 16:03:10 +03:00
yuri
d6814b1601 Merge branch 'hotfix/4.1.5' 2016-06-10 15:55:57 +03:00
yuri
55e5a21dcd Merge branch 'hotfix/4.1.5' of ssh://172.20.0.1/var/git/espo/backend into hotfix/4.1.5 2016-06-10 15:54:14 +03:00
Taras Machyshyn
792f422f76 Bug fixing 2016-06-10 15:53:37 +03:00
yuri
8cac546087 merge with hotfix/4.1.5 2016-06-10 15:05:41 +03:00
yuri
0cfe91d960 loadAdditionalFieldsForPdf 2016-06-10 14:44:09 +03:00
yuri
4dea1762e8 stream textarea fix 2016-06-10 13:08:22 +03:00
Taras Machyshyn
b1a9b8d8b1 Code improvement 2016-06-10 10:57:56 +03:00
yuri
6787acce61 fix next number 2016-06-10 10:50:40 +03:00
yuri
eb0adf7c28 fix afterMassRemove 2016-06-09 14:03:23 +03:00
yuri
783cccaa1b Number field type 2016-06-09 12:47:17 +03:00
yuri
36a0a22996 naming fix 2016-06-09 10:49:56 +03:00
yuri
a3f3357b2e Merge branch 'hotfix/4.1.5' 2016-06-08 17:58:29 +03:00
yuri
cbbfa44174 fix field manager ui 2016-06-08 17:58:18 +03:00
yuri
812d2ec9bc fix field manager hook 2016-06-08 17:52:20 +03:00
yuri
b51ba96bb7 number field type prepare 2016-06-08 17:38:12 +03:00
yuri
4c60cf79f6 rdb: rename methods 2016-06-08 15:56:04 +03:00
yuri
8451949805 database charset param 2016-06-08 11:47:52 +03:00
yuri
af5750cdf6 color change 2016-06-07 19:00:57 +03:00
yuri
1a4dfd6f67 version 2016-06-07 12:29:29 +03:00
yuri
6aa800d453 fix fetchOnModelAfterRelate 2016-06-07 12:26:20 +03:00
yuri
82aa3b9508 fix massRelate 2016-06-07 12:15:04 +03:00
yuri
6910a113da email filter: filters 2016-06-06 16:49:07 +03:00
yuri
bd20aaa577 fix htmlizer 2016-06-06 12:55:04 +03:00
yuri
0aef3c0b04 htmlizer and password 2016-06-06 12:53:10 +03:00
yuri
2f97010b54 htmlizer improvements 2016-06-06 12:31:26 +03:00
yuri
5bcdad2996 wysiwyg htmlToPlain fix 2016-06-06 11:59:49 +03:00
yuri
1e8a8d94c2 fix timeline timezone 2016-06-06 11:51:21 +03:00
yuri
9aeefd7685 contact: fix accounts field 2016-06-03 11:29:46 +03:00
yuri
f72385471c naming fix 2016-06-03 11:27:41 +03:00
yuri
f7a542560a check duplicates: all email 2016-06-03 11:19:03 +03:00
yuri
400f43447d v 2016-06-02 17:22:15 +03:00
yuri
866593a831 Storage Message: define ErrorHandler 2016-06-02 17:15:30 +03:00
yuri
c90cdc62fb global search changes 2016-06-02 12:39:06 +03:00
yuri
d5c93f21b5 audited for miltiEnum and arrays 2016-06-02 12:26:47 +03:00
yuri
b58d78a29e preferences: dashboardLayout 2016-05-31 12:05:37 +03:00
yuri
f5b41eb78b field manager: translatedOptions param 2016-05-31 11:01:17 +03:00
yuri
c2a7d90944 fix view-helper options 2016-05-27 13:17:51 +03:00
yuri
b2a4ec238c fix preferences fields 2016-05-27 12:11:17 +03:00
yuri
df69584c7d v 2016-05-27 11:46:31 +03:00
yuri
574da55be7 Merge branch 'hotfix/4.1.3' of ssh://172.20.0.1/var/git/espo/backend into hotfix/4.1.3 2016-05-26 17:15:40 +03:00
Taras Machyshyn
52b808b902 Removed unnecessary debugging messages 2016-05-26 16:53:52 +03:00
Taras Machyshyn
714c7b0a33 Fixed an issue for MySQL 5.7 2016-05-26 16:41:50 +03:00
yuri
3d774e3afa fix wysywyg modals 2016-05-26 16:26:16 +03:00
yuri
c91db1699b upgrade bootstrap 2016-05-26 15:39:04 +03:00
yuri
2b5695d8dc fix wysywig field detail view height 2016-05-26 12:23:52 +03:00
yuri
b562fc33bd dont allow email to modify 2016-05-26 11:43:52 +03:00
yuri
425414b8f3 fix add email address 2016-05-26 11:24:21 +03:00
yuri
3b363d5ee3 cleanup 2016-05-26 11:10:34 +03:00
yuri
4fc3b9a99e fix kb massUpdate layout 2016-05-25 15:23:12 +03:00
yuri
ab2b9bafeb fix meeting/call select manager 2016-05-24 15:53:09 +03:00
yuri
e99fc6302f reminders for all users 2016-05-24 12:35:46 +03:00
yuri
82996a807f calendar: getCalendarSelectParams method 2016-05-24 11:38:14 +03:00
yuri
86b31b1f26 clear role cach if isAdmin changed 2016-05-23 17:25:58 +03:00
yuri
19c9b38f82 applicationName in settings 2016-05-23 12:24:18 +03:00
yuri
b1d0d1cd27 activities: status not required 2016-05-23 11:47:04 +03:00
yuri
c916011530 add id_ID language 2016-05-23 11:36:58 +03:00
yuri
5db6327272 de_DE 2016-05-23 11:10:03 +03:00
yuri
3c5fe4c778 v 2016-05-20 15:41:08 +03:00
yuri
f6f3f05aa5 fix meeting acl 2016-05-20 15:39:51 +03:00
yuri
10f34564d0 load teams for user 2016-05-20 15:38:40 +03:00
yuri
216ec2329d fix record isPermittedTeams 2016-05-20 15:30:49 +03:00
yuri
c3cb4619cf disable formatting for autoincrement 2016-05-20 11:21:06 +03:00
yuri
fcf2929b5b fix record/base 2016-05-19 17:56:19 +03:00
yuri
15c10ca553 fix notice 2016-05-18 16:38:40 +03:00
yuri
9bb417ab38 v 2016-05-18 16:32:25 +03:00
yuri
5b110ee7b2 fix warning 2016-05-18 16:30:46 +03:00
yuri
f3951966f3 fix popup 2016-05-18 16:25:20 +03:00
yuri
f580f0ba60 namimng 2016-05-18 12:34:53 +03:00
yuri
a9e4ad3833 sidePanels refactoring 2016-05-18 11:22:18 +03:00
yuri
3e6c88eb27 lead-document relationship 2016-05-17 17:16:33 +03:00
yuri
7c4ef3f00f query: use distinct instead of group by id 2016-05-17 15:51:08 +03:00
yuri
762d7f71c6 fix date time 2016-05-17 11:18:30 +03:00
yuri
50cc658c20 fix campaign image 2016-05-16 16:09:18 +03:00
yuri
21a59cb198 Merge branch 'master' of ssh://172.20.0.1/var/git/espo/backend 2016-05-16 12:56:36 +03:00
Taras Machyshyn
38ba3461be Fixed SemVer for PHP 7 2016-05-16 12:55:51 +03:00
yuri
f70ee27809 remove notes from user layout 2016-05-16 10:59:08 +03:00
yuri
674c1588d9 iOS 9 support 2016-05-13 12:40:26 +03:00
yuri
e9eb5402cc fix selector 2016-05-11 17:35:55 +03:00
yuri
7f746a72bb ui performance oprtimization 2016-05-11 16:22:02 +03:00
yuri
bde6a810c4 cleanup 2016-05-11 11:42:12 +03:00
yuri
ff3e7d1c5b fit add dashlet modal height 2016-05-11 11:41:27 +03:00
yuri
7ecb63189a fix full form from quick edit 2016-05-11 10:56:33 +03:00
yuri
eb1e16d6bd phone/email search more optimized way 2016-05-10 16:45:43 +03:00
yuri
f17b5d7244 small fix in RDB 2016-05-10 13:04:04 +03:00
yuri
a5b44e9fdf entity manager: text filter fields 2016-05-10 12:34:29 +03:00
yuri
734219dbd4 customUrl portal layout 2016-05-09 11:26:02 +03:00
yuri
45c351ab39 user entity small fixes 2016-05-09 11:22:06 +03:00
yuri
74aa55a8aa store sent emails 2016-05-09 11:19:14 +03:00
yuri
64b3a88ba0 fix shared calendar 2016-05-09 11:06:12 +03:00
yuri
08ff00f602 fix user select manager 2016-05-09 11:05:52 +03:00
yuri
0d9853311a inbox dashlet layout change 2016-05-06 12:54:24 +03:00
yuri
b1d17f9e84 fix shared calendar store 2016-05-06 12:02:00 +03:00
yuri
3a6041a8df shared calendar improvements 2016-05-06 11:57:37 +03:00
yuri
023171f19e merge 2016-05-05 15:17:29 +03:00
yuri
546fed83c8 version 4.0.6 2016-05-05 15:15:54 +03:00
yuri
6b37ce80fd fix kb 2016-05-05 15:14:32 +03:00
yuri
a98c8b3bcd naming 2016-05-05 13:08:28 +03:00
yuri
7bd3dd26cf notificationSoundsDisabled 2016-05-05 13:03:15 +03:00
yuri
fe7684b46c naming 2016-05-05 12:56:16 +03:00
yuri
ea5dcfe630 entity manager trimming 2016-05-05 12:12:40 +03:00
yuri
ad5f29338b field manager: trim 2016-05-05 11:59:35 +03:00
yuri
89d2b26613 cleanup 2016-05-05 11:10:56 +03:00
yuri
7206dc38bc meeting/call acl fix: allow read own record if no assigned 2016-05-05 11:08:26 +03:00
yuri
4b9ff21743 version 4.2.0 2016-05-04 17:05:09 +03:00
yuri
fbe7910349 merge 2016-05-04 16:32:19 +03:00
yuri
7b098095cb v 4.0.5 2016-05-04 16:18:36 +03:00
yuri
7966be90e7 fix acl 2016-05-04 16:18:12 +03:00
yuri
b64db89307 fix acl 2016-05-04 16:17:25 +03:00
yuri
cb9b7c3e72 code fix suite 2016-05-04 16:16:57 +03:00
yuri
a268962c15 dont save email reminder 2016-05-04 15:16:29 +03:00
yuri
36c1b56916 scheduled job mass update 2016-05-04 14:51:49 +03:00
yuri
39a2e30e3f version 2016-05-04 11:29:12 +03:00
yuri
b91d237f0b portal users activities 2016-05-04 11:25:12 +03:00
yuri
f7a0a0daa0 config textFilterUseContainsForVarchar 2016-05-04 10:52:25 +03:00
yuri
4f270d003b linkParent field entityList filtered by disabled 2016-05-04 10:23:34 +03:00
yuri
e3ebc8c2e2 portal customUrl and fix 2016-05-04 09:57:42 +03:00
yuri
c31c5618dd fix portal user sendPassword 2016-05-04 09:47:10 +03:00
yuri
341d5f8d7c fix InboundEmail namespace 2016-05-04 09:45:24 +03:00
yuri
04d2bd69c1 fix jobs 2016-04-29 16:40:05 +03:00
yuri
47efa792ee kb/documents buttons 2016-04-29 12:15:04 +03:00
yuri
a71c6789bc fix dateTimeOptional required 2016-04-29 11:49:50 +03:00
yuri
3a41aad935 fix job.php 2016-04-28 17:14:42 +03:00
yuri
fad56c1c0a email craetedAt filter 2016-04-28 17:09:08 +03:00
yuri
d6ad7f16c1 cron populate logic 2016-04-28 16:16:31 +03:00
yuri
ae89a9216d fix email importer 2016-04-28 15:18:14 +03:00
yuri
6927c82a0f Application setupSystemUser 2016-04-28 11:00:12 +03:00
yuri
e06b553653 fix avatar 2016-04-27 16:24:11 +03:00
yuri
e9a63c0c36 merge all links 2016-04-27 12:26:06 +03:00
yuri
582c23ecf4 metadata get by array 2016-04-27 12:24:42 +03:00
yuri
d86ff1e905 user mass update layout change 2016-04-27 11:43:33 +03:00
yuri
773bca8448 user mass update fix 2016-04-27 11:41:45 +03:00
yuri
a6258cd334 afterMassUpdate afterMassRemove methods 2016-04-27 11:41:35 +03:00
yuri
1cdf88ef9b cleanup 2016-04-27 11:41:14 +03:00
yuri
58ffbad422 fix jobs 2016-04-27 11:40:57 +03:00
yuri
aafcd5767e emails dashlet 2016-04-26 11:59:22 +03:00
yuri
2bfac8352b fix wysiwyg 2016-04-26 11:39:07 +03:00
yuri
954eff0c94 acl change 2016-04-26 11:36:42 +03:00
yuri
9692076ba8 int format 2016-04-26 11:08:30 +03:00
yuri
5ae64989eb system avatar color 2016-04-25 17:45:57 +03:00
yuri
3fd34fc48d show more after remove issue fix 2016-04-25 15:28:39 +03:00
yuri
94c207677f int count 2016-04-25 15:23:04 +03:00
yuri
39188f0b3a fix phone number import 2016-04-25 11:07:44 +03:00
yuri
7665ec2730 naming 2016-04-22 11:20:12 +03:00
yuri
bc57ac3065 fix task dashlet 2016-04-22 11:20:07 +03:00
yuri
6cf62736bb wysiwyg fix base tag 2016-04-20 17:59:46 +03:00
yuri
d5e78c1a7a field manager: foreign fielld 2016-04-20 15:37:18 +03:00
yuri
4a0aa1bca0 global search fix 2016-04-20 10:32:05 +03:00
yuri
2d06e8a801 calendar custom entity support 2016-04-19 16:32:40 +03:00
yuri
25b1479c23 fix layouts 2016-04-19 16:09:10 +03:00
yuri
09ab17f18b naming fix 2016-04-19 16:03:38 +03:00
yuri
be438a2f18 pl_PL fix 2016-04-19 11:51:48 +03:00
yuri
c9f91bb8da merge fix 2016-04-19 11:51:06 +03:00
yuri
cd01178151 fix activities service 2016-04-19 11:48:09 +03:00
yuri
3e8ed72246 mass update keep emails and phones 2016-04-19 11:32:56 +03:00
yuri
c500520130 remove dashlet confirmation 2016-04-18 16:45:48 +03:00
yuri
0fc2eb6817 fix lang 2016-04-18 16:42:43 +03:00
yuri
4db2f49233 fix json 2016-04-15 16:30:45 +03:00
yuri
8215c44be9 fix address format 2016-04-15 15:35:10 +03:00
yuri
dbee926a94 address formats 2016-04-15 15:28:54 +03:00
yuri
d85e13cae0 timeline today by default 2016-04-14 16:42:31 +03:00
yuri
370eee8d9d fix timeline lang 2016-04-14 16:34:26 +03:00
yuri
98f317cb1c calendar scope list for create 2016-04-14 12:43:17 +03:00
yuri
3ec9613b0e timeline and calendar less 2016-04-14 12:02:37 +03:00
yuri
8e27d50d5c about.tpl 2016-04-13 17:17:53 +03:00
yuri
fc50991317 fix deprecated ajax usage 2016-04-13 16:37:19 +03:00
yuri
52382bb958 fix deprecated moment usage 2016-04-13 16:22:41 +03:00
yuri
66fdd40659 timeline dashlet fix 2016-04-13 15:50:20 +03:00
yuri
f0f402a8b3 calendar timeline dashlet 2016-04-13 12:40:45 +03:00
yuri
591cbf4484 opp dashlet sorting 2016-04-13 10:00:10 +03:00
yuri
44d813bf5b fix person name template 2016-04-13 09:36:02 +03:00
yuri
fceff4ad7f calendar changes 2016-04-12 17:19:15 +03:00
yuri
f47b41928e fix view field 2016-04-12 17:14:58 +03:00
yuri
c559a97953 timeline dev 2016-04-11 17:16:14 +03:00
yuri
d1d64c84b0 fix typo 2016-04-11 12:46:16 +03:00
yuri
cb1f32ec3a Merge branch 'hotfix/4.0.5' 2016-04-11 11:36:13 +03:00
yuri
e76116810f fix calendar weekStart 2016-04-11 11:36:01 +03:00
yuri
974b69eed0 timeline dev 2016-04-08 17:20:38 +03:00
yuri
bb379c7a0e fix invitation 2016-04-08 10:30:00 +03:00
yuri
5664ede648 fix invitation 2016-04-08 10:28:31 +03:00
yuri
881a3db412 dev timeline 2016-04-08 10:26:53 +03:00
yuri
b74f1cc5d6 Merge branch 'hotfix/4.0.5' 2016-04-07 12:51:38 +03:00
yuri
265ec60614 remove empty side panel box 2016-04-07 12:51:22 +03:00
yuri
d79d716612 download file name escape 2016-04-07 12:51:09 +03:00
yuri
aa61f322bc fix email attachment filename parsing 2016-04-07 12:50:42 +03:00
yuri
c8d2f08c13 fix naming 2016-04-07 10:41:36 +03:00
yuri
920b6e2eba dev 2016-04-06 16:09:11 +03:00
yuri
6e7908de52 timeline dev 1 2016-04-05 16:22:13 +03:00
yuri
10de6aedbd Merge branch 'hotfix/4.0.5' 2016-04-05 11:23:46 +03:00
yuri
ce0efed7b8 fix calendar 2016-04-05 11:23:32 +03:00
yuri
204b9aa49d dev 2016-04-05 10:55:02 +03:00
yuri
ae1db7990e Merge branch 'hotfix/4.0.5' 2016-04-04 16:37:11 +03:00
yuri
18f13acfa9 assigner user field: dont display avatar in list view 2016-04-04 16:10:06 +03:00
yuri
a15b247952 fix lang 2016-04-01 16:34:00 +03:00
yuri
2e457e1f6f fix entity manager link conflicts 2016-04-01 16:30:53 +03:00
yuri
e0375a52f9 fix relationship manager ui 2016-04-01 16:30:38 +03:00
yuri
351a70015a fix email address and phone number duplicates 2016-04-01 12:27:52 +03:00
yuri
8faa001a56 use teams view 2016-04-01 11:34:48 +03:00
yuri
182fc8b65e Merge branch 'hotfix/4.0.5' 2016-04-01 11:16:34 +03:00
yuri
49b581dafd assigned user view 2016-04-01 11:16:25 +03:00
yuri
1319c54365 fix assignment permission no 2016-04-01 11:12:33 +03:00
yuri
c9db2687f5 fetch only header for emails w/ exceeding size 2016-03-31 12:38:37 +03:00
yuri
21252a6eb7 Merge branch 'hotfix/4.0.5' 2016-03-31 11:27:21 +03:00
yuri
1054050542 fix list modal 2 2016-03-31 11:27:12 +03:00
yuri
90e2d7ef0b cleanup 2016-03-31 11:24:56 +03:00
yuri
de9c1e7a20 merge 2016-03-31 11:24:30 +03:00
yuri
08b5f09c55 fix list modal 2016-03-31 11:21:46 +03:00
yuri
23a0ed86e0 cleanup 2016-03-31 10:34:50 +03:00
yuri
0ca7da454b fix notice 2016-03-31 10:33:16 +03:00
yuri
ffc22673f7 Merge branch 'hotfix/4.0.5' 2016-03-30 14:59:08 +03:00
yuri
1faa75c303 add email to quick create list 2016-03-30 12:30:01 +03:00
yuri
8136eed152 orm improvements 2016-03-30 12:29:07 +03:00
yuri
13dc6f0d76 email quick create 2016-03-30 11:19:46 +03:00
yuri
dd55141422 Merge branch 'hotfix/4.0.5' 2016-03-30 10:36:14 +03:00
yuri
d3bcadce13 fix contact filter is empty account 2016-03-30 10:36:06 +03:00
yuri
99533a5416 dont show notification about note if no access to entity 2016-03-29 16:20:05 +03:00
yuri
4a288434bc lead - case 2016-03-29 16:00:40 +03:00
yuri
9218bce3e4 kb email addition 2016-03-29 15:36:50 +03:00
yuri
b566413b78 Merge branch 'hotfix/4.0.5' 2016-03-29 15:30:46 +03:00
yuri
f624b441e4 KB: send email 2016-03-29 15:30:01 +03:00
yuri
ebe7834092 error message if restore password with empty smtp 2016-03-28 15:34:34 +03:00
yuri
9c8f54fd24 fix send test email button 2016-03-28 15:34:01 +03:00
yuri
4a20d74258 Merge branch 'hotfix/4.0.4' 2016-03-25 16:02:53 +02:00
yuri
f47915d077 fix list 2016-03-25 15:20:19 +02:00
yuri
eb2305712a user smtp info 2016-03-25 12:30:10 +02:00
yuri
f75414a5d2 fix intaller 2016-03-25 12:30:02 +02:00
yuri
a88cb05897 fix installer 2016-03-25 11:55:30 +02:00
yuri
2435ae67c9 v 2016-03-25 11:51:02 +02:00
yuri
4c49be5203 installer fix 2016-03-25 11:50:58 +02:00
yuri
2d8a1dad80 fix installer 2016-03-25 05:30:16 -04:00
yuri
a15b009133 user filters 2016-03-25 05:11:11 -04:00
yuri
25d2033b7c user select default filter active 2016-03-25 05:08:08 -04:00
yuri
9abeb6aec8 Merge branch 'hotfix/4.0.4' 2016-03-25 05:01:28 -04:00
yuri
c509eeae49 fix notices 2016-03-25 05:01:05 -04:00
yuri
2a4b0dbcb4 remove task dublicate index 2016-03-25 04:56:47 -04:00
yuri
e45a863e8d fix invitation 2016-03-24 11:27:53 +02:00
yuri
2ca40a6b4e Merge branch 'hotfix/4.0.4' 2016-03-23 17:01:30 +02:00
yuri
c4819e29e0 fix inv email date time 2016-03-23 17:01:00 +02:00
yuri
176fae228c Merge branch 'hotfix/4.0.4' 2016-03-23 16:57:33 +02:00
yuri
c0242a18e3 fix invitation email and email template 2016-03-23 16:57:18 +02:00
yuri
7a953c9a47 use word-break for long field 2016-03-23 16:09:07 +02:00
yuri
27cc0d812e url field title 2016-03-23 16:06:45 +02:00
Yuri Kuznetsov
2a1df998eb Merge pull request #123 from ecm4u/master
allow "Ends With" and "Like (%)" on varchar field
2016-03-23 14:59:56 +02:00
yuri
78573b85b5 Merge branch 'hotfix/4.0.4' 2016-03-23 14:59:09 +02:00
yuri
7a433c1890 fix list remove 2016-03-23 13:03:44 +02:00
yuri
de26d87400 list title 2016-03-23 12:02:03 +02:00
yuri
07da707503 Record controller fix sort 2016-03-23 11:40:24 +02:00
yuri
b473b19b45 fix opportunity dashlet acl 2016-03-22 16:19:44 +02:00
yuri
6c291999f4 keep meeting duration if rescheduled 2016-03-22 13:07:14 +02:00
yuri
2e92d0d3a5 case email compose fix 2016-03-22 12:03:21 +02:00
yuri
2ac5695e45 case email compose fix 2016-03-22 12:02:44 +02:00
yuri
0af4ab54f9 calendar quick view 2016-03-22 11:50:46 +02:00
yuri
8da92966de Merge branch 'hotfix/4.0.4' 2016-03-22 10:41:47 +02:00
yuri
bc3dfc7ff9 fix warnings 2016-03-18 16:05:41 +02:00
yuri
e81d5707f2 fix warnings 2016-03-18 15:26:04 +02:00
yuri
4cb42f8762 Merge branch 'hotfix/4.0.4' 2016-03-18 14:47:51 +02:00
yuri
1d2e3aff89 fix job rep 2016-03-18 14:47:21 +02:00
yuri
e36c8d6053 change year 2016-03-18 11:25:45 +02:00
yuri
4ea1d50caf fix detail getFieldViews 2016-03-18 11:19:14 +02:00
yuri
a50361126f Merge branch 'hotfix/4.0.4' 2016-03-17 12:32:49 +02:00
yuri
865a8e2abc fix E_STRICT notices 2016-03-16 17:34:50 +02:00
yuri
037ef7ea78 Merge branch 'hotfix/4.0.4' 2016-03-16 12:49:17 +02:00
yuri
5783f4e708 fix autoincrement 2016-03-16 12:48:44 +02:00
yuri
9991dd350f fix autoincrement 2016-03-16 12:48:18 +02:00
yuri
557a48ec6a isDraggable 2016-03-15 16:01:43 +02:00
yuri
d5fa18975e try catch for send password 2016-03-14 16:54:35 +02:00
yuri
23ee06e123 hide panels and buttons from portal user 2016-03-14 16:50:44 +02:00
yuri
e47eab0ce7 fix select manager 2016-03-14 15:52:06 +02:00
yuri
17ae5b6b5a fix file permissions 2016-03-14 15:51:58 +02:00
yuri
fa29bf3309 v 2016-03-14 11:43:24 +02:00
Heiko Robert
e839e505c8 en localisation for new search filter 2016-03-11 15:50:47 +01:00
Heiko Robert
7dc9c3e6b6 added search filter "Ends With", "Like" for varchar fields 2016-03-11 15:46:15 +01:00
yuri
684585278d fix email import 2016-03-11 12:02:21 +02:00
yuri
e303be8155 fix german salutations 2016-03-10 15:17:40 +02:00
yuri
f1285f0615 fix default side panel tpl 2016-03-10 12:46:21 +02:00
yuri
3fd1974d86 fix build permissions 2016-03-09 15:57:13 +02:00
yuri
d48716e65a account: text search by email address 2016-03-09 11:20:57 +02:00
yuri
a0432051f4 fix lead service 2016-03-09 11:03:56 +02:00
yuri
076c3aa65b trim search 2016-03-09 10:44:32 +02:00
yuri
92abd16032 remove notification if record removed 2016-03-04 12:40:30 +02:00
yuri
e6632066a6 aclPortal case: default status readOnly 2016-03-04 12:28:43 +02:00
2202 changed files with 81585 additions and 13482 deletions

11
.editorconfig Normal file
View File

@@ -0,0 +1,11 @@
# editorconfig.org
root = true
[*]
indent_style = space
indent_size = 4
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true

7
.gitignore vendored
View File

@@ -14,7 +14,12 @@
/client/css/sakura-vertical.css
/client/css/violet.css
/client/css/violet-vertical.css
/tests/testData/cache/*
/client/css/espo-rtl.css
/client/css/hazyblue-vertical.css
/tests/unit/testData/cache/*
!/tests/unit/testData/cache/.data
/tests/integration/config.php
composer.phar
vendor/
/custom/Espo/Custom/*

0
.htaccess Executable file → Normal file
View File

View File

@@ -2,7 +2,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2015 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2017 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -34,7 +34,7 @@ module.exports = function (grunt) {
'client/lib/jquery.autocomplete.js',
'client/lib/bootstrap.min.js',
'client/lib/bootstrap-datepicker.js',
'client/lib/bull.min.js',
'client/lib/bull.js',
'client/src/namespace.js',
'client/src/exceptions.js',
'client/src/loader.js',
@@ -76,6 +76,22 @@ module.exports = function (grunt) {
'client/css/espo-vertical.css': 'frontend/less/espo-vertical/main.less',
}
},
espoRtl: {
options: {
yuicompress: true
},
files: {
'client/css/espo-rtl.css': 'frontend/less/espo-rtl/main.less'
}
},
hazyblueVertical: {
options: {
yuicompress: true,
},
files: {
'client/css/hazyblue-vertical.css': 'frontend/less/hazyblue-vertical/main.less',
}
},
sakura: {
options: {
yuicompress: true,
@@ -214,8 +230,11 @@ module.exports = function (grunt) {
},
src: [
'build/EspoCRM-<%= pkg.version %>/install',
'build/EspoCRM-<%= pkg.version %>/portal',
'build/EspoCRM-<%= pkg.version %>/api',
'build/EspoCRM-<%= pkg.version %>/api/v1',
'build/EspoCRM-<%= pkg.version %>/api/v1/portal-access',
'build/EspoCRM-<%= pkg.version %>',
]
}
},

View File

@@ -8,14 +8,14 @@ Download the latest release from our [website](http://www.espocrm.com).
### Requirements
* PHP 5.4 or above (with pdo, json, gd, mcrypt extensions);
* PHP 5.5 or above (with pdo, json, gd, mcrypt extensions);
* MySQL 5.1 or above.
For more information about server configuration see [this article](http://blog.espocrm.com/administration/server-configuration-for-espocrm/).
### How to report bug
Create an issue [here](https://github.com/espocrm/espocrm/issues) or post on our [forum](http://forum.espocrm.com/bug-reports?routestring=forum/bug-reports).
Create an issue [here](https://github.com/espocrm/espocrm/issues) or post on our [forum](http://forum.espocrm.com/forum/bug-reports).
### How to get started (for developers)

0
api/v1/.htaccess Executable file → Normal file
View File

View File

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

0
api/v1/portal-access/.htaccess Executable file → Normal file
View File

View File

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

0
api/v1/portal-access/web.config Executable file → Normal file
View File

0
api/v1/web.config Executable file → Normal file
View File

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2015 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2017 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,12 +29,12 @@
namespace Espo\Acl;
use \Espo\Entities\User;
use \Espo\Entities\User as EntityUser;
use \Espo\ORM\Entity;
class Attachment extends \Espo\Core\Acl\Base
{
public function checkEntityRead(User $user, Entity $entity, $data)
public function checkEntityRead(EntityUser $user, Entity $entity, $data)
{
if ($user->isAdmin()) {
return true;
@@ -82,7 +82,7 @@ class Attachment extends \Espo\Core\Acl\Base
return false;
}
public function checkIsOwner(User $user, Entity $entity)
public function checkIsOwner(EntityUser $user, Entity $entity)
{
if ($user->id === $entity->get('createdById')) {
return true;

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2015 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2017 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,13 +29,13 @@
namespace Espo\Acl;
use \Espo\Entities\User;
use \Espo\Entities\User as EntityUser;
use \Espo\ORM\Entity;
class Email extends \Espo\Core\Acl\Base
{
public function checkEntityRead(User $user, Entity $entity, $data)
public function checkEntityRead(EntityUser $user, Entity $entity, $data)
{
if ($this->checkEntity($user, $entity, $data, 'read')) {
return true;
@@ -60,7 +60,7 @@ class Email extends \Espo\Core\Acl\Base
return false;
}
public function checkIsOwner(User $user, Entity $entity)
public function checkIsOwner(EntityUser $user, Entity $entity)
{
if ($user->id === $entity->get('assignedUserId')) {
return true;
@@ -76,5 +76,46 @@ class Email extends \Espo\Core\Acl\Base
return false;
}
public function checkEntityDelete(EntityUser $user, Entity $entity, $data)
{
if ($user->isAdmin()) {
return true;
}
if ($data === false) {
return false;
}
if ($data->delete === 'own') {
if ($user->id === $entity->get('assignedUserId')) {
return true;
}
if ($user->id === $entity->get('createdById')) {
return true;
}
$assignedUserIdList = $entity->getLinkMultipleIdList('assignedUsers');
if (count($assignedUserIdList) === 1 && $entity->hasLinkMultipleId('assignedUsers', $user->id)) {
return true;
}
return false;
}
if ($this->checkEntity($user, $entity, $data, 'delete')) {
return true;
}
if ($data->edit !== 'no' || $data->create !== 'no') {
if ($entity->get('createdById') === $user->id) {
if ($entity->get('status') !== 'Sent' && $entity->get('status') !== 'Archived') {
return true;
}
}
}
return false;
}
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2015 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2017 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,12 +29,12 @@
namespace Espo\Acl;
use \Espo\Entities\User;
use \Espo\Entities\User as EntityUser;
use \Espo\ORM\Entity;
class EmailFilter extends \Espo\Core\Acl\Base
{
public function checkIsOwner(User $user, Entity $entity)
public function checkIsOwner(EntityUser $user, Entity $entity)
{
if ($entity->has('parentId') && $entity->has('parentType')) {
$parentType = $entity->get('parentType');
@@ -42,11 +42,14 @@ class EmailFilter extends \Espo\Core\Acl\Base
if (!$parentType || !$parentId) return;
$parent = $this->getEntityManager()->getEntity($parentType, $parentId);
if ($parent->getEntityType() === 'User') {
return $parent->id === $user->id;
}
if ($parent && $parent->has('assignedUserId') && $parent->get('assignedUserId') === $user->id) {
return true;
}
}
return;
}
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2015 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2017 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,12 +29,12 @@
namespace Espo\Acl;
use \Espo\Entities\User;
use \Espo\Entities\User as EntityUser;
use \Espo\ORM\Entity;
class Notification extends \Espo\Core\Acl\Base
{
public function checkIsOwner(User $user, Entity $entity)
public function checkIsOwner(EntityUser $user, Entity $entity)
{
if ($user->id === $entity->get('userId')) {
return true;

View File

@@ -0,0 +1,41 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2017 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://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\ORM\Entity;
class Team extends \Espo\Core\Acl\Base
{
public function checkInTeam(\Espo\Entities\User $user, Entity $entity)
{
$userTeamIdList = $user->getLinkMultipleIdList('teams');
return in_array($entity->id, $userTeamIdList);
}
}

View File

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

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2015 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2017 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,12 +29,12 @@
namespace Espo\AclPortal;
use \Espo\Entities\User;
use \Espo\Entities\User as EntityUser;
use \Espo\ORM\Entity;
class Attachment extends \Espo\Core\AclPortal\Base
{
public function checkEntityRead(User $user, Entity $entity, $data)
public function checkEntityRead(EntityUser $user, Entity $entity, $data)
{
if ($user->isAdmin()) {
return true;
@@ -82,7 +82,7 @@ class Attachment extends \Espo\Core\AclPortal\Base
return false;
}
public function checkIsOwner(User $user, Entity $entity)
public function checkIsOwner(EntityUser $user, Entity $entity)
{
if ($user->id === $entity->get('createdById')) {
return true;

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2015 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2017 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,13 +29,13 @@
namespace Espo\AclPortal;
use \Espo\Entities\User;
use \Espo\Entities\User as EntityUser;
use \Espo\ORM\Entity;
class Email extends \Espo\Core\AclPortal\Base
{
public function checkEntityRead(User $user, Entity $entity, $data)
public function checkEntityRead(EntityUser $user, Entity $entity, $data)
{
if ($this->checkEntity($user, $entity, $data, 'read')) {
return true;
@@ -60,7 +60,7 @@ class Email extends \Espo\Core\AclPortal\Base
return false;
}
public function checkIsOwner(User $user, Entity $entity)
public function checkIsOwner(EntityUser $user, Entity $entity)
{
if ($user->id === $entity->get('createdById')) {
return true;

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2015 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2017 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,12 +29,12 @@
namespace Espo\AclPortal;
use \Espo\Entities\User;
use \Espo\Entities\User as EntityUser;
use \Espo\ORM\Entity;
class Notification extends \Espo\Core\AclPortal\Base
{
public function checkIsOwner(User $user, Entity $entity)
public function checkIsOwner(EntityUser $user, Entity $entity)
{
if ($user->id === $entity->get('userId')) {
return true;

View File

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

View File

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

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2015 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2017 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -47,11 +47,30 @@ class App extends \Espo\Core\Controllers\Base
$user->loadLinkMultipleField('accounts');
}
$userData = $user->getValues();
$emailAddressList = [];
foreach ($user->get('emailAddresses') as $emailAddress) {
if ($emailAddress->get('invalid')) continue;
if ($user->get('emailAddrses') === $emailAddress->get('name')) continue;
$emailAddressList[] = $emailAddress->get('name');
}
if ($user->get('emailAddrses')) {
array_unshift($emailAddressList, $user->get('emailAddrses'));
}
$userData['emailAddressList'] = $emailAddressList;
$settings = (object)[];
foreach ($this->getConfig()->get('userItems') as $item) {
$settings->$item = $this->getConfig()->get($item);
}
return array(
'user' => $user->getValues(),
'user' => $userData,
'acl' => $this->getAcl()->getMap(),
'preferences' => $preferences,
'token' => $this->getUser()->get('token')
'token' => $this->getUser()->get('token'),
'settings' => $settings
);
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2015 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2017 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -44,8 +44,13 @@ class Attachment extends \Espo\Core\Controllers\Record
throw new Forbidden();
}
list($prefix, $contents) = explode(',', $data);
$contents = base64_decode($contents);
$arr = explode(',', $data);
if (count($arr) > 1) {
list($prefix, $contents) = $arr;
$contents = base64_decode($contents);
} else {
$contents = '';
}
$attachment = $this->getEntityManager()->getEntity('Attachment');
$this->getEntityManager()->saveEntity($attachment);

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2015 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2017 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -40,32 +40,32 @@ class AuthToken extends \Espo\Core\Controllers\Record
}
}
public function actionUpdate($params, $data)
public function actionUpdate($params, $data, $request)
{
throw new Forbidden();
}
public function actionCreate($params, $data)
public function actionCreate($params, $data, $request)
{
throw new Forbidden();
}
public function actionListLinked($params, $data)
public function actionListLinked($params, $data, $request)
{
throw new Forbidden();
}
public function actionMassUpdate($params, $data)
public function actionMassUpdate($params, $data, $request)
{
throw new Forbidden();
}
public function actionCreateLink($params, $data)
public function actionCreateLink($params, $data, $request)
{
throw new Forbidden();
}
public function actionRemoveLink($params, $data)
public function actionRemoveLink($params, $data, $request)
{
throw new Forbidden();
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2015 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2017 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -32,6 +32,7 @@ namespace Espo\Controllers;
use \Espo\Core\Exceptions\BadRequest;
use \Espo\Core\Exceptions\Forbidden;
use \Espo\Core\Exceptions\Error;
use \Espo\Core\Exceptions\NotFound;
class Email extends \Espo\Core\Controllers\Record
{
@@ -51,22 +52,48 @@ class Email extends \Espo\Core\Controllers\Record
throw new BadRequest();
}
if (!$this->getAcl()->checkScope('Email')) {
throw new Forbidden();
}
if (is_null($data['password'])) {
if ($data['type'] == 'preferences') {
if (!$this->getUser()->isAdmin() && $data['id'] != $this->getUser()->id) {
if (!$this->getUser()->isAdmin() && $data['id'] !== $this->getUser()->id) {
throw new Forbidden();
}
$preferences = $this->getEntityManager()->getEntity('Preferences', $data['id']);
if (!$preferences) {
throw new Error();
throw new NotFound();
}
$data['password'] = $this->getContainer()->get('crypt')->decrypt($preferences->get('smtpPassword'));
if (is_null($data['password'])) {
$data['password'] = $this->getContainer()->get('crypt')->decrypt($preferences->get('smtpPassword'));
}
} else if ($data['type'] == 'emailAccount') {
if (!$this->getAcl()->checkScope('EmailAccount')) {
throw new Forbidden();
}
if (!empty($data['id'])) {
$emailAccount = $this->getEntityManager()->getEntity('EmailAccount', $data['id']);
if (!$emailAccount) {
throw new NotFound();
}
if (!$this->getUser()->isAdmin()) {
if ($emailAccount->get('assigniedUserId') !== $this->getUser()->id) {
throw new Forbidden();
}
}
if (is_null($data['password'])) {
$data['password'] = $this->getContainer()->get('crypt')->decrypt($emailAccount->get('smtpPassword'));
}
}
} else {
if (!$this->getUser()->isAdmin()) {
throw new Forbidden();
}
$data['password'] = $this->getConfig()->get('smtpPassword');
if (is_null($data['password'])) {
$data['password'] = $this->getConfig()->get('smtpPassword');
}
}
}
@@ -161,5 +188,38 @@ class Email extends \Espo\Core\Controllers\Record
}
return $this->getRecordService()->retrieveFromTrashByIdList($ids);
}
public function getActionGetFoldersNotReadCounts(&$params, $request, $data)
{
return $this->getRecordService()->getFoldersNotReadCounts();
}
protected function fetchListParamsFromRequest(&$params, $request, $data)
{
parent::fetchListParamsFromRequest($params, $request, $data);
$folderId = $request->get('folderId');
if ($folderId) {
$params['folderId'] = $request->get('folderId');
}
}
public function postActionMoveToFolder($params, $data)
{
if (!empty($data['ids'])) {
$ids = $data['ids'];
} else {
if (!empty($data['id'])) {
$ids = [$data['id']];
} else {
throw new BadRequest();
}
}
if (empty($data['folderId'])) {
throw new BadRequest();
}
return $this->getRecordService()->moveToFolderByIdList($ids, $data['folderId']);
}
}

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,63 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2017 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://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\BadRequest;
class EmailFolder extends \Espo\Core\Controllers\Record
{
public function postActionMoveUp($params, $data, $request)
{
if (empty($data['id'])) {
throw new BadRequest();
}
$this->getRecordService()->moveUp($data['id']);
return true;
}
public function postActionMoveDown($params, $data, $request)
{
if (empty($data['id'])) {
throw new BadRequest();
}
$this->getRecordService()->moveDown($data['id']);
return true;
}
public function getActionListAll()
{
return $this->getRecordService()->listAll();
}
}

View File

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

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2015 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2017 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -78,14 +78,20 @@ class EntityManager extends \Espo\Core\Controllers\Base
if (!empty($data['sortDirection'])) {
$params['asc'] = $data['sortDirection'] === 'asc';
}
if (isset($data['textFilterFields']) && is_array($data['textFilterFields'])) {
$params['textFilterFields'] = $data['textFilterFields'];
}
$result = $this->getContainer()->get('entityManagerUtil')->create($name, $type, $params);
if ($result) {
$tabList = $this->getConfig()->get('tabList', []);
$tabList[] = $name;
$this->getConfig()->set('tabList', $tabList);
$this->getConfig()->save();
if (!in_array($name, $tabList)) {
$tabList[] = $name;
$this->getConfig()->set('tabList', $tabList);
$this->getConfig()->save();
}
$this->getContainer()->get('dataManager')->rebuild();
} else {
@@ -192,6 +198,13 @@ class EntityManager extends \Espo\Core\Controllers\Base
$params['linkMultipleFieldForeign'] = $data['linkMultipleFieldForeign'];
}
if (array_key_exists('audited', $data)) {
$params['audited'] = $data['audited'];
}
if (array_key_exists('auditedForeign', $data)) {
$params['auditedForeign'] = $data['auditedForeign'];
}
$result = $this->getContainer()->get('entityManagerUtil')->createLink($params);
if ($result) {
@@ -236,6 +249,13 @@ class EntityManager extends \Espo\Core\Controllers\Base
$params['linkMultipleFieldForeign'] = $data['linkMultipleFieldForeign'];
}
if (array_key_exists('audited', $data)) {
$params['audited'] = $data['audited'];
}
if (array_key_exists('auditedForeign', $data)) {
$params['auditedForeign'] = $data['auditedForeign'];
}
$result = $this->getContainer()->get('entityManagerUtil')->updateLink($params);
if ($result) {
@@ -272,5 +292,23 @@ class EntityManager extends \Espo\Core\Controllers\Base
return true;
}
public function postActionFormula($params, $data, $request)
{
if (empty($data['scope'])) {
throw new BadRequest();
}
if (!array_key_exists('data', $data)) {
throw new BadRequest();
}
$formulaData = get_object_vars($data['data']);
$this->getContainer()->get('entityManagerUtil')->setFormulaData($data['scope'], $formulaData);
$this->getContainer()->get('dataManager')->clearCache();
return true;
}
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2015 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2017 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -94,17 +94,17 @@ class Extension extends \Espo\Core\Controllers\Record
return true;
}
public function actionCreate($params, $data)
public function actionCreate($params, $data, $request)
{
throw new Forbidden();
}
public function actionUpdate($params, $data)
public function actionUpdate($params, $data, $request)
{
throw new Forbidden();
}
public function actionPatch($params, $data)
public function actionPatch($params, $data, $request)
{
throw new Forbidden();
}
@@ -139,12 +139,12 @@ class Extension extends \Espo\Core\Controllers\Record
throw new Forbidden();
}
public function actionCreateLink($params, $data)
public function actionCreateLink($params, $data, $request)
{
throw new Forbidden();
}
public function actionRemoveLink($params, $data)
public function actionRemoveLink($params, $data, $request)
{
throw new Forbidden();
}

View File

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

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2015 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2017 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -31,7 +31,8 @@ namespace Espo\Controllers;
use \Espo\Core\Exceptions\Error,
\Espo\Core\Exceptions\Forbidden,
\Espo\Core\Exceptions\NotFound;
\Espo\Core\Exceptions\NotFound,
\Espo\Core\Exceptions\BadRequest;
class FieldManager extends \Espo\Core\Controllers\Base
{
@@ -44,19 +45,23 @@ class FieldManager extends \Espo\Core\Controllers\Base
public function actionRead($params, $data)
{
if (empty($params['scope']) || empty($params['name'])) {
throw new BadRequest();
}
$data = $this->getContainer()->get('fieldManager')->read($params['name'], $params['scope']);
if (!isset($data)) {
throw new NotFound();
throw new BadRequest();
}
return $data;
}
public function actionCreate($params, $data)
public function postActionCreate($params, $data)
{
if (empty($data['name'])) {
throw new Error("Field 'name' cannnot be empty");
if (empty($params['scope']) || empty($data['name'])) {
throw new BadRequest();
}
$fieldManager = $this->getContainer()->get('fieldManager');
@@ -72,8 +77,12 @@ class FieldManager extends \Espo\Core\Controllers\Base
return $fieldManager->read($data['name'], $params['scope']);
}
public function actionUpdate($params, $data)
public function putActionUpdate($params, $data)
{
if (empty($params['scope']) || empty($params['name'])) {
throw new BadRequest();
}
$fieldManager = $this->getContainer()->get('fieldManager');
$fieldManager->update($params['name'], $data, $params['scope']);
@@ -86,8 +95,12 @@ class FieldManager extends \Espo\Core\Controllers\Base
return $fieldManager->read($params['name'], $params['scope']);
}
public function actionDelete($params, $data)
public function deleteActionDelete($params, $data)
{
if (empty($params['scope']) || empty($params['name'])) {
throw new BadRequest();
}
$res = $this->getContainer()->get('fieldManager')->delete($params['name'], $params['scope']);
$this->getContainer()->get('dataManager')->rebuildMetadata();
@@ -95,5 +108,17 @@ class FieldManager extends \Espo\Core\Controllers\Base
return $res;
}
public function postActionResetToDefault($params, $data)
{
if (empty($data['scope']) || empty($data['name'])) {
throw new BadRequest();
}
$this->getContainer()->get('fieldManager')->resetToDefault($data['name'], $data['scope']);
$this->getContainer()->get('dataManager')->rebuildMetadata();
return true;
}
}

View File

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

View File

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

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2015 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2017 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -43,12 +43,12 @@ class Import extends \Espo\Core\Controllers\Record
}
}
public function actionPatch($params, $data)
public function actionPatch($params, $data, $request)
{
throw new BadRequest();
}
public function actionUpdate($params, $data)
public function actionUpdate($params, $data, $request)
{
throw new BadRequest();
}
@@ -58,12 +58,12 @@ class Import extends \Espo\Core\Controllers\Record
throw new BadRequest();
}
public function actionCreateLink($params, $data)
public function actionCreateLink($params, $data, $request)
{
throw new BadRequest();
}
public function actionRemoveLink($params, $data)
public function actionRemoveLink($params, $data, $request)
{
throw new BadRequest();
}
@@ -127,8 +127,48 @@ class Import extends \Espo\Core\Controllers\Record
throw new BadRequest();
}
if (!isset($data['fieldDelimiter'])) {
throw new BadRequest();
}
if (!isset($data['textQualifier'])) {
throw new BadRequest();
}
if (!isset($data['dateFormat'])) {
throw new BadRequest();
}
if (!isset($data['timeFormat'])) {
throw new BadRequest();
}
if (!isset($data['personNameFormat'])) {
throw new BadRequest();
}
if (!isset($data['decimalMark'])) {
throw new BadRequest();
}
if (!isset($data['defaultValues'])) {
throw new BadRequest();
}
if (!isset($data['action'])) {
throw new BadRequest();
}
if (!isset($data['attachmentId'])) {
throw new BadRequest();
}
if (!isset($data['entityType'])) {
throw new BadRequest();
}
$importParams = array(
'headerRow' => $data['headerRow'],
'headerRow' => !empty($data['headerRow']),
'fieldDelimiter' => $data['fieldDelimiter'],
'textQualifier' => $data['textQualifier'],
'dateFormat' => $data['dateFormat'],
@@ -138,6 +178,8 @@ class Import extends \Espo\Core\Controllers\Record
'currency' => $data['currency'],
'defaultValues' => $data['defaultValues'],
'action' => $data['action'],
'skipDuplicateChecking' => !empty($data['skipDuplicateChecking']),
'idleMode' => !empty($data['idleMode'])
);
if (array_key_exists('updateBy', $data)) {

View File

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

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2015 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2017 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -67,6 +67,19 @@ class Integration extends \Espo\Core\Controllers\Record
$entity->set($data);
$this->getEntityManager()->saveEntity($entity);
$integrationsConfigData = $this->getConfig()->get('integrations');
if (!$integrationsConfigData || !($integrationsConfigData instanceof \StdClass)) {
$integrationsConfigData = (object)[];
}
$integrationName = $params['id'];
$integrationsConfigData->$integrationName = $entity->get('enabled');
$this->getConfig()->set('integrations', $integrationsConfigData);
$this->getConfig()->save();
return $entity->toArray();
}
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2015 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2017 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -41,17 +41,17 @@ class Job extends \Espo\Core\Controllers\Record
}
}
public function actionCreate($params, $data)
public function actionCreate($params, $data, $request)
{
throw new Forbidden();
}
public function actionUpdate($params, $data)
public function actionUpdate($params, $data, $request)
{
throw new Forbidden();
}
public function actionPatch($params, $data)
public function actionPatch($params, $data, $request)
{
throw new Forbidden();
}
@@ -66,12 +66,12 @@ class Job extends \Espo\Core\Controllers\Record
throw new Forbidden();
}
public function actionCreateLink($params, $data)
public function actionCreateLink($params, $data, $request)
{
throw new Forbidden();
}
public function actionRemoveLink($params, $data)
public function actionRemoveLink($params, $data, $request)
{
throw new Forbidden();
}

View File

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

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2015 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2017 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -25,15 +25,28 @@
*
* 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 Metadata extends \Espo\Core\Controllers\Base
{
public function actionRead($params, $data)
{
return $this->getMetadata()->getAll(true);
$data = $this->getMetadata()->getAll();
unset($data['formula']);
return $data;
}
public function getActionGet($params, $data, $request)
{
if (!$this->getUser()->isAdmin()) {
throw new \Forbidden();
}
$key = $request->get('key');
return $this->getMetadata()->get($key, false);
}
}

View File

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

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2015 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2017 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -37,15 +37,16 @@ class Notification extends \Espo\Core\Controllers\Record
public function actionList($params, $data, $request)
{
$scope = $params['scope'];
$id = $params['id'];
$userId = $this->getUser()->id;
$offset = intval($request->get('offset'));
$maxSize = intval($request->get('maxSize'));
$after = $request->get('after');
if (empty($maxSize)) {
$maxSize = self::MAX_SIZE_LIMIT;
}
$params = array(
'offset' => $offset,
'maxSize' => $maxSize,

View File

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

View File

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

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2015 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2017 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -132,6 +132,7 @@ class Preferences extends \Espo\Core\Controllers\Base
$entity->set('smtpEmailAddress', $user->get('emailAddress'));
$entity->set('name', $user->get('name'));
$entity->set('isPortalUser', $user->get('isPortalUser'));
$entity->clear('smtpPassword');

View File

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

View File

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

View File

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

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2015 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2017 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -37,7 +37,11 @@ class Settings extends \Espo\Core\Controllers\Base
{
protected function getConfigData()
{
$data = $this->getConfig()->getData($this->getUser()->isAdmin());
if ($this->getUser()->id == 'system') {
$data = $this->getConfig()->getData();
} else {
$data = $this->getConfig()->getData($this->getUser()->isAdmin());
}
$fieldDefs = $this->getMetadata()->get('entityDefs.Settings.fields');
@@ -90,4 +94,23 @@ class Settings extends \Espo\Core\Controllers\Base
return $this->getConfigData();
}
public function postActionTestLdapConnection($params, $data)
{
if (!$this->getUser()->isAdmin()) {
throw new Forbidden();
}
if (!isset($data['password'])) {
$data['password'] = $this->getConfig()->get('ldapPassword');
}
$ldapUtils = new \Espo\Core\Utils\Authentication\LDAP\Utils();
$options = $ldapUtils->normalizeOptions($data);
$ldapClient = new \Espo\Core\Utils\Authentication\LDAP\Client($options);
$ldapClient->bind(); //an exception if no connection
return true;
}
}

View File

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

View File

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

View File

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

View File

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

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2015 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2017 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -118,5 +118,15 @@ class Acl
{
return $this->getAclManager()->getScopeForbiddenFieldList($this->getUser(), $scope, $action, $thresholdLevel);
}
public function checkUserPermission($target, $permissionType = 'userPermission')
{
return $this->getAclManager()->checkUserPermission($this->getUser(), $target, $permissionType);
}
public function checkAssignmentPermission($target)
{
return $this->getAclManager()->checkAssignmentPermission($this->getUser(), $target);
}
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2015 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2017 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -66,6 +66,13 @@ class Base implements Injectable
return $this->injections[$name];
}
protected function addDependencyList(array $list)
{
foreach ($list as $item) {
$this->addDependency($item);
}
}
protected function addDependency($name)
{
$this->dependencies[] = $name;
@@ -148,7 +155,7 @@ class Base implements Injectable
}
if (!isset($data->$action)) {
return true;
return false;
}
$value = $data->$action;

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2015 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2017 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -97,8 +97,6 @@ class Table
throw new Error('User must be fetched before ACL check.');
}
$this->user->loadLinkMultipleField('teams');
if ($fileManager) {
$this->fileManager = $fileManager;
}
@@ -119,7 +117,7 @@ class Table
protected function initCacheFilePath()
{
$this->cacheFilePath = 'data/cache/application/acl/' . $this->user->id . '.php';
$this->cacheFilePath = 'data/cache/application/acl/' . $this->getUser()->id . '.php';
}
protected function getUser()
@@ -179,7 +177,7 @@ class Table
return $this->data->table->$scope->$action;
}
}
return false;
return 'no';
}
private function load()
@@ -192,7 +190,7 @@ class Table
$aclTableList = [];
$fieldTableList = [];
if (!$this->user->isAdmin()) {
if (!$this->getUser()->isAdmin()) {
$roleList = $this->getRoleList();
foreach ($roleList as $role) {
@@ -209,6 +207,7 @@ class Table
$this->applyDefault($aclTable, $fieldTable);
$this->applyDisabled($aclTable, $fieldTable);
$this->applyMandatory($aclTable, $fieldTable);
$this->applyAdditional($aclTable, $fieldTable, $valuePermissionLists);
} else {
$aclTable = (object) [];
foreach ($this->getScopeList() as $scope) {
@@ -242,7 +241,7 @@ class Table
$this->fillFieldTableQuickAccess();
if (!$this->user->isAdmin()) {
if (!$this->getUser()->isAdmin()) {
foreach ($this->valuePermissionList as $permission) {
$this->data->$permission = $this->mergeValueList($valuePermissionLists->$permission, $this->metadata->get('app.'.$this->type.'.default.' . $permission, 'yes'));
if ($this->metadata->get('app.'.$this->type.'.mandatory.' . $permission)) {
@@ -266,11 +265,17 @@ class Table
$roleList = [];
$userRoleList = $this->getUser()->get('roles');
if (!(is_array($userRoleList) || $userRoleList instanceof \Traversable)) {
throw new Error();
}
foreach ($userRoleList as $role) {
$roleList[] = $role;
}
$teamList = $this->getUser()->get('teams');
if (!(is_array($teamList) || $teamList instanceof \Traversable)) {
throw new Error();
}
foreach ($teamList as $team) {
$teamRoleList = $team->get('roles');
foreach ($teamRoleList as $role) {
@@ -396,7 +401,7 @@ class Table
protected function applyDefault(&$table, &$fieldTable)
{
if ($this->user->isAdmin()) {
if ($this->getUser()->isAdmin()) {
return;
}
@@ -454,6 +459,17 @@ class Table
$defaultValue = (object) $defaultValue;
}
$table->$scope = $defaultValue;
if (is_object($table->$scope)) {
$actionList = $this->getMetadata()->get(['scopes', $scope, $this->type . 'ActionList']);
if ($actionList) {
foreach (get_object_vars($table->$scope) as $action => $level) {
if (!in_array($action, $actionList)) {
unset($table->$scope->$action);
}
}
}
}
}
}
}
@@ -461,7 +477,7 @@ class Table
protected function applyMandatory(&$table, &$fieldTable)
{
if ($this->user->isAdmin()) {
if ($this->getUser()->isAdmin()) {
return;
}
@@ -508,7 +524,7 @@ class Table
protected function applyDisabled(&$table, &$fieldTable)
{
if ($this->user->isAdmin()) {
if ($this->getUser()->isAdmin()) {
return;
}
@@ -520,6 +536,19 @@ class Table
}
}
protected function applyAdditional(&$table, &$fieldTable, &$valuePermissionLists)
{
if ($this->getUser()->get('isPortalUser')) {
foreach ($this->getScopeList() as $scope) {
$table->$scope = false;
unset($fieldTable->$scope);
}
foreach ($this->valuePermissionList as $permission) {
$valuePermissionLists->{$permission}[] = 'no';
}
}
}
private function mergeValueList(array $list, $defaultValue)
{
$result = null;
@@ -588,7 +617,9 @@ class Table
if (!is_object($row)) continue;
foreach ($this->actionList as $i => $action) {
$actionList = $this->getMetadata()->get(['scopes', $scope, $this->type . 'ActionList'], $this->actionList);
foreach ($actionList as $i => $action) {
if (isset($row->$action)) {
$level = $row->$action;
if (!isset($data->$scope->$action)) {
@@ -605,7 +636,7 @@ class Table
if (in_array($action, $this->booleanActionList)) {
$data->$scope->$action = 'yes';
} else {
if (isset($data->$scope->$previousAction)) {
if ($action === 'stream' && isset($data->$scope->$previousAction)) {
$data->$scope->$action = $data->$scope->$previousAction;
}
}
@@ -666,11 +697,12 @@ class Table
private function buildCache()
{
$contents = '<' . '?'. 'php return ' . $this->varExport($this->data) . ';';
$this->fileManager->putContents($this->cacheFilePath, $contents);
$this->fileManager->putPhpContents($this->cacheFilePath, $this->data, true);
/*$contents = '<' . '?'. 'php return ' . $this->varExport($this->data) . ';';
$this->fileManager->putContents($this->cacheFilePath, $contents);*/
}
private function varExport($variable)
/*private function varExport($variable)
{
if ($variable instanceof \StdClass) {
$result = '(object) ' . $this->varExport(get_object_vars($variable), true);
@@ -685,6 +717,6 @@ class Table
}
return $result;
}
}*/
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2015 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2017 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -98,7 +98,10 @@ class AclManager
protected function getTable(User $user)
{
$key = spl_object_hash($user);
$key = $user->id;
if (empty($key)) {
$key = spl_object_hash($user);
}
if (empty($this->tableHashMap[$key])) {
$config = $this->getContainer()->get('config');
@@ -181,7 +184,7 @@ class AclManager
return $this->getImplementation($entity->getEntityType())->checkIsOwner($user, $entity);
}
public function checkInTeam(User $user, Entity $entity, $action)
public function checkInTeam(User $user, Entity $entity)
{
return $this->getImplementation($entity->getEntityType())->checkInTeam($user, $entity);
}
@@ -232,5 +235,40 @@ class AclManager
if ($user->isAdmin()) return [];
return $this->getTable($user)->getScopeForbiddenFieldList($scope, $action, $thresholdLevel);
}
public function checkUserPermission(User $user, $target, $permissionType = 'userPermission')
{
$permission = $this->get($user, $permissionType);
if (is_object($target)) {
$userId = $target->id;
} else {
$userId = $target;
}
if ($user->id === $userId) return true;
if ($permission === 'no') {
return false;
}
if ($permission === 'yes') {
return true;
}
if ($permission === 'team') {
$teamIdList = $user->getLinkMultipleIdList('teams');
if (!$this->getContainer()->get('entityManager')->getRepository('User')->checkBelongsToAnyOfTeams($userId, $teamIdList)) {
return false;
}
}
return true;
}
public function checkAssignmentPermission(User $user, $target)
{
return $this->checkUserPermission($user, $target, 'assignmentPermission');
}
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2015 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2017 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -71,7 +71,7 @@ class Base extends \Espo\Core\Acl\Base
}
if (!isset($data->$action)) {
return true;
return false;
}
$value = $data->$action;

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2015 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2017 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -76,11 +76,17 @@ class Table extends \Espo\Core\Acl\Table
$roleList = [];
$userRoleList = $this->getUser()->get('portalRoles');
if (!(is_array($userRoleList) || $userRoleList instanceof \Traversable)) {
throw new Error();
}
foreach ($userRoleList as $role) {
$roleList[] = $role;
}
$portalRoleList = $this->getPortal()->get('portalRoles');
if (!(is_array($portalRoleList) || $portalRoleList instanceof \Traversable)) {
throw new Error();
}
foreach ($portalRoleList as $role) {
$roleList[] = $role;
}
@@ -115,11 +121,15 @@ class Table extends \Espo\Core\Acl\Table
{
foreach ($this->getScopeList() as $scope) {
$d = $this->getMetadata()->get('scopes.' . $scope);
if ($d['disabled'] || $d['portalDisabled']) {
if (!empty($d['disabled']) || !empty($d['portalDisabled'])) {
$table->$scope = false;
unset($fieldTable->$scope);
}
}
}
protected function applyAdditional(&$table, &$fieldTable, &$valuePermissionLists)
{
}
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2015 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2017 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -222,7 +222,7 @@ class Application
}
try {
$controllerManager = new \Espo\Core\ControllerManager($container);
$controllerManager = $this->getContainer()->get('controllerManager');
$result = $controllerManager->process($controllerName, $actionName, $params, $data, $slim->request());
$container->get('output')->render($result);
} catch (\Exception $e) {
@@ -315,7 +315,7 @@ 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(array('token' => $_COOKIE['auth-token']))->findOne();
if ($token && $token->get('portalId')) {
return $token->get('portalId');
@@ -323,5 +323,12 @@ class Application
}
return null;
}
public function setupSystemUser()
{
$user = $this->getContainer()->get('entityManager')->getEntity('User', 'system');
$this->getContainer()->setUser($user);
$this->getContainer()->get('entityManager')->setUser($user);
}
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2015 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2017 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -135,6 +135,13 @@ class Container
);
}
protected function loadControllerManager()
{
return new \Espo\Core\ControllerManager(
$this
);
}
protected function loadPreferences()
{
return $this->get('entityManager')->getEntity('Preferences', $this->get('user')->id);
@@ -181,7 +188,7 @@ class Container
protected function loadNumber()
{
return new \Espo\Core\Utils\Number(
return new \Espo\Core\Utils\NumberUtil(
$this->get('config')->get('decimalMark'),
$this->get('config')->get('thousandSeparator')
);
@@ -200,15 +207,17 @@ class Container
$this->get('entityManager'),
$this->get('user'),
$this->get('acl'),
$this->get('metadata')
$this->get('aclManager'),
$this->get('metadata'),
$this->get('config')
);
}
protected function loadMetadata()
{
return new \Espo\Core\Utils\Metadata(
$this->get('config'),
$this->get('fileManager')
$this->get('fileManager'),
$this->get('config')->get('useCache')
);
}
@@ -245,7 +254,17 @@ class Container
$this->get('metadata'),
$this->get('fileManager'),
$this->get('entityManager'),
$this->get('classParser')
$this->get('classParser'),
$this->get('ormMetadata')
);
}
protected function loadOrmMetadata()
{
return new \Espo\Core\Utils\Metadata\OrmMetadata(
$this->get('metadata'),
$this->get('fileManager'),
$this->get('config')->get('useCache')
);
}
@@ -261,10 +280,20 @@ class Container
protected function loadLanguage()
{
return new \Espo\Core\Utils\Language(
\Espo\Core\Utils\Language::detectLanguage($this->get('config'), $this->get('preferences')),
$this->get('fileManager'),
$this->get('config'),
$this->get('metadata'),
$this->get('preferences')
$this->get('config')->get('useCache')
);
}
protected function loadDefaultLanguage()
{
return new \Espo\Core\Utils\Language(
null,
$this->get('fileManager'),
$this->get('metadata'),
$this->get('useCache')
);
}
@@ -293,7 +322,8 @@ class Container
{
return new \Espo\Core\Utils\FieldManager(
$this->get('metadata'),
$this->get('language')
$this->get('language'),
$this
);
}

View File

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

View File

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

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2015 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2017 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -64,7 +64,7 @@ class Record extends Base
return $service;
}
public function actionRead($params)
public function actionRead($params, $data, $request)
{
$id = $params['id'];
$entity = $this->getRecordService()->getEntity($id);
@@ -128,12 +128,10 @@ class Record extends Base
$where = $request->get('where');
$offset = $request->get('offset');
$maxSize = $request->get('maxSize');
$asc = $request->get('asc') === 'true';
$asc = $request->get('asc', 'true') === 'true';
$sortBy = $request->get('sortBy');
$q = $request->get('q');
$primaryFilter = $request->get('primaryFilter');
$textFilter = $request->get('textFilter');
$boolFilterList = $request->get('boolFilterList');
if (empty($maxSize)) {
$maxSize = self::MAX_SIZE_LIMIT;
@@ -151,12 +149,8 @@ class Record extends Base
'q' => $q,
'textFilter' => $textFilter
);
if ($request->get('primaryFilter')) {
$params['primaryFilter'] = $request->get('primaryFilter');
}
if ($request->get('boolFilterList')) {
$params['boolFilterList'] = $request->get('boolFilterList');
}
$this->fetchListParamsFromRequest($params, $request, $data);
$result = $this->getRecordService()->findEntities($params);
@@ -166,6 +160,19 @@ class Record extends Base
);
}
protected function fetchListParamsFromRequest(&$params, $request, $data)
{
if ($request->get('primaryFilter')) {
$params['primaryFilter'] = $request->get('primaryFilter');
}
if ($request->get('boolFilterList')) {
$params['boolFilterList'] = $request->get('boolFilterList');
}
if ($request->get('filterList')) {
$params['filterList'] = $request->get('filterList');
}
}
public function actionListLinked($params, $data, $request)
{
$id = $params['id'];
@@ -174,7 +181,7 @@ class Record extends Base
$where = $request->get('where');
$offset = $request->get('offset');
$maxSize = $request->get('maxSize');
$asc = $request->get('asc') === 'true';
$asc = $request->get('asc', 'true') === 'true';
$sortBy = $request->get('sortBy');
$q = $request->get('q');
$textFilter = $request->get('textFilter');
@@ -195,12 +202,8 @@ class Record extends Base
'q' => $q,
'textFilter' => $textFilter
);
if ($request->get('primaryFilter')) {
$params['primaryFilter'] = $request->get('primaryFilter');
}
if ($request->get('boolFilterList')) {
$params['boolFilterList'] = $request->get('boolFilterList');
}
$this->fetchListParamsFromRequest($params, $request, $data);
$result = $this->getRecordService()->findLinkedEntities($id, $link, $params);
@@ -226,6 +229,10 @@ class Record extends Base
public function actionExport($params, $data, $request)
{
if (!$request->isPost()) {
throw new BadRequest();
}
if ($this->getConfig()->get('exportDisabled') && !$this->getUser()->isAdmin()) {
throw new Forbidden();
}
@@ -234,17 +241,23 @@ class Record extends Base
throw new Forbidden();
}
$ids = $request->get('ids');
$where = $request->get('where');
$byWhere = $request->get('byWhere');
$ids = isset($data['ids']) ? $data['ids'] : null;
$where = isset($data['where']) ? json_decode(json_encode($data['where']), true) : null;
$byWhere = isset($data['byWhere']) ? $data['byWhere'] : false;
$selectData = isset($data['selectData']) ? json_decode(json_encode($data['selectData']), true) : null;
$params = array();
if ($byWhere) {
$params['selectData'] = $selectData;
$params['where'] = $where;
} else {
$params['ids'] = $ids;
}
if (isset($data['attributeList'])) {
$params['attributeList'] = $data['attributeList'];
}
return array(
'id' => $this->getRecordService()->export($params)
);
@@ -266,6 +279,9 @@ class Record extends Base
$params = array();
if (array_key_exists('where', $data) && !empty($data['byWhere'])) {
$params['where'] = json_decode(json_encode($data['where']), true);
if (array_key_exists('selectData', $data)) {
$params['selectData'] = json_decode(json_encode($data['selectData']), true);
}
} else if (array_key_exists('ids', $data)) {
$params['ids'] = $data['ids'];
}
@@ -290,15 +306,15 @@ class Record extends Base
if (array_key_exists('where', $data) && !empty($data['byWhere'])) {
$where = json_decode(json_encode($data['where']), true);
$params['where'] = $where;
if (array_key_exists('selectData', $data)) {
$params['selectData'] = json_decode(json_encode($data['selectData']), true);
}
}
if (array_key_exists('ids', $data)) {
$where = json_decode(json_encode($data['where']), true);
$params['ids'] = $data['ids'];
}
$idsRemoved = $this->getRecordService()->massRemove($params);
return $idsRemoved;
return $this->getRecordService()->massRemove($params);
}
public function actionCreateLink($params, $data, $request)
@@ -319,7 +335,13 @@ class Record extends Base
throw new BadRequest();
}
$where = json_decode(json_encode($data['where']), true);
return $this->getRecordService()->linkEntityMass($id, $link, $where);
$selectData = null;
if (isset($data['selectData']) && is_array($data['selectData'])) {
$selectData = json_decode(json_encode($data['selectData']), true);
}
return $this->getRecordService()->linkEntityMass($id, $link, $where, $selectData);
} else {
$foreignIdList = array();
if (isset($data['id'])) {
@@ -411,17 +433,60 @@ class Record extends Base
throw new BadRequest();
}
if (empty($data['targetId']) || empty($data['sourceIds']) || !is_array($data['sourceIds'])) {
if (empty($data['targetId']) || empty($data['sourceIds']) || !is_array($data['sourceIds']) || !($data['attributes'] instanceof \StdClass)) {
throw new BadRequest();
}
$targetId = $data['targetId'];
$sourceIds = $data['sourceIds'];
$attributes = get_object_vars($data['attributes']);
if (!$this->getAcl()->check($this->name, 'edit')) {
throw new Forbidden();
}
return $this->getRecordService()->merge($targetId, $sourceIds);
return $this->getRecordService()->merge($targetId, $sourceIds, $attributes);
}
public function postActionGetDuplicateAttributes($params, $data, $request)
{
if (empty($data['id'])) {
throw new BadRequest();
}
if (!$this->getAcl()->check($this->name, 'create')) {
throw new Forbidden();
}
if (!$this->getAcl()->check($this->name, 'read')) {
throw new Forbidden();
}
return $this->getRecordService()->getDuplicateAttributes($data['id']);
}
public function postActionMassFollow($params, $data, $request)
{
if (!$this->getAcl()->check($this->name, 'stream')) {
throw new Forbidden();
}
if (array_key_exists('ids', $data)) {
$params['ids'] = $data['ids'];
}
return $this->getRecordService()->massFollow($params);
}
public function postActionMassUnfollow($params, $data, $request)
{
if (!$this->getAcl()->check($this->name, 'stream')) {
throw new Forbidden();
}
if (array_key_exists('ids', $data)) {
$params['ids'] = $data['ids'];
}
return $this->getRecordService()->massUnfollow($params);
}
}

View File

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

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2015 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2017 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -35,15 +35,21 @@ use Espo\Core\Exceptions\NotFound;
class CronManager
{
private $container;
private $config;
private $fileManager;
private $entityManager;
private $scheduledJobUtil;
const PENDING = 'Pending';
const RUNNING = 'Running';
const SUCCESS = 'Success';
const FAILED = 'Failed';
protected $lastRunTime = 'data/cache/application/cronLastRunTime.php';
@@ -149,19 +155,15 @@ class CronManager
$this->setLastRunTime(time());
$entityManager = $this->getEntityManager();
$cronJob = $this->getCronJob();
$cronScheduledJob = $this->getCronScheduledJob();
//Check scheduled jobs and create related jobs
$this->getCronJob()->markFailedJobs();
$this->getCronJob()->updateFailedJobAttempts();
$this->createJobsFromScheduledJobs();
$this->getCronJob()->removePendingJobDuplicates();
$pendingJobs = $cronJob->getPendingJobs();
$pendingJobList = $this->getCronJob()->getPendingJobList();
foreach ($pendingJobs as $job) {
$jobEntity = $entityManager->getEntity('Job', $job['id']);
foreach ($pendingJobList as $job) {
$jobEntity = $this->getEntityManager()->getEntity('Job', $job['id']);
if (!isset($jobEntity)) {
$GLOBALS['log']->error('CronManager: empty Job entity ['.$job['id'].'].');
@@ -169,7 +171,7 @@ class CronManager
}
$jobEntity->set('status', self::RUNNING);
$entityManager->saveEntity($jobEntity);
$this->getEntityManager()->saveEntity($jobEntity);
$isSuccess = true;
@@ -187,11 +189,10 @@ class CronManager
$status = $isSuccess ? self::SUCCESS : self::FAILED;
$jobEntity->set('status', $status);
$entityManager->saveEntity($jobEntity);
$this->getEntityManager()->saveEntity($jobEntity);
//set status in the schedulerJobLog
if (!empty($job['scheduled_job_id'])) {
$cronScheduledJob->addLogRecord($job['scheduled_job_id'], $status);
$this->getCronScheduledJob()->addLogRecord($job['scheduled_job_id'], $status, null, $job['target_id'], $job['target_type']);
}
}
}
@@ -213,12 +214,20 @@ class CronManager
}
$jobClass = new $className($this->container);
$method = $this->getScheduledJobUtil()->getMethodName();
$method = 'run';
if (!method_exists($jobClass, $method)) {
throw new NotFound();
}
$jobClass->$method();
$data = null;
if (!empty($job['data'])) {
$data = $job['data'];
if (Json::isJSON($data)) {
$data = Json::decode($data, true);
}
}
$jobClass->$method($data, $job['target_id'], $job['target_type']);
}
/**
@@ -248,7 +257,7 @@ class CronManager
$data = Json::decode($data, true);
}
$service->$serviceMethod($data);
$service->$serviceMethod($data, $job['target_id'], $job['target_type']);
}
/**
@@ -258,55 +267,62 @@ class CronManager
*/
protected function createJobsFromScheduledJobs()
{
$entityManager = $this->getEntityManager();
$activeScheduledJobList = $this->getCronScheduledJob()->getActiveScheduledJobList();
$activeScheduledJobs = $this->getCronScheduledJob()->getActiveJobs();
$runningScheduledJobIdList = $this->getCronJob()->getRunningScheduledJobIdList();
$cronJob = $this->getCronJob();
$runningScheduledJobs = $cronJob->getActiveJobs('scheduled_job_id', self::RUNNING, PDO::FETCH_COLUMN);
$createdJobIdList = array();
foreach ($activeScheduledJobList as $scheduledJob) {
$scheduling = $scheduledJob['scheduling'];
$createdJobs = array();
foreach ($activeScheduledJobs as $scheduledJob) {
if (in_array($scheduledJob['id'], $runningScheduledJobs)) {
try {
$cronExpression = \Cron\CronExpression::factory($scheduling);
} catch (\Exception $e) {
$GLOBALS['log']->error('CronManager (ScheduledJob ['.$scheduledJob['id'].']): Scheduling string error - '. $e->getMessage() . '.');
continue;
}
$scheduling = $scheduledJob['scheduling'];
$cronExpression = \Cron\CronExpression::factory($scheduling);
try {
$prevDate = $cronExpression->getPreviousRunDate()->format('Y-m-d H:i:s');
$previousDate = $cronExpression->getPreviousRunDate()->format('Y-m-d H:i:s');
} catch (\Exception $e) {
$GLOBALS['log']->error('CronManager: ScheduledJob ['.$scheduledJob['id'].']: CronExpression - Impossible CRON expression ['.$scheduling.']');
$GLOBALS['log']->error('CronManager (ScheduledJob ['.$scheduledJob['id'].']): Unsupported CRON expression ['.$scheduling.']');
continue;
}
if ($cronExpression->isDue()) {
$prevDate = date('Y-m-d H:i:s');
$previousDate = date('Y-m-d H:i:s');
}
$existsJob = $cronJob->getJobByScheduledJob($scheduledJob['id'], $prevDate);
$existingJob = $this->getCronJob()->getJobByScheduledJob($scheduledJob['id'], $previousDate);
if ($existingJob) continue;
if (!isset($existsJob) || empty($existsJob)) {
//create a new job
$jobEntity = $entityManager->getEntity('Job');
$jobEntity->set(array(
'name' => $scheduledJob['name'],
'status' => self::PENDING,
'scheduledJobId' => $scheduledJob['id'],
'executeTime' => $prevDate,
'method' => $scheduledJob['job'],
));
$jobEntityId = $entityManager->saveEntity($jobEntity);
if (!empty($jobEntityId)) {
$createdJobs[] = $jobEntityId;
$className = $this->getScheduledJobUtil()->get($scheduledJob['job']);
if ($className) {
if (method_exists($className, 'prepare')) {
$implementation = new $className($this->container);
$implementation->prepare($scheduledJob, $previousDate);
continue;
}
}
if (in_array($scheduledJob['id'], $runningScheduledJobIdList)) {
continue;
}
$jobEntity = $this->getEntityManager()->getEntity('Job');
$jobEntity->set(array(
'name' => $scheduledJob['name'],
'status' => self::PENDING,
'scheduledJobId' => $scheduledJob['id'],
'executeTime' => $previousDate,
'method' => $scheduledJob['job']
));
$this->getEntityManager()->saveEntity($jobEntity);
$createdJobIdList[] = $jobEntity->id;
}
return $createdJobs;
return $createdJobIdList;
}
}

View File

@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2015 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Copyright (C) 2014-2017 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -28,6 +28,7 @@
************************************************************************/
namespace Espo\Core;
class DataManager
{
private $container;
@@ -113,11 +114,11 @@ class DataManager
$metadata->init(true);
$ormMeta = $metadata->getOrmMetadata(true);
$ormData = $this->getContainer()->get('ormMetadata')->getData(true);
$this->updateCacheTimestamp();
return empty($ormMeta) ? false : true;
return empty($ormData) ? false : true;
}
/**

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,80 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2017 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://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\Formula;
use \Espo\ORM\Entity;
use \Espo\Core\Exceptions\Error;
class AttributeFetcher
{
private $relatedEntitiesCacheMap = array();
public function __construct()
{
}
public function fetch(Entity $entity, $attribute, $getFetchedAttribute = false)
{
if (!is_string($attribute)) {
throw new Error();
}
if (strpos($attribute, '.') !== false) {
$arr = explode('.', $attribute);
$key = $this->buildKey($entity, $arr[0]);
if (!array_key_exists($key, $this->relatedEntitiesCacheMap)) {
$this->relatedEntitiesCacheMap[$key] = $entity->get($arr[0]);
}
$relatedEntity = $this->relatedEntitiesCacheMap[$key];
if ($relatedEntity && ($relatedEntity instanceof Entity) && count($arr) > 0) {
return $this->fetch($relatedEntity, $arr[1]);
}
return null;
}
$methodName = 'get';
if ($getFetchedAttribute) {
$methodName = 'getFetched';
}
return $entity->$methodName($attribute);
}
public function resetRuntimeCache()
{
$this->relatedEntitiesCacheMap = array();
}
protected function buildKey(Entity $entity, $link)
{
return spl_object_hash($entity) . '-' . $link;
}
}

View File

@@ -0,0 +1,66 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2017 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://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\Formula;
use \Espo\Core\Exceptions\Error;
class Evaluator
{
private $functionFactory;
private $formula;
private $parser;
private $parsedHash;
public function __construct($container = null, array $functionClassNameMap = array(), array $parsedHash = array())
{
$this->functionFactory = new \Espo\Core\Formula\FunctionFactory($container, $functionClassNameMap);
$this->formula = new \Espo\Core\Formula\Formula($this->functionFactory);
$this->parser = new \Espo\Core\Formula\Parser();
$this->parsedHash = array();
}
public function process($expression, $entity = null, $variables = null)
{
if (!array_key_exists($expression, $this->parsedHash)) {
$item = $this->parser->parse($expression);
$this->parsedHash[$expression] = $item;
} else {
$item = $this->parsedHash[$expression];
}
if (!$item || !($item instanceof \StdClass)) {
throw new Error();
}
return $this->formula->process($item, $entity, $variables);
}
}

View File

@@ -0,0 +1,50 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2017 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://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\Formula;
use \Espo\ORM\Entity;
class Formula
{
private $functionFactory;
public function __construct(FunctionFactory $functionFactory)
{
$this->functionFactory = $functionFactory;
}
public function process(\StdClass $item, $entity = null, $variables = null)
{
if (is_null($variables)) {
$variables = (object)[];
}
return $this->functionFactory->create($item, $entity, $variables)->process($item);
}
}

View File

@@ -0,0 +1,93 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2017 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://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\Formula;
use \Espo\Core\Exceptions\Error;
use \Espo\ORM\Entity;
class FunctionFactory
{
private $container;
private $classNameMap;
public function __construct($container, $classNameMap = null)
{
$this->container = $container;
$this->attributeFetcher = new AttributeFetcher();
$this->classNameMap = $classNameMap;
}
public function create(\StdClass $item, $entity, \StdClass $variables)
{
if (!isset($item->type)) {
throw new Error('Missing type');
}
if (!is_string($item->type)) {
throw new Error('Bad type');
}
$name = $item->type;
if ($this->classNameMap && array_key_exists($name, $this->classNameMap)) {
$className = $this->classNameMap[$name];
} else {
$arr = explode('\\', $name);
foreach ($arr as $i => $part) {
if ($i < count($arr) - 1) {
$part = $part . 'Group';
}
$arr[$i] = ucfirst($part);
}
$name = implode('\\', $arr);
$className = '\\Espo\\Core\\Formula\\Functions\\' . $name . 'Type';
}
if (!class_exists($className)) {
throw new Error('Class ' . $className . ' was not found.');
}
$object = new $className($this, $entity, $variables);
$dependencyList = $object->getDependencyList();
foreach ($dependencyList as $name) {
if (!$this->container) {
throw new Error('Container required but not passed.');
}
$object->inject($name, $this->container->get($name));
}
if (property_exists($className, 'hasAttributeFetcher')) {
$object->setAttributeFetcher($this->attributeFetcher);
}
return $object;
}
}

View File

@@ -0,0 +1,63 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2017 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://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\Formula\Functions;
use \Espo\ORM\Entity;
use \Espo\Core\Exceptions\Error;
class AssignType extends Base
{
public function process(\StdClass $item)
{
if (!property_exists($item, 'value')) {
throw new Error();
}
if (!is_array($item->value)) {
throw new Error();
}
if (count($item->value) < 2) {
throw new Error();
}
$name = $this->evaluate($item->value[0]);
if (!is_string($name)) {
throw new Error();
}
$value = $this->evaluate($item->value[1]);
$this->getVariables()->$name = $value;
return $value;
}
}

View File

@@ -0,0 +1,67 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2017 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://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\Formula\Functions;
use \Espo\ORM\Entity;
use \Espo\Core\Exceptions\Error;
class AttributeType extends Base
{
static public $hasAttributeFetcher = true;
protected $attributeFetcher;
public function setAttributeFetcher(\Espo\Core\Formula\AttributeFetcher $attributeFetcher)
{
$this->attributeFetcher = $attributeFetcher;
}
public function process(\StdClass $item)
{
if (!property_exists($item, 'value')) {
throw new Error();
}
if (is_array($item->value)) {
$arr = [];
foreach ($item->value as $attribute) {
$arr[] = $this->getAttributeValue($attribute);
}
return $arr;
}
return $this->getAttributeValue($item->value);
}
protected function getAttributeValue($attribute)
{
return $this->attributeFetcher->fetch($this->getEntity(), $attribute);
}
}

View File

@@ -0,0 +1,113 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2017 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://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\Formula\Functions;
use \Espo\Core\Interfaces\Injectable;
use \Espo\ORM\Entity;
use \Espo\Core\Exceptions\Error;
abstract class Base implements Injectable
{
protected $dependencyList = [];
protected $itemFactory;
protected $injections = array();
private $entity;
private $variables;
public function inject($name, $object)
{
$this->injections[$name] = $object;
}
protected function init()
{
}
protected function getInjection($name)
{
return $this->injections[$name];
}
protected function addDependency($name)
{
$this->dependencyList[] = $name;
}
protected function addDependencyList(array $list)
{
foreach ($list as $item) {
$this->addDependency($item);
}
}
public function getDependencyList()
{
return $this->dependencyList;
}
protected function getVariables()
{
return $this->variables;
}
protected function getEntity()
{
if (!$this->entity) {
throw new Error('Entity required but not passed.');
}
return $this->entity;
}
public function __construct($itemFactory, $entity = null, $variables = null)
{
$this->itemFactory = $itemFactory;
$this->entity = $entity;
$this->variables = $variables;
$this->init();
}
protected function getFactory()
{
return $this->itemFactory;
}
protected function evaluate($item)
{
$function = $this->getFactory()->create($item, $this->entity, $this->variables);
return $function->process($item);
}
public abstract function process(\StdClass $item);
}

View File

@@ -0,0 +1,51 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2017 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://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\Formula\Functions;
use \Espo\ORM\Entity;
use \Espo\Core\Exceptions\Error;
class BundleType extends Base
{
public function process(\StdClass $item)
{
if (!property_exists($item, 'value')) {
return true;
}
if (!is_array($item->value)) {
throw new Error();
}
foreach ($item->value as $value) {
$this->evaluate($value);
}
}
}

View File

@@ -0,0 +1,64 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2017 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://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\Formula\Functions\ComparisonGroup;
use \Espo\ORM\Entity;
use \Espo\Core\Exceptions\Error;
abstract class Base extends \Espo\Core\Formula\Functions\Base
{
public function process(\StdClass $item)
{
if (!property_exists($item, 'value')) {
throw new Error();
}
if (!is_array($item->value)) {
throw new Error('Value is not array.');
}
if (count($item->value) < 2) {
throw new Error('Bad value.');
}
if (is_object($item->value[0])) {
$left = $this->evaluate($item->value[0]);
} else {
$left = $item->value[0];
}
if (is_object($item->value[1])) {
$right = $this->evaluate($item->value[1]);
} else {
$right = $item->value[1];
}
return $this->compare($left, $right);
}
}

View File

@@ -0,0 +1,55 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2017 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://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\Formula\Functions\ComparisonGroup;
use \Espo\Core\Exceptions\Error;
class EqualsType extends Base
{
protected function compare($left, $right)
{
if (is_array($left) && is_array($right)) {
$result = true;
foreach ($left as $i => $value) {
if (!array_key_exists($i, $right)) {
$result = false;
break;
}
if ($value !== $right[$i]) {
$result = false;
break;
}
}
return $result;
}
return $left === $right;
}
}

View File

@@ -0,0 +1,40 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2017 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://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\Formula\Functions\ComparisonGroup;
use \Espo\Core\Exceptions\Error;
class GreaterThanOrEqualsType extends Base
{
protected function compare($left, $right)
{
return $left >= $right;
}
}

View File

@@ -0,0 +1,40 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2017 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://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\Formula\Functions\ComparisonGroup;
use \Espo\Core\Exceptions\Error;
class GreaterThanType extends Base
{
protected function compare($left, $right)
{
return $left > $right;
}
}

View File

@@ -0,0 +1,40 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2017 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko
* Website: http://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\Formula\Functions\ComparisonGroup;
use \Espo\Core\Exceptions\Error;
class LessThanOrEqualsType extends Base
{
protected function compare($left, $right)
{
return $left <= $right;
}
}

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