• Модуль: sender
  • Путь к файлу: ~/bitrix/modules/sender/lib/internals/commonajax/actionpreview.php
  • Класс: Bitrix\Sender\Internals\CommonAjax\ActionPreview
  • Вызов: ActionPreview::onRequest
static function onRequest(Main\HttpRequest $request, Controller\Response $response)
{
	$content = $response->initContentHtml();

	Main\Loader::includeModule('fileman');

	$canEditPhp = Security\User::current()->canEditPhp();
	$canUseLpa = Security\User::current()->canUseLpa();

	$tracker = (new Tracker(Tracker::TYPE_UNSUB))
		->setModuleId('sender')
		->setFields(array(
			'RECIPIENT_ID' => 0,
			'MAILING_ID' => 0,
			'EMAIL' => 'test@example.com',
			'CODE' => 'test@example.com',
			'TEST' => 'Y'
		))
		->setHandlerUri(Option::get('sender', 'unsub_link'));

	$html = $request->getPostList()->getRaw('content');
	preg_match_all("/#([0-9a-zA-Z_.]+?)#/", $html, $personalizeFields);
	$fieldsData = [];

	if(is_object($GLOBALS["USER"]) && isset($personalizeFields[1]))
	{
		foreach ($personalizeFields[1] as $field)
		{
			$fieldArray = explode(".", $field);
			if(count($fieldArray) > 1)
			{
				$document = Helper::getData(
					$fieldArray[0], [$GLOBALS["USER"]->GetID()]
				);
				if(!isset($document[1]))
				{
					continue;
				}
				$document = $document[1];

				$fieldsData[$field] = $document
				&& isset($document[$fieldArray[1]])
					? $document[$fieldArray[1]] :'';
			}
		}
	}

	$previewParams = array(
		'CAN_EDIT_PHP' => $canEditPhp,
		'CAN_USE_LPA' => $canUseLpa,
		'SITE' => $request->get('site_id') ?: SITE_ID,
		'HTML' => ($html && Main\Text\Encoding::detectUtf8($html))
			? Main\Text\Encoding::convertEncoding(
				$html,
				'UTF-8',
				SITE_CHARSET
				)
			: $html
		,
		'FIELDS' => array_merge($fieldsData, array(
			'SENDER_CHAIN_CODE' => 'sender_chain_item_0',
			'UNSUBSCRIBE_LINK' => $tracker->getLink()
		)),
	);

	$html = EditorMail::getPreview($previewParams);
	$content->set($html);
}