- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/merger/conflictresolver/namefield.php
- Класс: Bitrix\Crm\Merger\ConflictResolver\NameField
- Вызов: NameField::checkRelatedFields
protected function checkRelatedFields(&$seedValue, &$targetValue): bool
{
$seed = $this->getSeed();
$target = $this->getTarget();
$seedLastNameOriginalValue = isset($seed['LAST_NAME']) ? (string)$seed['LAST_NAME'] : '';
$targetLastNameOriginalValue = isset($target['LAST_NAME']) ? (string)$target['LAST_NAME'] : '';
$seedLastNameValue = mb_strtolower(trim($seedLastNameOriginalValue));
$targetLastNameValue = mb_strtolower(trim($targetLastNameOriginalValue));
$seedNameValue = mb_strtolower($seedValue);
$targetNameValue = mb_strtolower($targetValue);
// region Name or lastname in wrong field
if ($seedLastNameValue === '' && $seedNameValue === $targetLastNameValue)
{ // for example $seed = ['NAME' => 'lastname', 'LAST_NAME' => '']; $target = ['NAME' => 'name', 'LAST_NAME' => 'lastname'];
return true;
}
if ($seedNameValue === '' && $seedLastNameValue === $targetNameValue)
{ // for example $seed = ['NAME' => '', 'LAST_NAME' => 'name']; $target = ['NAME' => 'name', 'LAST_NAME' => 'lastname'];
return true;
}
if ($targetLastNameValue === '' && $targetNameValue === $seedLastNameValue)
{ // for example $seed = ['NAME' => 'name', 'LAST_NAME' => 'lastname']; $target = ['NAME' => 'lastname', 'LAST_NAME' => ''];
$this->setNewTargetValue($this->getSeedValue());
$this->setNewTargetValue($seedLastNameOriginalValue, 'LAST_NAME');
return true;
}
if ($targetNameValue === '' && $targetLastNameValue === $seedNameValue)
{ // for example $seed = ['NAME' => 'name', 'LAST_NAME' => 'lastname']; $target = ['NAME' => '', 'LAST_NAME' => 'name'];
$this->setNewTargetValue($this->getSeedValue());
$this->setNewTargetValue($seedLastNameOriginalValue, 'LAST_NAME');
return true;
}
// endregion
// region Name and lastname in the same field
if ($seedLastNameValue === '' && (
($seedNameValue === $targetNameValue.' '.$targetLastNameValue) ||
($seedNameValue === $targetLastNameValue.' '.$targetNameValue)
))
{ // for example $seed = ['NAME' => 'name lastname', 'LAST_NAME' => '']; $target = ['NAME' => 'name', 'LAST_NAME' => 'lastname'];
return true;
}
if ($seedNameValue === '' && (
($seedLastNameValue === $targetNameValue.' '.$targetLastNameValue) ||
($seedLastNameValue === $targetLastNameValue.' '.$targetNameValue)
))
{ // for example $seed = ['NAME' => '', 'LAST_NAME' => 'name lastname']; $target = ['NAME' => 'name', 'LAST_NAME' => 'lastname'];
return true;
}
if ($targetLastNameValue === '' && (
($targetNameValue === $seedNameValue.' '.$seedLastNameValue) ||
($targetNameValue === $seedLastNameValue.' '.$seedNameValue)
))
{ // for example $seed = ['NAME' => 'name', 'LAST_NAME' => 'lastname']; $target = ['NAME' => 'name lastname', 'LAST_NAME' => ''];
$this->setNewTargetValue($this->getSeedValue());
$this->setNewTargetValue($seedLastNameOriginalValue, 'LAST_NAME');
return true;
}
if ($targetNameValue === '' && (
($targetLastNameValue === $seedNameValue.' '.$seedLastNameValue) ||
($targetLastNameValue === $seedLastNameValue.' '.$seedNameValue)
))
{ // for example $seed = ['NAME' => 'name', 'LAST_NAME' => 'lastname']; $target = ['NAME' => '', 'LAST_NAME' => 'name lastname'];
$this->setNewTargetValue($this->getSeedValue());
$this->setNewTargetValue($seedLastNameOriginalValue, 'LAST_NAME');
return true;
}
// endregion
if($this->checkRedundantSpacesInAllFields(
$seedValue,
trim($seedLastNameOriginalValue),
$targetValue,
trim($targetLastNameOriginalValue))
)
{
return true;
}
return false;
}