diff --git a/application/Espo/Core/Utils/Metadata/AdditionalBuilder/FilterFields.php b/application/Espo/Core/Utils/Metadata/AdditionalBuilder/FilterFields.php new file mode 100644 index 0000000000..12709f6f19 --- /dev/null +++ b/application/Espo/Core/Utils/Metadata/AdditionalBuilder/FilterFields.php @@ -0,0 +1,67 @@ +. + * + * 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. + ************************************************************************/ + +namespace Espo\Core\Utils\Metadata\AdditionalBuilder; + +use Espo\Core\Utils\Metadata\AdditionalBuilder; +use stdClass; + +/** + * @noinspection PhpUnused + */ +class FilterFields implements AdditionalBuilder +{ + public function __construct() + {} + + public function build(stdClass $data): void + { + if (!isset($data->entityDefs)) { + return; + } + + foreach (get_object_vars($data->entityDefs) as $entityDefsItem) { + if (isset($entityDefsItem->fields) && is_object($entityDefsItem->fields)) { + foreach (get_object_vars($entityDefsItem->fields) as $field => $fieldDefsItem) { + if (!isset($fieldDefsItem->type)) { + unset($entityDefsItem->fields->$field); + } + } + } + + if (isset($entityDefsItem->links) && is_object($entityDefsItem->links)) { + foreach (get_object_vars($entityDefsItem->links) as $link => $linkDefsItem) { + if (!isset($linkDefsItem->type)) { + unset($entityDefsItem->links->$link); + } + } + } + } + } +} diff --git a/application/Espo/Resources/metadata/app/metadata.json b/application/Espo/Resources/metadata/app/metadata.json index 200ba057ed..2751fe38a6 100644 --- a/application/Espo/Resources/metadata/app/metadata.json +++ b/application/Espo/Resources/metadata/app/metadata.json @@ -43,6 +43,7 @@ ["aclDefs"] ], "additionalBuilderClassNameList": [ + "Espo\\Core\\Utils\\Metadata\\AdditionalBuilder\\FilterFields", "Espo\\Core\\Utils\\Metadata\\AdditionalBuilder\\Fields", "Espo\\Core\\Utils\\Metadata\\AdditionalBuilder\\DeleteIdField", "Espo\\Core\\Utils\\Metadata\\AdditionalBuilder\\StreamUpdatedAtField"