• Модуль: 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;
}