- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/integration/rest/configuration/entity/field.php
- Класс: Bitrix\Crm\Integration\Rest\Configuration\Entity\Field
- Вызов: Field::clear
static function clear($option)
{
if(!Helper::checkAccessManifest($option, static::$accessManifest))
{
return null;
}
$result = [
'NEXT' => false,
'OWNER_DELETE' => []
];
$step = $option['STEP'];
$clearFull = $option['CLEAR_FULL'];
$prefix = $option['PREFIX_NAME'];
$pattern = '/^\('.$prefix.'\)/';
$entityTypeList = array_column(CCrmFields::GetEntityTypes(), 'ID');
if(isset($entityTypeList[$step]))
{
$result['NEXT'] = $step;
global $USER_FIELD_MANAGER;
$entity = new CCrmFields($USER_FIELD_MANAGER, $entityTypeList[$step]);
$fieldList = $entity->GetFields();
foreach ($fieldList as $field)
{
if($clearFull)
{
$entity->DeleteField($field['ID']);
$result['OWNER_DELETE'][] = [
'ENTITY_TYPE' => self::OWNER_ENTITY_TYPE_FIELD_PREFIX.$field['ENTITY_ID'],
'ENTITY' => $field['FIELD_NAME']
];
}
else
{
$saveData = [
'MANDATORY' => 'N',
'SORT' => static::$clearSort + $field['SORT']
];
if ($prefix != '')
{
if($field['EDIT_FORM_LABEL'] != '' && preg_match($pattern, $field['EDIT_FORM_LABEL']) === 0)
{
$saveData['EDIT_FORM_LABEL'] = "($prefix) ".$field['EDIT_FORM_LABEL'];
}
if($field['LIST_COLUMN_LABEL'] != '' && preg_match($pattern, $field['LIST_COLUMN_LABEL']) === 0)
{
$saveData['LIST_COLUMN_LABEL'] = "($prefix) ".$field['LIST_COLUMN_LABEL'];
}
if($field['LIST_FILTER_LABEL'] != '' && preg_match($pattern, $field['LIST_FILTER_LABEL']) === 0)
{
$saveData['LIST_FILTER_LABEL'] = "($prefix) ".$field['LIST_FILTER_LABEL'];
}
}
$entity->UpdateField(
$field['ID'],
$saveData
);
}
}
if($clearFull)
{
if(mb_strpos($entityTypeList[$step], '_') !== false)
{
list($tmp, $entityCode) = explode('_', $entityTypeList[$step]);
}
else
{
$entityCode = $entityTypeList[$step];
}
$entityTypeId = CCrmOwnerType::ResolveID($entityCode);
if($entityTypeId > 0)
{
FieldAttributeManager::deleteByOwnerType($entityTypeId);
}
global $CACHE_MANAGER;
$CACHE_MANAGER->ClearByTag('crm_fields_list_'.$entityTypeList[$step]);
}
}
return $result;
}