• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/lib/componenthelper.php
  • Класс: BitrixSocialnetworkComponentHelper
  • Вызов: ComponentHelper::getLFCommentsParams
static function getLFCommentsParams($eventFields = array()): array
{
	$forumMetaData = CSocNetLogTools::getForumCommentMetaData($eventFields["EVENT_ID"]);

	if (
		$forumMetaData
		&& $eventFields["SOURCE_ID"] > 0
	)
	{
		$result = [
			"ENTITY_TYPE" => $forumMetaData[1],
			"ENTITY_XML_ID" => $forumMetaData[0]."_".$eventFields["SOURCE_ID"],
			"NOTIFY_TAGS" => $forumMetaData[2]
		];

		// Calendar events could generate different livefeed entries with same SOURCE_ID
		// That's why we should add entry ID to make comment interface work
		if (
			$eventFields["EVENT_ID"] === 'calendar'
			&& !empty($eventFields["PARAMS"])
			&& ($calendarEventParams = unserialize(htmlspecialcharsback($eventFields["PARAMS"]), [ 'allowed_classes' => false ]))
			&& !empty($calendarEventParams['COMMENT_XML_ID'])
		)
		{
			$result["ENTITY_XML_ID"] = $calendarEventParams['COMMENT_XML_ID'];
		}
	}
	elseif ($eventFields["EVENT_ID"] === 'photo') // photo album
	{
		$result = array(
			"ENTITY_TYPE" => 'PA',
			"ENTITY_XML_ID" => 'PHOTO_ALBUM_'.$eventFields["ID"],
			"NOTIFY_TAGS" => ''
		);
	}
	else
	{
		$result = array(
			"ENTITY_TYPE" => mb_substr(mb_strtoupper($eventFields["EVENT_ID"])."_".$eventFields["ID"], 0, 2),
			"ENTITY_XML_ID" => mb_strtoupper($eventFields["EVENT_ID"])."_".$eventFields["ID"],
			"NOTIFY_TAGS" => ""
		);
	}

	if (
		mb_strtoupper($eventFields["ENTITY_TYPE"]) === "CRMACTIVITY"
		&& Loader::includeModule('crm')
		&& ($activityFields = CCrmActivity::getById($eventFields["ENTITY_ID"], false))
		&& (
			$activityFields["TYPE_ID"] == CCrmActivityType::Task
			|| (
				(int)$activityFields['TYPE_ID'] === CCrmActivityType::Provider
				&& $activityFields['PROVIDER_ID'] === Task::getId()
			)
		)
	)
	{
		$result["ENTITY_XML_ID"] = "TASK_".$activityFields["ASSOCIATED_ENTITY_ID"];
	}
	elseif (
		$eventFields["ENTITY_TYPE"] === "WF"
		&& is_numeric($eventFields["SOURCE_ID"])
		&& (int)$eventFields["SOURCE_ID"] > 0
		&& Loader::includeModule('bizproc')
		&& ($workflowId = CBPStateService::getWorkflowByIntegerId($eventFields["SOURCE_ID"]))
	)
	{
		$result["ENTITY_XML_ID"] = "WF_".$workflowId;
	}

	return $result;
}