• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/classes/general/log_tools.php
  • Класс: CSocNetLogTools
  • Вызов: CSocNetLogTools::GetDataFromRatingEntity
static function GetDataFromRatingEntity($rating_entity_type_id, $rating_entity_id, $bCheckRights = true)
{
	static $blogPostEventIdList = null;

	$rating_entity_type_id = preg_replace("/[^a-z0-9_-]/i", "", $rating_entity_type_id);
	$rating_entity_id = (int)$rating_entity_id;

	if (
		$rating_entity_type_id == ''
		|| $rating_entity_id <= 0
	)
	{
		return false;
	}

	$log_type = '';

	switch ($rating_entity_type_id)
	{
		case "BLOG_POST":
			$log_type = "log";
			if ($blogPostEventIdList === null)
			{
				$blogPostLivefeedProvider = new BitrixSocialnetworkLivefeedBlogPost;
				$blogPostEventIdList = $blogPostLivefeedProvider->getEventId();
			}
			$log_event_id = array_merge($blogPostEventIdList, array("idea"));
			break;
		case "BLOG_COMMENT":
			$log_type = "comment";
			$log_event_id = array("blog_comment", "photo_comment");
			break;
		case "FORUM_TOPIC":
			$log_type = "log";
			$log_event_id = array("forum");
			if (CModule::IncludeModule("forum"))
			{
				$dbForumMessage = CForumMessage::GetList(
					array("ID" => "ASC"),
					array("TOPIC_ID" => $rating_entity_id),
					false,
					1
				);
				if ($arForumMessage = $dbForumMessage->Fetch())
				{
					$rating_entity_id = $arForumMessage["ID"];
				}
			}
			break;
		case "FORUM_POST":
			$log_type = "comment";
			$forumPostLivefeedProvider = new BitrixSocialnetworkLivefeedForumPost();
			$log_event_id = $forumPostLivefeedProvider->getEventId();
			break;
		case "IBLOCK_ELEMENT":
			$log_type = "log";
			$log_event_id = array("photo_photo", "files", "commondocs", "wiki");
			break;
		case "INTRANET_NEW_USER":
			$log_type = "log";
			$log_event_id = array("intranet_new_user");
			break;
		case "INTRANET_NEW_USER_COMMENT":
			$log_type = "comment";
			$log_event_id = array("intranet_new_user_comment");
			break;
		case "BITRIX24_NEW_USER":
			$log_type = "log";
			$log_event_id = array("bitrix24_new_user");
			break;
		case "BITRIX24_NEW_USER_COMMENT":
			$log_type = "comment";
			$log_event_id = array("bitrix24_new_user_comment");
			break;
		case "VOTING":
			$log_type = "log";
			if ($blogPostEventIdList === null)
			{
				$blogPostLivefeedProvider = new BitrixSocialnetworkLivefeedBlogPost;
				$blogPostEventIdList = $blogPostLivefeedProvider->getEventId();
			}
			$log_event_id = $blogPostEventIdList;
			if (CModule::IncludeModule("blog"))
			{
				$rsBlogPost = CBlogPost::GetList(
					array("ID" => "DESC"),
					array("UF_BLOG_POST_VOTE" => $rating_entity_id),
					false,
					array("nTopCount" => 1),
					array("ID")
				);

				if ($arBlogPost = $rsBlogPost->Fetch())
				{
					$rating_entity_id = $arBlogPost["ID"];
				}
			}
			break;
		case "LISTS_NEW_ELEMENT":
			$log_type = "log";
			$log_event_id = array("lists_new_element");
			break;
		case "LOG_ENTRY":
			$log_type = "log_entry";
			break;
		case "LOG_COMMENT":
			$log_type = "log_comment";
			break;
		default:
	}

	$log_id = null;
	$log_comment_id = null;

	if ($log_type === "log")
	{
		$rsLogSrc = CSocNetLog::GetList(
			array(),
			array(
				"EVENT_ID" => $log_event_id,
				"SOURCE_ID" => $rating_entity_id
			),
			false,
			false,
			array("ID"),
			array(
				"CHECK_RIGHTS" => ($bCheckRights ? "Y" : "N"),
				"USE_SUBSCRIBE" => "N"
			)
		);
		if ($arLogSrc = $rsLogSrc->Fetch())
		{
			$log_id = $arLogSrc["ID"];
		}
	}
	elseif ($log_type === "log_entry")
	{
		$rsLogSrc = CSocNetLog::GetList(
			array(),
			array(
				"ID" => $rating_entity_id
			),
			false,
			false,
			array("ID"),
			array(
				"CHECK_RIGHTS" => ($bCheckRights ? "Y" : "N"),
				"USE_SUBSCRIBE" => "N"
			)
		);
		if ($arLogSrc = $rsLogSrc->Fetch())
			$log_id = $arLogSrc["ID"];
	}
	elseif ($log_type === "comment")
	{
		$rsLogCommentSrc = CSocNetLogComments::GetList(
			array(),
			array(
				"EVENT_ID" => $log_event_id,
				"SOURCE_ID" => $rating_entity_id
			),
			false,
			false,
			array("ID", "LOG_ID"),
			array(
				"CHECK_RIGHTS" => ($bCheckRights ? "Y" : "N"),
				"USE_SUBSCRIBE" => "N"
			)
		);
		if ($arLogCommentSrc = $rsLogCommentSrc->Fetch())
		{
			$log_id = $arLogCommentSrc["LOG_ID"];
			$log_comment_id = $arLogCommentSrc["ID"];
		}
	}
	elseif ($log_type == "log_comment")
	{
		$rsLogCommentSrc = CSocNetLogComments::GetList(
			array(),
			array(
				"ID" => $rating_entity_id
			),
			false,
			false,
			array("ID", "LOG_ID"),
			array(
				"CHECK_RIGHTS" => ($bCheckRights ? "Y" : "N"),
				"USE_SUBSCRIBE" => "N"
			)
		);
		if ($arLogCommentSrc = $rsLogCommentSrc->Fetch())
		{
			$log_id = $arLogCommentSrc["LOG_ID"];
			$log_comment_id = $arLogCommentSrc["ID"];
		}
	}

	if ($log_id > 0)
	{
		$arResult = array("LOG_ID" => $log_id);
		if ($log_comment_id > 0)
			$arResult["LOG_COMMENT_ID"] = $log_comment_id;

		return $arResult;
	}
	else
		return false;
}