From bb59cda13175a1702fbbd23c1308e0bc60f80fd2 Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Thu, 11 May 2023 12:59:41 +0300 Subject: [PATCH] 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(); + } + } }