- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/classes/general/tasktools.php
- Класс: CTasksTools
- Вызов: CTasksTools::FixForumCommentURL
static function FixForumCommentURL($arData)
{
if (
($arData['MODULE_ID'] !== 'FORUM')
&& ($arData['MODULE_ID'] !== 'forum')
)
{
return (null);
}
if ($arData['ENTITY_TYPE_ID'] !== 'FORUM_POST')
return (null);
// $arData['PARAM1'] is FORUM_ID
// Check that forum is of tasks
$arTasksForums = self::ListTasksForumsAsArray();
if ( ! in_array( (int) $arData['PARAM1'], $arTasksForums, true) )
return (null);
// Get tasks data
$rsTask = CTasks::GetList(
array(),
array('FORUM_TOPIC_ID' => $arData['PARAM2'])
);
$arTask = $rsTask->Fetch();
if ( ! $arTask )
return (null);
// Prepare path
$defSiteId = CSite::GetDefSite();
$extranetSiteId = false;
if (CModule::IncludeModule('extranet')
&& method_exists('CExtranet', 'GetExtranetSiteID')
)
{
$extranetSiteId = CExtranet::GetExtranetSiteID();
}
$arFilter = array(
'UF_DEPARTMENT' => false,
'ID' => $arData['USER_ID']
);
$rsUser = CUser::GetList(
'last_name',
'asc',
$arFilter,
array('SELECT' => array('UF_DEPARTMENT'))
);
$isExtranetUser = false;
if ($arUser = $rsUser->Fetch())
$isExtranetUser = true;
if ($isExtranetUser && ($extranetSiteId !== false))
{
if ($arTask["GROUP_ID"])
{
$pathTemplate = str_replace(
"#group_id#",
$arTask["GROUP_ID"],
COption::GetOptionString(
"tasks",
"paths_task_group_entry",
"/extranet/workgroups/group/#group_id#/tasks/task/view/#task_id#/",
$extranetSiteId
)
);
$pathTemplate = str_replace(
"#GROUP_ID#",
$arTask["GROUP_ID"],
$pathTemplate
);
}
else
{
$pathTemplate = COption::GetOptionString(
"tasks",
"paths_task_user_entry",
"/extranet/contacts/personal/user/#user_id#/tasks/task/view/#task_id#/",
$extranetSiteId
);
}
}
else
{
if ($arTask["GROUP_ID"])
{
$pathTemplate = str_replace(
"#group_id#",
$arTask["GROUP_ID"],
COption::GetOptionString(
"tasks",
"paths_task_group_entry",
"/workgroups/group/#group_id#/tasks/task/view/#task_id#/",
$defSiteId
)
);
$pathTemplate = str_replace(
"#GROUP_ID#",
$arTask["GROUP_ID"],
$pathTemplate
);
}
else
{
$pathTemplate = COption::GetOptionString(
"tasks",
"paths_task_user_entry",
"/company/personal/user/#user_id#/tasks/task/view/#task_id#/",
$defSiteId
);
}
}
$messageUrl = CComponentEngine::MakePathFromTemplate(
$pathTemplate,
array(
"user_id" => $arData['USER_ID'],
"task_id" => $arTask["ID"],
"action" => "view"
)
);
if($arData['ENTITY_ID'] <> '')
{
$messageUrl = BitrixTasksIntegrationForumComment::makeUrl($messageUrl, $arData['ENTITY_ID']);
}
// Replace path to correct in URL
$arData['URL'] = $messageUrl;
// For extranet users address taken from default site by "like/dislike" feature
// I don't know why. So replace all links.
foreach ($arData['LID'] as $siteId => $value)
$arData['LID'][$siteId] = $messageUrl;
return ($arData);
}