Compare commits

...

1344 Commits

Author SHA1 Message Date
Yuri Kuznetsov 506e96e333 float preventing same decimal mark and th separator 2023-04-07 17:38:06 +03:00
Yuri Kuznetsov 76a9177c46 v 2023-04-07 16:42:17 +03:00
Yuri Kuznetsov a8baac3f92 missing counterpart link warning 2023-04-07 16:40:57 +03:00
Yuri Kuznetsov 8d9d073c16 fix currency decimal places null 2023-04-07 10:10:36 +03:00
Yuri Kuznetsov 177ecdb70b relation issue msg 2023-04-06 20:40:48 +03:00
Yuri Kuznetsov 89ce80d5b2 fix empty type 2023-04-06 19:19:44 +03:00
Yuri Kuznetsov 7f07175bee v 2023-04-06 19:08:54 +03:00
Yuri Kuznetsov 8bca35934c error msg 2023-04-06 19:05:28 +03:00
Yuri Kuznetsov 65bef1df65 fix link-parent not-storable 2023-04-06 18:57:38 +03:00
Yuri Kuznetsov 922a2e835c 2fa portals 2023-04-06 15:31:28 +03:00
Yuri Kuznetsov 048c83def8 upgrade check 2023-04-05 13:06:42 +03:00
Yuri Kuznetsov cf4a8c6c11 ref 2023-04-04 16:35:37 +03:00
Yuri Kuznetsov 7259142117 ref 2023-04-04 15:12:36 +03:00
Yuri Kuznetsov 746398c5ca cs 2023-04-04 15:10:19 +03:00
Yuri Kuznetsov 6a61772e43 cs 2023-04-04 15:09:21 +03:00
Yuri Kuznetsov 2412fb5151 cs 2023-04-04 15:08:44 +03:00
Yuri Kuznetsov 5e5a229366 cleanup 2023-04-04 10:21:48 +03:00
Yuri Kuznetsov 5d27a7a828 linkForeignAccessCheckDisabled 2023-04-04 10:15:48 +03:00
Yuri Kuznetsov 82cc4a7f03 link check allow defaults 2023-04-04 10:00:57 +03:00
Yuri Kuznetsov d2033c53fc link-check fix 2023-04-04 09:30:08 +03:00
Yuri Kuznetsov 86043a5ce5 link check portal bypass 2023-04-03 21:46:22 +03:00
SuchAFuriousDeath 1fae4ac84b integration-order (#2686)
Co-authored-by: tompro <tomas.prochazka@apertia.cz>
2023-04-03 15:46:15 +03:00
Yuri Kuznetsov 6301ba491c formula set link multiple column 2023-04-03 13:43:50 +03:00
Yuri Kuznetsov defe9965d4 getColumnById 2023-04-03 13:20:34 +03:00
Yuri Kuznetsov 937ad48841 fix 2023-04-03 13:20:11 +03:00
Yuri Kuznetsov 781030df60 ref 2023-04-03 12:40:50 +03:00
Yuri Kuznetsov 9b009962a5 print fix 2023-04-03 09:45:46 +03:00
Rabii Brahimi 255b6637ff Update Delete to allow to remove recordDefs and selectDefs (#2684)
When a custom entity of type event is deleted - its recordDefs and selectDefs files are not removed. 
Hope this doesn't break anything and just add ability to remove the two files.
2023-04-03 09:35:27 +03:00
Yuri Kuznetsov 28d1c052d2 formula parser fixes 2023-03-31 22:42:44 +03:00
Yuri Kuznetsov 828d8da741 fix link check 2023-03-31 10:38:32 +03:00
Eymen Elkum 54688795e2 rtl vertical theme (#2678)
Co-authored-by: Eymen Elkum <eymen@eblasoft.com.tr>
2023-03-30 11:33:23 +03:00
Yuri Kuznetsov 6414a13c6f template assigned user required false 2023-03-30 10:20:59 +03:00
Yuri Kuznetsov c48f17449b v 2023-03-30 09:58:39 +03:00
Yuri Kuznetsov cbf65feb09 before-upgrade script 2023-03-30 09:46:53 +03:00
Yuri Kuznetsov f1a3021c1c fix email applier 2023-03-29 14:14:10 +03:00
Arkadiy Asuratov b70327874e ensure notes by portal users are always public (#2681) 2023-03-29 11:24:22 +03:00
Yuri Kuznetsov 9345ada934 attachment size bigint 2023-03-29 08:17:09 +03:00
Yuri Kuznetsov 92c66a3b9a group email folder mass remove disabled 2023-03-29 08:13:22 +03:00
Yuri Kuznetsov c78f84650c fix dbType 2023-03-29 08:05:59 +03:00
Eymen Elkum cf1692a8a4 border-radios fixes for rtl theme (#2676)
* border-radios fixes for rtl theme

* RTL: improve the fix of rounded borders

* RTL: use css variable for radios

---------

Co-authored-by: Eymen Elkum <eymen@eblasoft.com.tr>
2023-03-29 08:04:07 +03:00
Yuri Kuznetsov 94321b3500 read-only side/bottom panels fix 2023-03-29 07:53:35 +03:00
Yuri Kuznetsov c1a1e1094a Update SECURITY.md 2023-03-24 20:16:52 +02:00
Yuri Kuznetsov c2fefd6227 cs 2023-03-24 19:47:49 +02:00
Yuri Kuznetsov 99946c8da5 working time calendar icon 2023-03-24 11:46:31 +02:00
Yuri Kuznetsov 86c2478721 style fix 2023-03-23 14:54:02 +02:00
Yuri Kuznetsov 5331332103 duplicate fix 2023-03-23 14:33:28 +02:00
Yuri Kuznetsov 0e380e1c10 mass update empty fix 2023-03-23 14:18:03 +02:00
Yuri Kuznetsov c54dbdc169 cleanup 2023-03-23 14:18:03 +02:00
Yuri Kuznetsov f88261a40a Update README.md 2023-03-21 19:39:24 +02:00
Yuri Kuznetsov 7ec8d1f69c revert 2023-03-21 19:11:32 +02:00
Yuri Kuznetsov 77ce0a3b4e Update README.md 2023-03-21 18:01:13 +02:00
Yuri Kuznetsov 134bde3370 Update README.md 2023-03-21 18:00:42 +02:00
Yuri Kuznetsov 811c841420 Update README.md 2023-03-21 17:41:27 +02:00
Yuri Kuznetsov 48751813fb fix warning 2023-03-21 16:07:23 +02:00
Yuri Kuznetsov 79c182d173 kanban records per page 2023-03-21 15:42:40 +02:00
Yuri Kuznetsov 87a612a1bc change user interface settings layout 2023-03-21 15:41:52 +02:00
Yuri Kuznetsov 388da3db70 name duplicate checker 2023-03-21 14:34:32 +02:00
Yuri Kuznetsov 60fdeafd77 cs 2023-03-21 13:12:19 +02:00
Yuri Kuznetsov 2057534f19 robots.txt 2023-03-21 08:16:16 +02:00
Yuri Kuznetsov b85f60b855 ref cs 2023-03-20 13:36:50 +02:00
Yuri Kuznetsov b4d02130fb typo 2023-03-20 13:32:51 +02:00
Yuri Kuznetsov 9a9d924b19 typo 2023-03-20 13:32:10 +02:00
Yuri Kuznetsov 1fb06f60e0 Merge branch 'fix' 2023-03-20 09:46:12 +02:00
Yuri Kuznetsov 9d65855868 fix array-is-not-empty 2023-03-20 09:43:25 +02:00
Yuri Kuznetsov 8cf2e270a5 fix record-modal helper 2023-03-20 09:34:55 +02:00
Yuri Kuznetsov 07ebd43ac6 max log message length 10000 2023-03-20 09:34:55 +02:00
Yuri Kuznetsov b1447a2922 Update README.md 2023-03-19 10:23:51 +02:00
Yuri Kuznetsov 66b85bf4e9 Update CONTRIBUTING.md 2023-03-19 10:22:19 +02:00
Yuri Kuznetsov e9b58926b4 Update CONTRIBUTING.md 2023-03-19 10:22:13 +02:00
Yuri Kuznetsov 75724b28b2 Update CONTRIBUTING.md 2023-03-19 10:21:06 +02:00
Yuri Kuznetsov 79f0730257 Update CONTRIBUTING.md 2023-03-19 10:14:21 +02:00
Yuri Kuznetsov 13abed67f2 Update README.md 2023-03-19 09:55:13 +02:00
Yuri Kuznetsov 84b98c1cfe Update README.md 2023-03-18 12:19:39 +02:00
Yuri Kuznetsov bc557706ca Update README.md 2023-03-18 12:18:53 +02:00
SuchAFuriousDeath 2ef0f5f80e fixed duplicate key (#2667)
Co-authored-by: tompro <tomas.prochazka@apertia.cz>
2023-03-18 12:01:23 +02:00
Yuri Kuznetsov 33db2270d6 Update README.md 2023-03-18 10:28:02 +02:00
Yuri Kuznetsov 6810ee37ac Update README.md 2023-03-18 09:10:40 +02:00
Yuri Kuznetsov 9e25804f89 update moment timezone 2023-03-17 13:44:29 +02:00
Yuri Kuznetsov 42d30a3f8e date picker in modal 2023-03-17 11:03:26 +02:00
Yuri Kuznetsov 524f94cd54 fix xlsx 2023-03-17 10:23:44 +02:00
Yuri Kuznetsov 739230c4b9 fix currency factory 2023-03-17 10:12:51 +02:00
Yuri Kuznetsov caeadc2f28 css fix 2023-03-16 12:58:08 +02:00
Yuri Kuznetsov fd330f991c ref 2023-03-16 11:02:32 +02:00
David e09bf8fa31 fix remove row (#2663)
Co-authored-by: David Moškoř <david.moskor@apertia.cz>
2023-03-16 09:01:40 +02:00
Yuri Kuznetsov 2ea60e66ba not storable select foreign 2023-03-15 18:51:40 +02:00
Yuri Kuznetsov f184e34838 extensions sortable by name 2023-03-15 18:07:30 +02:00
Eymen Elkum d721e9b448 entityType instead of scope (#2661) 2023-03-15 12:45:41 +02:00
Yuri Kuznetsov e1241eddb7 css fix 2023-03-15 10:33:00 +02:00
Yuri Kuznetsov c693654e80 fix 2023-03-15 09:54:42 +02:00
Yuri Kuznetsov 9d0f3dadad fix multi-enum validation popover 2023-03-15 08:19:37 +02:00
Yuri Kuznetsov 2c4033f363 formula currency convert 2023-03-14 11:15:23 +02:00
Yuri Kuznetsov 3c62414c8d doc 2023-03-14 11:01:27 +02:00
Yuri Kuznetsov 9dddd0b92f dark theme table bold 700 2023-03-13 17:27:51 +02:00
Yuri Kuznetsov 2284a3e2e5 orm: map function 2023-03-13 13:43:51 +02:00
Yuri Kuznetsov 60d83b138a cs 2023-03-13 11:13:23 +02:00
Yuri Kuznetsov c94d41a79c types, rename 2023-03-13 11:08:53 +02:00
Yuri Kuznetsov fc78cd28a6 docs 2023-03-13 10:47:09 +02:00
Yuri Kuznetsov b0e01a1fcb select order no complex expressions 2023-03-13 10:43:58 +02:00
Yuri Kuznetsov 41222f8e9e docs 2023-03-13 10:19:57 +02:00
Yuri Kuznetsov 64baaa5253 wysiwyg iframe shortcuts support 2023-03-13 09:53:42 +02:00
Yuri Kuznetsov 35a0f14d28 id generator usage 2023-03-13 08:59:09 +02:00
Yuri Kuznetsov 9bb2197717 ref, id generator usage 2023-03-13 08:54:38 +02:00
Yuri Kuznetsov 1607240f5d readme change 2023-03-12 19:59:32 +02:00
Yuri Kuznetsov 8be1af0671 orm: all/any operators 2023-03-12 17:17:43 +02:00
Yuri Kuznetsov 58ac0800f9 ref 2023-03-12 16:38:22 +02:00
Yuri Kuznetsov 2acac3d0b0 type 2023-03-11 22:46:01 +02:00
Yuri Kuznetsov 5e44fc2d40 Merge branch 'fix' 2023-03-10 18:26:02 +02:00
Yuri Kuznetsov 2b08f83ac2 fix email plain text encoding issue 2023-03-10 18:25:44 +02:00
Yuri Kuznetsov cc1bfce3dd fix email plain text encoding issue 2023-03-10 18:24:08 +02:00
Yuri Kuznetsov 08647b3ed6 ref 2023-03-10 17:31:41 +02:00
Yuri Kuznetsov b97f4ee124 cleanup 2023-03-10 17:20:44 +02:00
Yuri Kuznetsov d4e73f500f ref 2023-03-10 17:20:32 +02:00
Yuri Kuznetsov 5e13e6cf99 ref 2023-03-10 14:32:40 +02:00
Yuri Kuznetsov 3fd06a89f1 fix 2023-03-10 14:12:25 +02:00
Yuri Kuznetsov 6678500d1b cleanup 2023-03-10 13:47:23 +02:00
Yuri Kuznetsov 1a6f236dc7 fix route cache file 2023-03-10 13:39:57 +02:00
Yuri Kuznetsov f57a95349a bind client manager 2023-03-10 13:10:10 +02:00
Yuri Kuznetsov b3496268e0 orm: where clause value as expression 2023-03-10 12:47:11 +02:00
Yuri Kuznetsov fa38ece181 ref 2023-03-10 12:33:19 +02:00
Yuri Kuznetsov 5866f02eca orm: row constructor 2023-03-10 12:22:11 +02:00
Yuri Kuznetsov 6edce56ca7 orm: comparison sub-query 2023-03-10 12:03:46 +02:00
Yuri Kuznetsov 3dc239acc5 ref 2023-03-10 11:30:59 +02:00
Yuri Kuznetsov 385c70845a test 2023-03-10 11:03:02 +02:00
Yuri Kuznetsov 4f65a46434 orm where clause subquery as instance 2023-03-10 10:41:04 +02:00
Yuri Kuznetsov a9c4689500 cs 2023-03-09 20:42:30 +02:00
Yuri Kuznetsov 75b544a995 cs ref 2023-03-09 19:53:56 +02:00
Yuri Kuznetsov 451d5e5659 cleanup 2023-03-09 19:12:58 +02:00
Yuri Kuznetsov 134f5862dd ref 2023-03-09 19:12:33 +02:00
Yuri Kuznetsov b59279ab16 cs 2023-03-09 15:50:17 +02:00
Yuri Kuznetsov 0621c8aefc email to task: subject in description 2023-03-09 15:37:18 +02:00
Yuri Kuznetsov 3229ba1043 foreign field helper 2023-03-09 13:35:16 +02:00
Yuri Kuznetsov 06868b8b57 Merge branch 'fix' 2023-03-09 12:05:40 +02:00
Yuri Kuznetsov fce1d49407 v 2023-03-09 11:59:30 +02:00
Yuri Kuznetsov 8c2cf02891 cs 2023-03-09 11:59:29 +02:00
Yuri Kuznetsov ccdafc67b5 ref 2023-03-09 11:59:29 +02:00
Yuri Kuznetsov b6a470c52e ref 2023-03-09 11:59:29 +02:00
Yuri Kuznetsov 76c63bede4 field view skip re-render in edit mode 2023-03-09 11:59:29 +02:00
Yuri Kuznetsov 837e96c061 v 2023-03-09 11:17:48 +02:00
dependabot[bot] 2bebe4b045 Bump phpseclib/phpseclib from 3.0.16 to 3.0.19 (#2655)
Bumps [phpseclib/phpseclib](https://github.com/phpseclib/phpseclib) from 3.0.16 to 3.0.19.
- [Release notes](https://github.com/phpseclib/phpseclib/releases)
- [Changelog](https://github.com/phpseclib/phpseclib/blob/master/CHANGELOG.md)
- [Commits](https://github.com/phpseclib/phpseclib/compare/3.0.16...3.0.19)

---
updated-dependencies:
- dependency-name: phpseclib/phpseclib
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-09 10:04:41 +02:00
Yuri Kuznetsov 9ee1b41b52 import phone number starts with + fix 2023-03-09 09:12:12 +02:00
Yuri Kuznetsov f18a3043eb open spout export sanitize 2023-03-09 09:12:12 +02:00
Yuri Kuznetsov 01d5f1a07f global search check name exists 2023-03-09 09:12:12 +02:00
Yuri Kuznetsov 06b31d537f note no globals search 2023-03-09 09:12:12 +02:00
David 989a04dddf fix inline edit close (#2653)
Co-authored-by: David Moškoř <david.moskor@apertia.cz>
2023-03-09 09:11:18 +02:00
Yuri Kuznetsov 055e968660 match exctract 2023-03-08 11:16:28 +02:00
Yuri Kuznetsov 585512773d formula record delete 2023-03-08 10:32:30 +02:00
Yuri Kuznetsov 71f4abeb97 formula test fix 2023-03-08 10:19:55 +02:00
Yuri Kuznetsov 4f973e057e only middle join test 2023-03-08 10:03:15 +02:00
Yuri Kuznetsov 416bf152f0 prevent thousand separator null 2023-03-08 09:30:28 +02:00
Yuri Kuznetsov 3f473617c0 cs 2023-03-08 09:30:28 +02:00
IgorA100 56766e2246 Localization of email templates (ru_RU ) (#2649)
* Create body.tpl

* Create subject.tpl

* Create subject.tpl

* Create body.tpl

* Update body.tpl

* Create subject.tpl

* Create body.tpl

* Create body.tpl

* Create subject.tpl

* Update body.tpl

* Update body.tpl

* Create body.tpl

* Create subject.tpl
2023-03-07 18:56:01 +02:00
Yuri Kuznetsov a92e44bd6c fix msg 2023-03-07 18:53:17 +02:00
Yuri Kuznetsov 369f3ba9a5 switch complex expr 2023-03-07 18:52:49 +02:00
Yuri Kuznetsov 2d62c902cb Merge branch 'fix' 2023-03-07 17:26:01 +02:00
Yuri Kuznetsov 5985b6d93f fix meeting/call set held 2023-03-07 17:09:36 +02:00
Yuri Kuznetsov 587bda5c73 cs 2023-03-07 17:09:36 +02:00
Yuri Kuznetsov 230a9aced0 ref 2023-03-07 17:09:36 +02:00
IgorA100 023b0ea892 Trying to localize Email templates (#2647)
* Create body.tpl

* Create subject.tpl

* Create subject.tpl

* Create body.tpl

* Update body.tpl
2023-03-07 17:09:16 +02:00
Yuri Kuznetsov 2578b397e7 fix meeting/call set held 2023-03-07 17:07:05 +02:00
Yuri Kuznetsov 0659b30588 cs 2023-03-07 17:00:18 +02:00
Yuri Kuznetsov 0afd5e1d73 inline-edit-close reset attributes before re-rendering 2023-03-07 14:12:30 +02:00
Yuri Kuznetsov f824d8eaf5 rebuild config metadata support default 2023-03-07 10:19:51 +02:00
Yuri Kuznetsov abab4e2061 fix entityTeam name 2023-03-07 09:58:52 +02:00
Eymen Elkum 36c6883743 Fix formatter enum translation (#2642)
* email template formatter consider enum translation

* htmlizer default value for enum translation & rename variable

---------

Co-authored-by: Eymen Elkum <eymen@eblasoft.com.tr>
2023-03-07 09:58:36 +02:00
Yuri Kuznetsov 9c44f79b4d Merge branch 'fix' 2023-03-07 09:35:10 +02:00
Yuri Kuznetsov cd3c7b1407 fix default team 2023-03-07 09:32:02 +02:00
Yuri Kuznetsov 6afd616e42 change poeditor link 2023-03-06 15:22:14 +02:00
Yuri Kuznetsov 7aabbc5d28 fix query composer in array issue 2023-03-06 10:05:55 +02:00
Yuri Kuznetsov 9589b0b70a portal url not sortable 2023-03-06 09:59:48 +02:00
Yuri Kuznetsov 8822104227 contrinuting 2023-03-05 20:23:03 +02:00
Yuri Kuznetsov e34e6b5d9a test 2023-03-05 18:14:11 +02:00
Yuri Kuznetsov 6341492965 ref 2023-03-05 17:25:23 +02:00
Yuri Kuznetsov aeece9acda authlogdisabled 2023-03-05 17:09:16 +02:00
Yuri Kuznetsov f5823d04dd fix 2023-03-05 17:07:29 +02:00
Yuri Kuznetsov 28df6738e2 cs fix 2023-03-05 16:45:38 +02:00
Yuri Kuznetsov 0e371ebe04 discard applierClassNameMap 2023-03-05 16:37:39 +02:00
Yuri Kuznetsov 6fe4034237 readme fix 2023-03-05 14:15:21 +02:00
Yuri Kuznetsov 48c3ea5f13 ref 2023-03-04 19:43:13 +02:00
Anthony Andriano da5b1cf005 bug fix: tcpdf total page numbers for groups (#2632)
The total page number was not correct for groups. The page number for a non-group was used, which produced the wrong result.
2023-03-04 19:42:58 +02:00
Yuri Kuznetsov 2655f0d9c5 ref 2023-03-04 10:59:39 +02:00
Yuri Kuznetsov e11e3d6168 cleanup 2023-03-04 10:34:09 +02:00
Eymen Elkum 90806c0e82 pdf consider enum translation param (#2631) 2023-03-04 09:54:08 +02:00
Yuri Kuznetsov ca9f25636b ref 2023-03-03 17:33:51 +02:00
Yuri Kuznetsov abcc290a7c pg encoding 2023-03-03 15:09:00 +02:00
Yuri Kuznetsov 091b64dd3d ref 2023-03-03 14:41:11 +02:00
Yuri Kuznetsov 8fd8434d68 ref 2023-03-03 11:56:30 +02:00
Yuri Kuznetsov 9ef5c0bc1b fix test 2023-03-03 10:43:15 +02:00
Yuri Kuznetsov 8adfb80558 orm defs try get methods 2023-03-03 10:42:41 +02:00
Yuri Kuznetsov 5ccbf49773 fix link check attachments 2023-03-03 10:27:43 +02:00
Yuri Kuznetsov e2cde84447 ref 2023-03-03 10:19:32 +02:00
Yuri Kuznetsov 26e7f3dfd2 type ref 2023-03-03 10:07:04 +02:00
Yuri Kuznetsov 6a75b28f8c test fix 2023-03-03 09:56:46 +02:00
Yuri Kuznetsov e8b6db20a2 orm discard aggregation 2023-03-03 09:55:15 +02:00
Yuri Kuznetsov 9e37739197 Merge branch 'fix' 2023-03-02 15:19:03 +02:00
Yuri Kuznetsov f0b49cd467 fix auto reply 2023-03-02 15:16:44 +02:00
Yuri Kuznetsov aae918886f authApiUserLogDisabled 2023-03-02 14:38:39 +02:00
Yuri Kuznetsov cbf0a82c52 config param system 2023-03-02 14:24:31 +02:00
Yuri Kuznetsov fb7683e35b ref 2023-03-02 14:15:13 +02:00
Yuri Kuznetsov 105bb8a80f cs 2023-03-02 13:13:20 +02:00
Yuri Kuznetsov eab0596c33 orm executor ref 2023-03-02 13:11:28 +02:00
Yuri Kuznetsov 7e84278cef ref 2023-03-02 12:47:13 +02:00
Yuri Kuznetsov f2a27c024f ref 2023-03-02 12:32:53 +02:00
Yuri Kuznetsov 1b76097311 sql log 2023-03-02 10:21:16 +02:00
Yuri Kuznetsov ae23f58bf5 ref 2023-03-02 09:19:30 +02:00
Yuri Kuznetsov f3bf7d93c1 pg action user 2023-03-01 13:58:34 +02:00
Yuri Kuznetsov 656ff76a8d lock alias mysql 2023-03-01 13:04:50 +02:00
Yuri Kuznetsov c72bcc365a pg fix week 2023-03-01 10:58:49 +02:00
Yuri Kuznetsov f58687ad6b pg fix quarter fiscal 2023-03-01 10:24:46 +02:00
Yuri Kuznetsov aefe547ef8 has many bc 2023-03-01 09:55:28 +02:00
Yuri Kuznetsov 3619696b12 fix 2023-02-28 19:06:15 +02:00
Yuri Kuznetsov 40d0ad5d08 remove scheduled job service 2023-02-28 19:01:12 +02:00
Yuri Kuznetsov c9d3a3f967 install ref 2023-02-28 18:00:47 +02:00
Yuri Kuznetsov 0b1f7d1548 tester changes 2023-02-28 16:34:16 +02:00
Yuri Kuznetsov 59cee9a2ee pg integration tests action 2023-02-28 15:57:23 +02:00
Yuri Kuznetsov e7373ab817 mass action encode serialized data 2023-02-28 14:03:18 +02:00
Yuri Kuznetsov 9570a28066 exclude test 2023-02-28 13:37:19 +02:00
Yuri Kuznetsov b3f7242bae integratino test platform env 2023-02-28 12:44:18 +02:00
Yuri Kuznetsov 823d371e9d integration-pg test suite 2023-02-28 12:28:17 +02:00
Yuri Kuznetsov 2399d21829 PostgreSQL (#2599)
* dev

* postgres update set

* position in list

* discard charset

* binary => blob

* rollback transaction

* insert on conflict

* fix POSITION_IN_LIST

* TIMESTAMPDIFF

* functions

* functions

* set UTC time zone

* functions and operators

* function

* fulltext

* fix details provider

* full text config usage

* fix param

* full text index rebuild

* full text and round fix

* add uuid db type

* if function

* tests

* delete with joins order limit

* update

* alias max length
2023-02-28 12:12:21 +02:00
Yuri Kuznetsov 01d5091aa3 integration test fix 2023-02-28 12:00:07 +02:00
Yuri Kuznetsov ed867d1b95 array validation max item length rename 2023-02-28 10:37:06 +02:00
Yuri Kuznetsov 3392c843e6 fix case hook 2023-02-28 09:01:05 +02:00
Yuri Kuznetsov 1e29280a1d fix 2023-02-27 18:02:26 +02:00
Yuri Kuznetsov aeecd1f3a6 ref 2023-02-27 16:20:57 +02:00
Yuri Kuznetsov 5ecce30720 fix test 2023-02-27 16:11:32 +02:00
Yuri Kuznetsov c02f87d1c0 integration test quote identifier and ref 2023-02-27 16:07:48 +02:00
Yuri Kuznetsov 929dce6b2e integration tests do not use full-reset 2023-02-27 15:00:20 +02:00
Yuri Kuznetsov c82d35af27 integration test ref 2023-02-27 14:13:01 +02:00
Yuri Kuznetsov a0a0b22d2f bind file manager 2023-02-27 10:46:41 +02:00
Yuri Kuznetsov db3af5749c bind config 2023-02-27 10:20:41 +02:00
Yuri Kuznetsov f1e13f4b95 change inspections 2023-02-27 09:48:41 +02:00
Yuri Kuznetsov 9f43a0ff89 docs 2023-02-26 20:46:56 +02:00
Yuri Kuznetsov 17bc8a6137 ref 2023-02-24 16:22:23 +02:00
Yuri Kuznetsov 66b06b8baa ref 2023-02-24 15:59:45 +02:00
Yuri Kuznetsov 1d6745396d ref 2023-02-24 15:30:26 +02:00
Yuri Kuznetsov 4f53038578 ref 2023-02-24 15:25:59 +02:00
Yuri Kuznetsov 79f5a7a94b expression renamings 2023-02-24 15:17:11 +02:00
Yuri Kuznetsov 77a433445b fix label 2023-02-24 14:03:36 +02:00
Yuri Kuznetsov be54198265 phone email invalid on list view 2023-02-24 13:49:31 +02:00
Yuri Kuznetsov 7da892ba98 fix 2023-02-24 13:33:49 +02:00
Yuri Kuznetsov 7b2526430a email address phone number tools 2023-02-24 13:30:25 +02:00
Yuri Kuznetsov e416dac56f fix validation 2023-02-24 12:14:41 +02:00
Yuri Kuznetsov d11f0f4f1b delete relationships on import revert 2023-02-24 11:40:23 +02:00
Yuri Kuznetsov f72fbed6e1 relation defs getConditions 2023-02-24 11:18:15 +02:00
Yuri Kuznetsov 56fe4e2ef7 cs 2023-02-24 11:00:03 +02:00
Yuri Kuznetsov 684a995e17 fix doc type 2023-02-24 10:54:38 +02:00
Yuri Kuznetsov 2f03572df8 orm alias max length prop 2023-02-24 09:25:10 +02:00
Yuri Kuznetsov 5bb0222abd Merge branch 'fix' 2023-02-24 09:15:00 +02:00
Yuri Kuznetsov 82cf211822 fix calendar busy color 2023-02-24 09:14:01 +02:00
Yuri Kuznetsov 29fd164023 ref cs 2023-02-23 16:17:02 +02:00
Yuri Kuznetsov c52fedcf07 ref 2023-02-23 16:11:11 +02:00
Yuri Kuznetsov 68b12ff848 ref 2023-02-23 14:32:21 +02:00
Yuri Kuznetsov a351af06a1 ref 2023-02-23 14:05:28 +02:00
Yuri Kuznetsov 72c502b492 cs 2023-02-23 13:45:47 +02:00
Yuri Kuznetsov 1047d243a2 ref 2023-02-23 13:44:23 +02:00
Yuri Kuznetsov 5ab129bd9b ref 2023-02-23 13:06:09 +02:00
Yuri Kuznetsov 6e5e940b30 cs 2023-02-23 12:54:51 +02:00
Yuri Kuznetsov fa577a4fa9 ref 2023-02-23 12:40:41 +02:00
Yuri Kuznetsov 64f2c59134 list with categories fallback css fix 2023-02-23 10:18:08 +02:00
Yuri Kuznetsov a82408a06f fix message 2023-02-23 09:38:56 +02:00
Yuri Kuznetsov b80d8830ba create admin user command 2023-02-22 18:01:49 +02:00
Yuri Kuznetsov edcdf3c8be fixes 2023-02-22 18:01:41 +02:00
Yuri Kuznetsov ae27f360ca command io readSecretLine 2023-02-22 17:40:41 +02:00
Yuri Kuznetsov 474759ab6e cs 2023-02-22 17:28:45 +02:00
Yuri Kuznetsov 02ea7cc041 logger ignore empty context 2023-02-22 17:09:02 +02:00
Yuri Kuznetsov 0a67950913 ref 2023-02-22 17:02:07 +02:00
Yuri Kuznetsov 4ef66b1601 fix link conflict 2023-02-22 14:34:50 +02:00
Yuri Kuznetsov 33220d607a phpdocs 2023-02-22 13:25:30 +02:00
Yuri Kuznetsov ac9f80312d container get by class 2023-02-22 12:37:30 +02:00
Yuri Kuznetsov 0db2ee0a8d ref cs 2023-02-22 12:13:47 +02:00
Yuri Kuznetsov 7d4ab54505 greatest/least expression 2023-02-22 11:51:10 +02:00
Yuri Kuznetsov a06bfde766 fix link quick search 2023-02-22 10:57:53 +02:00
Yuri Kuznetsov 46f333fced entityDefs modifier 2023-02-22 10:51:20 +02:00
Yuri Kuznetsov f9294c652d settings skip rebuild 2023-02-21 19:05:38 +02:00
Yuri Kuznetsov a22dc4b2fb languageAclDisabled moved to scopes 2023-02-21 19:01:05 +02:00
Yuri Kuznetsov b293086482 cleanup 2023-02-21 18:57:43 +02:00
Yuri Kuznetsov 93139cb3ef preferences id fix 2023-02-21 18:56:22 +02:00
Yuri Kuznetsov 1db70eeaa8 entity acl changes 2023-02-21 18:56:07 +02:00
Yuri Kuznetsov 8ccda3fd2d currency db type string 2023-02-21 17:18:24 +02:00
Yuri Kuznetsov 60eb9008f7 mail merge endpoint 2023-02-21 14:14:14 +02:00
Yuri Kuznetsov 635fa8b893 activities endpoints 2023-02-21 14:00:09 +02:00
Yuri Kuznetsov 183603e09a forbid layout link name 2023-02-21 13:14:55 +02:00
Yuri Kuznetsov 3399b2cc01 email template api endpoint 2023-02-21 13:12:45 +02:00
Yuri Kuznetsov 9d4d441ec2 import api entrypoints 2023-02-21 12:56:36 +02:00
Yuri Kuznetsov 51bda2f5d2 cleanup 2023-02-21 11:32:45 +02:00
Yuri Kuznetsov 92e62c7760 orm greatest least functions 2023-02-21 11:07:58 +02:00
Yuri Kuznetsov 7bb204a432 authAnotherUserDisabled admin readOnly 2023-02-21 08:38:03 +02:00
Yuri Kuznetsov 39939191e5 fix portal starter 2023-02-20 18:17:12 +02:00
Yuri Kuznetsov aa43f29615 add line 2023-02-20 18:12:09 +02:00
Yuri Kuznetsov f109131d38 route cache check use cache 2023-02-20 18:11:15 +02:00
Yuri Kuznetsov a6fb0bbded slim route cache 2023-02-20 17:45:07 +02:00
Yuri Kuznetsov 9b808908b6 user api entry points routes 2023-02-20 17:19:10 +02:00
Eymen Elkum 0691a3cdda trTag helper put attributes part (#2615) 2023-02-20 14:31:50 +02:00
Yuri Kuznetsov 7208a4f88c cs fix 2023-02-20 14:27:31 +02:00
Yuri Kuznetsov 7d37006450 email address api action, global search endpoint fix 2023-02-20 14:22:53 +02:00
Yuri Kuznetsov 73f1e425ca fix tests 2023-02-20 13:44:36 +02:00
Yuri Kuznetsov 2336ae74da entity manager tool conflict with routes check 2023-02-20 12:56:10 +02:00
Yuri Kuznetsov 4419d0827a global search api endpoint change 2023-02-20 12:33:31 +02:00
Yuri Kuznetsov 0d1bc90848 api endpoints 2023-02-20 12:01:46 +02:00
Yuri Kuznetsov 7665010bff ref 2023-02-20 09:30:31 +02:00
Yuri Kuznetsov 5ba16b4c27 record id type 2023-02-19 16:47:09 +02:00
Yuri Kuznetsov cbf6b0cc6b ref 2023-02-19 13:30:28 +02:00
Yuri Kuznetsov c51a51e110 api apply response headers added by auth 2023-02-19 13:30:21 +02:00
Yuri Kuznetsov b59ff42ac2 ref 2023-02-19 12:58:37 +02:00
Yuri Kuznetsov b635018949 ref 2023-02-19 12:26:21 +02:00
Yuri Kuznetsov fcb2a0b7a5 ref 2023-02-19 11:49:22 +02:00
Yuri Kuznetsov 2048f3fa10 ref 2023-02-19 08:46:15 +02:00
Yuri Kuznetsov 0fe7fb032f phpdoc fix 2023-02-19 08:44:06 +02:00
Yuri Kuznetsov bb24b576e0 cs 2023-02-19 08:42:53 +02:00
Yuri Kuznetsov 2a7a12f58c cs 2023-02-18 22:49:43 +02:00
Yuri Kuznetsov 5ccb081af5 cs and fix class hint 2023-02-18 22:29:34 +02:00
Yuri Kuznetsov bf1ed3c287 barcode tab fix 2023-02-18 17:45:15 +02:00
Yuri Kuznetsov ddcb5ccbf9 ref 2023-02-18 14:54:24 +02:00
Yuri Kuznetsov 5b8dc4e629 fix doc 2023-02-18 12:06:47 +02:00
Yuri Kuznetsov 1032b73b85 api response preparing 2023-02-18 11:42:04 +02:00
Yuri Kuznetsov e7b914ff4b ref 2023-02-18 11:37:41 +02:00
Yuri Kuznetsov 30e94f25e6 action middlewares 2023-02-18 09:22:30 +02:00
Yuri Kuznetsov 7fa7fe63f8 api action return response 2023-02-17 21:42:32 +02:00
Yuri Kuznetsov 716a5b86ff rensponse methods 2023-02-17 21:21:27 +02:00
Yuri Kuznetsov a29ce1a873 cleanup 2023-02-17 21:06:16 +02:00
Yuri Kuznetsov ace2dc802a api action 2023-02-17 20:34:29 +02:00
Yuri Kuznetsov 1018bfd4d4 cs 2023-02-17 18:16:57 +02:00
Yuri Kuznetsov cc828661da cs 2023-02-17 17:44:29 +02:00
Yuri Kuznetsov 4c265dbae1 cs 2023-02-17 17:32:17 +02:00
Yuri Kuznetsov 2615869691 cs 2023-02-17 17:13:42 +02:00
Yuri Kuznetsov fbbb7c99c0 cs 2023-02-17 16:38:13 +02:00
Yuri Kuznetsov da7fc9d6a0 cs 2023-02-17 16:28:31 +02:00
Yuri Kuznetsov 9b63470e9a email from autocomplete fix 2023-02-17 16:12:00 +02:00
Yuri Kuznetsov 5879a57cd1 cleanup 2023-02-17 15:47:41 +02:00
Yuri Kuznetsov 702b3f4e2b cs ref 2023-02-17 15:46:44 +02:00
Yuri Kuznetsov 75749efacb formula func interface 2023-02-17 14:01:06 +02:00
Yuri Kuznetsov 854f6c6390 fix 2023-02-17 13:00:22 +02:00
Yuri Kuznetsov 717c21e91b cs 2023-02-17 11:50:53 +02:00
Yuri Kuznetsov 07f1100ccc fix install alert css 2023-02-17 11:40:20 +02:00
Yuri Kuznetsov 3157bb4fcf set read only config params 2023-02-17 10:43:18 +02:00
Yuri Kuznetsov a3a35be818 cleanup 2023-02-17 10:41:32 +02:00
Yuri Kuznetsov 1c1042cd75 stream note unrelate fix 2023-02-17 10:31:41 +02:00
Yuri Kuznetsov 8f8eb4807d cs fix 2023-02-17 10:18:30 +02:00
Yuri Kuznetsov f97bb82d9e unrelate stream note 2023-02-17 10:05:31 +02:00
Yuri Kuznetsov 62b325c24b cs 2023-02-17 09:38:29 +02:00
Yuri Kuznetsov 4051b83b30 docs 2023-02-17 09:08:34 +02:00
Yuri Kuznetsov 75444b3e0b uuid db type 2023-02-17 08:55:32 +02:00
Yuri Kuznetsov 961a7bd0bf ref 2023-02-16 17:17:02 +02:00
Eymen Elkum f4b09c0135 fix foreign enum & array with optionPath & translations (#2610)
* fix foreign enum & array with optionPath & translations

* foreign enum & array clone options

---------

Co-authored-by: Eymen Elkum <eymen@eblasoft.com.tr>
2023-02-16 16:49:19 +02:00
Yuri Kuznetsov d09f83e267 system user id in config 2023-02-16 14:23:01 +02:00
Yuri Kuznetsov b874cc283f read only config param 2023-02-16 14:19:15 +02:00
Yuri Kuznetsov b5873c9c1d orm md5 function 2023-02-16 12:51:55 +02:00
Yuri Kuznetsov 89bde00e3b cs 2023-02-16 12:11:57 +02:00
Yuri Kuznetsov 242de1824f exception fix 2023-02-16 12:10:20 +02:00
Yuri Kuznetsov 02d277d045 drop mariadb 10.1 2023-02-16 10:30:07 +02:00
Yuri Kuznetsov 76d31a3885 update languages 2023-02-16 10:08:09 +02:00
Yuri Kuznetsov c6a8e36849 fix ctrl+s on draft emails not working 2023-02-16 09:59:27 +02:00
Yuri Kuznetsov d88e47b508 email template info panel label fix and refactor 2023-02-16 09:40:33 +02:00
Yuri Kuznetsov 46bd520b52 cs 2023-02-15 17:09:36 +02:00
Yuri Kuznetsov d9c0f7d055 uuid generator 2023-02-15 17:03:14 +02:00
Yuri Kuznetsov 4a9bd1b54c fix getSet 2023-02-15 16:05:30 +02:00
Yuri Kuznetsov 1626e4b6bf update getSet 2023-02-15 15:27:17 +02:00
Yuri Kuznetsov c1cfa0483a orm update in not null 2023-02-15 15:15:13 +02:00
Yuri Kuznetsov c7d5bc8169 fix orm get join 2023-02-15 14:40:15 +02:00
David 37e091ddda link fix (#2604)
Co-authored-by: David Moškoř <david.moskor@apertia.cz>
2023-02-15 09:15:12 +02:00
Yuri Kuznetsov a7c33afd93 cs 2023-02-14 20:37:54 +02:00
Yuri Kuznetsov f7678abad1 fix 2023-02-14 18:34:54 +02:00
Yuri Kuznetsov b181624064 ref 2023-02-14 18:34:21 +02:00
Yuri Kuznetsov 8a6c63e12c modified by id fix 2023-02-14 13:28:00 +02:00
Yuri Kuznetsov aba1881a5c fix docs and cleanup 2023-02-14 13:00:52 +02:00
Yuri Kuznetsov 3350ffc0b7 system user id ref 2023-02-14 12:48:42 +02:00
Yuri Kuznetsov c498d463e7 merge fix 2023-02-14 10:58:50 +02:00
Yuri Kuznetsov 93c1f4ef8a fix foreign multi-enum export 2023-02-14 10:42:05 +02:00
Yuri Kuznetsov 54bf67e8bd cleanup 2023-02-13 18:16:35 +02:00
Yuri Kuznetsov 59e852a285 install ref 2023-02-13 18:11:13 +02:00
Yuri Kuznetsov dcbe24746e deprecate SYSTEM_USER_ID const 2023-02-13 17:10:34 +02:00
Yuri Kuznetsov deb3ee0653 system user id ref 2023-02-13 17:00:06 +02:00
Yuri Kuznetsov 698db9ebd6 ref 2023-02-13 14:52:00 +02:00
Rabii Brahimi 214cf538ad Update select-records.js (#2603)
Add ability to show pagination one select records modal (if pagination enabled).
2023-02-13 14:16:46 +02:00
Yuri Kuznetsov f578fd4af9 external account, integration id db type string 2023-02-13 13:46:49 +02:00
Yuri Kuznetsov 57c011ee94 fix test 2023-02-13 13:43:07 +02:00
Yuri Kuznetsov e4285d1d2a ref 2023-02-13 13:28:06 +02:00
Yuri Kuznetsov 5f4643d725 docs 2023-02-13 12:03:02 +02:00
Yuri Kuznetsov fcc13ef10c skip text search for email address if whitespaces 2023-02-13 10:14:43 +02:00
Yuri Kuznetsov 826c1734a2 fix test 2023-02-13 10:01:07 +02:00
Yuri Kuznetsov 849ddadb8c cs fix 2023-02-13 09:59:21 +02:00
Yuri Kuznetsov 3e4bd12a76 fulltext boolean expression 2023-02-13 09:48:47 +02:00
Yuri Kuznetsov e6aae5f4ed schema manager creation change 2023-02-12 19:00:19 +02:00
Yuri Kuznetsov d8bd2f451f orm refactor match expr 2023-02-12 15:13:43 +02:00
Yuri Kuznetsov 9c47341fc1 test fix 2023-02-12 11:40:52 +02:00
Yuri Kuznetsov bbea0c0215 filters improvements 2023-02-12 11:34:55 +02:00
Yuri Kuznetsov 4e4e29e0f1 fix 2023-02-11 23:23:18 +02:00
Yuri Kuznetsov 4658eb800e join only middle, filters change 2023-02-11 23:18:06 +02:00
Yuri Kuznetsov 16a313f659 orm exists operator 2023-02-11 20:04:54 +02:00
Yuri Kuznetsov c2fcd8d86c ref 2023-02-11 16:11:04 +02:00
Yuri Kuznetsov 8666a3977a orm operator key fix 2023-02-11 12:05:01 +02:00
Yuri Kuznetsov fa06a437e5 fix test 2023-02-10 14:40:51 +02:00
Yuri Kuznetsov 0dcea2ad5b fix additionalSelect alias not string 2023-02-10 14:39:51 +02:00
Yuri Kuznetsov 5a3142b252 fix foreign select join value bool 2023-02-10 14:32:57 +02:00
Yuri Kuznetsov 4598b58fbb schema diff modifier handle dropped sequences 2023-02-10 13:23:53 +02:00
Yuri Kuznetsov 7ff9d85a11 id length 17 2023-02-09 18:38:00 +02:00
Yuri Kuznetsov 89b912ee73 fix some foreign id fields and max-length 2023-02-09 16:24:02 +02:00
Yuri Kuznetsov a4f75f1423 person name name not storable 2023-02-09 13:13:52 +02:00
Yuri Kuznetsov 03a69cb364 ORM use COALESCE 2023-02-09 13:01:01 +02:00
Yuri Kuznetsov e7fa98dc09 lock table ref 2023-02-09 12:55:47 +02:00
Yuri Kuznetsov 5eb49d6c3d fix test 2023-02-09 12:51:28 +02:00
Yuri Kuznetsov 1d84aad483 fix bool 0 where clause 2023-02-09 12:47:25 +02:00
Yuri Kuznetsov af847a8fe7 fix test 2023-02-08 13:40:36 +02:00
Yuri Kuznetsov 89d775a8a8 fix list image preview size 2023-02-08 10:57:05 +02:00
Yuri Kuznetsov f09fe03f60 prevent checking record not in collection 2023-02-07 21:51:21 +02:00
dependabot[bot] 08a6a2c66b Bump dompdf/dompdf from 2.0.2 to 2.0.3 (#2597)
Bumps [dompdf/dompdf](https://github.com/dompdf/dompdf) from 2.0.2 to 2.0.3.
- [Release notes](https://github.com/dompdf/dompdf/releases)
- [Commits](https://github.com/dompdf/dompdf/compare/v2.0.2...v2.0.3)

---
updated-dependencies:
- dependency-name: dompdf/dompdf
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-07 20:20:42 +02:00
Yuri Kuznetsov 0a4a3938fb foreign id usage 2023-02-07 18:39:07 +02:00
Yuri Kuznetsov 0bc05b4a6d subscription bigint 2023-02-07 17:37:42 +02:00
Yuri Kuznetsov b7ad2dd760 docs and ref 2023-02-07 16:17:04 +02:00
Yuri Kuznetsov 363842aff2 integration entity id max length 2023-02-07 15:29:53 +02:00
Yuri Kuznetsov ac889dea91 currency column length 3 2023-02-07 12:19:04 +02:00
Yuri Kuznetsov 89e31795cc mass update link test 2023-02-07 11:41:04 +02:00
Yuri Kuznetsov 9953ea8419 link check integration test 2023-02-07 11:20:54 +02:00
Yuri Kuznetsov 1ae1f07de2 merge fix 2023-02-07 10:23:21 +02:00
Yuri Kuznetsov b8386f3ea3 fix diff 2023-02-07 10:06:05 +02:00
Yuri Kuznetsov 846b57842f 7.3.3 2023-02-07 09:16:25 +02:00
Yuri Kuznetsov 6fcd0e155d record link check 2023-02-06 22:58:02 +02:00
Yuri Kuznetsov 3e945b7fd8 ref 2023-02-06 21:32:43 +02:00
Yuri Kuznetsov 3fa7ddf9f8 fix upgrade 2023-02-06 17:39:36 +02:00
Yuri Kuznetsov 5b8ccb4513 fisable group tabs for portal 2023-02-06 17:10:41 +02:00
Yuri Kuznetsov 99464c5210 comment 2023-02-06 16:54:41 +02:00
Yuri Kuznetsov 64c9fbf4f8 fix tests 2023-02-06 16:15:00 +02:00
Yuri Kuznetsov 029d09e689 access link check 2023-02-06 15:24:25 +02:00
Yuri Kuznetsov be27fc45ee link multiple access check 2023-02-06 10:44:04 +02:00
Yuri Kuznetsov 0eefc5d75d ref 2023-02-06 09:50:25 +02:00
Yuri Kuznetsov 876817ffe9 acl link checker 2023-02-06 09:43:59 +02:00
Yuri Kuznetsov f6b3e33e7e ref 2023-02-05 19:46:01 +02:00
Yuri Kuznetsov 24301b22a9 note select optimization 2023-02-05 18:23:59 +02:00
Yuri Kuznetsov 31be2f81ff fix tests 2023-02-05 17:45:25 +02:00
Yuri Kuznetsov bc435b0729 select optimizations 2023-02-05 17:38:08 +02:00
Yuri Kuznetsov 4cd0961f80 assigned users avatar 2023-02-04 17:29:00 +02:00
Yuri Kuznetsov 70edfbb88b ref 2023-02-04 16:38:01 +02:00
Yuri Kuznetsov 9066a2bf97 rel table id params 2023-02-04 16:19:10 +02:00
Yuri Kuznetsov b39bffa1f2 record id dbType 2023-02-04 15:51:30 +02:00
Yuri Kuznetsov c49db089f5 docs 2023-02-04 14:57:19 +02:00
Yuri Kuznetsov 2a110851df column fixed param 2023-02-04 14:56:26 +02:00
Yuri Kuznetsov 3e60103516 fix tests 2023-02-04 14:37:27 +02:00
Yuri Kuznetsov 481b870565 rename 2023-02-04 11:44:01 +02:00
Yuri Kuznetsov 9564d0807a rename 2023-02-04 11:37:00 +02:00
Yuri Kuznetsov 785746c801 ref 2023-02-04 11:34:30 +02:00
Yuri Kuznetsov a89ac23625 rebuild database hard 2023-02-04 10:38:45 +02:00
Yuri Kuznetsov adc2cb5a66 field manager reset rebuild 2023-02-04 10:08:19 +02:00
Yuri Kuznetsov 4b5787c0d0 metadata record id length 2023-02-04 09:36:11 +02:00
Yuri Kuznetsov dcbd2bfa42 fix metadata 2023-02-03 18:31:35 +02:00
Yuri Kuznetsov 147fcb02b6 rename metadata app database 2023-02-03 18:25:07 +02:00
Yuri Kuznetsov 1762096532 orm converter refactoring 2023-02-03 16:00:55 +02:00
Yuri Kuznetsov d21857075e fix typo 2023-02-02 16:16:36 +02:00
Yuri Kuznetsov a81759b0f1 dbal ref 2023-02-02 16:12:14 +02:00
Yuri Kuznetsov 99fb897b63 cleanup 2023-02-02 16:12:13 +02:00
dependabot[bot] f6e7da57f7 Bump dompdf/dompdf from 2.0.1 to 2.0.2 (#2587)
Bumps [dompdf/dompdf](https://github.com/dompdf/dompdf) from 2.0.1 to 2.0.2.
- [Release notes](https://github.com/dompdf/dompdf/releases)
- [Commits](https://github.com/dompdf/dompdf/compare/v2.0.1...v2.0.2)

---
updated-dependencies:
- dependency-name: dompdf/dompdf
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-01 08:39:35 +02:00
David aa001b4a7f mime type already contains "image/" (#2585)
Co-authored-by: David Moškoř <david.moskor@apertia.cz>
2023-01-30 21:37:04 +02:00
Yuri Kuznetsov fe3ab8b8a0 fix invalid null 2023-01-30 21:07:43 +02:00
Yuri Kuznetsov 37c3cfc539 cs 2023-01-30 20:39:35 +02:00
Yuri Kuznetsov 5cace584f1 Merge branch 'update-async' into fix 2023-01-30 14:16:15 +02:00
Yuri Kuznetsov da45d958b7 orm field converter 2023-01-30 14:06:45 +02:00
Yuri Kuznetsov b6e7f5113f prevent shortcut pagination if focused of form element 2023-01-29 10:17:38 +02:00
Yuri Kuznetsov aaf095e32b bool fix 0/1 usagge 2023-01-29 10:04:35 +02:00
Yuri Kuznetsov 282f701b77 fix schema manager proxy 2023-01-28 21:13:37 +02:00
Yuri Kuznetsov ea8ba18d2e ref 2023-01-28 20:47:11 +02:00
Yuri Kuznetsov d08e969915 dbal types refactor 2023-01-28 20:25:27 +02:00
Yuri Kuznetsov 5567cc6938 ref 2023-01-28 14:00:03 +02:00
Yuri Kuznetsov 720188822d currency service refactor 2023-01-28 13:46:56 +02:00
Yuri Kuznetsov 48e0e53ab1 ref 2023-01-28 12:49:19 +02:00
Yuri Kuznetsov 03c123d63e grand refactoring of schema and other database related things 2023-01-28 12:45:44 +02:00
Yuri Kuznetsov 7d4ded2480 Merge branch 'fix' 2023-01-28 12:43:11 +02:00
Yuri Kuznetsov 5d48dd090c group email account use from name 2023-01-27 21:40:19 +02:00
Yuri Kuznetsov 785bc0ed6e update async 2023-01-27 16:47:37 +02:00
Yuri Kuznetsov 1ce3825338 ref 2023-01-24 12:11:40 +02:00
Yuri Kuznetsov 1fba05dd04 ref 2023-01-24 11:59:55 +02:00
Yuri Kuznetsov 2c9b16a2d5 ref 2023-01-24 11:54:34 +02:00
Yuri Kuznetsov 314b5bcd87 refactor 2023-01-24 11:18:05 +02:00
Yuri Kuznetsov 433af312cf converter ref 2023-01-23 22:41:48 +02:00
Yuri Kuznetsov 30b18cf945 index defs get flags 2023-01-23 21:43:38 +02:00
Yuri Kuznetsov 81b9991e6d fix login as user logout error 2023-01-23 16:07:56 +02:00
Yuri Kuznetsov 84f3830eca login style fix 2023-01-23 15:57:00 +02:00
Yuri Kuznetsov cb878c70b5 fix 2023-01-23 15:36:54 +02:00
Yuri Kuznetsov 8224eec990 logout wait 2023-01-23 15:31:38 +02:00
Yuri Kuznetsov d655ee92a2 discard user repo 2023-01-23 15:02:12 +02:00
Yuri Kuznetsov a8d868e812 oidc portal fix 2023-01-22 20:26:03 +02:00
Yuri Kuznetsov e5c400214a oidc backchannel logout portal 2023-01-22 20:09:30 +02:00
Yuri Kuznetsov 5be5275eda ref 2023-01-22 20:08:00 +02:00
Yuri Kuznetsov e61535ee92 cleanup 2023-01-22 19:59:48 +02:00
Yuri Kuznetsov e0abe23260 oidc ref 2023-01-22 19:58:31 +02:00
Yuri Kuznetsov 8d65a3256b query composer indexHints prop 2023-01-22 17:56:59 +02:00
Yuri Kuznetsov d82c297b79 query composer order LIST to use POSITION_IN_LIST 2023-01-22 16:12:50 +02:00
Yuri Kuznetsov f7ed15c507 query composer use quote for true false 2023-01-22 15:50:42 +02:00
Yuri Kuznetsov 37b583d431 query composer add quote column 2023-01-22 15:44:49 +02:00
Yuri Kuznetsov c3286c7c4a cleanup 2023-01-22 14:18:26 +02:00
Yuri Kuznetsov 740c751d1b add methods to entity manager proxy 2023-01-22 14:15:13 +02:00
Yuri Kuznetsov 7e66f14e16 password change use method provider 2023-01-22 14:08:04 +02:00
Yuri Kuznetsov c3d0559260 ref 2023-01-22 13:53:00 +02:00
Yuri Kuznetsov 27762e61a6 ref 2023-01-22 13:51:40 +02:00
Yuri Kuznetsov cdbeab8e47 app service ref and recover password check change 2023-01-22 13:42:11 +02:00
Yuri Kuznetsov 15f337a319 oidc portal 2023-01-22 12:55:39 +02:00
Yuri Kuznetsov dd0deeb967 Merge branch 'fix' 2023-01-22 12:50:37 +02:00
Eymen Elkum 80cce0b1ba fix convert lead map fields (#2574)
* fix convert lead map fields

* fix convert lead map fields

Co-authored-by: Eymen Elkum <eymen@eblasoft.com.tr>
2023-01-20 14:46:52 +02:00
Yuri Kuznetsov b477c3420b varchar optionsPath 2023-01-19 17:24:20 +02:00
Yuri Kuznetsov 72a1d73848 fix dropdown menu hidden 2023-01-19 17:20:22 +02:00
Yuri Kuznetsov 7d36e685b8 exportCOllection support params 2023-01-18 11:24:38 +02:00
Yuri Kuznetsov 0559e21baf currency field customization limitatinos 2023-01-18 10:45:48 +02:00
Yuri Kuznetsov 22e68e8fdf no fallback login for portal 2023-01-17 14:15:23 +02:00
Yuri Kuznetsov ad89d65a48 fix login data 2023-01-17 14:07:20 +02:00
Yuri Kuznetsov 0a92ed8f39 header adjust buttons fix 2023-01-17 13:46:57 +02:00
Yuri Kuznetsov 48fa62105f change default font 2023-01-16 17:23:19 +02:00
Yuri Kuznetsov 7e354d560f cleanup 2023-01-16 17:19:39 +02:00
Yuri Kuznetsov bd1fdaf9d9 change template defaults 2023-01-16 17:18:45 +02:00
Yuri Kuznetsov d5d19f2974 main merge select style 2023-01-16 10:02:39 +02:00
Yuri Kuznetsov 6e3c765ba3 attachment focus fix 2023-01-16 09:54:21 +02:00
Yuri Kuznetsov c351a8fc02 v 2023-01-16 09:22:33 +02:00
Yuri Kuznetsov 14c0f12fe9 fix 2023-01-16 09:12:17 +02:00
Yuri Kuznetsov ab87cff5bc fix 2023-01-15 17:01:02 +02:00
Yuri Kuznetsov a5280ec0ac cleanup 2023-01-15 16:59:00 +02:00
Yuri Kuznetsov 6339690e58 dompdf engine 2023-01-15 16:57:45 +02:00
Yuri Kuznetsov c5ae2800b5 html-container overflow hidden 2023-01-15 16:25:49 +02:00
Yuri Kuznetsov 62501dc20d Merge branch 'fix' 2023-01-15 16:18:00 +02:00
Yuri Kuznetsov 9e5810c8cf lang 2023-01-15 11:12:02 +02:00
Yuri Kuznetsov e6a0a94e17 label fix 2023-01-15 10:39:39 +02:00
Yuri Kuznetsov 777f9de3d9 oidc pass client secret 2023-01-15 10:31:53 +02:00
Yuri Kuznetsov c7b7848e69 gruntfile chang 2023-01-14 10:07:03 +02:00
Yuri Kuznetsov 791c172c7a fix from name 2023-01-13 16:32:00 +02:00
Yuri Kuznetsov 3bef6d8e84 fix follow entity check acl 2023-01-12 20:27:46 +02:00
Yuri Kuznetsov 093d71e5ae mass action delete 2023-01-12 19:01:39 +02:00
Yuri Kuznetsov a3be63c6f1 fix test 2023-01-12 13:03:16 +02:00
Yuri Kuznetsov 52fe2ca1c9 labels 2023-01-12 13:03:16 +02:00
Yuri Kuznetsov 6513513108 fix hide/show remove 2023-01-12 13:03:16 +02:00
Yuri Kuznetsov 442d2c030b fix grouped notifications 2023-01-12 13:03:16 +02:00
Yuri Kuznetsov 391500a1c1 cleanup 2023-01-12 13:03:16 +02:00
Yuri Kuznetsov f239d2c478 notifications fix 2023-01-12 13:03:16 +02:00
Yuri Kuznetsov 67e83f5c9e labels 2023-01-12 12:27:47 +02:00
dependabot[bot] 101f8a29a3 Bump json5 from 2.2.0 to 2.2.3 (#2554)
Bumps [json5](https://github.com/json5/json5) from 2.2.0 to 2.2.3.
- [Release notes](https://github.com/json5/json5/releases)
- [Changelog](https://github.com/json5/json5/blob/main/CHANGELOG.md)
- [Commits](https://github.com/json5/json5/compare/v2.2.0...v2.2.3)

---
updated-dependencies:
- dependency-name: json5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-01-12 11:27:17 +02:00
Yuri Kuznetsov b952f3dbfb fix hide/show remove 2023-01-12 10:59:08 +02:00
Yuri Kuznetsov 23b125f552 fix grouped notifications 2023-01-12 10:13:48 +02:00
Yuri Kuznetsov 93e17e8f8d cleanup 2023-01-12 09:57:36 +02:00
Yuri Kuznetsov 9af562fda2 notifications fix 2023-01-11 14:31:49 +02:00
Yuri Kuznetsov dfb846fb7e lower exceptions log levels 2023-01-11 13:37:21 +02:00
Yuri Kuznetsov ecd6d5a558 Merge branch 'fix' 2023-01-11 13:22:06 +02:00
Yuri Kuznetsov 0612cd2399 fix 2023-01-11 13:05:32 +02:00
Yuri Kuznetsov 811ea3ad27 grouped popup notifications interval 2023-01-11 12:48:07 +02:00
Yuri Kuznetsov 967571f030 cs 2023-01-11 12:11:00 +02:00
Yuri Kuznetsov ac2576b760 add idea/misc.xml 2023-01-11 09:20:58 +02:00
Taras Machyshyn 7f1bc0cf1d Upgrade script 2023-01-10 22:15:17 +02:00
Yuri Kuznetsov 3ba9ea5085 email prevent drag by menu 2023-01-10 11:31:26 +02:00
Yuri Kuznetsov 08512304f1 class alias check existance 2023-01-10 09:44:04 +02:00
Yuri Kuznetsov c0da4e1777 setup system user attributes to select 2023-01-10 09:28:30 +02:00
Yuri Kuznetsov 14705e2100 v 2023-01-09 18:12:05 +02:00
Yuri Kuznetsov 0c99f35c02 fix working time calendar apperance 2023-01-09 18:11:26 +02:00
Yuri Kuznetsov a91da86ae4 working calendar noJoin 2023-01-09 17:46:40 +02:00
Yuri Kuznetsov 048d54a7af revert constant usage 2023-01-09 13:07:12 +02:00
Yuri Kuznetsov 5645066d68 Merge branch 'version/7.4' 2023-01-09 12:56:18 +02:00
Yuri Kuznetsov fe726b2637 de_DE 2023-01-09 11:21:40 +02:00
Yuri Kuznetsov 8852dd7ea2 it_IT 2023-01-09 11:17:05 +02:00
Yuri Kuznetsov 44897a64b5 fix upgrade 2023-01-09 10:48:29 +02:00
Yuri Kuznetsov 4f160937a4 string for upgrade 2023-01-09 10:32:12 +02:00
Yuri Kuznetsov 6ca02933c9 v 2023-01-09 10:20:07 +02:00
Yuri Kuznetsov 923ecc883a formula remove while 2023-01-06 12:07:57 +02:00
Yuri Kuznetsov 59a95fa3bc email list view show attachments 2023-01-06 12:03:29 +02:00
Yuri Kuznetsov 4789c3c2ad attachments modal 2023-01-06 11:54:00 +02:00
Yuri Kuznetsov c149aa8560 import validation explanations 2023-01-06 11:01:34 +02:00
Yuri Kuznetsov e9f5d99e9b markdown to string 2023-01-06 10:39:45 +02:00
Yuri Kuznetsov d233d8ce46 fix smtp params bc 2023-01-05 16:05:16 +02:00
Yuri Kuznetsov 07db57717f campaign enable on list 2023-01-05 12:04:19 +02:00
Yuri Kuznetsov 4309dfb57a massRemoveDisabled param 2023-01-05 11:44:08 +02:00
Yuri Kuznetsov 4ad0a22a6a fix 2023-01-05 11:29:15 +02:00
Yuri Kuznetsov 2daff0eabb list view ref 2023-01-05 11:23:50 +02:00
Yuri Kuznetsov cde59bce55 action handler support not in data 2023-01-05 10:08:12 +02:00
Yuri Kuznetsov 80b9d0dc7b ref 2023-01-05 09:43:28 +02:00
Yuri Kuznetsov bfdaa4721d mass action list fixes 2023-01-04 13:55:34 +02:00
David 60db5cdc6c global mass actions defs fix (#2549)
Co-authored-by: David Moškoř <david.moskor@apertia.cz>
2023-01-04 13:37:20 +02:00
Yuri Kuznetsov 1a5a9060a6 fix 2023-01-04 12:01:49 +02:00
Yuri Kuznetsov ddf9dfba47 decimal mark thousand separator options 2023-01-04 11:56:50 +02:00
Yuri Kuznetsov f93060a5ca autonumeric 2023-01-04 11:38:30 +02:00
Yuri Kuznetsov 7e5b491313 formula: break & continue 2023-01-03 18:44:09 +02:00
Yuri Kuznetsov b083a11099 use true/false 2023-01-03 17:59:17 +02:00
Taras Machyshyn 63f67e0f66 2023 year 2023-01-03 16:26:52 +02:00
Taras Machyshyn 141c6430c4 Merge master 2023-01-03 16:22:44 +02:00
Taras Machyshyn 6f676c8a2f 2023 year 2023-01-03 16:01:43 +02:00
Yuri Kuznetsov b872e6960a fix db helper 2023-01-03 15:37:57 +02:00
Yuri Kuznetsov 8ba47b11ec orm quote column 2023-01-03 15:29:56 +02:00
Yuri Kuznetsov 883351eaf3 ref 2023-01-03 10:17:51 +02:00
Yuri Kuznetsov 7976e6d5b5 cs ref 2023-01-03 09:56:04 +02:00
Yuri Kuznetsov 8fcda8c621 ref 2023-01-03 09:43:50 +02:00
Yuri Kuznetsov c1b2870c91 dbal connection factory 2023-01-03 09:18:20 +02:00
Yuri Kuznetsov 2b4f6239f7 revert 2023-01-02 17:31:06 +02:00
Yuri Kuznetsov bae0144393 db helper ref 2023-01-02 17:24:08 +02:00
Yuri Kuznetsov af21cc4400 Merge branch 'master' into version/7.4 2023-01-02 14:51:42 +02:00
Yuri Kuznetsov ac667356c5 fix loading not hiding 2023-01-02 14:47:49 +02:00
Yuri Kuznetsov acef776782 fix select caret width 2023-01-02 14:31:04 +02:00
Andrew Fontana f50d7717a9 isSubscribedToWebSocket Typo (#2550)
* Fixed WebSocked typo to WebSocket

* Fixed WebSocked typo to WebSocket
2023-01-02 13:42:36 +02:00
Yuri Kuznetsov 03a79ddefe fix 2023-01-01 14:03:50 +02:00
Yuri Kuznetsov 353246281c currency decimal 2023-01-01 13:50:33 +02:00
Yuri Kuznetsov 747d8220e1 currency changes 2023-01-01 12:20:06 +02:00
Yuri Kuznetsov b6a1648486 cleanup 2022-12-31 11:03:44 +02:00
Yuri Kuznetsov e0e168945c cleanup 2022-12-31 10:42:20 +02:00
Yuri Kuznetsov 385d7af1b6 ref 2022-12-31 10:41:36 +02:00
Yuri Kuznetsov 14811a7c1a Merge branch 'master' into version/7.4 2022-12-31 10:10:08 +02:00
Yuri Kuznetsov ff41b49538 fix notice 2022-12-30 17:58:40 +02:00
Taras Machyshyn 24d2bd5cad Notice fixes 2022-12-30 15:10:08 +02:00
Yuri Kuznetsov 86a092ddb1 fix 2022-12-29 14:08:27 +02:00
Yuri Kuznetsov 6c2fa01375 fix lead capture message 2022-12-29 13:58:07 +02:00
Yuri Kuznetsov c828242359 Merge branch 'master' into version/7.4 2022-12-29 13:04:00 +02:00
Yuri Kuznetsov 77eaaa45d9 Merge branch 'fix' 2022-12-29 13:03:43 +02:00
David 3d8b487754 getColumns datatype fix (#2545)
Co-authored-by: David Moškoř <david.moskor@apertia.cz>
2022-12-29 13:03:06 +02:00
Yuri Kuznetsov c4610c4e24 jsdoc 2022-12-29 12:43:29 +02:00
Yuri Kuznetsov 583ba47e78 fix doc 2022-12-29 12:06:17 +02:00
Yuri Kuznetsov a9e8d5b2b2 auth error translatable exception message 2022-12-27 14:37:34 +02:00
Yuri Kuznetsov 3c4e33f0c5 fix tests 2022-12-27 14:07:27 +02:00
Yuri Kuznetsov a0d39be19c middlewares after auth 2022-12-27 13:58:04 +02:00
Yuri Kuznetsov 83ef7b32b5 hook interfaces 2022-12-26 14:18:51 +02:00
Yuri Kuznetsov 94c6715c21 Merge branch 'fix' 2022-12-26 13:24:26 +02:00
Yuri Kuznetsov 976a10ed0a fix 2022-12-26 13:24:18 +02:00
Yuri Kuznetsov f365a38858 bind pdo provider 2022-12-25 20:28:09 +02:00
Yuri Kuznetsov e6f081c7d1 injectable factory create resolved 2022-12-25 20:22:53 +02:00
Yuri Kuznetsov f463421a33 psr container 2022-12-25 16:50:49 +02:00
Yuri Kuznetsov 49bb6771f6 pdo factory and dbal ref 2022-12-25 14:07:06 +02:00
Yuri Kuznetsov 28d8fcd31e middleware api 2022-12-25 10:28:51 +02:00
Yuri Kuznetsov 008935f054 fix 2022-12-24 20:44:37 +02:00
Yuri Kuznetsov 7ed90d7bbf Merge branch 'master' into version/7.4 2022-12-24 12:13:18 +02:00
Yuri Kuznetsov a5c7fb8905 ref move 2022-12-24 12:13:04 +02:00
Yuri Kuznetsov 7fdcb41547 hook suppress 2022-12-24 11:39:32 +02:00
Yuri Kuznetsov 7eca082d9f Merge branch 'master' into version/7.4 2022-12-24 11:27:47 +02:00
Yuri Kuznetsov 4dec6b8d49 import task date completed 2022-12-24 11:04:03 +02:00
Yuri Kuznetsov e1eaeab938 fix import null related name 2022-12-24 11:03:42 +02:00
Yuri Kuznetsov 4a4766cb0b Merge branch 'fix' 2022-12-23 22:08:20 +02:00
Yuri Kuznetsov 686219c60b fix btn add radous 2022-12-23 22:05:04 +02:00
Yuri Kuznetsov a97c642d3b fix 2022-12-23 11:29:50 +02:00
Yuri Kuznetsov 432d45e122 lead capture is invalid fix 2022-12-23 11:27:15 +02:00
Yuri Kuznetsov ab81d0fae6 fix typo 2022-12-21 18:29:00 +02:00
Yuri Kuznetsov 3f84551b50 entity defs fields validatorClassNameMap 2022-12-21 15:27:43 +02:00
Yuri Kuznetsov 0e56c727ff formula new statments and refactoring 2022-12-20 17:24:53 +02:00
Yuri Kuznetsov c911c0f6e5 Merge branch 'master' into version/7.4 2022-12-20 14:49:50 +02:00
Yuri Kuznetsov 336bb95d11 fix 2022-12-20 14:36:58 +02:00
Yuri Kuznetsov 185a24f007 docs 2022-12-20 14:33:06 +02:00
Yuri Kuznetsov 6cfe9b6b43 cs 2022-12-20 14:21:36 +02:00
Yuri Kuznetsov 61cdcbfeb5 cs 2022-12-20 14:20:03 +02:00
Yuri Kuznetsov b0a77054dc labels 2022-12-19 15:54:39 +02:00
Yuri Kuznetsov f6fb791fd2 docs fix 2022-12-19 15:51:58 +02:00
Yuri Kuznetsov ec3a6bf0a2 fix group email folder 2022-12-19 12:11:51 +02:00
Yuri Kuznetsov 8e277fdb36 css fix 2022-12-19 11:50:32 +02:00
Yuri Kuznetsov 085e5ef4bf currency no-join-mode 2022-12-19 10:58:05 +02:00
Yuri Kuznetsov 9e424f16d7 Merge branch 'master' into version/7.4 2022-12-18 21:34:06 +02:00
Yuri Kuznetsov cf7f382784 oidc user provider 2022-12-18 21:32:18 +02:00
Yuri Kuznetsov 65266fcf25 link multiple custom field fixes 2022-12-17 11:16:58 +02:00
Yuri Kuznetsov 8bc34aab9b htmlizer take into account noLoad 2022-12-17 10:42:42 +02:00
Yuri Kuznetsov 3bd73f16a8 ref 2022-12-17 10:39:04 +02:00
Yuri Kuznetsov dcf1698dad ref 2022-12-15 19:09:22 +02:00
Yuri Kuznetsov 0db4057d44 fix deleted return 2022-12-15 18:40:49 +02:00
Yuri Kuznetsov 8b92df3f6a rename 2022-12-15 15:40:17 +02:00
Yuri Kuznetsov c343a4600f xlsx changes 2022-12-15 15:36:12 +02:00
Yuri Kuznetsov d196a574fd export with openspout 2022-12-15 15:04:08 +02:00
Yuri Kuznetsov 72b2a456b9 export filter field list 2022-12-15 11:47:21 +02:00
Yuri Kuznetsov d9d42fd664 export params 2022-12-15 11:37:13 +02:00
Yuri Kuznetsov a131308e1a export refactor 2022-12-14 12:49:15 +02:00
Yuri Kuznetsov aff948f0a6 ref 2022-12-14 09:45:28 +02:00
Yuri Kuznetsov f14bc07174 css fix 2022-12-13 18:30:11 +02:00
Yuri Kuznetsov 8e91786d99 fix list quick view show more issue 2022-12-13 17:48:24 +02:00
Yuri Kuznetsov 44745aef14 cs 2022-12-13 17:28:33 +02:00
Yuri Kuznetsov 0657d78eb5 move 2022-12-13 15:48:11 +02:00
Yuri Kuznetsov 4807beca0b move 2022-12-13 15:32:07 +02:00
Yuri Kuznetsov 8a26478019 export ref 2022-12-13 15:26:48 +02:00
Yuri Kuznetsov 3a9851c89b refactoring 2022-12-13 14:19:31 +02:00
Yuri Kuznetsov 2824d8cd84 ref 2022-12-12 18:23:56 +02:00
Yuri Kuznetsov e041238d03 cleanup 2022-12-12 18:11:14 +02:00
Yuri Kuznetsov df36d33b98 fix 2022-12-12 18:04:38 +02:00
Yuri Kuznetsov f34ca2fe6b xlsx ref 2022-12-12 17:53:17 +02:00
Yuri Kuznetsov 56640839d2 cs 2022-12-12 12:55:43 +02:00
Yuri Kuznetsov 1e319a91ba phpdoc fix 2022-12-12 12:53:33 +02:00
Yuri Kuznetsov c37b2964c2 cs 2022-12-12 12:06:04 +02:00
Yuri Kuznetsov 24647cd5fb attribute-fetcher foreign skip many 2022-12-10 15:19:21 +02:00
Yuri Kuznetsov d407494579 fix warning 2022-12-09 15:56:53 +02:00
Yuri Kuznetsov b43843f882 fix select auto position 2022-12-09 14:49:50 +02:00
Yuri Kuznetsov 87c5371846 formula attribute fetch phone email 2022-12-09 13:23:53 +02:00
Yuri Kuznetsov 7b9c6cdb3f ref 2022-12-09 13:17:43 +02:00
Yuri Kuznetsov 32ea4dae9d formula ref 2022-12-09 12:57:01 +02:00
Yuri Kuznetsov a3cb0e6313 fix 2022-12-09 11:52:59 +02:00
Yuri Kuznetsov 0f88e535ad css fix 2022-12-08 21:58:42 +02:00
Yuri Kuznetsov 3edb739e2a lang acl anyScopeList 2022-12-08 20:12:30 +02:00
Yuri Kuznetsov 82ad48c586 jsdoc fix 2022-12-08 18:23:10 +02:00
Yuri Kuznetsov 710f6783bc select shortcut save fix 2022-12-08 18:22:23 +02:00
Yuri Kuznetsov 797c5453c9 fix select ctrl+s/enter 2022-12-08 13:54:58 +02:00
Yuri Kuznetsov a03ef074ef css fix 2022-12-08 11:25:16 +02:00
Yuri Kuznetsov 1e6b28e560 multi-select use text param 2022-12-08 11:22:04 +02:00
Yuri Kuznetsov 77c7468512 ref 2022-12-08 11:19:31 +02:00
Yuri Kuznetsov 0764231ab6 fix select match any word 2022-12-08 10:59:03 +02:00
Yuri Kuznetsov a779fc0a99 select hight 2022-12-08 10:39:47 +02:00
Yuri Kuznetsov d5fb8af1a3 install default theme 2022-12-07 17:18:14 +02:00
Yuri Kuznetsov 3099ef6dc3 install checkboxes 2022-12-07 17:18:07 +02:00
Yuri Kuznetsov 078a445e18 cleanup 2022-12-07 10:49:58 +02:00
Yuri Kuznetsov e6e1471a53 ref convert btn 2022-12-07 10:34:23 +02:00
Yuri Kuznetsov b16ffc4739 follow button refactor 2022-12-06 20:24:50 +02:00
Yuri Kuznetsov ec44deceaa record handler in setupFinal 2022-12-06 18:35:13 +02:00
Yuri Kuznetsov 31b416d3ee ref 2022-12-06 18:12:54 +02:00
Yuri Kuznetsov 9dd0f8eb70 js docs 2022-12-06 17:10:41 +02:00
Yuri Kuznetsov cf508debae ref 2022-12-06 17:03:09 +02:00
Yuri Kuznetsov e25227e853 cs 2022-12-05 12:17:20 +02:00
Yuri Kuznetsov 6bba422d07 fix select letter 2022-12-05 12:17:03 +02:00
Yuri Kuznetsov a1337cefe4 email template & template selectize 2022-12-05 12:07:17 +02:00
Yuri Kuznetsov 1ce54bbb33 cs 2022-12-05 11:34:15 +02:00
Yuri Kuznetsov e46edf2b36 ref 2022-12-04 15:41:52 +02:00
Yuri Kuznetsov 0093a03b7b ref 2022-12-04 15:23:35 +02:00
Yuri Kuznetsov f35df154ae fix phpdoc 2022-12-04 14:11:01 +02:00
Yuri Kuznetsov a5dc3aae70 fix phpdoc 2022-12-04 14:09:27 +02:00
Yuri Kuznetsov 847ac0c20a cs 2022-12-04 13:38:29 +02:00
Yuri Kuznetsov 87396518f1 save options 2022-12-04 13:32:27 +02:00
Yuri Kuznetsov 4ba74fe8b4 fix 2022-12-01 19:58:09 +02:00
Yuri Kuznetsov 8858d96cda no SMTP label 2022-12-01 19:52:55 +02:00
Yuri Kuznetsov 415e30ece8 cs 2022-12-01 19:38:29 +02:00
Yuri Kuznetsov 1a0958e65a label radius in var 2022-12-01 13:59:17 +02:00
Yuri Kuznetsov cf0e5bb328 clientXFrameOptionsHeaderDisabled 2022-12-01 12:28:04 +02:00
Yuri Kuznetsov b02e1218ee update flotr 2022-11-30 17:34:26 +02:00
Yuri Kuznetsov ba478fcce5 timepicker css fix 2022-11-30 10:54:24 +02:00
Yuri Kuznetsov 9682138038 ref 2022-11-29 21:11:09 +02:00
Yuri Kuznetsov 59499f6f07 ref 2022-11-29 21:08:57 +02:00
Yuri Kuznetsov b425a335ab fix typo 2022-11-29 20:38:47 +02:00
Yuri Kuznetsov 8cdde45b1b ref 2022-11-29 20:37:35 +02:00
Yuri Kuznetsov d00925d99a ref 2022-11-29 20:35:42 +02:00
Yuri Kuznetsov 2fffec3e5d css fix 2022-11-29 18:54:31 +02:00
Yuri Kuznetsov 395785d0c4 cs 2022-11-29 18:31:17 +02:00
Yuri Kuznetsov 3812856740 ref 2022-11-29 18:19:11 +02:00
Yuri Kuznetsov 088558d969 cleanup 2022-11-29 17:59:12 +02:00
Yuri Kuznetsov d79e81f652 ref 2022-11-29 17:58:41 +02:00
Yuri Kuznetsov 39c0f159a8 ref 2022-11-29 17:56:45 +02:00
Yuri Kuznetsov f2ea162952 campaign log impr 2022-11-29 17:27:06 +02:00
Yuri Kuznetsov fdde599205 style fix 2022-11-29 16:10:18 +02:00
Yuri Kuznetsov 7e80ca806d fix currency validation 2022-11-29 16:05:43 +02:00
Yuri Kuznetsov 09bf5219ad cs 2022-11-29 13:29:49 +02:00
Yuri Kuznetsov 9922dc8e22 doc fix 2022-11-29 13:10:57 +02:00
Yuri Kuznetsov b9bb4bc0b5 readme fix 2022-11-29 13:03:35 +02:00
Yuri Kuznetsov d5a928d955 fix save duplicate 2022-11-29 12:27:29 +02:00
Yuri Kuznetsov aad2ab08c5 fix docs 2022-11-29 12:08:29 +02:00
Yuri Kuznetsov 5d18d50ca0 ref 2022-11-29 12:01:23 +02:00
Yuri Kuznetsov 54f2ab411f ref 2022-11-29 11:41:49 +02:00
Yuri Kuznetsov b066c3d3da fix email drop css 2022-11-28 18:01:17 +02:00
Yuri Kuznetsov 957a2fa171 fix upgrade 2022-11-28 17:06:30 +02:00
Yuri Kuznetsov 61ccee3ac2 unknown error msg 2022-11-28 16:52:20 +02:00
Yuri Kuznetsov c889edb782 cs 2022-11-28 16:50:32 +02:00
Yuri Kuznetsov e1f673fe78 prevent email drag on touch devise 2022-11-28 16:44:45 +02:00
Yuri Kuznetsov 8b781d32da focus fix 2022-11-28 16:01:15 +02:00
Yuri Kuznetsov 3c06d6684e send invintations from modal fix 2022-11-28 15:47:19 +02:00
Yuri Kuznetsov 6bf8274d11 fix focus 2022-11-28 15:33:20 +02:00
Yuri Kuznetsov 2b59c5bdec email template fix inline attachments 2022-11-28 14:22:30 +02:00
Yuri Kuznetsov 4f6497f412 fix workflow 2022-11-28 12:27:12 +02:00
Yuri Kuznetsov 1fa937ef64 focus fix 2022-11-28 09:43:11 +02:00
Yuri Kuznetsov 4ffc309e11 fix 2022-11-28 09:36:47 +02:00
Yuri Kuznetsov 33b60e6791 email account tabs 2022-11-27 19:52:54 +02:00
Yuri Kuznetsov 378bebb2bf fix select 2022-11-27 19:07:00 +02:00
Yuri Kuznetsov 7925f2468a from address select 2022-11-27 19:05:08 +02:00
Yuri Kuznetsov a1d0c494af ref 2022-11-27 19:01:13 +02:00
Yuri Kuznetsov a86ca38bd7 reply from address email sent to 2022-11-27 18:55:32 +02:00
Yuri Kuznetsov 18cf4c4cf5 email archived save shortcut 2022-11-27 18:44:35 +02:00
Yuri Kuznetsov cf42f49431 email archived save shortcut 2022-11-27 18:44:12 +02:00
Yuri Kuznetsov 82df939bda cleanup 2022-11-27 16:22:09 +02:00
Yuri Kuznetsov 94f0c0bb3e fix typo 2022-11-27 14:05:00 +02:00
Yuri Kuznetsov 9f78afd0e6 8.2 integration test workflow 2022-11-27 13:59:49 +02:00
Yuri Kuznetsov 04f4a4a63a exception hasLogLevel 2022-11-27 13:55:54 +02:00
Yuri Kuznetsov 31c226dd16 fix property access 2022-11-27 13:34:05 +02:00
Yuri Kuznetsov 9fe3f7cdf8 cs 2022-11-27 13:30:19 +02:00
Yuri Kuznetsov be744399cb add 8,2 to test workflow 2022-11-27 13:25:29 +02:00
Yuri Kuznetsov 866c336a0b remove zend bridge 2022-11-27 13:16:48 +02:00
Yuri Kuznetsov 4928edc4d1 update laminas crypt 2022-11-27 12:33:22 +02:00
Yuri Kuznetsov 2e1b35d404 remove prophecy 2022-11-27 12:32:08 +02:00
Yuri Kuznetsov a8db63910e composer dep updates 2022-11-27 12:27:18 +02:00
Yuri Kuznetsov 2cde8e8918 jsdoc 2022-11-26 20:50:21 +02:00
Yuri Kuznetsov 6c59f70cf4 jsdoc 2022-11-26 20:38:17 +02:00
Yuri Kuznetsov 2ac1c8d444 cs 2022-11-26 20:10:13 +02:00
Yuri Kuznetsov 7526e737b8 once-remove => on-remove 2022-11-26 19:55:18 +02:00
Yuri Kuznetsov 0d44d04a17 ref 2022-11-26 19:50:06 +02:00
Yuri Kuznetsov bc81154ce2 ref 2022-11-26 19:48:47 +02:00
Yuri Kuznetsov 1632668529 ref 2022-11-26 19:46:54 +02:00
Yuri Kuznetsov fbd05ebafa ref 2022-11-26 19:45:19 +02:00
Yuri Kuznetsov 2c6f9f02df cleanup 2022-11-26 19:43:18 +02:00
Yuri Kuznetsov 5c572b9750 scheduler item bg color fix 2022-11-26 19:41:28 +02:00
Yuri Kuznetsov 5be21c7342 cs fix 2022-11-26 19:38:35 +02:00
Yuri Kuznetsov 7d662eab8e disable call scheduler by default 2022-11-26 19:35:19 +02:00
Yuri Kuznetsov 8734a00d11 cs fix 2022-11-26 19:31:15 +02:00
Yuri Kuznetsov d4511e3983 scheduler on edit-small 2022-11-26 19:21:23 +02:00
Yuri Kuznetsov ae643c5a28 phone/email is invalid fields 2022-11-25 18:05:40 +02:00
Yuri Kuznetsov e6dc5dd12b bool search selectize 2022-11-25 11:28:58 +02:00
Yuri Kuznetsov 566f92149c ref 2022-11-25 10:55:35 +02:00
Yuri Kuznetsov 99bf7fc524 ref 2022-11-25 10:47:58 +02:00
Yuri Kuznetsov b350bd4fc1 event confirmation fixes 2022-11-25 09:41:16 +02:00
Yuri Kuznetsov 58d1e67b53 Merge branch 'fix' 2022-11-25 08:58:23 +02:00
Yuri Kuznetsov 20855e81d4 fix remove related from modal 2022-11-25 08:57:56 +02:00
Yuri Kuznetsov 3282de2c8f cancellation email 2022-11-23 17:53:08 +02:00
Yuri Kuznetsov 72f51ec77c ref 2022-11-23 13:48:27 +02:00
Yuri Kuznetsov c8558f0cba fix templates 2022-11-23 13:26:47 +02:00
Yuri Kuznetsov d0876db1f7 color icon rounded 2022-11-23 13:07:07 +02:00
Yuri Kuznetsov efd7de49c6 cs 2022-11-23 12:39:13 +02:00
Yuri Kuznetsov 5ae6fb0020 cs 2022-11-23 12:30:03 +02:00
Yuri Kuznetsov 1057b8bc95 ref 2022-11-23 12:26:48 +02:00
Yuri Kuznetsov 3076b6c8ea send invitations impr 2022-11-23 12:05:54 +02:00
Yuri Kuznetsov b7ff603772 collapsed modal css fix 2022-11-22 12:13:48 +02:00
Yuri Kuznetsov b996389845 do not show send invitations for past events 2022-11-22 11:23:50 +02:00
Yuri Kuznetsov ca2d1217cd acl checkField test 2022-11-21 18:49:49 +02:00
Yuri Kuznetsov 227b0fb828 get attendees api endpoint 2022-11-21 18:32:00 +02:00
Yuri Kuznetsov ac28ae5a9b acl checkField 2022-11-21 18:13:04 +02:00
Yuri Kuznetsov 04eaf4db02 clientStrictTransportSecurityHeaderDisabled param 2022-11-21 13:05:42 +02:00
Yuri Kuznetsov a380d7e5f9 currency validation 2022-11-21 12:56:31 +02:00
Yuri Kuznetsov 73af7d4119 currency field ui impr 2022-11-21 12:47:14 +02:00
Yuri Kuznetsov 4762237796 wysiwyg modals impr 2022-11-21 12:13:35 +02:00
Yuri Kuznetsov 591a4f0f32 wysiwyg click event 2022-11-21 11:52:32 +02:00
Yuri Kuznetsov d28cc59feb cs 2022-11-21 11:28:43 +02:00
Yuri Kuznetsov be899564c1 css radius input group addon 2022-11-21 11:20:31 +02:00
Yuri Kuznetsov 6fb8e7ab37 type fix 2022-11-20 14:05:53 +02:00
Yuri Kuznetsov 047b07d3c9 binding improvements 2022-11-20 13:25:54 +02:00
Yuri Kuznetsov 8f0969eb5d cs 2022-11-20 11:54:22 +02:00
Yuri Kuznetsov b92975c9b7 cs 2022-11-20 11:51:34 +02:00
Yuri Kuznetsov 0cfc69cdaa currency input-group flex 2022-11-19 20:36:37 +02:00
Yuri Kuznetsov 1b497c81c7 selectize dropdown css fix 2022-11-19 17:20:47 +02:00
Yuri Kuznetsov eab2dbd1b4 fix link item input column 2022-11-19 16:36:16 +02:00
Yuri Kuznetsov 4eac37ad61 destroy timepicker 2022-11-19 16:15:41 +02:00
Yuri Kuznetsov dc658a6b06 fix 2022-11-19 16:08:31 +02:00
Yuri Kuznetsov 9d3aaebf24 cleanup 2022-11-19 15:56:30 +02:00
Yuri Kuznetsov f5b6876626 ref 2022-11-19 15:53:52 +02:00
Yuri Kuznetsov 5d7893e4ee no min width selectbox 2022-11-19 15:33:03 +02:00
Yuri Kuznetsov 01ef55ffc1 fix test 2022-11-19 14:08:22 +02:00
Yuri Kuznetsov 551d97883f assignment notif discard task 2022-11-19 13:51:18 +02:00
Yuri Kuznetsov 68ccfe735f select click flick fix 2022-11-19 12:54:12 +02:00
Yuri Kuznetsov de4ed2100c select scroll impr 2022-11-19 12:36:43 +02:00
Yuri Kuznetsov b602ef8eb8 acceptance button style 2022-11-19 11:22:19 +02:00
Yuri Kuznetsov 5ade5cf4c1 arbitrary duration 2022-11-19 10:52:33 +02:00
Yuri Kuznetsov 7cb7719cf6 select ref 2022-11-19 10:43:26 +02:00
Yuri Kuznetsov d07be2b5f4 css fix 2022-11-18 23:16:22 +02:00
Yuri Kuznetsov 77f01fd28d change reminder list 2022-11-18 18:23:42 +02:00
Yuri Kuznetsov 93fb78cf71 remider duration impr 2022-11-18 18:14:19 +02:00
Yuri Kuznetsov 2ff28ba8ca select fix 2022-11-18 17:58:14 +02:00
Yuri Kuznetsov 01b9b735e5 duration search fix 2022-11-18 17:44:19 +02:00
Yuri Kuznetsov 751a293319 select fix width 2022-11-18 17:43:58 +02:00
Yuri Kuznetsov 2e1cd55ee2 select fix 2022-11-18 15:41:10 +02:00
Yuri Kuznetsov 45bdd62bbf select uix fix 2022-11-18 14:44:55 +02:00
Yuri Kuznetsov 9a56ca9599 enable meeting stream by default 2022-11-18 13:45:32 +02:00
Yuri Kuznetsov 1eb5fab3e3 reminder arbitrary values 2022-11-18 12:54:52 +02:00
Yuri Kuznetsov 99ca025ded ref 2022-11-18 11:01:23 +02:00
Yuri Kuznetsov 3fa83db99f css fix 2022-11-17 23:22:40 +02:00
Yuri Kuznetsov f143dc7042 fix reset options 2022-11-17 22:53:35 +02:00
Yuri Kuznetsov 1a8a93c03a select fixes 2022-11-17 21:09:41 +02:00
Yuri Kuznetsov 9bbd51fd61 select fix 2022-11-17 19:39:12 +02:00
Yuri Kuznetsov 00238ba043 phone/email uix impr 2022-11-17 19:25:35 +02:00
Yuri Kuznetsov 2147e3073c cs 2022-11-17 18:30:46 +02:00
Yuri Kuznetsov 3f9dc78fa4 css fix 2022-11-17 18:26:17 +02:00
Yuri Kuznetsov 0c8c3ef5f4 phpdoc fix 2022-11-17 18:19:32 +02:00
Yuri Kuznetsov b6cafb1a35 invitation no email access required 2022-11-17 18:18:12 +02:00
Yuri Kuznetsov c3ace0b56d note event confirmation icon 2022-11-17 18:14:46 +02:00
Yuri Kuznetsov 0c3b452d6f acceptance button style 2022-11-17 16:46:52 +02:00
Yuri Kuznetsov 297c973695 reminder validation 2022-11-17 16:28:32 +02:00
Yuri Kuznetsov 57ec132aa7 fix 2022-11-17 15:52:59 +02:00
Yuri Kuznetsov d1b10de17d reminder show only actual items 2022-11-17 15:45:24 +02:00
Yuri Kuznetsov 85549cf39f datepicker fixes 2022-11-17 15:21:23 +02:00
Yuri Kuznetsov bba2d5b898 fix 2022-11-17 14:46:29 +02:00
Yuri Kuznetsov 4e0de42b0d selectbox improvement 2022-11-17 14:22:31 +02:00
Yuri Kuznetsov 66fc373af6 fix 2022-11-15 13:31:08 +02:00
Yuri Kuznetsov d7e215505f cs 2022-11-15 10:39:17 +02:00
Yuri Kuznetsov c293bef232 fix 2022-11-15 10:15:34 +02:00
Yuri Kuznetsov 11d6ea3271 reminder use labels 2022-11-15 09:59:07 +02:00
Yuri Kuznetsov 3d243e19fd cs 2022-11-15 09:58:57 +02:00
Yuri Kuznetsov 813b5834fd calnder full form link 2022-11-15 09:51:12 +02:00
Yuri Kuznetsov 2f3e662ef6 reminder ui fix 2022-11-14 23:20:57 +02:00
Yuri Kuznetsov a3779dbbee dark more radius 2022-11-14 20:15:03 +02:00
Yuri Kuznetsov f109b6f60a fix acceptance note 2022-11-14 20:14:02 +02:00
Yuri Kuznetsov 9b7ddf19a5 event confirmation improvement 2022-11-14 19:03:05 +02:00
Yuri Kuznetsov 9e4ca525a0 event confirmation 404 2022-11-14 18:42:50 +02:00
Yuri Kuznetsov 0359528b7c fix login logout broadcast 2022-11-14 18:05:17 +02:00
Yuri Kuznetsov c1ef8854ac cs fix 2022-11-14 17:55:15 +02:00
Yuri Kuznetsov 824878de39 css fix 2022-11-14 17:22:55 +02:00
Yuri Kuznetsov 919f48e0a3 logged-in broadcast fix 2022-11-14 17:15:53 +02:00
Yuri Kuznetsov 0a16ae3395 acceptance note from ui 2022-11-14 16:59:15 +02:00
Yuri Kuznetsov 4528edd6a7 Merge branch 'fix' 2022-11-14 16:48:22 +02:00
Yuri Kuznetsov 25daa39a91 fix 2022-11-14 16:48:10 +02:00
Yuri Kuznetsov e20e6e863f event confirmation note 2022-11-14 16:36:56 +02:00
Yuri Kuznetsov dbe5dbaf1f ref 2022-11-14 16:27:38 +02:00
Yuri Kuznetsov a5ba3ca5db orm join condition alias handling change 2022-11-14 14:13:59 +02:00
Yuri Kuznetsov 8efe9842cf cs 2022-11-14 13:15:45 +02:00
Yuri Kuznetsov 550bdaba4f ref 2022-11-14 13:07:44 +02:00
Yuri Kuznetsov 6f6c08f9a3 css fix 2022-11-14 12:45:27 +02:00
Yuri Kuznetsov dfea8470d1 cleanup 2022-11-14 12:38:29 +02:00
Yuri Kuznetsov a19ada57fa linkRequiredAccess 2022-11-14 12:25:28 +02:00
Yuri Kuznetsov f617d212f2 fix 2022-11-14 12:25:10 +02:00
Yuri Kuznetsov 88a09b2487 clientDefs relationshipPanels selectRequiredAccess createRequiredAccess 2022-11-14 12:23:42 +02:00
Yuri Kuznetsov 8dd5b078e6 cs fix 2022-11-14 11:07:31 +02:00
Yuri Kuznetsov cccb71fd5b ref 2022-11-14 11:01:28 +02:00
Yuri Kuznetsov f232f58b07 cs fix 2022-11-14 10:54:58 +02:00
Yuri Kuznetsov 17f8cb2f42 cs fix 2022-11-14 10:52:22 +02:00
Yuri Kuznetsov 5149713643 ref 2022-11-14 10:44:15 +02:00
Yuri Kuznetsov 586852ce7d categories max depth fix 2022-11-14 10:39:02 +02:00
Yuri Kuznetsov 65afe07a03 ref 2022-11-14 10:38:39 +02:00
Yuri Kuznetsov ea8bb03e8d no edit access check for create related 2022-11-14 10:22:07 +02:00
Yuri Kuznetsov 7f52192fa8 event confirmation style fix 2022-11-13 15:37:07 +02:00
Yuri Kuznetsov cadf54fb4e email part fix 2022-11-13 15:24:10 +02:00
Yuri Kuznetsov 631e766e5f ref 2022-11-13 14:57:19 +02:00
Yuri Kuznetsov d770afd24a css fix 2022-11-13 12:43:14 +02:00
Yuri Kuznetsov 6eb29eef2b orm join support expression on the left 2022-11-13 11:05:42 +02:00
Yuri Kuznetsov 7079ecfba1 fix typo 2022-11-13 10:13:42 +02:00
Yuri Kuznetsov ecf9962d6e ref 2022-11-12 22:26:04 +02:00
Yuri Kuznetsov 4bc24352c6 fix 2022-11-12 18:36:08 +02:00
Yuri Kuznetsov cc5125230e stream subscribers cleanup 2022-11-12 18:26:30 +02:00
Yuri Kuznetsov f50e962aee cleanup memory usage fix 2022-11-12 18:03:46 +02:00
Yuri Kuznetsov c363be67a1 ref cs 2022-11-12 17:55:10 +02:00
Yuri Kuznetsov 2467129e48 css fix 2022-11-11 17:21:29 +02:00
Yuri Kuznetsov dbcc6b43e6 css fix 2022-11-11 16:51:47 +02:00
Yuri Kuznetsov 13ebb9b63f css fix 2022-11-11 16:38:07 +02:00
Yuri Kuznetsov 6ba856fc66 ref 2022-11-11 14:19:05 +02:00
Yuri Kuznetsov 6f08fee069 move ref 2022-11-11 13:53:14 +02:00
Yuri Kuznetsov f270073be6 move 2022-11-11 13:45:39 +02:00
Yuri Kuznetsov fb3dd2dbf5 phpdoc fix 2022-11-11 13:40:04 +02:00
Yuri Kuznetsov ef47d3d2bf update query builder support expression 2022-11-11 13:25:50 +02:00
Yuri Kuznetsov 31bf387cbe text change interval 2022-11-11 13:01:52 +02:00
Yuri Kuznetsov 446c9a13cc wysiwyg fetch every 5 seconds on key down 2022-11-11 12:50:42 +02:00
Yuri Kuznetsov a373f1a864 do not show basic auth dialog if referer 2022-11-11 12:40:18 +02:00
Yuri Kuznetsov 7526e3c516 cleanup 2022-11-11 12:25:11 +02:00
Yuri Kuznetsov 98eb42ddb0 focus fix 2022-11-11 12:06:50 +02:00
Yuri Kuznetsov 9fd6c202a4 cs fix 2022-11-11 11:54:43 +02:00
Yuri Kuznetsov 00cbc80ccd log in log out sync between tabs 2022-11-11 11:22:17 +02:00
Yuri Kuznetsov b1252d2be4 focus fix 2022-11-11 09:00:49 +02:00
Yuri Kuznetsov daba2b3ba3 cs fix 2022-11-11 08:44:47 +02:00
Yuri Kuznetsov 3ecb64965d ref 2022-11-11 08:40:03 +02:00
Yuri Kuznetsov 061535d9fe css fix 2022-11-10 22:14:51 +02:00
Yuri Kuznetsov 87459afab4 meeting/call improve stream support 2022-11-10 22:09:06 +02:00
Yuri Kuznetsov a5da02df0f ref 2022-11-10 17:53:57 +02:00
Yuri Kuznetsov f37f59aff9 fix and ref 2022-11-10 17:14:34 +02:00
Yuri Kuznetsov 155a34245f discard 8.2 from workflow 2022-11-10 16:40:25 +02:00
Yuri Kuznetsov 456eca773d update workflow php version 2022-11-10 16:38:05 +02:00
Yuri Kuznetsov 7e54ff7f98 drop php7.4 2022-11-10 16:35:10 +02:00
Yuri Kuznetsov d2abd0eb3b Merge branch 'fix' 2022-11-10 15:54:58 +02:00
Yuri Kuznetsov 853ca01176 Merge branch 'fix' of github.com:espocrm/espocrm into fix 2022-11-10 15:54:01 +02:00
Yuri Kuznetsov 4e7462566b fix bottom tab text show more 2022-11-10 15:53:43 +02:00
Yuri Kuznetsov 46c910d74f fix bottom tab text show more 2022-11-10 15:53:15 +02:00
Yuri Kuznetsov e2a3761f10 ref 2022-11-10 15:22:04 +02:00
Yuri Kuznetsov 4d04a513c5 layout focus fix 2022-11-10 14:12:47 +02:00
Yuri Kuznetsov dcb550d6a8 layout shortcuts 2022-11-10 13:52:36 +02:00
Yuri Kuznetsov 44c13c9223 ref 2022-11-10 13:22:15 +02:00
Yuri Kuznetsov 3f37245a8c fix sticked issue 2022-11-10 13:18:24 +02:00
Yuri Kuznetsov 1f1b2c2203 update gridstack 2022-11-10 10:54:57 +02:00
Yuri Kuznetsov 2fc38dd184 merge 2022-11-10 09:38:05 +02:00
Yuri Kuznetsov 5e95a9e6b5 stream acl true 2022-11-10 09:37:04 +02:00
Yuri Kuznetsov 832a135556 Merge branch 'fix' 2022-11-10 09:29:38 +02:00
Yuri Kuznetsov 39c3eeadd8 ref 2022-11-10 09:21:11 +02:00
Yuri Kuznetsov aaaad41051 css fix 2022-11-09 13:26:05 +02:00
Yuri Kuznetsov d446034f41 default theme 2022-11-09 11:04:49 +02:00
Yuri Kuznetsov 644c165b94 kanban fixes 2022-11-09 11:01:50 +02:00
Yuri Kuznetsov b4bec78081 change duplicate finder interface 2022-11-09 10:03:15 +02:00
Yuri Kuznetsov ac35e3db83 Merge branch 'fix' 2022-11-08 23:04:17 +02:00
Yuri Kuznetsov 429d808e98 css fix 2022-11-08 23:04:08 +02:00
Yuri Kuznetsov 0354cc1e38 fix 2022-11-08 18:56:45 +02:00
Yuri Kuznetsov 7c731550ac cs fix 2022-11-08 18:39:54 +02:00
Yuri Kuznetsov aa45ed88aa fix 2022-11-08 18:37:27 +02:00
Yuri Kuznetsov 98fa68a070 calendar utility factory 2022-11-08 18:29:41 +02:00
Yuri Kuznetsov 0b3b915641 cs fix 2022-11-08 17:06:23 +02:00
Yuri Kuznetsov d54f5cb259 test 2022-11-08 16:06:12 +02:00
Yuri Kuznetsov d018781667 ref 2022-11-08 15:18:02 +02:00
Yuri Kuznetsov 6e07ecd5bb email import ref 2022-11-08 14:29:12 +02:00
Yuri Kuznetsov 9190544b10 cs 2022-11-08 12:41:00 +02:00
Yuri Kuznetsov 2c6674efe0 ref 2022-11-08 12:02:18 +02:00
Yuri Kuznetsov 2d6528a8d5 update bullbone 2022-11-08 12:02:08 +02:00
Yuri Kuznetsov 6b4980899c cleanup 2022-11-08 12:01:54 +02:00
Yuri Kuznetsov c5781971f3 email dnd fix 2022-11-08 11:24:35 +02:00
Yuri Kuznetsov 19984e6e4e css fix 2022-11-07 22:40:40 +02:00
Yuri Kuznetsov 97b12c3916 css fix 2022-11-07 16:54:03 +02:00
Yuri Kuznetsov 237ff5699c css fix 2022-11-07 16:20:41 +02:00
Yuri Kuznetsov 61e869a552 css fix 2022-11-07 16:03:52 +02:00
Yuri Kuznetsov d0710ccb21 fix 2022-11-07 15:48:20 +02:00
Yuri Kuznetsov d83ab71e48 dashlet draggable distance 2022-11-07 15:46:59 +02:00
Yuri Kuznetsov e1da88372f css fix 2022-11-07 15:39:44 +02:00
Yuri Kuznetsov cb9bda59f0 css fix 2022-11-07 15:37:36 +02:00
Yuri Kuznetsov 1d41127810 fix 2022-11-07 15:35:49 +02:00
Yuri Kuznetsov 0835699897 record panel title text not selectable 2022-11-07 15:31:06 +02:00
Yuri Kuznetsov 07f9d6b482 no list head select 2022-11-07 15:19:44 +02:00
Yuri Kuznetsov 9cdb14daaa email folders sticked 2022-11-07 14:30:42 +02:00
Yuri Kuznetsov bb2db7d675 css fix 2022-11-06 17:48:59 +02:00
Yuri Kuznetsov 3991efff4c restore middle tab on return 2022-11-06 14:30:22 +02:00
Yuri Kuznetsov b3ad922691 restore bottom tab on return 2022-11-06 14:08:42 +02:00
Yuri Kuznetsov 8d3ad7318a storage number fix 2022-11-06 14:03:03 +02:00
Yuri Kuznetsov def5c9d97b reminder style fix 2022-11-06 12:14:08 +02:00
Yuri Kuznetsov feb880fd53 fix 2022-11-06 11:44:00 +02:00
Yuri Kuznetsov bff95e6522 email dnd impr 2022-11-06 11:41:06 +02:00
Yuri Kuznetsov 38f2172f20 email drag n drop improvement 2022-11-05 15:18:49 +02:00
Yuri Kuznetsov 20ccba9f23 bottom tabs ref 2022-11-05 11:54:16 +02:00
Yuri Kuznetsov 8ae97efb43 ref 2022-11-05 10:20:11 +02:00
Yuri Kuznetsov fdf72b3676 fix 2022-11-04 18:03:08 +02:00
Yuri Kuznetsov 334d88775f select first visible bottom tab on render 2022-11-04 17:49:32 +02:00
Yuri Kuznetsov b47a6b2cd5 move to folder ui fix 2022-11-04 16:07:04 +02:00
Yuri Kuznetsov 69c7752537 move to folder modal label 2022-11-04 16:04:06 +02:00
Yuri Kuznetsov e708db7e5b fix 2022-11-04 13:23:48 +02:00
Yuri Kuznetsov 978a206662 Merge branch 'fix' 2022-11-04 11:52:00 +02:00
Yuri Kuznetsov 62d1c0fae9 attachment csp 2022-11-04 10:36:00 +02:00
Yuri Kuznetsov 76546ff06c logo svg 2022-11-04 10:27:17 +02:00
Yuri Kuznetsov 171164ed2b is html label 2022-11-03 17:01:55 +02:00
Yuri Kuznetsov 4057f92ec0 meeting notify about attendee 2022-11-03 16:47:12 +02:00
Yuri Kuznetsov 2b181b8d84 ref 2022-11-03 12:06:59 +02:00
Yuri Kuznetsov e210f1386d job use sth 2022-11-03 11:50:37 +02:00
Yuri Kuznetsov 711781b666 ref and cs fix 2022-11-03 11:48:10 +02:00
Yuri Kuznetsov addda0d9a8 ref 2022-11-03 11:38:23 +02:00
Yuri Kuznetsov b2b958c946 Merge branch 'fix' 2022-11-02 20:51:01 +02:00
David 42af361ae4 Fix czech translation (#2491)
* fixed require promise

* czech translation fix

Co-authored-by: David Moškoř <david.moskor@apertia.cz>
2022-11-02 20:50:11 +02:00
Yuri Kuznetsov 440c6cee23 it_IT 2022-11-02 20:49:25 +02:00
Yuri Kuznetsov 1b32e57637 css fix 2022-11-02 19:48:03 +02:00
Yuri Kuznetsov 5008561965 fix 2022-11-02 18:41:35 +02:00
Yuri Kuznetsov 168f32a90e fix 2022-11-02 18:30:59 +02:00
Yuri Kuznetsov 23a21a060c fix shortcut 2022-11-02 17:56:11 +02:00
Yuri Kuznetsov 0eab4f0cac skip stream processing if silent 2022-11-02 15:58:55 +02:00
Yuri Kuznetsov 0ee3044ebc fix typo 2022-11-02 15:18:13 +02:00
Yuri Kuznetsov 916ad5159e dropdown focus 2022-11-02 14:47:24 +02:00
Yuri Kuznetsov 31d985e875 email draft from name 2022-11-02 12:37:20 +02:00
Yuri Kuznetsov 973404d46e css fix 2022-11-02 09:33:24 +02:00
David 042c5e5791 Regex with optional capture groups might cause catastrophic backtracking (#2490)
* fix catastrophic backtracking

* prevented catasthropic backtracing

Co-authored-by: David Moškoř <david.moskor@apertia.cz>
2022-11-02 08:56:00 +02:00
Yuri Kuznetsov 64b3328916 kanban drag cursor fix 2022-11-01 21:19:03 +02:00
Yuri Kuznetsov ef8faa466c notify 2022-11-01 20:48:16 +02:00
Yuri Kuznetsov 4f53f6861c fix 2022-11-01 20:41:32 +02:00
Yuri Kuznetsov c610f8d6a7 next number populate 2022-11-01 16:59:56 +02:00
Yuri Kuznetsov ecde182b08 exceptions 2022-11-01 16:59:42 +02:00
Yuri Kuznetsov 94a723753f email shortcut keys 2022-11-01 15:08:53 +02:00
Yuri Kuznetsov cef40340cf Email mime message fix (#2486)
* email-message-fix

* fix test

* email mime parts message fix
2022-11-01 12:37:01 +02:00
Yuri Kuznetsov 8413e56d3f ref 2022-11-01 11:06:13 +02:00
Yuri Kuznetsov c14c6d9187 enum change on option change 2022-11-01 10:52:41 +02:00
Yuri Kuznetsov d010c4a463 array sorting uix fix 2022-11-01 10:43:45 +02:00
Yuri Kuznetsov ecf70585d7 validate default option 2022-11-01 10:01:55 +02:00
Yuri Kuznetsov 9183489d19 Merge branch 'fix' 2022-10-31 17:27:31 +02:00
Yuri Kuznetsov e659c79bf7 v 2022-10-31 17:21:33 +02:00
Yuri Kuznetsov e017479f85 fix panel heading overflow 2022-10-31 17:21:06 +02:00
Yuri Kuznetsov 24091d9eed color fix 2022-10-31 16:24:38 +02:00
Yuri Kuznetsov abdc73af6a attachment focus fix 2022-10-31 15:40:45 +02:00
Yuri Kuznetsov 168335c5b0 logo radius issue 2022-10-31 15:30:48 +02:00
Yuri Kuznetsov d0f43e7de9 alert viewport center 2022-10-31 15:19:34 +02:00
Yuri Kuznetsov 4dee40f714 style fix 2022-10-31 15:06:55 +02:00
Yuri Kuznetsov bd238f912f notification query no count 2022-10-31 13:06:04 +02:00
Yuri Kuznetsov e91539f534 apply button on filter removal 2022-10-31 12:41:08 +02:00
Yuri Kuznetsov e912566b44 fix 2022-10-31 12:05:25 +02:00
Yuri Kuznetsov daef165a2e fix 2022-10-31 11:55:39 +02:00
Yuri Kuznetsov 2b740082e4 fix 2022-10-31 11:54:39 +02:00
Yuri Kuznetsov b0292e61a9 style fixes 2022-10-31 11:44:35 +02:00
Yuri Kuznetsov e5b8db367b discard loading 2022-10-31 11:24:29 +02:00
Yuri Kuznetsov 1aad648987 css fix 2022-10-31 10:55:54 +02:00
Yuri Kuznetsov a943c4a7ea radio css 2022-10-31 10:42:15 +02:00
Yuri Kuznetsov a184d5568d color fix 2022-10-31 09:54:45 +02:00
Yuri Kuznetsov a351875586 create select handler for link 2022-10-31 09:43:56 +02:00
Yuri Kuznetsov 21b325f27f fix 2022-10-31 09:42:23 +02:00
Yuri Kuznetsov 992d581ff2 Merge branch 'fix' 2022-10-31 09:11:20 +02:00
Yuri Kuznetsov 4824714b0d fix non-storable varchar default maxlength validation 2022-10-31 08:56:56 +02:00
Yuri Kuznetsov bdf3e9a4b6 css fix 2022-10-31 08:50:55 +02:00
Yuri Kuznetsov 5826f0fb2a style fixes 2022-10-30 19:18:01 +02:00
Yuri Kuznetsov 65a57aed59 style fix 2022-10-30 19:02:05 +02:00
Yuri Kuznetsov ffe4b82e1e fix 2022-10-30 15:44:02 +02:00
Yuri Kuznetsov 32c29ac829 create handler in link multiple 2022-10-30 15:12:16 +02:00
Yuri Kuznetsov 03e46ed08f color fix 2022-10-30 14:30:23 +02:00
Yuri Kuznetsov d4821db812 relationshipPanels defs in link multiple 2022-10-30 14:25:16 +02:00
Yuri Kuznetsov 0f8d9f96fb selectModalView 2022-10-30 11:47:28 +02:00
Yuri Kuznetsov dbaf535f53 select related handler 2022-10-30 11:31:44 +02:00
Yuri Kuznetsov f8254f49c0 fix 2022-10-30 10:25:30 +02:00
Yuri Kuznetsov 6592ad3798 create related use promise 2022-10-30 09:29:00 +02:00
Yuri Kuznetsov d5bb95cab6 color fix 2022-10-29 22:56:59 +03:00
Yuri Kuznetsov ae2f2ab235 list fetch main 2022-10-29 15:58:47 +03:00
Yuri Kuznetsov 489e41a042 related list 2022-10-29 15:49:28 +03:00
Yuri Kuznetsov 4c209aaa86 Stream: Update notes when edited (with web socket) (#2483)
* note edit websocket

* fix note update input
2022-10-28 11:39:56 +03:00
Yuri Kuznetsov 09d8bc5a36 phone default enum 2022-10-26 16:36:03 +03:00
Yuri Kuznetsov 589415b036 Merge branch 'fix' 2022-10-26 16:30:17 +03:00
Yuri Kuznetsov 6ee936d522 bottom layout edit impr 2022-10-26 16:29:52 +03:00
Yuri Kuznetsov 648fa60e14 bottom layout edit impr 2022-10-26 16:29:24 +03:00
Yuri Kuznetsov deea05a986 style fix 2022-10-26 15:21:21 +03:00
Yuri Kuznetsov 1ddefe2541 log in button text 2022-10-26 14:05:35 +03:00
Yuri Kuznetsov efaf3327e3 update minimatch 2022-10-26 13:56:11 +03:00
Yuri Kuznetsov 0046734522 pt_PT lang 2022-10-26 12:56:01 +03:00
Yuri Kuznetsov 0ed243c9b1 wysiwyg img max width 2022-10-26 12:45:32 +03:00
Yuri Kuznetsov 91d81773bc css fix 2022-10-26 12:29:40 +03:00
Yuri Kuznetsov c71f8a5334 spellcheck off 2022-10-26 12:21:22 +03:00
Yuri Kuznetsov 21e8425e59 css fix 2022-10-26 10:00:08 +03:00
Yuri Kuznetsov f246021819 css fix 2022-10-26 09:53:52 +03:00
Yuri Kuznetsov e0ac2e156d checklist fix 2022-10-26 09:49:02 +03:00
Yuri Kuznetsov 46a4815def fix css 2022-10-25 19:06:34 +03:00
Yuri Kuznetsov 5851245f43 css fix 2022-10-25 18:44:51 +03:00
Yuri Kuznetsov 66f0aa71c9 css fixes 2022-10-25 17:10:19 +03:00
Yuri Kuznetsov 51b621ecd1 checkbox styled 2022-10-25 16:51:19 +03:00
Yuri Kuznetsov 65d88e5ac8 ref 2022-10-25 11:17:33 +03:00
Yuri Kuznetsov 96a0cb12a0 ref 2022-10-24 18:05:41 +03:00
Yuri Kuznetsov 07844912d2 cs fix 2022-10-24 18:00:47 +03:00
Yuri Kuznetsov cdbe9651f3 Merge branch 'fix' 2022-10-24 17:29:09 +03:00
Yuri Kuznetsov ba172494b4 fix kanban with disable total 2022-10-24 17:26:29 +03:00
Yuri Kuznetsov 956e7108c3 fix 2022-10-24 16:53:03 +03:00
Yuri Kuznetsov 66a111d7fc fix 2022-10-24 16:44:33 +03:00
Yuri Kuznetsov 4b038d66d1 fix 2022-10-24 16:13:09 +03:00
Yuri Kuznetsov 8feab8f394 ajax fullResponse 2022-10-24 16:10:59 +03:00
Yuri Kuznetsov 0c350b5f16 redirect to root after create forbidden 2022-10-24 14:42:17 +03:00
Yuri Kuznetsov be21968795 ajax error handler timeout 2022-10-24 14:41:51 +03:00
Yuri Kuznetsov 0dac024316 cs fix 2022-10-24 13:45:23 +03:00
Yuri Kuznetsov d7d1a38fd3 cs fix 2022-10-24 13:37:06 +03:00
Yuri Kuznetsov cc562d6c26 fix typo 2022-10-24 13:35:18 +03:00
Yuri Kuznetsov 8565711a3e fix 2022-10-24 13:33:49 +03:00
Yuri Kuznetsov 362b65b2b2 cs fix 2022-10-24 13:32:53 +03:00
Yuri Kuznetsov 444f699853 fix comment 2022-10-24 13:24:17 +03:00
Yuri Kuznetsov f6ea204259 Merge branch 'fix' 2022-10-24 12:14:00 +03:00
Yuri Kuznetsov 5c44a374d5 glass table text bold 700 2022-10-24 12:13:46 +03:00
Yuri Kuznetsov 8aae2b18ba glass fix 2022-10-24 12:06:46 +03:00
Yuri Kuznetsov 258e56c61d fix 2022-10-24 12:06:41 +03:00
Yuri Kuznetsov 55d054b15c fix 2022-10-24 11:52:23 +03:00
Yuri Kuznetsov 1f733fa307 fix 2022-10-24 11:43:37 +03:00
Yuri Kuznetsov acfcc65aee email filter mark as read 2022-10-24 11:34:26 +03:00
Yuri Kuznetsov 5a29830202 ref 2022-10-24 10:29:15 +03:00
Yuri Kuznetsov 04ef798866 fix 2022-10-24 10:04:44 +03:00
Yuri Kuznetsov 5987906fd8 Merge branch 'fix' 2022-10-24 09:47:09 +03:00
Yuri Kuznetsov 3084dddf1c fix url field pattern 2022-10-24 09:44:43 +03:00
Yuri Kuznetsov 87b112c699 rename ldap 2022-10-23 16:56:06 +03:00
Yuri Kuznetsov 212a5879b3 Merge branch 'fix' 2022-10-23 16:51:12 +03:00
Yuri Kuznetsov eb6f9b602f upgrade 2022-10-23 16:40:40 +03:00
Yuri Kuznetsov cf508a540e Merge branch 'fix' of https://github.com/espocrm/espocrm into fix 2022-10-23 16:36:19 +03:00
Yuri Kuznetsov 5278e3bf06 v 2022-10-23 16:25:17 +03:00
Yuri Kuznetsov ee70b1afad ref 2022-10-23 15:04:53 +03:00
Yuri Kuznetsov 4374688c85 css fix 2022-10-23 10:59:33 +03:00
Yuri Kuznetsov 0b7804f4f1 update carbon 2022-10-23 10:30:02 +03:00
Yuri Kuznetsov c01545678f kanban drag min distance 2022-10-23 10:24:20 +03:00
Yuri Kuznetsov 3ea617e449 cs fix 2022-10-23 10:22:19 +03:00
Yuri Kuznetsov 75e3961fb5 ajax promise 2022-10-23 10:18:02 +03:00
Yuri Kuznetsov cc8d66dc7d populate array values command 2022-10-22 14:44:58 +03:00
Yuri Kuznetsov 874c42fa33 ref 2022-10-22 13:27:09 +03:00
Yuri Kuznetsov 8a554bdf55 cs fix 2022-10-22 13:15:46 +03:00
Yuri Kuznetsov 5b02dc23f5 fix 2022-10-22 12:58:00 +03:00
Yuri Kuznetsov dd75aaeef2 rebuild category paths command 2022-10-22 12:52:13 +03:00
Yuri Kuznetsov 97c109dc79 cleanup 2022-10-21 18:14:43 +03:00
Yuri Kuznetsov f61c546af7 cs fix 2022-10-21 17:59:28 +03:00
Yuri Kuznetsov f6742d225d ldap fix 2022-10-21 17:33:53 +03:00
Yuri Kuznetsov ba69668df5 ref 2022-10-21 17:29:27 +03:00
Yuri Kuznetsov 7b8d2a874c fix jsdoc 2022-10-21 17:11:50 +03:00
Yuri Kuznetsov 8ba1e8148e merge 2022-10-21 17:11:05 +03:00
Yuri Kuznetsov 7266cc96c9 ref 2022-10-21 17:09:39 +03:00
Yuri Kuznetsov f4a3a3fbd3 extension admin notifications 2022-10-21 16:25:19 +03:00
Yuri Kuznetsov 937f28b52f cs fix 2022-10-21 15:44:09 +03:00
Yuri Kuznetsov 0997a870ec fix 2022-10-21 15:41:49 +03:00
Yuri Kuznetsov 5da17fd8a9 cs fix 2022-10-21 15:33:50 +03:00
Yuri Kuznetsov d8ca8a9a22 cs fix 2022-10-21 15:29:12 +03:00
Yuri Kuznetsov 76007e2c79 license status 2022-10-21 14:43:00 +03:00
Yuri Kuznetsov f0b7e94aa0 doc fix 2022-10-21 14:02:57 +03:00
Yuri Kuznetsov 89f7281a02 cs fix 2022-10-21 10:41:06 +03:00
Yuri Kuznetsov 9d7d9d0f3d ref 2022-10-21 10:13:11 +03:00
Yuri Kuznetsov 46d6cbb042 ref 2022-10-20 21:08:44 +03:00
Yuri Kuznetsov 63d50c1ebd record service container get by class 2022-10-20 21:02:50 +03:00
Yuri Kuznetsov 4917f0d5f6 ref 2022-10-20 20:55:42 +03:00
Yuri Kuznetsov ffb1f51f52 ref 2022-10-20 19:50:49 +03:00
Yuri Kuznetsov 48f98014a9 fix 2022-10-20 19:50:15 +03:00
Yuri Kuznetsov 8005e6e879 ref 2022-10-20 19:40:14 +03:00
David 5763f5b58e fixed require promise (#2473)
Co-authored-by: David Moškoř <david.moskor@apertia.cz>
2022-10-20 18:55:50 +03:00
Yuri Kuznetsov 8f6872bb08 eventInvitationForceSystemSmtp 2022-10-20 18:46:59 +03:00
Yuri Kuznetsov 6fe21e68c0 ref 2022-10-20 18:38:33 +03:00
Yuri Kuznetsov 6b0bc18cbe ref 2022-10-20 17:38:01 +03:00
Yuri Kuznetsov d1eced41aa fix test 2022-10-20 15:43:12 +03:00
Yuri Kuznetsov ff83b4cb41 Merge branch 'fix' 2022-10-20 15:37:22 +03:00
Yuri Kuznetsov 59d46e43a4 ref 2022-10-19 18:46:11 +03:00
Yuri Kuznetsov 240644dd8c cs fix 2022-10-19 18:08:27 +03:00
Yuri Kuznetsov 840b31c7d3 ref 2022-10-19 18:05:33 +03:00
Yuri Kuznetsov 1c29123a44 cleanup 2022-10-19 17:42:07 +03:00
Yuri Kuznetsov 8e73af8d38 fix 2022-10-19 17:07:12 +03:00
Yuri Kuznetsov 85e583ec7c fix 2022-10-19 17:00:57 +03:00
Yuri Kuznetsov 509841344f ref 2022-10-19 16:47:56 +03:00
Yuri Kuznetsov 5eef8f2ce5 ref 2022-10-19 15:32:03 +03:00
Yuri Kuznetsov 85efea44ed ref 2022-10-19 13:27:06 +03:00
Yuri Kuznetsov c004815a42 ref 2022-10-19 13:25:11 +03:00
Yuri Kuznetsov afddb6afc9 ref 2022-10-19 12:56:46 +03:00
Yuri Kuznetsov 7c869ce3fc style fix 2022-10-19 12:56:24 +03:00
Yuri Kuznetsov b9541eea35 cs fix 2022-10-19 12:54:08 +03:00
Yuri Kuznetsov 75e46f6f5b ref 2022-10-18 21:33:59 +03:00
Yuri Kuznetsov 531992adff ref 2022-10-18 21:32:21 +03:00
Yuri Kuznetsov 1f88b60cca ref 2022-10-18 21:19:43 +03:00
Yuri Kuznetsov 09d7c73449 ref 2022-10-18 21:16:27 +03:00
Yuri Kuznetsov b43d9f8784 user password ref 2022-10-18 20:29:23 +03:00
Yuri Kuznetsov d3e65f9ba1 ref 2022-10-18 18:16:10 +03:00
Yuri Kuznetsov 5485966c1c ref 2022-10-18 18:03:41 +03:00
Yuri Kuznetsov d6dc858720 ref 2022-10-18 17:13:56 +03:00
Yuri Kuznetsov 07ee43d4d7 ref 2022-10-18 15:50:51 +03:00
Yuri Kuznetsov 45720afd50 ref 2022-10-18 14:06:29 +03:00
Yuri Kuznetsov 291c692bdb ref 2022-10-18 13:03:48 +03:00
Yuri Kuznetsov 464976629d ref 2022-10-18 12:54:50 +03:00
Yuri Kuznetsov 4267adbdb2 cs fix 2022-10-18 12:41:29 +03:00
Yuri Kuznetsov f8d0fc2654 ref 2022-10-18 12:40:02 +03:00
Yuri Kuznetsov ba2bea15b5 ref 2022-10-18 11:40:28 +03:00
Yuri Kuznetsov 7ffd5a25a9 ref 2022-10-17 16:54:10 +03:00
Yuri Kuznetsov ba59e3922f fix tests 2022-10-17 16:48:33 +03:00
Yuri Kuznetsov 8336eb3dd9 cleanup 2022-10-17 16:42:21 +03:00
Yuri Kuznetsov 667f9b6eb6 cs fix 2022-10-17 16:37:50 +03:00
Yuri Kuznetsov f76d8601e7 fix 2022-10-17 16:36:59 +03:00
Yuri Kuznetsov f09db0ebdb ref 2022-10-17 16:07:05 +03:00
Yuri Kuznetsov 3b6a686257 ref 2022-10-17 15:04:53 +03:00
Yuri Kuznetsov e939b4541d ref 2022-10-17 14:43:24 +03:00
Yuri Kuznetsov d6c4002e82 ref 2022-10-17 13:12:03 +03:00
Yuri Kuznetsov 0cb1629f75 cs fix 2022-10-17 13:10:35 +03:00
Yuri Kuznetsov e8f600c99f ref 2022-10-17 13:00:11 +03:00
Yuri Kuznetsov 745d6b9603 ref 2022-10-17 12:50:34 +03:00
Yuri Kuznetsov 245e267f73 fix 2022-10-17 12:38:23 +03:00
Yuri Kuznetsov 953920a742 ref 2022-10-17 12:35:41 +03:00
Yuri Kuznetsov a6e1b016ae ref 2022-10-17 12:11:52 +03:00
Yuri Kuznetsov fdddc5cc2a ref 2022-10-17 11:34:15 +03:00
Yuri Kuznetsov b7de49a2aa ref 2022-10-17 11:22:44 +03:00
Yuri Kuznetsov 35dbe35ea4 test 2022-10-17 11:09:50 +03:00
Yuri Kuznetsov d0f84584a0 docs 2022-10-17 11:07:49 +03:00
Yuri Kuznetsov a334fc5456 search param bool added 2022-10-17 10:58:12 +03:00
Yuri Kuznetsov ccbc9a2348 ref 2022-10-17 10:48:25 +03:00
Yuri Kuznetsov 8c109d2713 ref 2022-10-17 09:19:38 +03:00
Yuri Kuznetsov 8b3b659ec6 ref 2022-10-17 08:37:37 +03:00
Yuri Kuznetsov 537b921e87 fix 2022-10-16 23:08:07 +03:00
Yuri Kuznetsov 74dbc64d5b fix 2022-10-16 21:59:21 +03:00
Yuri Kuznetsov fe9ed74875 ref 2022-10-16 21:52:37 +03:00
Yuri Kuznetsov a8f48c3248 update php-parser 2022-10-16 21:43:34 +03:00
Yuri Kuznetsov 857648633e ref 2022-10-16 21:37:57 +03:00
Yuri Kuznetsov 81d961d5d9 ref 2022-10-16 20:52:54 +03:00
Yuri Kuznetsov ae2d5e2552 update phpstan 2022-10-16 20:31:33 +03:00
Yuri Kuznetsov 035e561a4c ref 2022-10-16 20:26:18 +03:00
Yuri Kuznetsov 541cc907f1 phpdoc 2022-10-16 19:08:16 +03:00
Yuri Kuznetsov a5fc42a85f ref 2022-10-16 18:45:05 +03:00
Yuri Kuznetsov 421384980a fix 2022-10-16 18:26:13 +03:00
Yuri Kuznetsov 331fb69364 phpdoc 2022-10-16 17:53:31 +03:00
Yuri Kuznetsov 9d5e1b7d33 ref 2022-10-16 17:40:33 +03:00
Yuri Kuznetsov 1c06f3be92 ref 2022-10-16 16:29:05 +03:00
Yuri Kuznetsov 64c8c1a891 fix test 2022-10-16 16:13:55 +03:00
Yuri Kuznetsov f637960648 ref 2022-10-16 16:08:01 +03:00
Yuri Kuznetsov 2f73ae43ac ref 2022-10-16 15:43:42 +03:00
Yuri Kuznetsov befdff8085 ref 2022-10-16 14:25:52 +03:00
Yuri Kuznetsov 7be573be67 ref 2022-10-16 14:25:11 +03:00
Yuri Kuznetsov 19227313b3 ref 2022-10-16 13:07:37 +03:00
Yuri Kuznetsov 4d71e3c904 ref 2022-10-16 12:28:05 +03:00
Yuri Kuznetsov fef90ac1dc ref 2022-10-16 12:18:54 +03:00
Yuri Kuznetsov 6a940eb732 ref 2022-10-16 12:01:04 +03:00
Yuri Kuznetsov 838d0b08db move default binding 2022-10-16 11:33:32 +03:00
Yuri Kuznetsov c36c5a9d63 todo 2022-10-16 11:18:34 +03:00
Yuri Kuznetsov 327b6adbbf fix test 2022-10-16 11:15:57 +03:00
Yuri Kuznetsov 3f78f71c5f fix test 2022-10-16 10:59:09 +03:00
Yuri Kuznetsov 06e68a3e7d mail ref 2022-10-16 10:57:55 +03:00
Yuri Kuznetsov b1614ae660 ref 2022-10-14 17:24:32 +03:00
Yuri Kuznetsov 9575b8e24f ref 2022-10-14 17:06:13 +03:00
Yuri Kuznetsov b6b562cff1 dev 2022-10-14 17:01:18 +03:00
Yuri Kuznetsov e22f8b0120 ref 2022-10-14 16:34:27 +03:00
Yuri Kuznetsov eaa0426628 ref 2022-10-14 15:45:32 +03:00
Yuri Kuznetsov 42c5ac56ca ref 2022-10-14 15:23:45 +03:00
Yuri Kuznetsov f54497b76f ref 2022-10-14 14:13:16 +03:00
Yuri Kuznetsov f253e021d0 ref 2022-10-14 14:06:22 +03:00
Yuri Kuznetsov fa679b6dd2 cs fix 2022-10-14 13:22:29 +03:00
Yuri Kuznetsov 11d55b9e40 ref 2022-10-14 12:25:07 +03:00
Yuri Kuznetsov 00fbf45e88 ref 2022-10-14 11:17:10 +03:00
Yuri Kuznetsov 945921b38d from email address filtering 2022-10-14 10:13:36 +03:00
Yuri Kuznetsov b69f20a7fd ref 2022-10-13 21:18:37 +03:00
Yuri Kuznetsov 1f445770cf ref 2022-10-13 21:07:55 +03:00
Yuri Kuznetsov 7765562302 fix test 2022-10-13 19:47:43 +03:00
Yuri Kuznetsov 16abe43003 ref 2022-10-13 19:23:36 +03:00
Yuri Kuznetsov 5fed4f93e5 fix before upgrade 2022-10-13 18:29:10 +03:00
Yuri Kuznetsov 4514e8225f discard smtp preferences 2022-10-13 17:48:34 +03:00
Yuri Kuznetsov ab2d3eed43 ref 2022-10-13 13:05:34 +03:00
Yuri Kuznetsov f236a72a1a ref 2022-10-13 11:57:14 +03:00
Yuri Kuznetsov b66ac6ce13 ref 2022-10-13 11:45:55 +03:00
Yuri Kuznetsov 0a8ade65f4 ref 2022-10-13 10:52:07 +03:00
Yuri Kuznetsov 1235eee695 ref 2022-10-13 10:25:59 +03:00
Yuri Kuznetsov fbc35ec23d fix test 2022-10-13 10:04:07 +03:00
Yuri Kuznetsov 4e31fc89d4 email filter move to folder 2022-10-12 18:35:43 +03:00
Yuri Kuznetsov a7d3073861 fix 2022-10-12 14:09:22 +03:00
Yuri Kuznetsov abd40d42b8 ref 2022-10-12 13:32:05 +03:00
Yuri Kuznetsov ec19ae061f ref 2022-10-12 13:10:17 +03:00
Yuri Kuznetsov 84d9e1fe29 cs fix 2022-10-12 12:39:36 +03:00
Yuri Kuznetsov 50d7f6d831 dropdown action helper and labelTranslation 2022-10-12 12:17:25 +03:00
Yuri Kuznetsov b80bdf9a83 fix docs 2022-10-12 10:33:32 +03:00
Yuri Kuznetsov 19eb99ed25 group folder menu link 2022-10-12 10:31:36 +03:00
Yuri Kuznetsov 6c2be9199e email drop sent limitation 2022-10-12 10:11:14 +03:00
Yuri Kuznetsov ff1c449411 email drop to all 2022-10-12 10:07:58 +03:00
Yuri Kuznetsov 259b06cd7a ref 2022-10-11 20:59:50 +03:00
Yuri Kuznetsov cb00922841 group email folders 2022-10-11 17:43:31 +03:00
Yuri Kuznetsov e21f500a4d Merge branch 'fix' 2022-10-11 13:04:41 +03:00
Yuri Kuznetsov af9fac2b51 dE_DE 2022-10-10 11:43:20 +03:00
Yuri Kuznetsov 81c8311026 fix 2022-10-09 10:26:40 +03:00
Yuri Kuznetsov 085e66feea search panel disabled modal select records 2022-10-07 15:51:14 +03:00
Yuri Kuznetsov 7ad01cad77 fix 2022-10-07 12:25:14 +03:00
Yuri Kuznetsov 5038e4144f ref 2022-10-07 12:07:03 +03:00
Yuri Kuznetsov 4e6d5cf773 fix, setupReuse 2022-10-06 20:35:27 +03:00
Yuri Kuznetsov 8815564be3 fix 2022-10-06 18:36:59 +03:00
Yuri Kuznetsov 097a600488 fix 2022-10-06 14:25:25 +03:00
Yuri Kuznetsov 037687e11f fix 2022-10-06 14:16:28 +03:00
Yuri Kuznetsov 6eddc10d5a email drop into folder 2022-10-06 13:07:08 +03:00
Yuri Kuznetsov 0b9256ecf9 ref 2022-10-06 12:28:09 +03:00
Yuri Kuznetsov 26e692563b username validator 2022-10-05 14:42:54 +03:00
Yuri Kuznetsov 961e056e8d fix 2022-10-05 14:40:50 +03:00
Yuri Kuznetsov 77debc3875 fix 2022-10-05 14:30:26 +03:00
Yuri Kuznetsov d4376264c3 cs fix 2022-10-05 14:28:21 +03:00
Yuri Kuznetsov 424302287e fix test 2022-10-05 14:28:14 +03:00
Yuri Kuznetsov bcdee914ad keywords 2022-10-05 13:24:34 +03:00
Yuri Kuznetsov 9580c4f376 shortcuts 2022-10-05 13:22:51 +03:00
Yuri Kuznetsov edf673fb69 ref and shortcut usage 2022-10-05 13:16:18 +03:00
Yuri Kuznetsov 7738b9c3e0 remove with select all improvement 2022-10-05 12:37:13 +03:00
Yuri Kuznetsov 1579e4851e ref 2022-10-05 12:03:27 +03:00
Yuri Kuznetsov 914e070732 datetime from timestamp 2022-10-05 11:49:44 +03:00
Yuri Kuznetsov a976e22ebd fix settings lang 2fa param 2022-10-05 11:34:07 +03:00
Yuri Kuznetsov 138d0215f7 rebuild error output 2022-10-05 11:23:26 +03:00
Yuri Kuznetsov 39b42c3953 config iternal param 2022-10-05 11:14:13 +03:00
Yuri Kuznetsov da10e9c4a9 docs 2022-10-05 10:25:23 +03:00
Yuri Kuznetsov 89273a26d4 Merge branch 'fix' 2022-10-05 10:12:30 +03:00
Yuri Kuznetsov bac7eb6c89 model factory fix 2022-10-04 18:40:14 +03:00
Yuri Kuznetsov 80572ae14f update laminas libs, install laminas crypt 2022-10-04 18:27:23 +03:00
Yuri Kuznetsov c8a746d90b authentication deny system user 2022-10-04 17:50:22 +03:00
Yuri Kuznetsov a57f13eda2 auth settings label 2022-10-04 17:24:50 +03:00
Yuri Kuznetsov e576b9f272 dev 2022-10-04 17:13:34 +03:00
Yuri Kuznetsov 6df18b3604 label on list fix 2022-10-04 10:46:28 +03:00
Yuri Kuznetsov 616d65023b oidc auth 2022-10-04 09:41:40 +03:00
Yuri Kuznetsov ea001812e2 Merge branch 'master' of https://github.com/espocrm/espocrm 2022-10-04 09:40:39 +03:00
Yuri Kuznetsov b7925f6d1f Merge branch 'fix' 2022-10-04 09:40:24 +03:00
David e7d1cbd5ca setup action views in modal with unset model (#2462)
Co-authored-by: David Moškoř <david.moskor@apertia.cz>
2022-10-03 21:17:31 +03:00
Yuri Kuznetsov b165d54ad6 request get parsed body form data support 2022-10-03 15:32:21 +03:00
David 25afbffda8 added other reserved keywords (#2461)
Co-authored-by: David Moškoř <david.moskor@apertia.cz>
2022-10-03 08:57:26 +03:00
Yuri Kuznetsov 77f7db3592 acl cache clearer 2022-09-30 16:38:58 +03:00
Yuri Kuznetsov 3f950cb615 fix login 2022-09-27 17:53:19 +03:00
Yuri Kuznetsov a0e2b1a9b6 fix login 2022-09-27 17:18:33 +03:00
Yuri Kuznetsov c50b043e52 Merge branch 'fix' 2022-09-27 10:04:10 +03:00
Yuri Kuznetsov b99091eb3a ref 2022-09-27 09:41:28 +03:00
Yuri Kuznetsov 450cd80f62 Merge branch 'fix' 2022-09-27 08:57:58 +03:00
Yuri Kuznetsov 0b9d52d30d color fix 2022-09-26 17:41:36 +03:00
Yuri Kuznetsov 6e9b125818 calendar today bg change 2022-09-26 17:07:32 +03:00
Yuri Kuznetsov 93146dffd6 authTokenSecretDisabled system 2022-09-26 13:47:22 +03:00
Yuri Kuznetsov 07d3e982ef date-time step 60 2022-09-26 13:08:30 +03:00
Yuri Kuznetsov 865078a7f9 shortcut framework take into account action availability 2022-09-26 12:56:29 +03:00
Yuri Kuznetsov 14eafb6121 Merge branch 'fix' 2022-09-26 12:46:18 +03:00
Yuri Kuznetsov 0d1ce3ee90 typoe fix 2022-09-26 12:43:50 +03:00
Yuri Kuznetsov 638654d52e credentialsHeader 2022-09-26 12:14:36 +03:00
Yuri Kuznetsov 3c0f7ca93e login handler changes 2022-09-26 10:22:35 +03:00
Yuri Kuznetsov c5c9862c68 ref cs 2022-09-25 18:25:07 +03:00
Yuri Kuznetsov 452ea6f1ef ref 2022-09-24 20:29:04 +03:00
Yuri Kuznetsov c5fe7bca21 login handler framework 2022-09-24 16:56:10 +03:00
Yuri Kuznetsov 60922ac7cd ref 2022-09-24 12:08:07 +03:00
Yuri Kuznetsov 97b7f4adfa require promise fix 2022-09-23 18:01:58 +03:00
Yuri Kuznetsov 895a2f7f2f ref 2022-09-23 15:49:08 +03:00
Yuri Kuznetsov 25bcb9a49d ref 2022-09-23 15:34:03 +03:00
Yuri Kuznetsov ebf8d58a5e jsdoc 2022-09-23 15:10:43 +03:00
Yuri Kuznetsov 8d5cf689ee ref 2022-09-23 14:27:04 +03:00
Yuri Kuznetsov e72f348dc8 cs fix 2022-09-23 14:21:14 +03:00
Yuri Kuznetsov caaf651a2e type fix 2022-09-23 14:20:13 +03:00
Yuri Kuznetsov 8e62ed2fb8 login as another user 2022-09-23 14:02:31 +03:00
Yuri Kuznetsov d5058d9399 fix 2022-09-23 13:57:33 +03:00
Yuri Kuznetsov 4279e86526 fix typo 2022-09-23 12:07:50 +03:00
Yuri Kuznetsov 0691e469e5 cs fix and types 2022-09-23 12:04:50 +03:00
Yuri Kuznetsov 90cd54410b fix page title 2022-09-23 11:49:34 +03:00
Yuri Kuznetsov 546bb56c86 working time range assignment checker 2022-09-23 11:44:54 +03:00
Yuri Kuznetsov 340f82cc4b idea cs 2022-09-23 11:38:19 +03:00
Yuri Kuznetsov 81f10127fa Merge branch 'fix' 2022-09-23 11:06:34 +03:00
Yuri Kuznetsov 8d12148722 Merge branch 'fix' 2022-09-21 14:45:32 +03:00
Yuri Kuznetsov 70000efc0a app doAction public 2022-09-21 14:26:49 +03:00
Yuri Kuznetsov 31de034d45 storage support null 2022-09-21 12:35:14 +03:00
Yuri Kuznetsov 94cef5d4a2 cs fix 2022-09-20 13:51:44 +03:00
Yuri Kuznetsov 3a97076790 date-time value object support from string w/o seconds 2022-09-20 13:32:02 +03:00
Yuri Kuznetsov 3dfaae167f working time function fixes 2022-09-19 18:17:21 +03:00
Yuri Kuznetsov 4d7e56e7b7 working calendar 2022-09-19 17:07:16 +03:00
Yuri Kuznetsov c0f3fdb226 Merge branch 'fix' 2022-09-19 10:55:26 +03:00
Yuri Kuznetsov 6f37c54ff6 fix typo 2022-09-18 11:11:38 +03:00
Yuri Kuznetsov a6ca10fdc8 email mass move to folder 2022-09-18 11:09:22 +03:00
Yuri Kuznetsov 07d7afb5b4 fix 2022-09-17 19:55:37 +03:00
Yuri Kuznetsov cae9b04f80 date fields validation 2022-09-17 19:52:33 +03:00
Yuri Kuznetsov edf4e6c9e4 date add methods 2022-09-17 19:22:26 +03:00
Yuri Kuznetsov 9857a61744 field validator 2022-09-11 18:09:59 +03:00
4089 changed files with 104562 additions and 52845 deletions
+15 -7
View File
@@ -1,17 +1,25 @@
## Pull Requests
Before we can merge your pull request you need to accept our CLA [here](https://github.com/espocrm/cla). It's very simple to do.
Before we can merge your pull request, you need to accept our CLA [here](https://github.com/espocrm/cla).
See [Code Style Guidelines](https://github.com/espocrm/espocrm/wiki/Code-Style-Guidelines).
It's desirable that one PR solves one specific problem. Do not include code style changes to PRs
(unless the main purpose of the PR is a code style fix).
If you would like to contribute something that is not a small fix, it's reasonable to create an issue first
(a bug report or feature request).
Branches:
* *hotfix/** upcoming maintenance release; fixes should be pushed to this branch;
* *master* develop branch; new features should be pushed to this branch;
* *stable* last stable release.
* *master* the develop branch; new features should be pushed to here;
* *fix* the upcoming maintenance release; small fixes should be pushed to here.
## Issues
When reporting a possible bug please provide detail steps so that we will be able to reproduce the issue. Please try not to use phrases like "very big bug", "huge issue", etc. No need to use exclamation marks as well.
We'd appreciate if you prefer posting issues on weekdays rather than weekends.
Note that we don't provide developer help or any kind of support on Github. Please use our [forum](https://forum.espocrm.com) for this.
When reporting a possible bug, please provide detail steps so that we will be able
to reproduce the issue. Please try not to use phrases like "very big bug",
"huge issue", etc. No need to use exclamation marks as well.
Note that we don't provide developer help or any kind of support on GitHub.
For this, please use our [forum](https://forum.espocrm.com).
+1 -1
View File
@@ -2,7 +2,7 @@
## Reporting a vulnerability
If you believe you have discovered a vulnerability in EspoCRM please contacts us via [this](https://www.espocrm.com/contacts/) or [this](https://www.espocrm.com/support/) forms.
If you believe you have discovered a vulnerability in EspoCRM, please contacts us via [this](https://www.espocrm.com/contacts/) or [this](https://www.espocrm.com/support/) forms. Or create a private vulnerability report on GitHub.
## Supported versions
+63
View File
@@ -0,0 +1,63 @@
name: Test Integration on PostgreSQL
on:
schedule:
- cron: '0 11 * * *'
jobs:
test:
name: Test on PHP ${{ matrix.php-versions }}
runs-on: ubuntu-20.04
env:
TEST_DATABASE_HOST: '127.0.0.1'
TEST_DATABASE_PLATFORM: 'Postgresql'
TEST_DATABASE_CHARSET: 'utf8'
TEST_DATABASE_PORT: '8888'
TEST_DATABASE_NAME: integration_test
TEST_DATABASE_USER: postgres
TEST_DATABASE_PASSWORD: password
services:
postgres:
image: postgres:15.2
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: password
POSTGRES_DB: integration_test
ports:
- '8888:5432'
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
strategy:
fail-fast: false
matrix:
php-versions: ['8.2']
branches: ['master']
steps:
- uses: actions/checkout@v2
with:
ref: ${{ matrix.branches }}
- name: Setup Node.js
uses: actions/setup-node@v1
with:
node-version: 16.x
- name: Setup PHP with Composer
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-versions }}
tools: composer:v2
ini-values: memory_limit=1024M
- name: NPM install
run: npm install
- name: Build
run: grunt test
- name: Integration testing
run: vendor/bin/phpunit --testsuite integration-pg
+1 -2
View File
@@ -19,7 +19,6 @@ jobs:
image: mysql:8.0
env:
MYSQL_ALLOW_EMPTY_PASSWORD: false
MYSQ_USER: root
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: integration_test
ports:
@@ -28,7 +27,7 @@ jobs:
strategy:
fail-fast: false
matrix:
php-versions: ['7.4', '8.1']
php-versions: ['8.0', '8.1', '8.2']
branches: ['master']
steps:
+1 -1
View File
@@ -26,7 +26,7 @@ jobs:
runs-on: ubuntu-20.04
strategy:
matrix:
php-versions: ['7.4', '8.0', '8.1']
php-versions: ['8.0', '8.1', '8.2']
steps:
- uses: actions/checkout@v2
+1
View File
@@ -3,3 +3,4 @@
!/codeStyles
!/fileTemplates
!/inspectionProfiles
!misc.xml
+14
View File
@@ -2,10 +2,24 @@
<code_scheme name="Project" version="173">
<PHPCodeStyleSettings>
<option name="GROUP_USE_WRAP" value="2" />
<option name="VARIABLE_NAMING_STYLE" value="CAMEL_CASE" />
<option name="KEEP_RPAREN_AND_LBRACE_ON_ONE_LINE" value="true" />
<option name="FORCE_EMPTY_METHODS_IN_ONE_LINE" value="true" />
</PHPCodeStyleSettings>
<codeStyleSettings language="JSON">
<indentOptions>
<option name="INDENT_SIZE" value="4" />
</indentOptions>
</codeStyleSettings>
<codeStyleSettings language="PHP">
<option name="KEEP_FIRST_COLUMN_COMMENT" value="false" />
<option name="KEEP_CONTROL_STATEMENT_IN_ONE_LINE" value="false" />
<option name="CATCH_ON_NEW_LINE" value="true" />
<option name="FINALLY_ON_NEW_LINE" value="true" />
<option name="ALIGN_MULTILINE_PARAMETERS" value="false" />
<option name="ALIGN_MULTILINE_FOR" value="false" />
<option name="METHOD_PARAMETERS_RPAREN_ON_NEXT_LINE" value="true" />
<option name="METHOD_CALL_CHAIN_WRAP" value="5" />
</codeStyleSettings>
</code_scheme>
</component>
+2
View File
@@ -14,6 +14,8 @@
</inspection_tool>
<inspection_tool class="PhpSwitchStatementWitSingleBranchInspection" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
<inspection_tool class="PsalmAdvanceCallableParamsInspection" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="SqlDialectInspection" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="SqlNoDataSourceInspection" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="TrivialIfJS" enabled="false" level="WARNING" enabled_by_default="false" />
</profile>
</component>
+7
View File
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="PhpEntryPointsManager">
<pattern value="\Espo\Controllers\*" member="*Action*" />
<pattern value="\Espo\Modules\*\Controllers\*" member="*Action*" />
</component>
</project>
+5 -4
View File
@@ -2,7 +2,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -21,10 +21,10 @@
/**
* * `grunt` - full build;
* * `grunt dev` - build only items needed for development (takes less time);
* * `grunt dev` - build for development;
* * `grunt offline` - build but skip *composer install*;
* * `grunt internal` - build only libs and css;
* * `grunt release` - full build plus upgrade packages`;
* * `grunt release` - full build zipped with upgrade packages`;
* * `grunt test` - build for tests running;
* * `grunt run-tests` - build and run unit and integration tests.
*/
@@ -503,7 +503,8 @@ module.exports = grunt => {
grunt.registerTask('dev', [
'composer-install-dev',
'less',
'npm-install',
'internal',
]);
grunt.registerTask('test', [
+23 -9
View File
@@ -2,16 +2,26 @@
[![PHPStan level 8](https://img.shields.io/badge/PHPStan-level%208-brightgreen)](#espocrm)
[EspoCRM is an Open Source CRM](https://www.espocrm.com) (Customer Relationship Management) software that allows you to see, enter and evaluate all your company relationships regardless of the type. People, companies or opportunities all in an easy and intuitive interface.
[EspoCRM is an Open Source CRM](https://www.espocrm.com) (Customer Relationship Management)
software that allows you to see, enter and evaluate all your company relationships regardless
of the type. People, companies or opportunities all in an easy and intuitive interface.
It's a web application with a frontend designed as a single page application and REST API backend written in PHP.
It's a web application with a frontend designed as a single page application and REST API
backend written in PHP.
[Download](https://www.espocrm.com/download/) the latest release from our website.
[Download](https://www.espocrm.com/download/) the latest release from our website. Release notes
and release packages are available at [Releases](https://github.com/espocrm/espocrm/releases) on GitHub.
![Screenshot](https://user-images.githubusercontent.com/1006792/226094559-995dfd2a-a18f-4619-a21b-79a4e671990a.png)
### Demo
You can try the CRM on the online [demo](https://www.espocrm.com/demo/).
### Requirements
* PHP 7.4 and later (with pdo, json, gd, openssl, zip, imap, mbstring, curl extensions);
* MySQL 5.7 (and later), or MariaDB 10.1 (and later).
* PHP 8.0 and later;
* MySQL 5.7 (and later), or MariaDB 10.2 (and later).
For more information about server configuration see [this article](https://docs.espocrm.com/administration/server-configuration/).
@@ -21,11 +31,12 @@ The documentation for administrators, users and developers is available [here](h
### Bug reporting
Create an issue [here](https://github.com/espocrm/espocrm/issues) or post on our [forum](http://forum.espocrm.com/forum/bug-reports).
Create an issue [here](https://github.com/espocrm/espocrm/issues) or post on our [forum](https://forum.espocrm.com/forum/bug-reports).
We'd appreciate if you prefer posting issues on weekdays rather than weekends.
### Installing the stable version
See the [instructions](https://docs.espocrm.com/administration/installation/) about installation.
See the [instructions](https://docs.espocrm.com/administration/installation/) on installation.
### Development
@@ -35,11 +46,14 @@ See the [instructions](https://docs.espocrm.com/administration/installation/) ab
### Contributing
Before we can merge your pull request you need to accept our CLA [here](https://github.com/espocrm/cla). It's very simple to do.
Before we can merge your pull request, you need to accept our CLA [here](https://github.com/espocrm/cla). It's very simple to do.
Contribute translations to [POEditor](https://poeditor.com/join/project/gLDKZtUF4i). Changes
are usually merged to the GitHub repository before minor releases.
Branches:
* *fix* upcoming maintenance release; fixes should be pushed to this branch;
* *fix* upcoming maintenance release; minor fixes should be pushed to this branch;
* *master* develop branch; new features should be pushed to this branch;
* *stable* last stable release.
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -27,13 +27,24 @@
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
namespace Espo\Core\Binding;
namespace Espo;
class DefaultBinding implements BindingProcessor
use Espo\Core\Binding\Binder;
use Espo\Core\Binding\BindingProcessor;
use Espo\Core\Binding\Key\NamedClassKey;
/**
* Default binding for the dependency injection framework. Custom binding should be set up in
* `Espo\Modules\{ModuleName}\Binding` or `Espo\Custom\Binding`.
*
* @link https://docs.espocrm.com/development/di/#binding.
*/
class Binding implements BindingProcessor
{
public function process(Binder $binder): void
{
$this->bindServices($binder);
$this->bindCore($binder);
$this->bindMisc($binder);
$this->bindAcl($binder);
$this->bindWebSocket($binder);
@@ -53,7 +64,12 @@ class DefaultBinding implements BindingProcessor
);
$binder->bindService(
'Espo\\Core\\Container\\Container',
'Espo\\Core\\Container',
'container'
);
$binder->bindService(
'Psr\\Container\\ContainerInterface',
'container'
);
@@ -62,6 +78,16 @@ class DefaultBinding implements BindingProcessor
'module'
);
$binder->bindService(
'Espo\\Core\\Utils\\Config',
'config'
);
$binder->bindService(
'Espo\\Core\\Utils\\File\\Manager',
'fileManager'
);
$binder->bindService(
'Espo\\ORM\\EntityManager',
'entityManager'
@@ -108,7 +134,7 @@ class DefaultBinding implements BindingProcessor
);
$binder->bindService(
'Espo\\Core\\SelectBuilderFactory',
'Espo\\Core\\Select\\SelectBuilderFactory',
'selectBuilderFactory'
);
@@ -128,7 +154,7 @@ class DefaultBinding implements BindingProcessor
);
$binder->bindService(
'Espo\\Core\\Utils\\HookManager',
'Espo\\Core\\HookManager',
'hookManager'
);
@@ -153,12 +179,12 @@ class DefaultBinding implements BindingProcessor
);
$binder->bindService(
'Espo\\Core\\Utils\\Language $baseLanguage',
NamedClassKey::create('Espo\\Core\\Utils\\Language', 'baseLanguage'),
'baseLanguage'
);
$binder->bindService(
'Espo\\Core\\Utils\\Language $defaultLanguage',
NamedClassKey::create('Espo\\Core\\Utils\\Language', 'defaultLanguage'),
'defaultLanguage'
);
@@ -173,7 +199,7 @@ class DefaultBinding implements BindingProcessor
);
$binder->bindService(
'Espo\\Core\\AclManager $internalAclManager',
NamedClassKey::create('Espo\\Core\\AclManager', 'internalAclManager'),
'internalAclManager'
);
@@ -198,8 +224,8 @@ class DefaultBinding implements BindingProcessor
);
$binder->bindService(
'Espo\\Core\\Acl',
'acl'
'Espo\\Core\\Utils\\ClientManager',
'clientManager'
);
$binder->bindService(
@@ -208,6 +234,14 @@ class DefaultBinding implements BindingProcessor
);
}
private function bindCore(Binder $binder): void
{
$binder->bindImplementation(
'Espo\\ORM\\PDO\\PDOProvider',
'Espo\\ORM\\PDO\\DefaultPDOProvider'
);
}
private function bindMisc(Binder $binder): void
{
$binder->bindImplementation(
@@ -219,6 +253,35 @@ class DefaultBinding implements BindingProcessor
'Espo\\Core\\Sms\\Sender',
'Espo\\Core\\Sms\\SenderFactory'
);
$binder->bindImplementation(
'Espo\\Core\\Authentication\\Jwt\\KeyFactory',
'Espo\\Core\\Authentication\\Jwt\\DefaultKeyFactory'
);
$binder
->for('Espo\\Core\\Authentication\\Oidc\\TokenValidator')
->bindImplementation(
'Espo\\Core\\Authentication\\Jwt\\SignatureVerifierFactory',
'Espo\\Core\\Authentication\\Oidc\\DefaultSignatureVerifierFactory'
);
$binder
->for('Espo\\Core\\Authentication\\Oidc\\Login')
->bindImplementation(
'Espo\\Core\\Authentication\\Oidc\\UserProvider',
'Espo\\Core\\Authentication\\Oidc\\UserProvider\\DefaultUserProvider'
);
$binder->bindImplementation(
'Espo\\Core\\Mail\\Importer\\ParentFinder',
'Espo\\Core\\Mail\\Importer\\DefaultParentFinder'
);
$binder->bindImplementation(
'Espo\\Core\\Mail\\Importer\\DuplicateFinder',
'Espo\\Core\\Mail\\Importer\\DefaultDuplicateFinder'
);
}
private function bindAcl(Binder $binder): void
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,16 +29,13 @@
namespace Espo\Classes\Acl\ActionHistoryRecord;
use Espo\Entities\ActionHistoryRecord;
use Espo\Entities\User;
use Espo\ORM\Entity;
use Espo\Core\{
Acl\OwnershipOwnChecker,
};
use Espo\Core\Acl\OwnershipOwnChecker;
/**
* @implements OwnershipOwnChecker<\Espo\Entities\ActionHistoryRecord>
* @implements OwnershipOwnChecker<ActionHistoryRecord>
*/
class OwnershipChecker implements OwnershipOwnChecker
{
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,22 +29,17 @@
namespace Espo\Classes\Acl\Attachment;
use Espo\Entities\{
User,
Note,
Attachment,
};
use Espo\Entities\Attachment;
use Espo\Entities\Note;
use Espo\Entities\Settings;
use Espo\Entities\User;
use Espo\ORM\Entity;
use Espo\Core\{
ORM\EntityManager,
AclManager,
Acl\ScopeData,
Acl\DefaultAccessChecker,
Acl\AccessEntityCREDChecker,
Acl\Traits\DefaultAccessCheckerDependency,
};
use Espo\Core\Acl\AccessEntityCREDChecker;
use Espo\Core\Acl\DefaultAccessChecker;
use Espo\Core\Acl\ScopeData;
use Espo\Core\Acl\Traits\DefaultAccessCheckerDependency;
use Espo\Core\AclManager;
use Espo\Core\ORM\EntityManager;
/**
* @implements AccessEntityCREDChecker<Attachment>
@@ -53,9 +48,8 @@ class AccessChecker implements AccessEntityCREDChecker
{
use DefaultAccessCheckerDependency;
private $aclManager;
private $entityManager;
private AclManager $aclManager;
private EntityManager $entityManager;
public function __construct(
DefaultAccessChecker $defaultAccessChecker,
@@ -71,7 +65,7 @@ class AccessChecker implements AccessEntityCREDChecker
{
/** @var Attachment $entity */
if ($entity->get('parentType') === 'Settings') {
if ($entity->get('parentType') === Settings::ENTITY_TYPE) {
// Allow the logo.
return true;
}
@@ -99,7 +93,7 @@ class AccessChecker implements AccessEntityCREDChecker
return false;
}
if ($parent->getEntityType() === 'Note') {
if ($parent->getEntityType() === Note::ENTITY_TYPE) {
/** @var Note $parent */
$result = $this->checkEntityReadNoteParent($user, $parent);
@@ -145,7 +139,7 @@ class AccessChecker implements AccessEntityCREDChecker
if ($note->getTargetType() === Note::TARGET_USERS) {
$isRelated = $this->entityManager
->getRDBRepository('Note')
->getRDBRepository(Note::ENTITY_TYPE)
->getRelation($note, 'users')
->isRelated($user);
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,16 +29,13 @@
namespace Espo\Classes\Acl\Attachment;
use Espo\Entities\Attachment;
use Espo\Entities\User;
use Espo\ORM\Entity;
use Espo\Core\{
Acl\OwnershipOwnChecker,
};
use Espo\Core\Acl\OwnershipOwnChecker;
/**
* @implements OwnershipOwnChecker<\Espo\Entities\Attachment>
* @implements OwnershipOwnChecker<Attachment>
*/
class OwnershipChecker implements OwnershipOwnChecker
{
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,24 +29,20 @@
namespace Espo\Classes\Acl\AuthToken;
use Espo\Entities\AuthToken;
use Espo\Entities\User;
use Espo\Core\{
Acl\ScopeData,
Acl\DefaultAccessChecker,
Acl\AccessEntityCREDChecker,
Acl\Traits\DefaultAccessCheckerDependency,
};
use Espo\Core\Acl\AccessEntityCREDChecker;
use Espo\Core\Acl\DefaultAccessChecker;
use Espo\Core\Acl\ScopeData;
use Espo\Core\Acl\Traits\DefaultAccessCheckerDependency;
/**
* @implements AccessEntityCREDChecker<\Espo\Entities\AuthToken>
* @implements AccessEntityCREDChecker<AuthToken>
*/
class AccessChecker implements AccessEntityCREDChecker
{
use DefaultAccessCheckerDependency;
private $defaultAccessChecker;
public function __construct(DefaultAccessChecker $defaultAccessChecker)
{
$this->defaultAccessChecker = $defaultAccessChecker;
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -31,19 +31,15 @@ namespace Espo\Classes\Acl\Email;
use Espo\Entities\User;
use Espo\Entities\Email;
use Espo\ORM\Entity;
use Espo\Core\{
Acl\Table,
Acl\ScopeData,
Acl\DefaultAccessChecker,
Acl\AccessEntityCREDSChecker,
Acl\Traits\DefaultAccessCheckerDependency,
};
use Espo\Core\Acl\AccessEntityCREDSChecker;
use Espo\Core\Acl\DefaultAccessChecker;
use Espo\Core\Acl\ScopeData;
use Espo\Core\Acl\Table;
use Espo\Core\Acl\Traits\DefaultAccessCheckerDependency;
/**
* @implements AccessEntityCREDSChecker<\Espo\Entities\Email>
* @implements AccessEntityCREDSChecker<Email>
*/
class AccessChecker implements AccessEntityCREDSChecker
{
@@ -129,7 +125,10 @@ class AccessChecker implements AccessEntityCREDSChecker
return false;
}
if ($entity->get('status') !== 'Sent' && $entity->get('status') !== 'Archived') {
if (
$entity->getStatus() !== Email::STATUS_SENT &&
$entity->getStatus() !== Email::STATUS_ARCHIVED
) {
return true;
}
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -30,12 +30,8 @@
namespace Espo\Classes\Acl\Email;
use Espo\Entities\User;
use Espo\ORM\Entity;
use Espo\Core\{
Acl\DefaultAssignmentChecker,
};
use Espo\Core\Acl\DefaultAssignmentChecker;
class AssignmentChecker extends DefaultAssignmentChecker
{
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -34,15 +34,13 @@ use Espo\Entities\Email;
use Espo\ORM\Entity;
use Espo\Core\{
Acl\DefaultOwnershipChecker,
Acl\OwnershipOwnChecker,
Acl\OwnershipTeamChecker,
};
use Espo\Core\Acl\DefaultOwnershipChecker;
use Espo\Core\Acl\OwnershipOwnChecker;
use Espo\Core\Acl\OwnershipTeamChecker;
/**
* @implements OwnershipOwnChecker<\Espo\Entities\Email>
* @implements OwnershipTeamChecker<\Espo\Entities\Email>
* @implements OwnershipOwnChecker<Email>
* @implements OwnershipTeamChecker<Email>
*/
class OwnershipChecker implements OwnershipOwnChecker, OwnershipTeamChecker
{
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,51 +29,56 @@
namespace Espo\Classes\Acl\EmailFilter;
use Espo\Entities\EmailAccount;
use Espo\Entities\User;
use Espo\Entities\EmailFilter;
use Espo\ORM\Entity;
use Espo\Core\{
Acl\OwnershipOwnChecker,
ORM\EntityManager,
};
use Espo\Core\Acl\OwnershipOwnChecker;
use Espo\Core\ORM\EntityManager;
/**
* @implements OwnershipOwnChecker<\Espo\Entities\EmailFilter>
* @implements OwnershipOwnChecker<EmailFilter>
*/
class OwnershipChecker implements OwnershipOwnChecker
{
private $entityManager;
private EntityManager $entityManager;
public function __construct(EntityManager $entityManager)
{
$this->entityManager = $entityManager;
}
/**
* @param EmailFilter $entity
*/
public function checkOwn(User $user, Entity $entity): bool
{
if (!$entity->has('parentId') || !$entity->has('parentType')) {
if ($entity->isGlobal()) {
return false;
}
$parentType = $entity->get('parentType');
$parentId = $entity->get('parentId');
$parentType = $entity->getParentType();
$parentId = $entity->getParentId();
if (!$parentType || !$parentId) {
return false;
}
$parent = $this->entityManager->getEntity($parentType, $parentId);
$parent = $this->entityManager->getEntityById($parentType, $parentId);
if (!$parent) {
return false;
}
if ($parent->getEntityType() === 'User') {
if ($parent->getEntityType() === User::ENTITY_TYPE) {
return $parent->getId() === $user->getId();
}
if ($parent->has('assignedUserId') && $parent->get('assignedUserId') === $user->getId()) {
if (
$parent instanceof EmailAccount &&
$parent->has('assignedUserId') &&
$parent->get('assignedUserId') === $user->getId()
) {
return true;
}
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,19 +29,16 @@
namespace Espo\Classes\Acl\Import;
use Espo\Entities\Import;
use Espo\Entities\User;
use Espo\ORM\Entity;
use Espo\Core\{
Acl\ScopeData,
Acl\AccessEntityReadChecker,
Acl\AccessEntityDeleteChecker,
};
use Espo\Core\Acl\AccessEntityDeleteChecker;
use Espo\Core\Acl\AccessEntityReadChecker;
use Espo\Core\Acl\ScopeData;
/**
* @implements AccessEntityReadChecker<\Espo\Entities\Import>
* @implements AccessEntityDeleteChecker<\Espo\Entities\Import>
* @implements AccessEntityReadChecker<Import>
* @implements AccessEntityDeleteChecker<Import>
*/
class AccessChecker implements AccessEntityReadChecker, AccessEntityDeleteChecker
{
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -31,40 +31,32 @@ namespace Espo\Classes\Acl\Note;
use Espo\Entities\Note;
use Espo\Entities\User;
use Espo\ORM\Entity;
use Espo\Core\{
Acl\ScopeData,
Acl\DefaultAccessChecker,
Acl\AccessEntityCREDChecker,
Acl\Traits\DefaultAccessCheckerDependency,
AclManager,
ORM\EntityManager,
Utils\Config,
};
use Espo\Core\Acl\AccessEntityCREDChecker;
use Espo\Core\Acl\DefaultAccessChecker;
use Espo\Core\Acl\ScopeData;
use Espo\Core\Acl\Traits\DefaultAccessCheckerDependency;
use Espo\Core\AclManager;
use Espo\Core\ORM\EntityManager;
use Espo\Core\Utils\Config;
use DateTime;
use Exception;
/**
* @implements AccessEntityCREDChecker<\Espo\Entities\Note>
* @implements AccessEntityCREDChecker<Note>
*/
class AccessChecker implements AccessEntityCREDChecker
{
use DefaultAccessCheckerDependency;
private const EDIT_PERIOD = '7 days';
private const DELETE_PERIOD = '1 month';
private $defaultAccessChecker;
private $aclManager;
private $entityManager;
private $config;
private DefaultAccessChecker $defaultAccessChecker;
private AclManager $aclManager;
private EntityManager $entityManager;
private Config $config;
public function __construct(
DefaultAccessChecker $defaultAccessChecker,
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -31,13 +31,11 @@ namespace Espo\Classes\Acl\Note;
use Espo\Entities\Note;
use Espo\Entities\User;
use Espo\ORM\Entity;
use Espo\Core\Acl\OwnershipOwnChecker;
/**
* @implements OwnershipOwnChecker<\Espo\Entities\Note>
* @implements OwnershipOwnChecker<Note>
*/
class OwnershipChecker implements OwnershipOwnChecker
{
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,16 +29,13 @@
namespace Espo\Classes\Acl\Notification;
use Espo\Entities\Notification;
use Espo\Entities\User;
use Espo\ORM\Entity;
use Espo\Core\{
Acl\OwnershipOwnChecker,
};
use Espo\Core\Acl\OwnershipOwnChecker;
/**
* @implements OwnershipOwnChecker<\Espo\Entities\Notification>
* @implements OwnershipOwnChecker<Notification>
*/
class OwnershipChecker implements OwnershipOwnChecker
{
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,27 +29,24 @@
namespace Espo\Classes\Acl\Portal;
use Espo\Entities\Portal;
use Espo\Entities\User;
use Espo\Core\{
Acl\ScopeData,
Acl\DefaultAccessChecker,
Acl\AccessEntityCREDChecker,
Acl\Traits\DefaultAccessCheckerDependency,
Acl\Table,
AclManager,
};
use Espo\Core\Acl\AccessEntityCREDChecker;
use Espo\Core\Acl\DefaultAccessChecker;
use Espo\Core\Acl\ScopeData;
use Espo\Core\Acl\Table;
use Espo\Core\Acl\Traits\DefaultAccessCheckerDependency;
use Espo\Core\AclManager;
/**
* @implements AccessEntityCREDChecker<\Espo\Entities\Portal>
* @implements AccessEntityCREDChecker<Portal>
*/
class AccessChecker implements AccessEntityCREDChecker
{
use DefaultAccessCheckerDependency;
private $defaultAccessChecker;
private $aclManager;
private DefaultAccessChecker $defaultAccessChecker;
private AclManager $aclManager;
public function __construct(DefaultAccessChecker $defaultAccessChecker, AclManager $aclManager)
{
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,25 +29,22 @@
namespace Espo\Classes\Acl\ScheduledJob;
use Espo\Entities\ScheduledJob;
use Espo\Entities\User;
use Espo\ORM\Entity;
use Espo\Core\{
Acl\ScopeData,
Acl\DefaultAccessChecker,
Acl\AccessEntityCREDChecker,
Acl\Traits\DefaultAccessCheckerDependency,
};
use Espo\Core\Acl\AccessEntityCREDChecker;
use Espo\Core\Acl\DefaultAccessChecker;
use Espo\Core\Acl\ScopeData;
use Espo\Core\Acl\Traits\DefaultAccessCheckerDependency;
/**
* @implements AccessEntityCREDChecker<\Espo\Entities\ScheduledJob>
* @implements AccessEntityCREDChecker<ScheduledJob>
*/
class AccessChecker implements AccessEntityCREDChecker
{
use DefaultAccessCheckerDependency;
private $defaultAccessChecker;
private DefaultAccessChecker $defaultAccessChecker;
public function __construct(DefaultAccessChecker $defaultAccessChecker)
{
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,16 +29,13 @@
namespace Espo\Classes\Acl\Team;
use Espo\Entities\Team;
use Espo\Entities\User;
use Espo\ORM\Entity;
use Espo\Core\{
Acl\OwnershipOwnChecker,
};
use Espo\Core\Acl\OwnershipOwnChecker;
/**
* @implements OwnershipOwnChecker<\Espo\Entities\Team>
* @implements OwnershipOwnChecker<Team>
*/
class OwnershipChecker implements OwnershipOwnChecker
{
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -30,17 +30,13 @@
namespace Espo\Classes\Acl\User;
use Espo\Entities\User;
use Espo\ORM\Entity;
use Espo\Core\{
Acl\Table,
Acl\ScopeData,
Acl\DefaultAccessChecker,
Acl\AccessEntityCREDSChecker,
Acl\Traits\DefaultAccessCheckerDependency,
AclManager,
};
use Espo\Core\Acl\AccessEntityCREDSChecker;
use Espo\Core\Acl\DefaultAccessChecker;
use Espo\Core\Acl\ScopeData;
use Espo\Core\Acl\Table;
use Espo\Core\Acl\Traits\DefaultAccessCheckerDependency;
use Espo\Core\AclManager;
/**
* @implements AccessEntityCREDSChecker<User>
@@ -49,9 +45,8 @@ class AccessChecker implements AccessEntityCREDSChecker
{
use DefaultAccessCheckerDependency;
private $defaultAccessChecker;
private $aclManager;
private DefaultAccessChecker $defaultAccessChecker;
private AclManager $aclManager;
public function __construct(DefaultAccessChecker $defaultAccessChecker, AclManager $aclManager)
{
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -32,15 +32,12 @@ namespace Espo\Classes\Acl\User;
use Espo\Entities\User;
use Espo\ORM\Entity;
use Espo\Core\ORM\Entity as CoreEntity;
use Espo\Core\{
Acl\OwnershipOwnChecker,
Acl\OwnershipTeamChecker,
};
use Espo\Core\Acl\OwnershipOwnChecker;
use Espo\Core\Acl\OwnershipTeamChecker;
/**
* @implements OwnershipOwnChecker<\Espo\Entities\User>
* @implements OwnershipTeamChecker<\Espo\Entities\User>
* @implements OwnershipOwnChecker<User>
* @implements OwnershipTeamChecker<User>
*/
class OwnershipChecker implements OwnershipOwnChecker, OwnershipTeamChecker
{
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -30,25 +30,20 @@
namespace Espo\Classes\Acl\Webhook;
use Espo\Entities\User;
use Espo\Entities\Webhook;
use Espo\ORM\Entity;
use Espo\Core\{
Acl\ScopeData,
Acl\DefaultAccessChecker,
Acl\AccessEntityCREDChecker,
Acl\Traits\DefaultAccessCheckerDependency,
};
use Espo\Core\Acl\AccessEntityCREDChecker;
use Espo\Core\Acl\DefaultAccessChecker;
use Espo\Core\Acl\ScopeData;
use Espo\Core\Acl\Traits\DefaultAccessCheckerDependency;
/**
* @implements AccessEntityCREDChecker<\Espo\Entities\Webhook>
* @implements AccessEntityCREDChecker<Webhook>
*/
class AccessChecker implements AccessEntityCREDChecker
{
use DefaultAccessCheckerDependency;
private $defaultAccessChecker;
public function __construct(DefaultAccessChecker $defaultAccessChecker)
{
$this->defaultAccessChecker = $defaultAccessChecker;
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -0,0 +1,89 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* EspoCRM is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with EspoCRM. If not, see http://www.gnu.org/licenses/.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU General Public License version 3.
*
* In accordance with Section 7(b) of the GNU General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
namespace Espo\Classes\Acl\WorkingTimeRange;
use Espo\Core\Acl\AssignmentChecker as AssignmentCheckerInterface;
use Espo\Core\Acl\DefaultAssignmentChecker;
use Espo\Core\AclManager;
use Espo\Entities\User;
use Espo\Entities\WorkingTimeRange;
use Espo\ORM\Entity;
use Espo\ORM\EntityManager;
/**
* @implements AssignmentCheckerInterface<WorkingTimeRange>
*/
class AssignmentChecker implements AssignmentCheckerInterface
{
private DefaultAssignmentChecker $defaultAssignmentChecker;
private AclManager $aclManager;
private EntityManager $entityManager;
public function __construct(
DefaultAssignmentChecker $defaultAssignmentChecker,
AclManager $aclManager,
EntityManager $entityManager
) {
$this->defaultAssignmentChecker = $defaultAssignmentChecker;
$this->aclManager = $aclManager;
$this->entityManager = $entityManager;
}
/**
* @param WorkingTimeRange $entity
*/
public function check(User $user, Entity $entity): bool
{
$result = $this->defaultAssignmentChecker->check($user, $entity);
if (!$result) {
return false;
}
if (!$entity->isAttributeChanged('usersIds')) {
return true;
}
$users = $this->entityManager
->getRDBRepositoryByClass(User::class)
->where(['id' => $entity->getUsers()->getIdList()])
->find();
foreach ($users as $targetUser) {
$accessToUser = $this->aclManager->check($user, $targetUser);
if (!$accessToUser) {
return false;
}
}
return true;
}
}
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,22 +29,17 @@
namespace Espo\Classes\AclPortal\Attachment;
use Espo\Entities\{
User,
Note,
Attachment,
};
use Espo\Entities\Attachment;
use Espo\Entities\Note;
use Espo\Entities\Settings;
use Espo\Entities\User;
use Espo\ORM\Entity;
use Espo\Core\{
ORM\EntityManager,
Portal\AclManager,
Acl\ScopeData,
Acl\AccessEntityCREDChecker,
Portal\Acl\DefaultAccessChecker,
Portal\Acl\Traits\DefaultAccessCheckerDependency,
};
use Espo\Core\Acl\AccessEntityCREDChecker;
use Espo\Core\Acl\ScopeData;
use Espo\Core\ORM\EntityManager;
use Espo\Core\Portal\Acl\DefaultAccessChecker;
use Espo\Core\Portal\Acl\Traits\DefaultAccessCheckerDependency;
use Espo\Core\Portal\AclManager;
/**
* @implements AccessEntityCREDChecker<Attachment>
@@ -53,11 +48,9 @@ class AccessChecker implements AccessEntityCREDChecker
{
use DefaultAccessCheckerDependency;
private $defaultAccessChecker;
private $aclManager;
private $entityManager;
private DefaultAccessChecker $defaultAccessChecker;
private AclManager $aclManager;
private EntityManager $entityManager;
public function __construct(
DefaultAccessChecker $defaultAccessChecker,
@@ -73,7 +66,7 @@ class AccessChecker implements AccessEntityCREDChecker
{
/** @var Attachment $entity */
if ($entity->get('parentType') === 'Settings') {
if ($entity->get('parentType') === Settings::ENTITY_TYPE) {
// Allow the logo.
return true;
}
@@ -101,7 +94,7 @@ class AccessChecker implements AccessEntityCREDChecker
return false;
}
if ($parent->getEntityType() === 'Note') {
if ($parent->getEntityType() === Note::ENTITY_TYPE) {
/** @var Note $parent */
$result = $this->checkEntityReadNoteParent($user, $parent);
@@ -151,7 +144,7 @@ class AccessChecker implements AccessEntityCREDChecker
if ($note->getTargetType() === Note::TARGET_USERS) {
$isRelated = $this->entityManager
->getRDBRepository('Note')
->getRDBRepository(Note::ENTITY_TYPE)
->getRelation($note, 'users')
->isRelated($user);
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,16 +29,13 @@
namespace Espo\Classes\AclPortal\Attachment;
use Espo\Entities\Attachment;
use Espo\Entities\User;
use Espo\ORM\Entity;
use Espo\Core\{
Acl\OwnershipOwnChecker,
};
use Espo\Core\Acl\OwnershipOwnChecker;
/**
* @implements OwnershipOwnChecker<\Espo\Entities\Attachment>
* @implements OwnershipOwnChecker<Attachment>
*/
class OwnershipChecker implements OwnershipOwnChecker
{
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,29 +29,23 @@
namespace Espo\Classes\AclPortal\Email;
use Espo\Entities\Email;
use Espo\Entities\User;
use Espo\ORM\Entity;
use Espo\Core\ORM\Entity as CoreEntity;
use Espo\Core\{
Acl\Table,
Acl\ScopeData,
Acl\AccessEntityCREDSChecker,
Portal\Acl\DefaultAccessChecker,
Portal\Acl\Traits\DefaultAccessCheckerDependency,
};
use Espo\Core\Acl\AccessEntityCREDSChecker;
use Espo\Core\Acl\ScopeData;
use Espo\Core\Acl\Table;
use Espo\Core\Portal\Acl\DefaultAccessChecker;
use Espo\Core\Portal\Acl\Traits\DefaultAccessCheckerDependency;
/**
* @implements AccessEntityCREDSChecker<\Espo\Entities\Email>
* @implements AccessEntityCREDSChecker<Email>
*/
class AccessChecker implements AccessEntityCREDSChecker
{
use DefaultAccessCheckerDependency;
private $defaultAccessChecker;
public function __construct(
DefaultAccessChecker $defaultAccessChecker
) {
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,16 +29,13 @@
namespace Espo\Classes\AclPortal\Email;
use Espo\Entities\Email;
use Espo\Entities\User;
use Espo\ORM\Entity;
use Espo\Core\{
Acl\OwnershipOwnChecker,
};
use Espo\Core\Acl\OwnershipOwnChecker;
/**
* @implements OwnershipOwnChecker<\Espo\Entities\Email>
* @implements OwnershipOwnChecker<Email>
*/
class OwnershipChecker implements OwnershipOwnChecker
{
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -31,40 +31,32 @@ namespace Espo\Classes\AclPortal\Note;
use Espo\Entities\Note;
use Espo\Entities\User;
use Espo\ORM\Entity;
use Espo\Core\{
Portal\AclManager,
Acl\ScopeData,
Acl\AccessEntityCREDChecker,
Portal\Acl\DefaultAccessChecker,
Portal\Acl\Traits\DefaultAccessCheckerDependency,
ORM\EntityManager,
Utils\Config,
};
use Espo\Core\Acl\AccessEntityCREDChecker;
use Espo\Core\Acl\ScopeData;
use Espo\Core\ORM\EntityManager;
use Espo\Core\Portal\Acl\DefaultAccessChecker;
use Espo\Core\Portal\Acl\Traits\DefaultAccessCheckerDependency;
use Espo\Core\Portal\AclManager;
use Espo\Core\Utils\Config;
use DateTime;
use Exception;
/**
* @implements AccessEntityCREDChecker<\Espo\Entities\Note>
* @implements AccessEntityCREDChecker<Note>
*/
class AccessChecker implements AccessEntityCREDChecker
{
use DefaultAccessCheckerDependency;
private const EDIT_PERIOD = '7 days';
private const DELETE_PERIOD = '1 month';
private $defaultAccessChecker;
private $aclManager;
private $entityManager;
private $config;
private DefaultAccessChecker $defaultAccessChecker;
private AclManager $aclManager;
private EntityManager $entityManager;
private Config $config;
public function __construct(
DefaultAccessChecker $defaultAccessChecker,
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -31,13 +31,11 @@ namespace Espo\Classes\AclPortal\Note;
use Espo\Entities\Note;
use Espo\Entities\User;
use Espo\ORM\Entity;
use Espo\Core\Acl\OwnershipOwnChecker;
/**
* @implements OwnershipOwnChecker<\Espo\Entities\Note>
* @implements OwnershipOwnChecker<Note>
*/
class OwnershipChecker implements OwnershipOwnChecker
{
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,16 +29,13 @@
namespace Espo\Classes\AclPortal\Notification;
use Espo\Entities\Notification;
use Espo\Entities\User;
use Espo\ORM\Entity;
use Espo\Core\{
Acl\OwnershipOwnChecker,
};
use Espo\Core\Acl\OwnershipOwnChecker;
/**
* @implements OwnershipOwnChecker<\Espo\Entities\Notification>
* @implements OwnershipOwnChecker<Notification>
*/
class OwnershipChecker implements OwnershipOwnChecker
{
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -30,15 +30,11 @@
namespace Espo\Classes\AclPortal\User;
use Espo\Entities\User;
use Espo\ORM\Entity;
use Espo\Core\{
Acl\OwnershipOwnChecker,
};
use Espo\Core\Acl\OwnershipOwnChecker;
/**
* @implements OwnershipOwnChecker<\Espo\Entities\User>
* @implements OwnershipOwnChecker<User>
*/
class OwnershipChecker implements OwnershipOwnChecker
{
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
+6 -8
View File
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,16 +29,14 @@
namespace Espo\Classes\AppInfo;
use Espo\Core\{
Utils\Module,
Binding\EspoBindingLoader,
Binding\Binding as BindingItem,
Console\Command\Params,
};
use Espo\Core\Binding\Binding as BindingItem;
use Espo\Core\Binding\EspoBindingLoader;
use Espo\Core\Console\Command\Params;
use Espo\Core\Utils\Module;
class Binding
{
private $module;
private Module $module;
public function __construct(Module $module)
{
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
+1 -1
View File
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -0,0 +1,92 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* EspoCRM is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with EspoCRM. If not, see http://www.gnu.org/licenses/.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU General Public License version 3.
*
* In accordance with Section 7(b) of the GNU General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
namespace Espo\Classes\AppParams;
use Espo\Entities\Extension;
use Espo\Entities\User;
use Espo\ORM\EntityManager;
use Espo\Tools\App\AppParam;
use stdClass;
class Extensions implements AppParam
{
private User $user;
private EntityManager $entityManager;
public function __construct(
User $user,
EntityManager $entityManager
) {
$this->user = $user;
$this->entityManager = $entityManager;
}
/**
* @return stdClass[]
*/
public function get(): array
{
if (!$this->user->isRegular() && !$this->user->isAdmin()) {
return [];
}
$extensionList = $this->entityManager
->getRDBRepositoryByClass(Extension::class)
->where([
'licenseStatus' => [
Extension::LICENSE_STATUS_INVALID,
Extension::LICENSE_STATUS_EXPIRED,
Extension::LICENSE_STATUS_SOFT_EXPIRED,
],
])
->find();
$list = [];
foreach ($extensionList as $extension) {
$list[] = (object) [
'name' => $extension->getName(),
'version' => $extension->getVersion(),
'licenseStatus' => $extension->getLicenseStatus(),
'licenseStatusMessage' => $extension->getLicenseStatusMessage(),
'isInstalled' => $extension->isInstalled(),
'notify' => in_array(
$extension->getLicenseStatus(),
[
Extension::LICENSE_STATUS_INVALID,
Extension::LICENSE_STATUS_EXPIRED,
]
)
];
}
return $list;
}
}
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,11 +29,10 @@
namespace Espo\Classes\AppParams;
use Espo\Core\{
Acl,
Select\SelectBuilderFactory,
ORM\EntityManager,
};
use Espo\Core\Acl;
use Espo\Core\ORM\EntityManager;
use Espo\Core\Select\SelectBuilderFactory;
use Espo\Entities\Template;
use Espo\Tools\App\AppParam;
/**
@@ -42,9 +41,7 @@ use Espo\Tools\App\AppParam;
class TemplateEntityTypeList implements AppParam
{
private Acl $acl;
private SelectBuilderFactory $selectBuilderFactory;
private EntityManager $entityManager;
public function __construct(
@@ -62,7 +59,7 @@ class TemplateEntityTypeList implements AppParam
*/
public function get(): array
{
if (!$this->acl->checkScope('Template')) {
if (!$this->acl->checkScope(Template::ENTITY_TYPE)) {
return [];
}
@@ -70,7 +67,7 @@ class TemplateEntityTypeList implements AppParam
$query = $this->selectBuilderFactory
->create()
->from('Template')
->from(Template::ENTITY_TYPE)
->withAccessControlFilter()
->buildQueryBuilder()
->select(['entityType'])
@@ -78,12 +75,12 @@ class TemplateEntityTypeList implements AppParam
->build();
$templateCollection = $this->entityManager
->getRDBRepository('Template')
->getRDBRepositoryByClass(Template::class)
->clone($query)
->find();
foreach ($templateCollection as $template) {
$list[] = $template->get('entityType');
$list[] = $template->getTargetEntityType();
}
return $list;
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,65 +29,61 @@
namespace Espo\Classes\AssignmentNotificators;
use Espo\Services\Email as EmailService;
use Espo\Services\Stream as StreamService;
use Espo\Core\Field\DateTime;
use Espo\Entities\EmailAddress;
use Espo\Entities\EmailFolder;
use Espo\Modules\Crm\Entities\Account;
use Espo\Modules\Crm\Entities\Contact;
use Espo\Modules\Crm\Entities\Lead;
use Espo\Tools\Stream\Service as StreamService;
use Espo\Core\Notification\AssignmentNotificator;
use Espo\Core\Notification\AssignmentNotificator\Params;
use Espo\Core\Notification\UserEnabledChecker;
use Espo\Core\InjectableFactory;
use Espo\Core\AclManager;
use Espo\ORM\EntityManager;
use Espo\ORM\Entity;
use Espo\Entities\User;
use Espo\Entities\Notification;
use Espo\Entities\Email as EmailEntity;
use Espo\Repositories\Email as EmailRepository;
use Espo\Repositories\EmailAddress as EmailAddressRepository;
use Espo\Tools\Email\Util;
use DateTime;
use Exception;
/**
* @implements AssignmentNotificator<EmailEntity>
*/
class Email implements AssignmentNotificator
{
private const DAYS_THRESHOLD = 2;
private ?StreamService $streamService = null;
private $user;
private $entityManager;
private $injectableFactory;
private $aclManager;
private $userChecker;
private User $user;
private EntityManager $entityManager;
private UserEnabledChecker $userChecker;
private AclManager $aclManager;
private StreamService $streamService;
public function __construct(
User $user,
EntityManager $entityManager,
UserEnabledChecker $userChecker,
InjectableFactory $injectableFactory,
AclManager $aclManager
AclManager $aclManager,
StreamService $streamService
) {
$this->user = $user;
$this->entityManager = $entityManager;
$this->userChecker = $userChecker;
$this->injectableFactory = $injectableFactory;
$this->aclManager = $aclManager;
$this->streamService = $streamService;
}
/**
* @param EmailEntity $entity
*/
public function process(Entity $entity, Params $params): void
{
/** @var EmailEntity $entity */
if (
!in_array(
$entity->get('status'),
$entity->getStatus(),
[
EmailEntity::STATUS_ARCHIVED,
EmailEntity::STATUS_SENT,
@@ -109,26 +105,19 @@ class Email implements AssignmentNotificator
}
}
$dateSent = $entity->get('dateSent');
$dateSent = $entity->getDateSent();
if (!$dateSent) {
return;
}
try {
$dt = new DateTime($dateSent);
}
catch (Exception $e) {
return;
}
if ($dt->diff(new DateTime())->days > self::DAYS_THRESHOLD) {
if ($dateSent->diff(DateTime::createNow())->days > self::DAYS_THRESHOLD) {
return;
}
$emailUserIdList = $entity->get('usersIds');
if (is_null($emailUserIdList) || !is_array($emailUserIdList)) {
if (!is_array($emailUserIdList)) {
return;
}
@@ -146,13 +135,13 @@ class Email implements AssignmentNotificator
$data = [
'emailId' => $entity->getId(),
'emailName' => $entity->get('name'),
'emailName' => $entity->getSubject(),
];
/** @var EmailRepository $emailRepository */
$emailRepository = $this->entityManager->getRepository('Email');
$emailRepository = $this->entityManager->getRepository(EmailEntity::ENTITY_TYPE);
/** @var EmailAddressRepository $emailAddressRepository */
$emailAddressRepository = $this->entityManager->getRepository('EmailAddress');
$emailAddressRepository = $this->entityManager->getRepository(EmailAddress::ENTITY_TYPE);
if (!$entity->has('from')) {
$emailRepository->loadFromField($entity);
@@ -167,7 +156,11 @@ class Email implements AssignmentNotificator
$from = $entity->get('from');
if ($from) {
$person = $emailAddressRepository->getEntityByAddress($from, null, ['User', 'Contact', 'Lead']);
$person = $emailAddressRepository->getEntityByAddress($from, null, [
User::ENTITY_TYPE,
Contact::ENTITY_TYPE,
Lead::ENTITY_TYPE,
]);
if ($person) {
$data['personEntityType'] = $person->getEntityType();
@@ -178,12 +171,12 @@ class Email implements AssignmentNotificator
$userIdFrom = null;
if ($person && $person->getEntityType() === 'User') {
if ($person && $person->getEntityType() === User::ENTITY_TYPE) {
$userIdFrom = $person->getId();
}
if (empty($data['personEntityId'])) {
$data['fromString'] = EmailService::parseFromName($entity->get('fromString'));
$data['fromString'] = Util::parseFromName($entity->getFromString());
if (empty($data['fromString']) && $from) {
$data['fromString'] = $from;
@@ -192,8 +185,8 @@ class Email implements AssignmentNotificator
$parent = null;
$parentId = $entity->get('parentId');
$parentType = $entity->get('parentType');
$parentId = $entity->getParentId();
$parentType = $entity->getParentType();
if ($parentType && $parentId) {
$parent = $this->entityManager->getEntityById($parentType, $parentId);
@@ -201,10 +194,10 @@ class Email implements AssignmentNotificator
$account = null;
$accountId = $entity->get('accountId');
$accountLink = $entity->getAccount();
if ($accountId) {
$account = $this->entityManager->getEntityById('Account', $accountId);
if ($accountLink) {
$account = $this->entityManager->getEntityById(Account::ENTITY_TYPE, $accountLink->getId());
}
foreach ($userIdList as $userId) {
@@ -216,11 +209,15 @@ class Email implements AssignmentNotificator
continue;
}
if ($entity->getLinkMultipleColumn('users', 'inTrash', $userId)) {
if ($entity->getLinkMultipleColumn('users', EmailEntity::USERS_COLUMN_IN_TRASH, $userId)) {
continue;
}
if (!$this->userChecker->checkAssignment('Email', $userId)) {
if ($entity->getLinkMultipleColumn('users', EmailEntity::USERS_COLUMN_IS_READ, $userId)) {
continue;
}
if (!$this->userChecker->checkAssignment(EmailEntity::ENTITY_TYPE, $userId)) {
continue;
}
@@ -228,25 +225,24 @@ class Email implements AssignmentNotificator
$params->getOption('isBeingImported') ||
$params->getOption('isJustSent')
) {
$folderId = $entity->getLinkMultipleColumn('users', 'folderId', $userId);
$folderId = $entity->getLinkMultipleColumn('users', EmailEntity::USERS_COLUMN_FOLDER_ID, $userId);
if ($folderId) {
if (
$this->entityManager
->getRDBRepository('EmailFolder')
->where([
'id' => $folderId,
'skipNotifications' => true,
])
->count()
) {
continue;
}
if (
$folderId &&
$this->entityManager
->getRDBRepositoryByClass(EmailFolder::class)
->where([
'id' => $folderId,
'skipNotifications' => true,
])
->count()
) {
continue;
}
}
/** @var User|null $user */
$user = $this->entityManager->getEntity('User', $userId);
/** @var ?User $user */
$user = $this->entityManager->getEntityById(User::ENTITY_TYPE, $userId);
if (!$user) {
continue;
@@ -256,18 +252,18 @@ class Email implements AssignmentNotificator
continue;
}
if (!$this->aclManager->checkScope($user, 'Email')) {
if (!$this->aclManager->checkScope($user, EmailEntity::ENTITY_TYPE)) {
continue;
}
$isArchivedOrBeingImported =
$entity->get('status') === EmailEntity::STATUS_ARCHIVED ||
$entity->getStatus() === EmailEntity::STATUS_ARCHIVED ||
$params->getOption('isBeingImported');
if (
$isArchivedOrBeingImported &&
$parent &&
$this->getStreamService()->checkIsFollowed($parent, $userId)
$this->streamService->checkIsFollowed($parent, $userId)
) {
continue;
}
@@ -275,7 +271,7 @@ class Email implements AssignmentNotificator
if (
$isArchivedOrBeingImported &&
$account &&
$this->getStreamService()->checkIsFollowed($account, $userId)
$this->streamService->checkIsFollowed($account, $userId)
) {
continue;
}
@@ -286,7 +282,7 @@ class Email implements AssignmentNotificator
'type' => Notification::TYPE_EMAIL_RECEIVED,
'userId' => $userId,
'relatedId' => $entity->getId(),
'relatedType' => 'Email',
'relatedType' => EmailEntity::ENTITY_TYPE,
])
->select(['id'])
->findOne();
@@ -300,17 +296,8 @@ class Email implements AssignmentNotificator
'userId' => $userId,
'data' => $data,
'relatedId' => $entity->getId(),
'relatedType' => 'Email',
'relatedType' => EmailEntity::ENTITY_TYPE,
]);
}
}
private function getStreamService(): StreamService
{
if (empty($this->streamService)) {
$this->streamService = $this->injectableFactory->create(StreamService::class);
}
return $this->streamService;
}
}
+1 -1
View File
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -40,7 +40,6 @@ use Espo\Entities\PasswordChangeRequest;
class PasswordChangeRequests implements Cleanup
{
private Config $config;
private EntityManager $entityManager;
private string $cleanupPeriod = '30 days';
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -31,18 +31,19 @@ namespace Espo\Classes\Cleanup;
use Espo\Core\Cleanup\Cleanup;
use Espo\Core\Utils\Config;
use Espo\Core\Utils\DateTime as DateTimeUtil;
use Espo\Modules\Crm\Entities\Reminder;
use Espo\ORM\EntityManager;
use DateTime;
class Reminders implements Cleanup
{
private $config;
private $entityManager;
private string $cleanupRemindersPeriod = '15 days';
private Config $config;
private EntityManager $entityManager;
public function __construct(Config $config, EntityManager $entityManager)
{
$this->config = $config;
@@ -60,9 +61,9 @@ class Reminders implements Cleanup
$delete = $this->entityManager
->getQueryBuilder()
->delete()
->from('Reminder')
->from(Reminder::ENTITY_TYPE)
->where([
'remindAt<' => $dt->format('Y-m-d'),
'remindAt<' => $dt->format(DateTimeUtil::SYSTEM_DATE_TIME_FORMAT),
])
->build();
@@ -0,0 +1,137 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* EspoCRM is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with EspoCRM. If not, see http://www.gnu.org/licenses/.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU General Public License version 3.
*
* In accordance with Section 7(b) of the GNU General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
namespace Espo\Classes\Cleanup;
use Espo\Core\Cleanup\Cleanup;
use Espo\Core\Field\DateTime;
use Espo\Core\Utils\Config;
use Espo\Core\Utils\Metadata;
use Espo\Entities\Subscription;
use Espo\ORM\EntityManager;
use Espo\ORM\Query\Part\Condition as Cond;
class Subscribers implements Cleanup
{
private const PERIOD = '2 months';
private Metadata $metadata;
private EntityManager $entityManager;
private Config $config;
public function __construct(
Metadata $metadata,
EntityManager $entityManager,
Config $config
) {
$this->metadata = $metadata;
$this->entityManager = $entityManager;
$this->config = $config;
}
public function process(): void
{
if (!$this->config->get('cleanupSubscribers')) {
return;
}
/** @var string[] $scopeList */
$scopeList = array_keys($this->metadata->get(['scopes']) ?? []);
/** @var string[] $scopeList */
$scopeList = array_values(array_filter(
$scopeList,
fn ($item) => (bool) $this->metadata->get(['scopes', $item, 'stream'])
));
foreach ($scopeList as $scope) {
$this->processEntityType($scope);
}
}
private function processEntityType(string $entityType): void
{
/** @var ?array<string, mixed> $data */
$data = $this->metadata->get(['streamDefs', $entityType, 'subscribersCleanup']);
if (!($data['enabled'] ?? false)) {
return;
}
/** @var string $dateField */
$dateField = $data['dateField'] ?? 'createdAt';
/** @var ?string[] $statusList */
$statusList = $data['statusList'] ?? null;
/** @var ?string $statusField */
$statusField = $this->metadata->get(['scopes', $entityType, 'statusField']);
if ($statusList === null || $statusField === null) {
return;
}
/** @var string $period */
$period = $this->metadata->get(['streamDefs', $entityType, 'subscribersCleanup', 'period']) ??
$this->config->get('cleanupSubscribersPeriod') ??
self::PERIOD;
$before = DateTime::createNow()->modify('-' . $period);
$query = $this->entityManager
->getQueryBuilder()
->delete()
->from(Subscription::ENTITY_TYPE, 'subscription')
->join(
$entityType,
'entity',
Cond::equal(
Cond::column('entity.id'),
Cond::column('entityId')
)
)
->where(
Cond::and(
Cond::equal(
Cond::column('entityType'),
$entityType
),
Cond::less(
Cond::column('entity.' . $dateField),
$before->getString()
),
Cond::in(
Cond::column('entity.' . $statusField),
$statusList
)
)
)
->build();
$this->entityManager->getQueryExecutor()->execute($query);
}
}
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -0,0 +1,102 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* EspoCRM is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with EspoCRM. If not, see http://www.gnu.org/licenses/.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU General Public License version 3.
*
* In accordance with Section 7(b) of the GNU General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
namespace Espo\Classes\ConsoleCommands;
use Espo\Core\Console\Command;
use Espo\Core\Console\Command\Params;
use Espo\Core\Console\IO;
use Espo\Core\Utils\Config;
use Espo\Entities\User;
use Espo\ORM\EntityManager;
use RuntimeException;
class CreateAdminUser implements Command
{
public function __construct(
private EntityManager $entityManager,
private Config $config
) {}
public function run(Params $params, IO $io): void
{
$userName = $params->getArgument(0);
if (!$userName) {
$io->writeLine("A username must be specified as the first argument.");
$io->setExitStatus(1);
return;
}
/** @var ?string $regExp */
$regExp = $this->config->get('userNameRegularExpression');
if (!$regExp) {
throw new RuntimeException("No `userNameRegularExpression` in config.");
}
if (
str_contains($userName, ' ') ||
preg_replace("/{$regExp}/", '_', $userName) !== $userName
) {
$io->writeLine("Not allowed username.");
$io->setExitStatus(1);
return;
}
$repository = $this->entityManager->getRDBRepositoryByClass(User::class);
$existingUser = $repository
->where(['userName' => $userName])
->findOne();
if ($existingUser) {
$io->writeLine("A user with the same username already exists.");
$io->setExitStatus(1);
return;
}
$user = $repository->getNew();
$user->set('userName', $userName);
$user->set('type', User::TYPE_ADMIN);
$user->set('name', $userName);
$repository->save($user);
$message = "The user '{$userName}' has been created. " .
"Set password with the command: `bin/command set-password {$userName}`.";
$io->writeLine($message);
}
}
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -32,26 +32,16 @@ namespace Espo\Classes\ConsoleCommands;
use Espo\Tools\Import\Service;
use Espo\Core\Utils\File\Manager as FileManager;
use Espo\Core\{
Console\Command,
Console\Command\Params,
Console\IO,
};
use Espo\Core\Console\Command;
use Espo\Core\Console\Command\Params;
use Espo\Core\Console\IO;
use Throwable;
class Import implements Command
{
private Service $service;
private FileManager $fileManager;
public function __construct(Service $service, FileManager $fileManager)
{
$this->service = $service;
$this->fileManager = $fileManager;
}
public function __construct(private Service $service, private FileManager $fileManager)
{}
public function run(Params $params, IO $io) : void
{
@@ -0,0 +1,108 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* EspoCRM is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with EspoCRM. If not, see http://www.gnu.org/licenses/.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU General Public License version 3.
*
* In accordance with Section 7(b) of the GNU General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
namespace Espo\Classes\ConsoleCommands;
use Espo\Core\Console\Command;
use Espo\Core\Console\Command\Params;
use Espo\Core\Console\IO;
use Espo\Core\Exceptions\Error;
use Espo\Core\ORM\Entity as CoreEntity;
use Espo\Entities\ArrayValue;
use Espo\ORM\Entity;
use Espo\ORM\EntityManager;
use Espo\Repositories\ArrayValue as ArrayValueRepository;
class PopulateArrayValues implements Command
{
private EntityManager $entityManager;
public function __construct(EntityManager $entityManager)
{
$this->entityManager = $entityManager;
}
/**
* @throws Error
*/
public function run(Params $params, IO $io): void
{
$entityType = $params->getArgument(0);
$field = $params->getArgument(1);
if (!$entityType || !$field) {
throw new Error("Entity type and field should be passed as arguments.");
}
if (!$this->entityManager->hasRepository($entityType)) {
throw new Error("Bad entity type.");
}
$defs = $this->entityManager->getDefs()->getEntity($entityType);
if (!$defs->hasAttribute($field)) {
throw new Error("Bad field.");
}
if ($defs->getAttribute($field)->getType() !== Entity::JSON_ARRAY) {
throw new Error("Non-array field.");
}
if ($defs->getAttribute($field)->isNotStorable()) {
throw new Error("Not-storable field.");
}
if (!$defs->getAttribute($field)->getParam('storeArrayValues')) {
throw new Error("Array values disabled for the field..");
}
$collection = $this->entityManager
->getRDBRepository($entityType)
->sth()
->find();
/** @var ArrayValueRepository $repository */
$repository = $this->entityManager->getRepository(ArrayValue::ENTITY_TYPE);
foreach ($collection as $i => $entity) {
if (!$entity instanceof CoreEntity) {
throw new Error();
}
$repository->storeEntityAttribute($entity, $field);
if ($i % 1000 === 0) {
$io->write('.');
}
}
$io->writeLine('');
$io->writeLine('Done.');
}
}
@@ -0,0 +1,115 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* EspoCRM is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with EspoCRM. If not, see http://www.gnu.org/licenses/.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU General Public License version 3.
*
* In accordance with Section 7(b) of the GNU General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
namespace Espo\Classes\ConsoleCommands;
use Espo\Core\Console\Command;
use Espo\Core\Console\Command\Params;
use Espo\Core\Console\Exceptions\ArgumentNotSpecified;
use Espo\Core\Console\Exceptions\InvalidArgument;
use Espo\Core\Console\IO;
use Espo\Core\Exceptions\Error;
use Espo\Core\FieldProcessing\NextNumber\BeforeSaveProcessor;
use Espo\Core\ORM\Entity as CoreEntity;
use Espo\Core\ORM\Repository\Option\SaveOption;
use Espo\ORM\EntityManager;
use Espo\ORM\Query\Part\Order;
class PopulateNumbers implements Command
{
private BeforeSaveProcessor $beforeSaveProcessor;
private EntityManager $entityManager;
public function __construct(
BeforeSaveProcessor $beforeSaveProcessor,
EntityManager $entityManager
) {
$this->beforeSaveProcessor = $beforeSaveProcessor;
$this->entityManager = $entityManager;
}
/**
* @throws Error
*/
public function run(Params $params, IO $io): void
{
$entityType = $params->getArgument(0);
$field = $params->getArgument(1);
$orderBy = $params->getOption('orderBy') ?? 'createdAt';
$order = strtoupper($params->getOption('order') ?? Order::ASC);
if (!$entityType) {
throw new ArgumentNotSpecified("No entity type argument.");
}
if (!$field) {
throw new ArgumentNotSpecified("No field argument.");
}
if ($order !== Order::ASC && $order !== Order::DESC) {
throw new InvalidArgument("Bad order option.");
}
$fieldType = $this->entityManager
->getDefs()
->getEntity($entityType)
->getField($field)
->getType();
if ($fieldType !== 'number') {
throw new InvalidArgument("Field `{$field}` is not of `number` type.");
}
$collection = $this->entityManager
->getRDBRepository($entityType)
->where([
$field => null,
])
->order($orderBy, $order)
->sth()
->find();
foreach ($collection as $i => $entity) {
if (!$entity instanceof CoreEntity) {
throw new Error();
}
$this->beforeSaveProcessor->processPopulate($entity, $field);
$this->entityManager->saveEntity($entity, [SaveOption::IMPORT => true]);
if ($i % 1000 === 0) {
$io->write('.');
}
}
$io->writeLine('');
$io->writeLine('Done.');
}
}
@@ -0,0 +1,70 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* EspoCRM is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with EspoCRM. If not, see http://www.gnu.org/licenses/.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU General Public License version 3.
*
* In accordance with Section 7(b) of the GNU General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
namespace Espo\Classes\ConsoleCommands;
use Espo\Core\Console\Command;
use Espo\Core\Console\Command\Params;
use Espo\Core\Console\IO;
use Espo\Tools\CategoryTree\RebuildPaths;
use Exception;
class RebuildCategoryPaths implements Command
{
private RebuildPaths $rebuildPaths;
public function __construct(RebuildPaths $rebuildPaths)
{
$this->rebuildPaths = $rebuildPaths;
}
public function run(Params $params, IO $io): void
{
$entityType = $params->getArgument(0);
if (!$entityType) {
$io->setExitStatus(1);
$io->writeLine("Error: No entity type. Should be specified as the first argument.");
return;
}
try {
$this->rebuildPaths->run($entityType);
}
catch (Exception $e) {
$io->setExitStatus(1);
$io->writeLine("Error: " . $e->getMessage());
return;
}
$io->writeLine("Done.");
}
}
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -33,22 +33,21 @@ use Espo\Core\Duplicate\WhereBuilder;
use Espo\Core\Field\EmailAddressGroup;
use Espo\Core\ORM\Entity as CoreEntity;
use Espo\ORM\{
Query\Part\Condition as Cond,
Query\Part\WhereItem,
Query\Part\Where\OrGroup,
Entity,
};
use Espo\ORM\Entity;
use Espo\ORM\Query\Part\Condition as Cond;
use Espo\ORM\Query\Part\Where\OrGroup;
use Espo\ORM\Query\Part\WhereItem;
/**
* @implements WhereBuilder<CoreEntity>
*/
class Company implements WhereBuilder
{
/**
* @param CoreEntity $entity
*/
public function build(Entity $entity): ?WhereItem
{
assert($entity instanceof CoreEntity);
$orBuilder = OrGroup::createBuilder();
$toCheck = false;
@@ -0,0 +1,54 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* EspoCRM is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with EspoCRM. If not, see http://www.gnu.org/licenses/.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU General Public License version 3.
*
* In accordance with Section 7(b) of the GNU General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
namespace Espo\Classes\DuplicateWhereBuilders;
use Espo\Core\Duplicate\WhereBuilder;
use Espo\ORM\Entity;
use Espo\ORM\Query\Part\Condition as Cond;
use Espo\ORM\Query\Part\WhereItem;
/**
* @implements WhereBuilder<Entity>
*/
class Name implements WhereBuilder
{
public function build(Entity $entity): ?WhereItem
{
if ($entity->get('name')) {
return Cond::equal(
Cond::column('name'),
$entity->get('name')
);
}
return null;
}
}
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -31,27 +31,24 @@ namespace Espo\Classes\DuplicateWhereBuilders;
use Espo\Core\ORM\Entity as CoreEntity;
use Espo\Core\{
Duplicate\WhereBuilder,
Field\EmailAddressGroup,
};
use Espo\Core\Duplicate\WhereBuilder;
use Espo\Core\Field\EmailAddressGroup;
use Espo\ORM\{
Query\Part\Condition as Cond,
Query\Part\WhereItem,
Query\Part\Where\OrGroup,
Entity,
};
use Espo\ORM\Entity;
use Espo\ORM\Query\Part\Condition as Cond;
use Espo\ORM\Query\Part\Where\OrGroup;
use Espo\ORM\Query\Part\WhereItem;
/**
* @implements WhereBuilder<CoreEntity>
*/
class Person implements WhereBuilder
{
/**
* @param CoreEntity $entity
*/
public function build(Entity $entity): ?WhereItem
{
assert($entity instanceof CoreEntity);
$orBuilder = OrGroup::createBuilder();
$toCheck = false;
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -36,43 +36,32 @@ use Espo\ORM\EntityManager;
use Espo\Repositories\EmailAddress as EmailAddressRepository;
use Espo\Entities\EmailAddress;
use Espo\Entities\Email;
use Espo\Core\FieldProcessing\Loader;
use Espo\Core\FieldProcessing\Loader\Params;
use Espo\Core\Mail\Event\Event as EspoEvent;
use Espo\Core\Mail\Event\EventFactory;
use Espo\Core\Utils\Log;
use Espo\Core\{
FieldProcessing\Loader,
FieldProcessing\Loader\Params,
Mail\Event\Event as EspoEvent,
Mail\Event\EventFactory,
Utils\Log,
};
use ICal\Event;
use ICal\ICal;
use Throwable;
use stdClass;
/**
* @implements Loader<\Espo\Entities\Email>
* @implements Loader<Email>
*/
class IcsDataLoader implements Loader
{
private $entityManager;
private $log;
/**
* @var array<string,string>
*/
/** @var array<string, string> */
private $entityTypeLinkMap = [
'User' => 'users',
'Contact' => 'contacts',
'Lead' => 'leads',
];
public function __construct(EntityManager $entityManager, Log $log)
{
$this->entityManager = $entityManager;
$this->log = $log;
}
public function __construct(private EntityManager $entityManager, private Log $log)
{}
public function process(Entity $entity, Params $params): void
{
@@ -86,7 +75,7 @@ class IcsDataLoader implements Loader
$ical->initString($icsContents);
/* @var \ICal\Event|null $event */
/* @var ?Event $event */
$event = $ical->events()[0] ?? null;
if ($event === null) {
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -30,30 +30,22 @@
namespace Espo\Classes\FieldProcessing\Email;
use Espo\ORM\Entity;
use Espo\Repositories\EmailAddress as EmailAddressRepository;
use Espo\Core\{
FieldProcessing\Loader,
FieldProcessing\Loader\Params,
ORM\EntityManager,
};
use Espo\Core\FieldProcessing\Loader;
use Espo\Core\FieldProcessing\Loader\Params;
use Espo\Core\ORM\EntityManager;
use Espo\Entities\Email;
use Espo\Entities\User;
/**
* @implements Loader<\Espo\Entities\Email>
* @implements Loader<Email>
*/
class StringDataLoader implements Loader
{
private $entityManager;
private EntityManager $entityManager;
private User $user;
private $user;
/**
* @var array<string,string>
*/
/** @var array<string, string> */
private $fromEmailAddressNameCache = [];
public function __construct(EntityManager $entityManager, User $user)
@@ -66,21 +58,22 @@ class StringDataLoader implements Loader
{
/** @var Email $entity */
$userEmailAdddressIdList = [];
$userEmailAddressIdList = [];
$emailAddressCollection = $this->entityManager
->getRDBRepository('User')
->getRDBRepository(User::ENTITY_TYPE)
->getRelation($this->user, 'emailAddresses')
->select(['id'])
->find();
foreach ($emailAddressCollection as $emailAddress) {
$userEmailAdddressIdList[] = $emailAddress->getId();
$userEmailAddressIdList[] = $emailAddress->getId();
}
if (
in_array($entity->get('fromEmailAddressId'), $userEmailAdddressIdList) ||
$entity->get('createdById') === $this->user->getId() && $entity->get('status') === Email::STATUS_SENT
in_array($entity->get('fromEmailAddressId'), $userEmailAddressIdList) ||
$entity->get('createdById') === $this->user->getId() &&
$entity->getStatus() === Email::STATUS_SENT
) {
$entity->loadLinkMultipleField('toEmailAddresses');
@@ -114,7 +107,7 @@ class StringDataLoader implements Loader
if (!array_key_exists($fromEmailAddressId, $this->fromEmailAddressNameCache)) {
$person = $this->getEmailAddressRepository()->getEntityByAddressId($fromEmailAddressId, null, true);
$fromName = $person ? $person->get('name') : null;
$fromName = $person?->get('name');
$this->fromEmailAddressNameCache[$fromEmailAddressId] = $fromName;
}
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,24 +29,20 @@
namespace Espo\Classes\FieldProcessing\Email;
use Espo\Entities\Email;
use Espo\ORM\Entity;
use Espo\Core\{
FieldProcessing\Loader,
FieldProcessing\Loader\Params,
ORM\EntityManager,
};
use Espo\Core\FieldProcessing\Loader;
use Espo\Core\FieldProcessing\Loader\Params;
use Espo\Core\ORM\EntityManager;
use Espo\Entities\User;
/**
* @implements Loader<\Espo\Entities\Email>
* @implements Loader<Email>
*/
class UserColumnsLoader implements Loader
{
private $entityManager;
private $user;
private EntityManager $entityManager;
private User $user;
public function __construct(EntityManager $entityManager, User $user)
{
@@ -57,8 +53,12 @@ class UserColumnsLoader implements Loader
public function process(Entity $entity, Params $params): void
{
$emailUser = $this->entityManager
->getRDBRepository('EmailUser')
->select(['isRead', 'isImportant', 'inTrash'])
->getRDBRepository(Email::RELATIONSHIP_EMAIL_USER)
->select([
Email::USERS_COLUMN_IS_READ,
Email::USERS_COLUMN_IS_IMPORTANT,
Email::USERS_COLUMN_IN_TRASH,
])
->where([
'deleted' => false,
'userId' => $this->user->getId(),
@@ -67,17 +67,17 @@ class UserColumnsLoader implements Loader
->findOne();
if (!$emailUser) {
$entity->set('isRead', null);
$entity->clear('isImportant');
$entity->clear('inTrash');
$entity->set(Email::USERS_COLUMN_IS_READ, null);
$entity->clear(Email::USERS_COLUMN_IS_IMPORTANT);
$entity->clear(Email::USERS_COLUMN_IN_TRASH);
return;
}
$entity->set([
'isRead' => $emailUser->get('isRead'),
'isImportant' => $emailUser->get('isImportant'),
'inTrash' => $emailUser->get('inTrash'),
Email::USERS_COLUMN_IS_READ => $emailUser->get(Email::USERS_COLUMN_IS_READ),
Email::USERS_COLUMN_IS_IMPORTANT => $emailUser->get(Email::USERS_COLUMN_IS_IMPORTANT),
Email::USERS_COLUMN_IN_TRASH => $emailUser->get(Email::USERS_COLUMN_IN_TRASH),
]);
}
}
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,27 +29,26 @@
namespace Espo\Classes\FieldProcessing\User;
use Espo\Entities\AuthLogRecord;
use Espo\Entities\AuthToken;
use Espo\Entities\User;
use Espo\ORM\Entity;
use Espo\Core\{
FieldProcessing\Loader,
FieldProcessing\Loader\Params,
ORM\EntityManager,
Acl,
Acl\Table,
};
use Espo\Core\Acl;
use Espo\Core\Acl\Table;
use Espo\Core\FieldProcessing\Loader;
use Espo\Core\FieldProcessing\Loader\Params;
use Espo\Core\ORM\EntityManager;
use DateTime;
use Exception;
/**
* @implements Loader<\Espo\Entities\User>
* @implements Loader<User>
*/
class LastAccessLoader implements Loader
{
private $entityManager;
private $acl;
private EntityManager $entityManager;
private Acl $acl;
public function __construct(EntityManager $entityManager, Acl $acl)
{
@@ -67,7 +66,7 @@ class LastAccessLoader implements Loader
}
$authToken = $this->entityManager
->getRDBRepository('AuthToken')
->getRDBRepository(AuthToken::ENTITY_TYPE)
->select(['id', 'lastAccess'])
->where([
'userId' => $entity->getId(),
@@ -87,7 +86,7 @@ class LastAccessLoader implements Loader
try {
$dt = new DateTime($lastAccess);
}
catch (Exception $e) {}
catch (Exception) {}
}
$where = [
@@ -100,7 +99,7 @@ class LastAccessLoader implements Loader
}
$authLogRecord = $this->entityManager
->getRDBRepository('AuthLogRecord')
->getRDBRepository(AuthLogRecord::ENTITY_TYPE)
->select(['id', 'createdAt'])
->where($where)
->order('requestTime', true)
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -38,17 +38,10 @@ use stdClass;
class ArrayType
{
private Metadata $metadata;
private const DEFAULT_MAX_ITEM_LENGTH = 100;
private Defs $defs;
private const DEFAULT_MAX_LENGTH = 100;
public function __construct(Metadata $metadata, Defs $defs)
{
$this->metadata = $metadata;
$this->defs = $defs;
}
public function __construct(private Metadata $metadata, private Defs $defs)
{}
public function checkRequired(Entity $entity, string $field): bool
{
@@ -181,9 +174,9 @@ class ArrayType
return false;
}
public function checkMaxLength(Entity $entity, string $field, ?int $validationValue): bool
public function checkMaxItemLength(Entity $entity, string $field, ?int $validationValue): bool
{
$maxLength = $validationValue ?? self::DEFAULT_MAX_LENGTH;
$maxLength = $validationValue ?? self::DEFAULT_MAX_ITEM_LENGTH;
/** @var string[] $value */
$value = $entity->get($field) ?? [];
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -0,0 +1,62 @@
<?php
/************************************************************************
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* EspoCRM is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with EspoCRM. If not, see http://www.gnu.org/licenses/.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU General Public License version 3.
*
* In accordance with Section 7(b) of the GNU General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
************************************************************************/
namespace Espo\Classes\FieldValidators\AuthenticationProvider;
use Espo\Core\FieldValidation\Validator;
use Espo\Core\FieldValidation\Validator\Data;
use Espo\Core\FieldValidation\Validator\Failure;
use Espo\Core\Utils\Metadata;
use Espo\Entities\AuthenticationProvider;
use Espo\ORM\Entity;
/**
* @implements Validator<AuthenticationProvider>
*/
class MethodValid implements Validator
{
public function __construct(private Metadata $metadata) {}
public function validate(Entity $entity, string $field, Data $data): ?Failure
{
$value = $entity->get($field);
if (!$value) {
return Failure::create();
}
$isAvailable = $this->metadata->get(['authenticationMethods', $value, 'provider', 'isAvailable']);
if (!$isAvailable) {
return Failure::create();
}
return null;
}
}
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,10 +29,17 @@
namespace Espo\Classes\FieldValidators;
use Espo\Core\Field\Currency;
use Espo\Core\Utils\Config;
use Espo\ORM\BaseEntity;
use Espo\ORM\Entity;
class CurrencyType extends FloatType
{
private const DEFAULT_PRECISION = 13;
public function __construct(private Config $config) {}
protected function isNotEmpty(Entity $entity, string $field): bool
{
return
@@ -40,4 +47,82 @@ class CurrencyType extends FloatType
$entity->has($field . 'Currency') && $entity->get($field . 'Currency') !== null &&
$entity->get($field . 'Currency') !== '';
}
public function checkValid(Entity $entity, string $field): bool
{
if (!$this->isNotEmpty($entity, $field)) {
return true;
}
if ($entity->getAttributeType($field) !== Entity::VARCHAR) {
return true;
}
/** @var string $value */
$value = $entity->get($field);
if (preg_match('/-?[0-9]+\\.?[0-9]*/', $value)) {
return true;
}
return false;
}
public function checkInPermittedRange(Entity $entity, string $field): bool
{
if (!$this->isNotEmpty($entity, $field)) {
return true;
}
if ($entity->getAttributeType($field) !== Entity::VARCHAR) {
return true;
}
if (!$entity instanceof BaseEntity) {
return true;
}
/** @var int $precision */
$precision = $entity->getAttributeParam($field, 'precision') ?? self::DEFAULT_PRECISION;
$value = $entity->get($field);
$currency = Currency::create($value, 'USD');
if ($currency->isNegative()) {
$currency = $currency->multiply(-1);
}
$pad = str_pad('', $precision, '9');
$limit = Currency::create($pad, 'USD');
if ($currency->compare($limit) === 1) {
return false;
}
return true;
}
public function checkValidCurrency(Entity $entity, string $field): bool
{
$attribute = $field . 'Currency';
if (!$entity->has($attribute)) {
return true;
}
$currency = $entity->get($attribute);
$currencyList = $this->config->get('currencyList') ?? [$this->config->get('defaultCurrency')];
if (
$currency === null &&
$entity->has($field) &&
$entity->get($field) === null
) {
return true;
}
return in_array($currency, $currencyList);
}
}
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,8 +29,11 @@
namespace Espo\Classes\FieldValidators;
use Espo\Core\Field\Date;
use Espo\ORM\Entity;
use Exception;
class DateType
{
public function checkRequired(Entity $entity, string $field): bool
@@ -42,4 +45,23 @@ class DateType
{
return $entity->has($field) && $entity->get($field) !== null;
}
public function checkValid(Entity $entity, string $field): bool
{
/** @var ?string $value */
$value = $entity->get($field);
if ($value === null) {
return true;
}
try {
Date::fromString($value);
}
catch (Exception $e) {
return false;
}
return true;
}
}
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,7 +29,10 @@
namespace Espo\Classes\FieldValidators;
use Espo\Core\Field\DateTime;
use Espo\Core\Field\Date;
use Espo\ORM\Entity;
use Exception;
class DatetimeOptionalType extends DatetimeType
{
@@ -50,4 +53,33 @@ class DatetimeOptionalType extends DatetimeType
return false;
}
public function checkValid(Entity $entity, string $field): bool
{
/** @var ?string $dateValue */
$dateValue = $entity->get($field . 'Date');
if ($dateValue !== null) {
try {
Date::fromString($dateValue);
}
catch (Exception $e) {
return false;
}
}
/** @var ?string $value */
$value = $entity->get($field);
if ($value !== null) {
try {
DateTime::fromString($value);
}
catch (Exception $e) {
return false;
}
}
return true;
}
}
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -29,6 +29,29 @@
namespace Espo\Classes\FieldValidators;
use Espo\Core\Field\DateTime;
use Espo\ORM\Entity;
use Exception;
class DatetimeType extends DateType
{
public function checkValid(Entity $entity, string $field): bool
{
/** @var ?string $value */
$value = $entity->get($field);
if ($value === null) {
return true;
}
try {
DateTime::fromString($value);
}
catch (Exception $e) {
return false;
}
return true;
}
}
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -31,11 +31,11 @@ namespace Espo\Classes\FieldValidators;
use Espo\ORM\Entity;
use StdClass;
use stdClass;
class JsonArrayType
{
public function rawCheckArray(StdClass $data, string $field): bool
public function rawCheckArray(stdClass $data, string $field): bool
{
if (isset($data->$field) && !is_array($data->$field)) {
return false;
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify
@@ -3,7 +3,7 @@
* This file is part of EspoCRM.
*
* EspoCRM - Open Source CRM application.
* Copyright (C) 2014-2022 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Copyright (C) 2014-2023 Yurii Kuznietsov, Taras Machyshyn, Oleksii Avramenko
* Website: https://www.espocrm.com
*
* EspoCRM is free software: you can redistribute it and/or modify

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