EntityFieldProvider::onUpdateUserFieldItems

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. EntityFieldProvider
  4. onUpdateUserFieldItems
  • Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/webform/entityfieldprovider.php
  • Класс: Bitrix\Crm\WebForm\EntityFieldProvider
  • Вызов: EntityFieldProvider::onUpdateUserFieldItems
static function onUpdateUserFieldItems(array $userField, array $items)
{
	$actualItems = [];
	foreach ($items as $itemId => $item)
	{
		if (!is_numeric($itemId))
		{
			continue;
		}

		$actualItems[$itemId] = $item;
	}

	$fieldName = substr($userField['ENTITY_ID'], 4) . '_' . $userField['FIELD_NAME'];
	$rows = Internals\FieldTable::getList([
		'select' => ['FORM_ID'],
		'filter' => [
			'=CODE' => $fieldName
		],
	]);
	foreach ($rows as $row)
	{
		$isChanged = false;
		$form = new Form($row['FORM_ID']);
		$formFields = $form->getFields();
		foreach ($formFields as $index => $formField)
		{
			if ($formField['CODE'] !== $fieldName)
			{
				continue;
			}

			$fieldItems = is_array($formField['ITEMS']) ? $formField['ITEMS'] : [];
			$fieldItems = array_combine(
				array_column($fieldItems, 'ID'),
				$fieldItems
			);

			$newItems = [];
			foreach ($actualItems as $itemId => $item)
			{
				$newItem = [
					'ID' => (string)$itemId,
					'VALUE' => $item['VALUE'],
				];

				if (!empty($fieldItems[$itemId]['DISABLED']))
				{
					$newItem['DISABLED'] = $fieldItems[$itemId]['DISABLED'] === 'Y' ? 'Y' : 'N';
				}
				if (!empty($fieldItems[$itemId]['SELECTED']))
				{
					$newItem['SELECTED'] = $fieldItems[$itemId]['SELECTED'] === 'Y' ? 'Y' : 'N';
				}

				$newItems[] = $newItem;
			}

			$formField['ITEMS'] = $newItems;
			$formFields[$index] = $formField;
			$isChanged = true;
		}

		if ($isChanged)
		{
			$form->merge(['FIELDS' => $formFields]);
			$form->save();
		}
	}
}

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