• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/classes/general/im_event.php
  • Класс: CIMEvent
  • Вызов: CIMEvent::GetMessageRatingVote
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;
}