EntityPreset::settingsAddField

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. EntityPreset
  4. settingsAddField
  • Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/entitypreset.php
  • Класс: Bitrix\Crm\EntityPreset
  • Вызов: EntityPreset::settingsAddField
public function settingsAddField(&$settings, $field)
{
	if (!is_array($settings) || !is_array($field) || empty($field)
		|| !isset($field['FIELD_NAME']) || empty($field['FIELD_NAME']))
	{
		return false;
	}

	$maxId = 0;
	if (isset($settings['LAST_FIELD_ID']))
	{
		$maxId = (int)$settings['LAST_FIELD_ID'];
	}
	else
	{
		if (is_array($settings['FIELDS']))
		{
			foreach ($settings['FIELDS'] as $field)
			{
				$curId = (int)$field['ID'];
				if ($curId > $maxId)
					$maxId = $curId;
			}
		}
	}
	$id = $maxId + 1;

	$newField = array();
	$newField['ID'] = $id;
	$newField['FIELD_NAME'] = '';
	if (isset($field['FIELD_NAME']))
	{
		$newField['FIELD_NAME'] = mb_substr(strval($field['FIELD_NAME']), 0, 255);
		if ($newField['FIELD_NAME'] === false)
			$newField['FIELD_NAME'] = '';
	}
	$newField['FIELD_TITLE'] = '';
	if (isset($field['FIELD_TITLE']))
	{
		$newField['FIELD_TITLE'] = mb_substr(strval($field['FIELD_TITLE']), 0, 255);
		if ($newField['FIELD_TITLE'] === false)
			$newField['FIELD_TITLE'] = '';
	}
	$newField['IN_SHORT_LIST'] = 'N';
	if (isset($field['IN_SHORT_LIST'])
		&& $field['IN_SHORT_LIST'] === 'Y')
	{
		$newField['IN_SHORT_LIST'] = 'Y';
	}
	$newField['SORT'] = 500;
	if (isset($field['SORT']))
		$newField['SORT'] = (int)$field['SORT'];

	if (!is_array($settings['FIELDS']))
		$settings['FIELDS'] = array();

	$duplicate = false;
	foreach ($settings['FIELDS'] as $fieldInfo)
	{
		if ($fieldInfo['FIELD_NAME'] === $newField['FIELD_NAME'])
		{
			$duplicate = true;
			break;
		}
	}
	unset($fieldInfo);
	if ($duplicate)
		return false;

	$settings['LAST_FIELD_ID'] = $id;
	$settings['FIELDS'][] = $newField;

	return $id;
}

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