EntityPreset::getSettingsFieldsAvailableToAdd

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. EntityPreset
  4. getSettingsFieldsAvailableToAdd
  • Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/entitypreset.php
  • Класс: Bitrix\Crm\EntityPreset
  • Вызов: EntityPreset::getSettingsFieldsAvailableToAdd
public function getSettingsFieldsAvailableToAdd($entityTypeId, $presetId)
{
	$result = new Main\Result();

	if (!self::checkEntityType($entityTypeId))
	{
		$result->addError(
			new Main\Error(
				GetMessage('CRM_ENTITY_PRESET_ERR_INVALID_ENTITY_TYPE'),
				self::ERR_INVALID_ENTITY_TYPE
			)
		);
		return $result;
	}

	$requisite = new EntityRequisite();
	$presetId = (int)$presetId;
	$presetData = null;
	if ($presetId > 0)
		$presetData = $this->getById($presetId);
	if (!is_array($presetData))
	{
		$result->addError(
			new Main\Error(
				GetMessage('CRM_ENTITY_PRESET_ERR_PRESET_NOT_FOUND'),
				self::ERR_PRESET_NOT_FOUND
			)
		);
		return $result;
	}
	$presetCountryId = isset($presetData['COUNTRY_ID']) ? (int)$presetData['COUNTRY_ID'] : 0;

	$presetFields = array();
	if (is_array($presetData['SETTINGS']))
	{
		$fields = $this->settingsGetFields($presetData['SETTINGS']);
		if (!empty($fields))
		{
			foreach ($fields as $fieldInfo)
				$presetFields[$fieldInfo['FIELD_NAME']] = true;
		}
	}

	$availableFields = array();
	foreach ($requisite->getRqFieldsCountryMap() as $fieldName => $countries)
	{
		if (in_array($presetCountryId, $countries, true) && !isset($presetFields[$fieldName]))
			$availableFields[$fieldName] = true;
	}
	foreach ($requisite->getUserFields() as $fieldName)
	{
		if (!isset($presetFields[$fieldName]))
			$availableFields[$fieldName] = true;
	}

	$result->setData(array_keys($availableFields));

	return $result;
}

Добавить комментарий