• Модуль: crmmobile
  • Путь к файлу: ~/bitrix/modules/crmmobile/lib/Controller/EntityDetails.php
  • Класс: BitrixCrmMobileControllerEntityDetails
  • Вызов: EntityDetails::prepareCopyFileFields
private function prepareCopyFileFields(Collection $fieldCollection, array &$data, array $sourceFields): void
{
	foreach ($fieldCollection as $fieldName => $field)
	{
		if ($field->getType() !== 'file')
		{
			continue;
		}

		if (empty($data[$fieldName]))
		{
			continue;
		}

		// check if the file id is in the source entity to which we have permissions, exclude random file ids
		if ($field->isMultiple())
		{
			foreach ($data[$fieldName] as &$value)
			{
				if (
					is_numeric($value)
					&& !empty($sourceFields[$fieldName])
					&& is_array($sourceFields[$fieldName])
					&& in_array($value, $sourceFields[$fieldName], true)
				)
				{
					$value = [
						'value' => CFile::MakeFileArray((int)$value),
						'copy' => true,
					];
				}
			}
		}
		elseif (
			is_numeric($data[$fieldName])
			&& !empty($sourceFields[$fieldName])
			&& $data[$fieldName] === $sourceFields[$fieldName]
		)
		{
			$data[$fieldName] = [
				'value' => CFile::MakeFileArray((int)$data[$fieldName]),
				'copy' => true,
			];
		}
	}
}