. * * 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; class AfterUpgrade { public function run(Container $container): void { $this->updateMetadata($container->get('metadata')); } private function updateMetadata(Metadata $metadata): void { $this->fixParent($metadata); $metadata->save(); } private function fixParent(Metadata $metadata): void { foreach ($metadata->get(['entityDefs']) as $scope => $defs) { foreach ($metadata->get(['entityDefs', $scope, 'fields']) as $field => $fieldDefs) { $custom = $metadata->getCustom('entityDefs', $scope); if (!$custom) { continue; } if ( ($fieldDefs['type'] ?? null) === 'linkParent' && ($fieldDefs['notStorable'] ?? false) ) { if ($custom?->fields?->$field?->notStorable) { $metadata->delete('entityDefs', $scope, "fields.{$field}.notStorable"); } } } } } }