• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/internals/task/result/resultmanager.php
  • Класс: BitrixTasksInternalsTaskResultResultManager
  • Вызов: ResultManager::updateUf
private function updateUf(Result $result, int $commentId)
{
	if (!Loader::includeModule('disk'))
	{
		return;
	}

	$uf = $this->ufManager->getUserFields(MessageTable::getUfId(), $commentId);

	$diskRelations = [];

	$ufFields = [];
	$ufFields[ResultTable::UF_FILE_NAME] = [];

	if (
		is_array($uf)
		&& array_key_exists('UF_FORUM_MES_URL_PRV', $uf)
		&& $uf['UF_FORUM_MES_URL_PRV']['VALUE']
	)
	{
		$ufFields[ResultTable::UF_PREVIEW_NAME] = (new Signer())->sign($uf['UF_FORUM_MES_URL_PRV']['VALUE'], UrlPreview::SIGN_SALT);
	}

	if (
		is_array($uf)
		&& array_key_exists('UF_FORUM_MESSAGE_DOC', $uf)
		&& !empty($uf['UF_FORUM_MESSAGE_DOC']['VALUE'])
	)
	{
		foreach ($uf['UF_FORUM_MESSAGE_DOC']['VALUE'] as $file)
		{
			$clone = BitrixTasksIntegrationDisk::cloneFileAttachment([$file]);
			$diskRelations[] = [
				'source' => $file,
				'clone' => $clone[0],
			];
			$ufFields[ResultTable::UF_FILE_NAME] = array_merge($ufFields[ResultTable::UF_FILE_NAME], $clone);
		}
	}

	if (
		is_array($uf)
		&& array_key_exists('UF_FORUM_MESSAGE_VER', $uf)
		&& !empty($uf['UF_FORUM_MESSAGE_VER']['VALUE'])
	)
	{
		$clone = BitrixTasksIntegrationDisk::cloneFileAttachment([$uf['UF_FORUM_MESSAGE_VER']['VALUE']]);
		$diskRelations[] = [
			'source' => $file,
			'clone' => $clone[0],
		];
		$ufFields[ResultTable::UF_FILE_NAME] = array_merge($ufFields[ResultTable::UF_FILE_NAME], $clone);
	}

	$this->ufManager->Update(ResultTable::getUfId(), $result->getId(), $ufFields);

	$this->updateInlineFiles($result, $diskRelations);
}