- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/classes/general/task.php
- Класс: CTasks
- Вызов: CTasks::CanCurrentUserViewTopic
static function CanCurrentUserViewTopic($topicID)
{
$isSocNetModuleIncluded = CModule::IncludeModule("socialnetwork");
if (($topicID = intval($topicID)) && User::getId())
{
if (User::isSuper())
{
return true;
}
$rsTask = $res = CTasks::GetList([], ["FORUM_TOPIC_ID" => $topicID]);
if ($arTask = $rsTask->Fetch())
{
if (((int)$arTask['GROUP_ID']) > 0)
{
if (
in_array(CSocNetFeaturesPerms::GetOperationPerm(SONET_ENTITY_GROUP, $arTask["GROUP_ID"],
"tasks", "view_all"), ["G2", "AU"])
)
{
return true;
}
elseif (
$isSocNetModuleIncluded
&& (false !== CSocNetFeaturesPerms::CurrentUserCanPerformOperation(SONET_ENTITY_GROUP,
$arTask['GROUP_ID'], 'tasks', 'view_all'))
)
{
return (true);
}
}
$members = self::getMembers($arTask['ID']);
$arTask['ACCOMPLICES'] = $members[MemberTable::MEMBER_TYPE_ACCOMPLICE];
$arTask['AUDITORS'] = $members[MemberTable::MEMBER_TYPE_AUDITOR];
if (
in_array(User::getId(), array_unique(array_merge([$arTask["CREATED_BY"], $arTask["RESPONSIBLE_ID"]],
$arTask["ACCOMPLICES"], $arTask["AUDITORS"])))
)
{
return true;
}
$dbRes = CUser::GetList('ID', 'ASC', ['ID' => $arTask["RESPONSIBLE_ID"]],
['SELECT' => ['UF_DEPARTMENT']]);
if (
($arRes = $dbRes->Fetch()) && is_array($arRes['UF_DEPARTMENT'])
&& count($arRes['UF_DEPARTMENT'])
> 0
)
{
if (
in_array(User::getId(), array_keys(CTasks::GetDepartmentManagers($arRes['UF_DEPARTMENT'],
$arTask["RESPONSIBLE_ID"])))
)
{
return true;
}
}
}
}
return false;
}