static function GetMessageRatingVote($arParams, $bForMail = false)
{
static $intranetInstalled = null;
if ($intranetInstalled === null)
{
$intranetInstalled = BitrixMainModuleManager::isModuleInstalled('intranet');
}
$like = (
$arParams['VALUE'] >= 0
? ($intranetInstalled ? '_REACT' : '_LIKE')
: '_DISLIKE'
);
foreach(BitrixMainEventManager::getInstance()->findEventHandlers("im", "OnGetMessageRatingVote") as $event)
{
ExecuteModuleEventEx($event, [&$arParams, &$bForMail]);
}
if(isset($arParams['MESSAGE'])) // message was generated manually inside OnGetMessageRatingVote
{
return $arParams['MESSAGE'];
}
$genderSuffix = '';
if (
$like == '_REACT'
&& !empty($arParams['USER_ID'])
&& intval($arParams['USER_ID']) > 0
)
{
$res = BitrixMainUserTable::getList([
'filter' => [
'ID' => intval($arParams['USER_ID'])
],
'select' => ['PERSONAL_GENDER']
]);
if ($userFields = $res->fetch())
{
switch ($userFields['PERSONAL_GENDER'])
{
case "M":
case "F":
$genderSuffix = '_'.$userFields['PERSONAL_GENDER'];
break;
default:
$genderSuffix = '';
}
}
$like .= $genderSuffix;
}
if (!isset($CCTP))
{
$CCTP = new CTextParser();
}
if (
$arParams['ENTITY_TYPE_ID'] == 'FORUM_POST'
|| $arParams['ENTITY_TYPE_ID'] == 'BLOG_COMMENT'
)
{
$stripped = $CCTP->strip_words($arParams["ENTITY_MESSAGE"], 199);
$arParams["ENTITY_MESSAGE"] = $stripped.(mb_strlen($stripped) != mb_strlen($arParams["ENTITY_MESSAGE"]) ? '...' : '');
}
else
{
$stripped = $CCTP->strip_words($arParams["ENTITY_TITLE"], 199);
$arParams["ENTITY_TITLE"] = $stripped.(mb_strlen($stripped) != mb_strlen($arParams["ENTITY_TITLE"]) ? '...' : '');
}
if ($bForMail)
{
if ($arParams['ENTITY_TYPE_ID'] == 'BLOG_POST')
{
$message = str_replace('#LINK#', $arParams["ENTITY_TITLE"], GetMessage('IM_EVENT_RATING_BLOG_POST'.($arParams['MENTION'] ? '_MENTION' : '').$like));
}
elseif ($arParams['ENTITY_TYPE_ID'] == 'BLOG_COMMENT')
{
$message = str_replace(['#TITLE#', '#A_START#', '#A_END#'], [$arParams["ENTITY_MESSAGE"], '', ''], GetMessage('IM_EVENT_RATING_COMMENT'.($arParams['MENTION'] ? '_MENTION' : '').$like));
}
elseif ($arParams['ENTITY_TYPE_ID'] == 'FORUM_TOPIC')
{
$message = str_replace('#LINK#', $arParams["ENTITY_TITLE"], GetMessage('IM_EVENT_RATING_FORUM_TOPIC'.$like));
}
elseif ($arParams['ENTITY_TYPE_ID'] == 'FORUM_POST')
{
$message = str_replace(['#TITLE#', '#A_START#', '#A_END#'], [$arParams["ENTITY_MESSAGE"], '', ''], GetMessage('IM_EVENT_RATING_COMMENT'.($arParams['MENTION'] ? '_MENTION' : '').$like));
}
elseif (
$arParams['ENTITY_TYPE_ID'] == 'IBLOCK_SECTION'
&& $arParams['ENTITY_PARAM'] == 'photos'
)
{
if (isset($arParams["ENTITY_BODY"]))
{
$message = str_replace(['#TITLE#', '#A_START#', '#A_END#'], [$arParams["ENTITY_BODY"], '', ''], GetMessage('IM_EVENT_RATING_PHOTO_ALBUM'.$like));
}
elseif (is_numeric($arParams["ENTITY_TITLE"]))
{
$message = str_replace(['#A_START#', '#A_END#'], ['', ''], GetMessage('IM_EVENT_RATING_PHOTO_ALBUM1'.$like));
}
else
{
$message = str_replace(['#TITLE#', '#A_START#', '#A_END#'], [$arParams["ENTITY_TITLE"], '', ''], GetMessage('IM_EVENT_RATING_PHOTO_ALBUM'.$like));
}
}
elseif (
$arParams['ENTITY_TYPE_ID'] == 'IBLOCK_ELEMENT'
&& $arParams['ENTITY_PARAM'] == 'library'
)
{
$message = str_replace(['#TITLE#', '#A_START#', '#A_END#'], [$arParams["ENTITY_TITLE"], '', ''], GetMessage('IM_EVENT_RATING_FILE'.$like));
}
elseif (
$arParams['ENTITY_TYPE_ID'] == 'IBLOCK_ELEMENT'
&& $arParams['ENTITY_PARAM'] == 'wiki'
)
{
$message = str_replace(['#TITLE#', '#A_START#', '#A_END#'], [$arParams["ENTITY_TITLE"], '', ''], GetMessage('IM_EVENT_RATING_WIKI'.$like));
}
elseif (
$arParams['ENTITY_TYPE_ID'] == 'IBLOCK_ELEMENT'
&& $arParams['ENTITY_PARAM'] == 'photos'
)
{
if (isset($arParams["ENTITY_BODY"]))
{
$message = str_replace(['#TITLE#', '#A_START#', '#A_END#'], [$arParams["ENTITY_BODY"], '', ''], GetMessage('IM_EVENT_RATING_PHOTO'.$like));
}
elseif (is_numeric($arParams["ENTITY_TITLE"]))
{
$message = str_replace(['#A_START#', '#A_END#'], ['', ''], GetMessage('IM_EVENT_RATING_PHOTO1'.$like));
}
else
{
$message = str_replace(['#TITLE#', '#A_START#', '#A_END#'], [$arParams["ENTITY_TITLE"], '', ''], GetMessage('IM_EVENT_RATING_PHOTO'.$like));
}
}
elseif ($arParams['ENTITY_TYPE_ID'] == 'LOG_COMMENT')
{
$message = str_replace(['#TITLE#', '#A_START#', '#A_END#'], [$arParams["ENTITY_TITLE"], '', ''], GetMessage('IM_EVENT_RATING_COMMENT'.($arParams['MENTION'] ? '_MENTION' : '').$like));
}
elseif ($arParams['ENTITY_TYPE_ID'] == 'LISTS_NEW_ELEMENT')
{
$message = str_replace(
[
'#TITLE#',
'#A_START#',
'#A_END#'
],
[
$arParams["ENTITY_TITLE"],
'',
''
],
GetMessage('IM_EVENT_RATING_LISTS_NEW_ELEMENT_LIKE'.$like)
);
}
else
{
$message = str_replace('#LINK#', $arParams["ENTITY_TITLE"], GetMessage('IM_EVENT_RATING_ELSE'.$like));
}
if ($arParams['ENTITY_LINK'] <> '')
{
$message .= ' ('.$arParams['ENTITY_LINK'].')';
}
}
else
{
if ($arParams['ENTITY_TYPE_ID'] == 'BLOG_POST')
{
$message = str_replace('#LINK#', ''.$arParams["ENTITY_TITLE"].'', GetMessage('IM_EVENT_RATING_BLOG_POST'.($arParams['MENTION'] ? '_MENTION' : '').$like));
}
elseif ($arParams['ENTITY_TYPE_ID'] == 'BLOG_COMMENT')
{
$message = str_replace(['#TITLE#', '#A_START#', '#A_END#'], [$arParams["ENTITY_MESSAGE"], '', ''], GetMessage('IM_EVENT_RATING_COMMENT'.($arParams['MENTION'] ? '_MENTION' : '').$like));
}
elseif ($arParams['ENTITY_TYPE_ID'] == 'FORUM_TOPIC')
{
$message = str_replace('#LINK#', ''.$arParams["ENTITY_TITLE"].'', GetMessage('IM_EVENT_RATING_FORUM_TOPIC'.$like));
}
elseif ($arParams['ENTITY_TYPE_ID'] == 'FORUM_POST')
{
$message = str_replace(['#TITLE#', '#A_START#', '#A_END#'], [$arParams["ENTITY_MESSAGE"], '', ''], GetMessage('IM_EVENT_RATING_COMMENT'.($arParams['MENTION'] ? '_MENTION' : '').$like));
}
elseif (
$arParams['ENTITY_TYPE_ID'] == 'IBLOCK_ELEMENT'
&& $arParams['ENTITY_PARAM'] == 'library'
)
{
$message = str_replace(['#TITLE#', '#A_START#', '#A_END#'], [$arParams["ENTITY_TITLE"], '', ''], GetMessage('IM_EVENT_RATING_FILE'.$like));
}
elseif (
$arParams['ENTITY_TYPE_ID'] == 'IBLOCK_ELEMENT'
&& $arParams['ENTITY_PARAM'] == 'wiki'
)
{
$message = str_replace(['#TITLE#', '#A_START#', '#A_END#'], [$arParams["ENTITY_TITLE"], '', ''], GetMessage('IM_EVENT_RATING_WIKI'.$like));
}
elseif (
$arParams['ENTITY_TYPE_ID'] == 'IBLOCK_SECTION'
&& $arParams['ENTITY_PARAM'] == 'photos'
)
{
if (isset($arParams["ENTITY_BODY"]))
{
$message = str_replace(['#TITLE#', '#A_START#', '#A_END#'], [$arParams["ENTITY_BODY"], '', ''], GetMessage('IM_EVENT_RATING_PHOTO_ALBUM'.$like));
}
elseif (is_numeric($arParams["ENTITY_TITLE"]))
{
$message = str_replace(['#A_START#', '#A_END#'], ['', ''], GetMessage('IM_EVENT_RATING_PHOTO_ALBUM1'.$like));
}
else
{
$message = str_replace(['#TITLE#', '#A_START#', '#A_END#'], [$arParams["ENTITY_TITLE"], '', ''], GetMessage('IM_EVENT_RATING_PHOTO_ALBUM'.$like));
}
}
elseif (
$arParams['ENTITY_TYPE_ID'] == 'IBLOCK_ELEMENT'
&& $arParams['ENTITY_PARAM'] == 'photos'
)
{
if (isset($arParams["ENTITY_BODY"]))
{
$message = str_replace(['#TITLE#', '#A_START#', '#A_END#'], [$arParams["ENTITY_BODY"], '', ''], GetMessage('IM_EVENT_RATING_PHOTO'.$like));
}
elseif (is_numeric($arParams["ENTITY_TITLE"]))
{
$message = str_replace(['#A_START#', '#A_END#'], ['', ''], GetMessage('IM_EVENT_RATING_PHOTO1'.$like));
}
else
{
$message = str_replace(['#TITLE#', '#A_START#', '#A_END#'], [$arParams["ENTITY_TITLE"], '', ''], GetMessage('IM_EVENT_RATING_PHOTO'.$like));
}
}
elseif ($arParams['ENTITY_TYPE_ID'] == 'LOG_COMMENT')
{
$message = str_replace(['#TITLE#', '#A_START#', '#A_END#'], [$arParams["ENTITY_TITLE"], '', ''], GetMessage('IM_EVENT_RATING_COMMENT'.($arParams['MENTION'] ? '_MENTION' : '').$like));
}
elseif ($arParams['ENTITY_TYPE_ID'] == 'LISTS_NEW_ELEMENT')
{
$message = str_replace(
[
'#TITLE#',
'#A_START#',
'#A_END#'
],
[
$arParams["ENTITY_TITLE"],
'',
''
],
GetMessage('IM_EVENT_RATING_LISTS_NEW_ELEMENT'.$like)
);
}
else
{
$message = str_replace('#LINK#', $arParams['ENTITY_LINK'] <> ''?''.$arParams["ENTITY_TITLE"].'': ''.$arParams["ENTITY_TITLE"].'', GetMessage('IM_EVENT_RATING_ELSE'.$like));
}
if ($intranetInstalled)
{
$message .= "n".str_replace("#REACTION#", CRatingsComponentsMain::getRatingLikeMessage(!empty($arParams['REACTION']) ? $arParams['REACTION'] : ''), BitrixMainLocalizationLoc::getMessage("IM_EVENT_RATING_REACTION"));
}
}
return $message;
}