• Модуль: disk
  • Путь к файлу: ~/bitrix/modules/disk/lib/uf/fileusertype.php
  • Класс: BitrixDiskUfFileUserType
  • Вызов: FileUserType::onBeforeSaveAll
static function onBeforeSaveAll($userField, $values, $userId = false)
{
	if (!is_array($values))
	{
		$values = [];
	}

	if ($values)
	{
		static $alreadyRunDetach = [];
		if (!isset($alreadyRunDetach[$userField['FIELD_NAME'] . '|' . $userField['ENTITY_VALUE_ID']]))
		{
			$alreadyRunDetach[$userField['FIELD_NAME'] . '|' . $userField['ENTITY_VALUE_ID']] = true;
			if ($userField['VALUE'])
			{
				$alreadyExistsValues = $userField['VALUE'];
				if (!is_array($alreadyExistsValues))
				{
					$alreadyExistsValues = [$userField['VALUE']];
				}

				$needToDetach = array_diff($alreadyExistsValues, $values);
				AttachedObject::detachByFilter(['ID' => $needToDetach]);
			}
		}
	}

	$valuesToInsert = [];
	foreach($values as $value)
	{
		if (!empty($value))
		{
			$valuesToInsert[] = (int)self::onBeforeSave($userField, $value, $userId);
		}
	}

	$userFieldManager = Driver::getInstance()->getUserFieldManager();


	$entityType = $userField['ENTITY_ID'];
	$templateType = Application::getInstance()->getContext()->getRequest()->getPost(
		$userFieldManager->getInputNameForTemplateView($entityType)
	);

	// Live Feed disguises forums comments as social network comments.
	// When you add a new comment for a task/event,
	// Live Feed creates a forum message and then creates a log entry.
	// see CSocNetLogComments::Add,
	// see CSocNetLogTools::AddComment_Tasks, CSocNetLogTools::AddComment_Forum
	if ($templateType === null && ($entityType === 'FORUM_MESSAGE' || $entityType === 'SONET_COMMENT'))
	{
		$entityType = $entityType === 'FORUM_MESSAGE' ? 'SONET_COMMENT' : 'FORUM_MESSAGE';
		$templateType = Application::getInstance()->getContext()->getRequest()->getPost(
			$userFieldManager->getInputNameForTemplateView($entityType)
		);
	}

	if ($templateType)
	{
		self::setTemplateType([
			'ENTITY_ID' => $userField['ENTITY_ID'],
			'ENTITY_VALUE_ID' => $userField['ENTITY_VALUE_ID'],
			'VALUE' =>  ($templateType === 'grid' ? 'grid' : 'gallery')
		]);
	}

	return $valuesToInsert;
}