- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/classes/general/crm_field_multi.php
- Класс: \CCrmFieldMulti
- Вызов: CCrmFieldMulti::CompareFields
static function CompareFields($arFieldsOrig, $arFieldsModif)
{
$arMsg = Array();
// prepare diff format
$arField = Array();
foreach($arFieldsOrig as $typeId => $arTypes)
foreach($arTypes as $valueId => $arValues)
$arField['original'][$valueId] = array_merge($arValues, Array('COMPLEX'=>$typeId.'_'.$arValues['VALUE_TYPE']));
$addCnt = 1;
foreach($arFieldsModif as $typeId => $arTypes)
foreach($arTypes as $valueId => $arValues)
{
if(mb_substr($valueId, 0, 1) == 'n')
{
$arField['modified']['add'.($addCnt++)] = array_merge($arValues, Array('COMPLEX'=>$typeId.'_'.$arValues['VALUE_TYPE']));
}
else
{
$arField['modified'][$valueId] = array_merge($arValues, Array('COMPLEX'=>$typeId.'_'.$arValues['VALUE_TYPE']));
}
}
if(isset($arField['modified']))
{
foreach ($arField['modified'] as $fieldId => $arValue)
{
if (isset($arField['original'][$fieldId]))
{
if ($arValue['VALUE'] == "")
{
$arMsg[] = Array(
'EVENT_NAME' => GetMessage('CRM_CF_FIELD_DELETE', Array('#FIELD_NAME#' => self::GetEntityNameByComplex($arField['original'][$fieldId]['COMPLEX']))),
'EVENT_TEXT_1' => $arField['original'][$fieldId]['VALUE'],
);
}
else if ($arField['original'][$fieldId]['COMPLEX'] != $arValue['COMPLEX']
&& $arField['original'][$fieldId]['VALUE'] != $arValue['VALUE'] && $arValue['VALUE'] != "")
{
$arMsg[] = Array(
'EVENT_NAME' => GetMessage('CRM_CF_FIELD_DELETE', Array('#FIELD_NAME#' => self::GetEntityNameByComplex($arField['original'][$fieldId]['COMPLEX']))),
'EVENT_TEXT_1' => $arField['original'][$fieldId]['VALUE'],
);
$arMsg[] = Array(
'EVENT_NAME' => GetMessage('CRM_CF_FIELD_ADD', Array('#FIELD_NAME#' => self::GetEntityNameByComplex($arValue['COMPLEX']))),
'EVENT_TEXT_1' => $arValue['VALUE'],
);
}
else if ($arField['original'][$fieldId]['COMPLEX'] != $arValue['COMPLEX'])
{
$arMsg[] = Array(
'EVENT_NAME' => GetMessage('CRM_CF_FIELD_MODIFY_TYPE', Array('#FIELD_NAME#' => self::GetEntityNameByComplex($arField['original'][$fieldId]['COMPLEX']))),
'EVENT_TEXT_1' => self::GetEntityNameByComplex($arField['original'][$fieldId]['COMPLEX']),
'EVENT_TEXT_2' => self::GetEntityNameByComplex($arValue['COMPLEX']),
);
}
else if ($arField['original'][$fieldId]['VALUE'] != $arValue['VALUE'])
{
$arMsg[] = Array(
'EVENT_NAME' => GetMessage('CRM_CF_FIELD_MODIFY_VALUE', Array('#FIELD_NAME#' => self::GetEntityNameByComplex($arValue['COMPLEX']))),
'EVENT_TEXT_1' => $arField['original'][$fieldId]['VALUE'],
'EVENT_TEXT_2' => $arValue['VALUE'],
);
}
}
elseif ($arValue['VALUE'] != "")
{
$arMsg[] = Array(
'EVENT_NAME' => GetMessage('CRM_CF_FIELD_ADD', Array('#FIELD_NAME#' => self::GetEntityNameByComplex($arValue['COMPLEX']))),
'EVENT_TEXT_1' => $arValue['VALUE'],
);
}
}
}
return $arMsg;
}