From bb59cda13175a1702fbbd23c1308e0bc60f80fd2 Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Thu, 11 May 2023 12:59:41 +0300 Subject: [PATCH 1/3] event upgrade fix --- upgrades/7.4/scripts/AfterUpgrade.php | 37 +++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/upgrades/7.4/scripts/AfterUpgrade.php b/upgrades/7.4/scripts/AfterUpgrade.php index 64112d12a6..7e68c453f0 100644 --- a/upgrades/7.4/scripts/AfterUpgrade.php +++ b/upgrades/7.4/scripts/AfterUpgrade.php @@ -29,6 +29,7 @@ use Espo\Core\Container; use Espo\Core\Utils\Metadata; +use Espo\Core\Templates\Entities\Event; class AfterUpgrade { @@ -44,6 +45,7 @@ class AfterUpgrade ]); $this->fixParent($metadata); + $this->updateEventMetadata($metadata); $metadata->save(); } @@ -69,4 +71,39 @@ class AfterUpgrade } } } + + private function updateEventMetadata(Metadata $metadata): void + { + $defs = $metadata->get(['scopes']); + + foreach ($defs as $entityType => $item) { + $isCustom = $item['isCustom'] ?? false; + $type = $item['type'] ?? false; + + if (!$isCustom || $type !== Event::TEMPLATE_TYPE) { + continue; + } + + if (!is_string($metadata->get(['entityDefs', $entityType, 'fields', 'duration', 'select']))) { + continue; + } + + $metadata->delete('entityDefs', $entityType, 'fields.duration.orderBy'); + + $metadata->set('entityDefs', $entityType, [ + 'fields' => [ + 'duration' => [ + 'select' => [ + 'select' => "TIMESTAMPDIFF_SECOND:(dateStart, dateEnd)" + ], + 'order' => [ + 'order' => [["TIMESTAMPDIFF_SECOND:(dateStart, dateEnd)", "{direction}"]] + ], + ] + ] + ]); + + $metadata->save(); + } + } } From 8dda1321b58d0de0d479e92e3f47375c647b69d7 Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Thu, 11 May 2023 13:12:57 +0300 Subject: [PATCH 2/3] event fix patch upgrade --- upgrades/7.4.4-7.4.5/data.json | 2 + upgrades/7.4.4-7.4.5/scripts/AfterUpgrade.php | 80 +++++++++++++++++++ upgrades/7.4/scripts/AfterUpgrade.php | 2 - 3 files changed, 82 insertions(+), 2 deletions(-) create mode 100644 upgrades/7.4.4-7.4.5/data.json create mode 100644 upgrades/7.4.4-7.4.5/scripts/AfterUpgrade.php diff --git a/upgrades/7.4.4-7.4.5/data.json b/upgrades/7.4.4-7.4.5/data.json new file mode 100644 index 0000000000..2c63c08510 --- /dev/null +++ b/upgrades/7.4.4-7.4.5/data.json @@ -0,0 +1,2 @@ +{ +} diff --git a/upgrades/7.4.4-7.4.5/scripts/AfterUpgrade.php b/upgrades/7.4.4-7.4.5/scripts/AfterUpgrade.php new file mode 100644 index 0000000000..ee12edbff7 --- /dev/null +++ b/upgrades/7.4.4-7.4.5/scripts/AfterUpgrade.php @@ -0,0 +1,80 @@ +updateMetadata($container->get('metadata')); + } + + private function updateMetadata(Metadata $metadata): void + { + $this->updateEventMetadata($metadata); + + $metadata->save(); + } + + private function updateEventMetadata(Metadata $metadata): void + { + $defs = $metadata->get(['scopes']); + + foreach ($defs as $entityType => $item) { + $isCustom = $item['isCustom'] ?? false; + $type = $item['type'] ?? false; + + if (!$isCustom || $type !== Event::TEMPLATE_TYPE) { + continue; + } + + if (!is_string($metadata->get(['entityDefs', $entityType, 'fields', 'duration', 'select']))) { + continue; + } + + $metadata->delete('entityDefs', $entityType, 'fields.duration.orderBy'); + + $metadata->set('entityDefs', $entityType, [ + 'fields' => [ + 'duration' => [ + 'select' => [ + 'select' => "TIMESTAMPDIFF_SECOND:(dateStart, dateEnd)" + ], + 'order' => [ + 'order' => [["TIMESTAMPDIFF_SECOND:(dateStart, dateEnd)", "{direction}"]] + ], + ] + ] + ]); + } + } +} diff --git a/upgrades/7.4/scripts/AfterUpgrade.php b/upgrades/7.4/scripts/AfterUpgrade.php index 7e68c453f0..7cebd3be4b 100644 --- a/upgrades/7.4/scripts/AfterUpgrade.php +++ b/upgrades/7.4/scripts/AfterUpgrade.php @@ -102,8 +102,6 @@ class AfterUpgrade ] ] ]); - - $metadata->save(); } } } From 4faaa2d0823b5707a0c0cbd7c20ddb12ac67d338 Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Thu, 11 May 2023 13:28:01 +0300 Subject: [PATCH 3/3] v --- 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 1cfefde550..07f12ec4f5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "espocrm", - "version": "7.4.4", + "version": "7.4.5", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "espocrm", - "version": "7.4.4", + "version": "7.4.5", "hasInstallScript": true, "license": "GPL-3.0", "dependencies": { diff --git a/package.json b/package.json index 71b88b9a12..42f6ec829d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "espocrm", - "version": "7.4.4", + "version": "7.4.5", "description": "Open-source CRM.", "repository": { "type": "git",