• Модуль: lists
  • Путь к файлу: ~/bitrix/modules/lists/classes/general/livefeed.php
  • Класс: CListsLiveFeed
  • Вызов: CListsLiveFeed::BeforeIndexSocNet
static function BeforeIndexSocNet($bxSocNetSearch, $fields)
{
	static $bizprocForumId = false;

	if (!$bizprocForumId)
	{
		$bizprocForumId = intval(COption::GetOptionString('bizproc', 'forum_id'));
	}

	if(
		isset($fields['ENTITY_TYPE_ID'])
		&& $fields['ENTITY_TYPE_ID'] == 'FORUM_POST'
		&& intval($fields['PARAM1']) == $bizprocForumId
		&& !empty($fields['PARAM2'])
		&& !empty($bxSocNetSearch->_params["PATH_TO_WORKFLOW"])
		&& CModule::IncludeModule("forum")
		&& CModule::IncludeModule("bizproc")
	)
	{
		$topic = CForumTopic::GetByID($fields['PARAM2']);

		if (
			!empty($topic)
			&& is_array($topic)
			&& !empty($topic["XML_ID"])
		)
		{
			if (preg_match('/^WF_([0-9a-f.]+)/', $topic["XML_ID"], $match))
			{
				$workflowId = $match[1];
				$state = CBPStateService::GetStateDocumentId($workflowId);

				if (
					$state[0] == 'lists'
					&& $state[1] == 'BizprocDocument'
					&& CModule::IncludeModule('iblock')
					&& (intval($state[2]) > 0)
				)
				{
					$iblockElementQuery = CIBlockElement::GetList(
						array(),
						array(
							"ID" => intval($state[2])
						),
						false,
						false,
						array("ID", "IBLOCK_ID")
					);

					if ($iblockElement = $iblockElementQuery->Fetch())
					{
						$listId = $iblockElement["IBLOCK_ID"];

						$fields["URL"] = $bxSocNetSearch->Url(
							str_replace(
								array("#list_id#", "#workflow_id#"),
								array($listId, urlencode($workflowId)),
								$bxSocNetSearch->_params["PATH_TO_WORKFLOW"]
							),
							array(
								"MID" => $fields["ENTITY_ID"]
							),
							"message".$fields["ENTITY_ID"]
						);

						if (
							!empty($fields["LID"])
							&& is_array($fields["LID"])
						)
						{
							foreach ($fields["LID"] as $siteId => $url)
							{
								$fields["LID"][$siteId] = $fields["URL"];
							}
						}
					}
				}
			}
		}
	}

	return $fields;
}