- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/synchronization/userfieldlabelsynchronizer.php
- Класс: Bitrix\Crm\Synchronization\UserFieldLabelSynchronizer
- Вызов: UserFieldLabelSynchronizer::synchronize
static function synchronize($userFieldEntityType, $fieldName, array $params = null)
{
if(!\CCrmAuthorizationHelper::CheckConfigurationUpdatePermission(self::getCurrentUserPermissions()))
{
return false;
}
$entityTypeID = UserFieldManager::resolveEntityTypeID($userFieldEntityType);
if($entityTypeID === \CCrmOwnerType::Undefined)
{
return false;
}
$fieldData = is_array($params) && isset($params['FIELD_DATA']) && is_array($params['FIELD_DATA'])
? $params['FIELD_DATA'] : array();
if(empty($fieldData))
{
$userFieldEntity = UserFieldManager::getUserFieldEntity($entityTypeID);
if(!$userFieldEntity)
{
return false;
}
$field = $userFieldEntity->GetByName($fieldName);
if(!is_array($field))
{
return false;
}
$label = isset($field['EDIT_FORM_LABEL'])
? $field['EDIT_FORM_LABEL'] : (isset($field['LIST_COLUMN_LABEL']) ? $field['LIST_COLUMN_LABEL'] : '');
if($label === '')
{
return false;
}
$labels = array_fill_keys(self::getLanguageIDs(), $label);
$fieldData = array(
'EDIT_FORM_LABEL' => $labels,
'LIST_COLUMN_LABEL' => $labels,
'LIST_FILTER_LABEL' => $labels
);
}
$parentField = ConversionManager::getParentalField($entityTypeID, $fieldName);
$daughterlyFields = ConversionManager::getConcernedFields(
$parentField['ENTITY_TYPE_ID'],
$parentField['FIELD_NAME']
);
if($parentField['FIELD_NAME'] !== $fieldName)
{
$userFieldEntity = UserFieldManager::getUserFieldEntity($parentField['ENTITY_TYPE_ID']);
if($userFieldEntity)
{
$field = $userFieldEntity->GetByName($parentField['FIELD_NAME']);
if(is_array($field))
{
$ID = $field['ID'];
self::lockField($ID);
$userFieldEntity->UpdateField($ID, $fieldData);
self::unlockField($ID);
}
}
}
foreach($daughterlyFields as $daughterlyField)
{
if($daughterlyField['FIELD_NAME'] === $fieldName)
{
continue;
}
$userFieldEntity = UserFieldManager::getUserFieldEntity($daughterlyField['ENTITY_TYPE_ID']);
if($userFieldEntity)
{
$field = $userFieldEntity->GetByName($daughterlyField['FIELD_NAME']);
if(!is_array($field))
{
continue;
}
$ID = $field['ID'];
self::lockField($ID);
$userFieldEntity->UpdateField($ID, $fieldData);
self::unlockField($ID);
}
}
return true;
}