- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/ads/adsform.php
- Класс: Bitrix\Crm\Ads\AdsForm
- Вызов: AdsForm::exportForm
static function exportForm($type, $accountId, $crmFormId, array $parameters = array())
{
static::resetErrors();
// 0. Prepare fields.
$crmForm = new Form;
if (!$crmForm->load($crmFormId))
{
static::$errors[] = "Form #{$crmFormId} not found.";
return false;
}
$fields = FieldMapper::toAdsForm($crmForm);
if (empty($fields))
{
static::$errors[] = "Can not map Form #{$crmFormId} fields.";
return false;
}
$crmFormData = $crmForm->get();
$formName = (isset($parameters['ADS_FORM_NAME']) && $parameters['ADS_FORM_NAME']) ? $parameters['ADS_FORM_NAME'] : $crmFormData['NAME'];
$formSuccessUrl = (isset($parameters['ADS_FORM_SUCCESS_URL']) && $parameters['ADS_FORM_SUCCESS_URL']) ? $parameters['ADS_FORM_SUCCESS_URL'] : '';
$locale = (isset($parameters['LOCALE']) && $parameters['LOCALE']) ? $parameters['LOCALE'] : null;
$formTitle = (isset($crmFormData['CAPTION']) && $crmFormData['CAPTION']) ? $crmFormData['CAPTION'] : $formName;
$description = (isset($crmFormData['DESCRIPTION']) && $crmFormData['DESCRIPTION']) ? $crmFormData['DESCRIPTION'] : '';
if ($description)
{
$bbCodeParser = new \CTextParser();
$description = $bbCodeParser->convertText($description);
$description = str_replace(array('
', '
', '
'), "\n", $description);
$description = \CTextParser::clearAllTags($description);
}
$privacyPolicyUrl = $crmForm->getAgreementUrl();
if (!$formSuccessUrl)
{
$formSuccessUrl = $crmForm->getSuccessPageUrl();
}
// 1. Send add query to Facebook.
/**@var LeadAds\Form $form*/
$form = static::getService()->getForm($type);
$form->setAccountId($accountId);
$addResult = $form->add(array(
'NAME' => $formName,
'TITLE' => $formTitle,
'DESCRIPTION' => $description,
'SUCCESS_URL' => $formSuccessUrl,
'PRIVACY_POLICY_URL' => $privacyPolicyUrl,
'BUTTON_CAPTION' => $crmForm->getButtonCaption(),
'FIELDS' => $fields,
'LOCALE' => $locale,
));
if (!$addResult->isSuccess() || !$addResult->getId())
{
static::$errors = $addResult->getErrorMessages();
return false;
}
$adsFormId = $addResult->getId();
// 2. Save link "Facebook GroupId"-with-"Portal url" in table b_crm_ads_form.
$addLinkResult = Internals\AdsFormLinkTable::add(array(
'LINK_DIRECTION' => Internals\AdsFormLinkTable::LINK_DIRECTION_EXPORT,
'WEBFORM_ID' => $crmFormId,
'ADS_TYPE' => $type,
'ADS_ACCOUNT_ID' => $accountId,
'ADS_FORM_ID' => $adsFormId,
'ADS_ACCOUNT_NAME' => $parameters['ADS_ACCOUNT_NAME'] ?? '',
'ADS_FORM_NAME' => $formName,
));
if (!$addLinkResult->isSuccess())
{
static::$errors = $addLinkResult->getErrorMessages();
return false;
}
// 3. Register web hook handler.
EventManager::getInstance()->registerEventHandler(
'seo',
'OnWebHook',
'crm',
WebHookFormFillHandler::class,
'handleEvent'
);
return true;
}