• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/classes/general/usertypemanager.php
  • Класс: CUserTypeManager
  • Вызов: CUserTypeManager::copy
public function copy($entity_id, $id, $copiedId, $entityObject, $userId = false, $ignoreList = [])
{
	$userFields = $this->getUserFields($entity_id, $id);

	$fields = [];
	foreach($userFields as $fieldName => $userField)
	{
		if(!in_array($fieldName, $ignoreList))
		{
			if(is_callable([$userField["USER_TYPE"]["CLASS_NAME"], "onBeforeCopy"]))
			{
				$fields[$fieldName] = call_user_func_array(
					[$userField["USER_TYPE"]["CLASS_NAME"], "onBeforeCopy"],
					[$userField, $copiedId, $userField["VALUE"], $entityObject, $userId]
				);
			}
			else
			{
				$fields[$fieldName] = $userField["VALUE"];
			}
		}
	}

	$this->update($entity_id, $copiedId, $fields, $userId);

	foreach($userFields as $fieldName => $userField)
	{
		if(!in_array($fieldName, $ignoreList))
		{
			if(is_callable([$userField["USER_TYPE"]["CLASS_NAME"], "onAfterCopy"]))
			{
				$fields[$fieldName] = call_user_func_array(
					[$userField["USER_TYPE"]["CLASS_NAME"], "onAfterCopy"],
					[$userField, $copiedId, $fields[$fieldName], $entityObject, $userId]
				);
			}
		}
	}
}