• Модуль: fileman
  • Путь к файлу: ~/bitrix/modules/fileman/lib/block/editormail.php
  • Класс: BitrixFilemanBlockEditorMail
  • Вызов: EditorMail::getPreview
static function getPreview(array $params)
{
	$site = $params['SITE'];
	$html = $params['HTML'];

	if(isset($params['FIELDS']))
	{
		$fields = $params['FIELDS'];
	}
	else
	{
		$fields = array();
	}

	$canEditPhp = (isset($params['CAN_EDIT_PHP']) && $params['CAN_EDIT_PHP']);
	$canUseLpa = (isset($params['CAN_USE_LPA']) && $params['CAN_USE_LPA']);
	$html = static::removePhpFromHtml($html, null, $canEditPhp, $canUseLpa);

	if(is_object($GLOBALS["USER"]))
	{
		/* @var $GLOBALS["USER"] CUser */
		$fields['EMAIL_TO'] = htmlspecialcharsbx($GLOBALS["USER"]->GetEmail());
		$fields['USER_ID'] = $GLOBALS["USER"]->GetID();
		$fields['NAME'] = htmlspecialcharsbx($GLOBALS["USER"]->GetFirstName() ?: $GLOBALS["USER"]->GetLastName());
	}

	$siteDb = SiteTable::getList(array(
		'select' => array('LID', 'SERVER_NAME', 'SITE_NAME', 'CULTURE_CHARSET'=>'CULTURE.CHARSET'),
		'filter' => array('LID' => $site)
	));
	if(!$siteRow = $siteDb->fetch())
	{
		$siteDb = SiteTable::getList(array(
			'select' => array('LID', 'SERVER_NAME', 'SITE_NAME', 'CULTURE_CHARSET'=>'CULTURE.CHARSET'),
			'filter' => array('DEF' => true)
		));
		$siteRow = $siteDb->fetch();
	}

	$fields['SITE_NAME'] = $siteRow['SITE_NAME'];
	$fields['SERVER_NAME'] = $siteRow['SERVER_NAME'];
	$charset = $siteRow['CULTURE_CHARSET'];

	$messageParams = array(
		'FIELDS' => $fields,
		'MESSAGE' => array(
			'BODY_TYPE' => 'html',
			'EMAIL_TO' => '#EMAIL_TO#',
			'MESSAGE' => $html,
		),
		'SITE' => $siteRow['LID'],
		'CHARSET' => $charset,
	);

	$event = new Event("main", "OnBeforeBlockEditorMailPreview", $messageParams);
	$event->send();
	foreach ($event->getResults() as $eventResult)
	{
		if($eventResult->getType() !== EventResult::ERROR)
		{
			$messageParams = array_merge($messageParams, $eventResult->getParameters());
		}
	}

	$message = EventMessageCompiler::createInstance($messageParams);
	$message->compile();
	$html = $message->getMailBody();
	$inlineHtml = StyleInliner::inlineHtml($html);

	$eventParams = array('HTML' => $html, 'INLINE_HTML' => $inlineHtml);
	$event = new Event("main", "OnAfterBlockEditorMailPreview", $eventParams);
	$event->send();
	foreach ($event->getResults() as $eventResult)
	{
		if($eventResult->getType() !== EventResult::ERROR)
		{
			$eventParams = array_merge($eventParams, $eventResult->getParameters());
		}
	}

	//return $eventParams['HTML'];
	return $eventParams['INLINE_HTML'];
}