• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/controller/form.php
  • Класс: Bitrix\Crm\Controller\Form
  • Вызов: Form::getWidgetsForEmbedAction
public function getWidgetsForEmbedAction(int $formId, int $count = self::EMBED_DEFAULT_WIDGETS_DISPLAY_COUNT)
{
	if (!$this->getFormAccess())
	{
		$this->addError(new Main\Error('Access denied.', self::ERROR_CODE_FORM_READ_ACCESS_DENIED));
		return ['error' => ['status' => 'access denied', 'code' => self::ERROR_CODE_FORM_READ_ACCESS_DENIED]];
	}

	if ($this->shouldVerifyPhone() && !$this->isPhoneVerified($formId))
	{
		$this->addError(new Main\Error('Phone doesn\'t verified', self::ERROR_CODE_PHONE_NOT_VERIFIED, ['id' => $formId]));
		return [];
	}

	if (!$this->getSiteButtonAccess())
	{
		$this->addError(new Main\Error('Access denied.', self::ERROR_CODE_WIDGET_READ_ACCESS_DENIED));
		return ['error' => ['status' => 'access denied', 'code' => self::ERROR_CODE_WIDGET_READ_ACCESS_DENIED]];
	}

	$form = new WebForm\Form($formId);
	$formData = $form->get();
	$formType = self::getFormType($form);

	$widgets = $this->loadWidgetsDataForEmbed($formId, $count + 1, $formType); // +1 to check for additional widgets

	$showMoreLink = false;
	if (count($widgets) > $count)
	{
		$showMoreLink = true;
		array_pop($widgets); // +1 to check for additional widgets
	}

	$buttonForPreview = $previewLink = null;
	foreach ($widgets as $widget)
	{
		if (count($widget['relatedFormIds']))
		{
			$buttonForPreview = $widget['id'];
		}
	}

	$previewLink = strtr(WebForm\Script::getPublicFormPath(), [
		'#id#' => $formData['ID'],
		'#form_id#' => $formData['ID'],
		'#form_code#' => $formData['CODE'],
		'#form_sec#' => $formData['SECURITY_CODE'],
	]);
	$previewLink = WebForm\Script::getDomain() . $previewLink . '?view=preview&preview=button&preview_id='.$buttonForPreview;

	return [
		'widgets' => $widgets,
		'url' => [
			'allWidgets' => \CCrmUrlUtil::ToAbsoluteUrl(Crm\SiteButton\Manager::getUrl()),
		],
		'showMoreLink' => $showMoreLink,
		'previewLink' => $previewLink,
		'formName' => $form->getName(),
		'formType' => $formType,
		'helpCenterUrl' => self::getHelpCenterUrl(self::EMBED_HELP_CENTER_ID),
		'helpCenterId' => self::EMBED_HELP_CENTER_ID,
	];
}