- Модуль: 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;
}