• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/entityrequisite.php
  • Класс: Bitrix\Crm\EntityRequisite
  • Вызов: EntityRequisite::addFromData
public function addFromData($entityTypeId, $entityId, $requisiteData)
{
	$result = array();

	$signer = new \Bitrix\Main\Security\Sign\Signer();

	$entityTypeId = (int)$entityTypeId;
	$entityId = (int)$entityId;
	if (self::checkEntityType($entityTypeId)
		&& $this->validateEntityExists($entityTypeId, $entityId)
		&& $this->validateEntityUpdatePermission($entityTypeId, $entityId))
	{
		if (is_array($requisiteData))
		{
			foreach ($requisiteData as $index => $data)
			{
				if (isset($data['REQUISITE_ID'])
					&& isset($data['REQUISITE_DATA'])
					&& is_string($data['REQUISITE_DATA'])
					&& !empty($data['REQUISITE_DATA'])
					&& isset($data['REQUISITE_DATA_SIGN'])
					&& is_string($data['REQUISITE_DATA_SIGN'])
					&& !empty($data['REQUISITE_DATA_SIGN']))
				{
					$isValidData = false;

					if($signer->validate(
						$data['REQUISITE_DATA'],
						$data['REQUISITE_DATA_SIGN'],
						'crm.requisite.edit-'.$entityTypeId))
					{
						$isValidData = true;
					}

					if ($isValidData)
					{
						$requisiteId = (int)$data['REQUISITE_ID'];
						if ($requisiteId === 0)
						{
							$requisiteData = array();
							try
							{
								$requisiteData = \Bitrix\Main\Web\Json::decode($data['REQUISITE_DATA']);
							}
							catch (\Bitrix\Main\SystemException $e)
							{}

							$fields = (is_array($requisiteData) && is_array($requisiteData['fields'])) ?
								$requisiteData['fields'] : null;

							if (is_array($fields)
								&& isset($fields['ENTITY_TYPE_ID'])
								&& isset($fields['ENTITY_ID']))
							{
								// prepare fields
								$curDateTime = new \Bitrix\Main\Type\DateTime();
								$curUserId = \CCrmSecurityHelper::GetCurrentUserID();
								$fields['DATE_CREATE'] = $curDateTime;
								$fields['CREATED_BY_ID'] = $curUserId;
								$fields['ENTITY_TYPE_ID'] = $entityTypeId;
								$fields['ENTITY_ID'] = $entityId;
								if (isset($fields['ID']))
									unset($fields['ID']);
								if (isset($fields['DATE_MODIFY']))
									unset($fields['DATE_MODIFY']);
								if (isset($fields['MODIFY_BY_ID']))
									unset($fields['MODIFY_BY_ID']);

								$addResult = $this->add($fields);
								if($addResult && $addResult->isSuccess())
									$result[$index] = $addResult->getId();
							}
						}
					}
				}
			}
		}
	}

	return $result;
}