From a79771aedded61d3d48a6b577c4afc1cda6425e4 Mon Sep 17 00:00:00 2001 From: Yurii Date: Thu, 19 Feb 2026 10:55:00 +0200 Subject: [PATCH 1/3] 9.3.1 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 68334622c2..a863d27152 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "espocrm", - "version": "9.3.0", + "version": "9.3.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "espocrm", - "version": "9.3.0", + "version": "9.3.1", "hasInstallScript": true, "license": "AGPL-3.0-or-later", "dependencies": { diff --git a/package.json b/package.json index 27aafaa707..d26b7059f8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "espocrm", - "version": "9.3.0", + "version": "9.3.1", "description": "Open-source CRM.", "repository": { "type": "git", From 5e2155d7e2ea2c9be6d04d3940ef03dcf73a560c Mon Sep 17 00:00:00 2001 From: Yurii Date: Mon, 23 Feb 2026 15:23:43 +0200 Subject: [PATCH 2/3] fix email subject truncate --- application/Espo/Core/Mail/Importer/DefaultImporter.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/application/Espo/Core/Mail/Importer/DefaultImporter.php b/application/Espo/Core/Mail/Importer/DefaultImporter.php index 9bf198d21f..5491120c27 100644 --- a/application/Espo/Core/Mail/Importer/DefaultImporter.php +++ b/application/Espo/Core/Mail/Importer/DefaultImporter.php @@ -420,8 +420,8 @@ class DefaultImporter implements Importer $subject = '(No Subject)'; } - if (strlen($subject) > self::SUBJECT_MAX_LENGTH) { - $subject = substr($subject, 0, self::SUBJECT_MAX_LENGTH); + if (mb_strlen($subject) > self::SUBJECT_MAX_LENGTH) { + $subject = mb_substr($subject, 0, self::SUBJECT_MAX_LENGTH); } return $subject; From db504a3ee7b15e5f83b78b403757ccfb892ce434 Mon Sep 17 00:00:00 2001 From: Yurii Date: Mon, 23 Feb 2026 17:14:16 +0200 Subject: [PATCH 3/3] test --- tests/unit/Espo/ORM/MysqlQueryComposerTest.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tests/unit/Espo/ORM/MysqlQueryComposerTest.php b/tests/unit/Espo/ORM/MysqlQueryComposerTest.php index 90c9a90e1b..364abbdd2e 100644 --- a/tests/unit/Espo/ORM/MysqlQueryComposerTest.php +++ b/tests/unit/Espo/ORM/MysqlQueryComposerTest.php @@ -2414,6 +2414,15 @@ class MysqlQueryComposerTest extends TestCase $this->assertEquals(['test'], $list); } + public function testGetAllAttributesFromComplexExpression4() + { + $expression = "SUM:('тестван', test1, 'тест', test2, link.test3)"; + + $list = Util::getAllAttributesFromComplexExpression($expression); + + $this->assertEquals(['test1', 'test2', 'link.test3'], $list); + } + public function testComplexExpressionString1(): void { $queryBuilder = new QueryBuilder();