application/Espo/Core/Utils/Metadata.php
public function delete($key1, $key2, $unsets = null)
    {
        if (!is_array($unsets)) {
            $unsets = (array) $unsets;
        }

        switch ($key1) {
            case 'entityDefs':
                //unset related additional fields, e.g. a field with "address" type
                $fieldDefinitionList = $this->get('fields');

                $unsetList = $unsets;
                foreach ($unsetList as $unsetItem) {
                    if (preg_match('/fields\.([^\.]+)/', $unsetItem, $matches) && isset($matches[1])) {
                        $fieldName = $matches[1];
                        $fieldPath = [$key1, $key2, 'fields', $fieldName];

                        $additionalFields = $this->getMetadataHelper()->getAdditionalFieldList($fieldName, $this->get($fieldPath, []), $fieldDefinitionList);
                        if (is_array($additionalFields)) {
                            foreach ($additionalFields as $additionalFieldName => $additionalFieldParams) {
                                $unsets[] = 'fields.' . $additionalFieldName;
                            }
                        }
                    }
                }
                break;
        }

        $normalizedData = array(
            '__APPEND__',
        );
        $metadataUnsetData = array();
        foreach ($unsets as $unsetItem) {
            $normalizedData[] = $unsetItem;
            $metadataUnsetData[] = implode('.', array($key1, $key2, $unsetItem));
        }

        $unsetData = array(
            $key1 => array(
                $key2 => $normalizedData
            )
        );

        $this->deletedData = Util::merge($this->deletedData, $unsetData);
        $this->deletedData = Util::unsetInArrayByValue('__APPEND__', $this->deletedData, true);

        $this->data = Util::unsetInArray($this->getData(), $metadataUnsetData, true);
    }
public function delete($key1, $key2, $unsets = null)
    {
        if (!is_array($unsets)) {
            $unsets = (array) $unsets;
        }

        switch ($key1) {
            case 'entityDefs':
                //unset related additional fields, e.g. a field with "address" type
                $fieldDefinitionList = $this->get('fields');

                $unsetList = $unsets;
                foreach ($unsetList as $unsetItem) {
                    if (preg_match('/fields\.([^\.]+)/', $unsetItem, $matches) && isset($matches[1])) {
                        $fieldName = $matches[1];
                        $fieldPath = [$key1, $key2, 'fields', $fieldName];

                        $additionalFields = $this->getMetadataHelper()->getAdditionalFieldList($fieldName, $this->get($fieldPath, []), $fieldDefinitionList);
                        if (is_array($additionalFields)) {
                            foreach ($additionalFields as $additionalFieldName => $additionalFieldParams) {
                                $unsets[] = 'fields.' . $additionalFieldName;
                            }
                        }
                    }
                }
                break;
        }

        $normalizedData = array(
            '__APPEND__',
        );
        $metadataUnsetData = array();
        foreach ($unsets as $unsetItem) {
            $normalizedData[] = $unsetItem;
            $metadataUnsetData[] = implode('.', array($key1, $key2, $unsetItem));
        }

        $unsetData = array(
            $key1 => array(
                $key2 => $normalizedData
            )
        );

        $this->deletedData = Util::merge($this->deletedData, $unsetData);
        $this->deletedData = Util::unsetInArrayByValue('__APPEND__', $this->deletedData, true);

        $this->data = Util::unsetInArray($this->getData(), $metadataUnsetData, true);
    }
public function delete ( $ key1 , $ key2 , $ unsets = null ) { if ( ! is_array ( $ unsets ) ) { $ unsets = ( array ) $ unsets ; } switch ( $ key1 ) { case 'entityDefs' : //unset related additional fields, e.g. a field with "address" type $ fieldDefinitionList = $ this -> get ( 'fields' ) ; $ unsetList = $ unsets ; foreach ( $ unsetList as $ unsetItem ) { if ( preg_match ( '/fields\.([^\.]+)/' , $ unsetItem , $ matches ) && isset ( $ matches [ 1 ] ) ) { $ fieldName = $ matches [ 1 ] ; $ fieldPath = [ $ key1 , $ key2 , 'fields' , $ fieldName ] ; $ additionalFields = $ this -> getMetadataHelper ( ) -> getAdditionalFieldList ( $ fieldName , $ this -> get ( $ fieldPath , [ ] ) , $ fieldDefinitionList ) ; if ( is_array ( $ additionalFields ) ) { foreach ( $ additionalFields as $ additionalFieldName => $ additionalFieldParams ) { $ unsets [ ] = 'fields.' . $ additionalFieldName ; } } } } break ; } $ normalizedData = array ( '__APPEND__' , ) ; $ metadataUnsetData = array ( ) ; foreach ( $ unsets as $ unsetItem ) { $ normalizedData [ ] = $ unsetItem ; $ metadataUnsetData [ ] = implode ( '.' , array ( $ key1 , $ key2 , $ unsetItem ) ) ; } $ unsetData = array ( $ key1 => array ( $ key2 => $ normalizedData ) ) ; $ this -> deletedData = Util :: merge ( $ this -> deletedData , $ unsetData ) ; $ this -> deletedData = Util :: unsetInArrayByValue ( '__APPEND__' , $ this -> deletedData , true ) ; $ this -> data = Util :: unsetInArray ( $ this -> getData ( ) , $ metadataUnsetData , true ) ; }
Unset some fields and other stuff in metadat

@param  string $key1
@param  string $key2
@param  array | string $unsets Ex. 'fields.name'

@return bool
Unset some fields and other stuff in metadat