- Модуль: 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'];
}