• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/requisite/addressrequisiteconverter.php
  • Класс: Bitrix\Crm\Requisite\AddressRequisiteConverter
  • Вызов: AddressRequisiteConverter::removeOutmodedFormFields
static function removeOutmodedFormFields($entityTypeID)
{
	$connection = Main\Application::getConnection();
	$sqlHelper = $connection->getSqlHelper();

	$optionName = '';
	$fieldMap = array();
	if($entityTypeID === \CCrmOwnerType::Contact)
	{
		$optionName = 'CRM_CONTACT_EDIT_V12';
		$fieldMap['ADDRESS'] = true;
	}
	elseif($entityTypeID === \CCrmOwnerType::Company)
	{
		$optionName = 'CRM_COMPANY_EDIT_V12';
		$fieldMap['ADDRESS'] = true;
		$fieldMap['ADDRESS_LEGAL'] = true;
	}

	if($optionName === '' || empty($fieldMap))
	{
		return;
	}

	$dbResult = $connection->query(/** @lang MySQL */
		"SELECT ID, VALUE FROM b_user_option where CATEGORY = 'main.interface.form' AND NAME = '{$optionName}'"
	);

	$resetCache = false;
	while($ary = $dbResult->fetch())
	{
		$optionID = (int)$ary['ID'];
		$value = isset($ary['VALUE']) ? $ary['VALUE'] : '';
		if($value === '')
		{
			continue;
		}

		$options = unserialize($value, ['allowed_classes' => false]);
		if(!is_array($options) || empty($options) || !isset($options['tabs']) || !is_array($options['tabs']))
		{
			continue;
		}

		$changed = false;
		foreach($options['tabs'] as &$tab)
		{
			if(!isset($tab['id']) || $tab['id'] !== 'tab_1')
			{
				continue;
			}

			if(!isset($tab['fields']) || !is_array($tab['fields']))
			{
				continue;
			}

			$fieldQty = count($tab['fields']);
			for($index = 0; $index < $fieldQty; $index++)
			{
				$field = $tab['fields'][$index];
				if($field['type'] === 'section')
				{
					continue;
				}

				$fieldID = $field['id'];
				if(!isset($fieldMap[$fieldID]))
				{
					continue;
				}

				array_splice($tab['fields'], $index, 1, array());
				$changed = true;
			}
		}
		unset($tab);

		if($changed)
		{
			$sqlValue = $sqlHelper->forSql(serialize($options));
			$connection->queryExecute(/** @lang MySQL */
				"UPDATE b_user_option SET VALUE = '{$sqlValue}' WHERE ID ='{$optionID}'"
			);
			$resetCache = true;
		}
	}

	if($resetCache && isset($GLOBALS['CACHE_MANAGER']) && is_object($GLOBALS['CACHE_MANAGER']))
	{
		/** @global \CCacheManager $CACHE_MANAGER */
		global $CACHE_MANAGER;
		$CACHE_MANAGER->cleanDir('user_option');
	}
}