. * * 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 Affero General Public License version 3. * * In accordance with Section 7(b) of the GNU Affero General Public License version 3, * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ use Espo\Core\Container; use Espo\Core\Utils\Metadata; use Espo\Core\Templates\Entities\Event; class AfterUpgrade { public function run(Container $container): void { $this->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}"]] ], ] ] ]); } } }