diff --git a/package-lock.json b/package-lock.json index ceb6163f91..7efca6bea4 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 116a62f434..1505c5e00c 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", 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 64112d12a6..7cebd3be4b 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,37 @@ 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}"]] + ], + ] + ] + ]); + } + } }