- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/webform/options/integration.php
- Класс: Bitrix\Crm\WebForm\Options\Integration
- Вызов: Integration::checkData
public function checkData(): Main\Entity\Result
{
$integrationResult = new Main\Entity\Result;
if (!$integrationOptions = $this->form->get()['INTEGRATION'])
{
return $integrationResult;
}
/** type control array */
$typesCheck = array_combine(
$types = AdsForm::getServiceTypes(),
array_fill(0, count($types), true)
);
self::clearNotExistsFormIntegrationLinks();
foreach ($integrationOptions as $integration)
{
if (AdsFormLinkTable::LINK_DIRECTION_IMPORT !== (int)$integration["LINK_DIRECTION"])
{
continue;
}
if (!in_array($type = $integration["ADS_TYPE"], $types, true))
{
$integrationResult->addError(
new Error(Loc::getMessage("CRM_WEBFORM_OPTIONS_LINK_WRONG_TYPE"))
);
continue;
}
if (!$typesCheck[$type])
{
$integrationResult->addError(
new Error(Loc::getMessage("CRM_WEBFORM_OPTIONS_LINK_TYPE_DUPLICATE"))
);
continue;
}
if (!isset($integration['FIELDS_MAPPING']))
{
$integrationResult->addError(
new Error(Loc::getMessage("CRM_WEBFORM_OPTIONS_LINK_EMPTY_FIELD_MAPPING"))
);
continue;
}
$duplicates =
AdsFormLinkTable::query()
->setSelect(['ID'])
->where('ADS_TYPE',$integration['ADS_TYPE'])
->where('ADS_FORM_ID', $integration['ADS_FORM_ID'])
->where('ADS_ACCOUNT_ID', $integration['ADS_ACCOUNT_ID'])
->whereNot('WEBFORM_ID', $this->form->getId())
->exec()
;
if ($duplicates->getSelectedRowsCount() > 0)
{
$integrationResult->addError(
new Error(Loc::getMessage('CRM_WEBFORM_OPTIONS_LINK_FORM_DUPLICATE_ERROR'))
);
continue;
}
AdsFormLinkTable::checkFields(
$integrationResult,
null,
array(
'LINK_DIRECTION' => $integration['LINK_DIRECTION'],
'WEBFORM_ID' => $this->form->getId(),
'ADS_TYPE' => $integration['ADS_TYPE'],
'ADS_ACCOUNT_ID' => $integration['ADS_ACCOUNT_ID'],
'ADS_FORM_ID' => $integration['ADS_FORM_ID'],
'ADS_ACCOUNT_NAME' => $integration['ADS_ACCOUNT_NAME'] ?? '',
'ADS_FORM_NAME' => $integration['ADS_FORM_NAME'],
)
);
foreach ($integration['FIELDS_MAPPING'] as $mapping)
{
Webform\Internals\FormFieldMappingTable::checkFields(
$integrationResult,
null,
array(
'FORM_LINK_ID' => self::FAKE_ID_VALUE,
'CRM_FIELD_KEY' => $mapping['CRM_FIELD_KEY'],
'ADS_FIELD_KEY' => $mapping['ADS_FIELD_KEY'],
'ITEMS' => $mapping['ITEMS'] ?? [],
)
);
}
$typesCheck[$integration['ADS_TYPE']] = false;
}
return $integrationResult;
}