- Модуль: 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;
}