- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/classes/general/taskfiles.php
- Класс: CTaskFiles
- Вызов: CTaskFiles::checkFilesAccessibilityByUser
static function checkFilesAccessibilityByUser($arFilesIds, $userId)
{
$arAccessMap = array();
$arFilesIds = array_unique($arFilesIds);
$arMustBeCheckedFilesIds = $arFilesIds; // for preventing check again already checked file id
// Admin and B24-admin can view any file
if (
CTasksTools::IsAdmin($userId)
|| CTasksTools::IsPortalB24Admin($userId)
)
{
foreach ($arFilesIds as $fileId)
$arAccessMap['f' . $fileId] = true;
return ($arAccessMap);
}
// init access map to FALSE (access denied) by default
foreach ($arFilesIds as $fileId)
$arAccessMap['f' . $fileId] = false;
// files that are temporary saved by user
$arAccessibleFilesIds = self::getRegisteredTemporaryFilesList($userId);
$arTmp = $arMustBeCheckedFilesIds;
foreach ($arTmp as $key => $fileId)
{
if (in_array( (int) $fileId, $arAccessibleFilesIds, true))
{
$arAccessMap['f' . $fileId] = true;
unset($arMustBeCheckedFilesIds[$key]);
}
}
// user can access files, that are already attached to tasks, accessibly by user
$arAccessibleFilesIds = self::getFilesAttachedInAccessibleTasks($userId, $arMustBeCheckedFilesIds);
$arTmp = $arMustBeCheckedFilesIds;
foreach ($arTmp as $key => $fileId)
{
if (in_array( (int) $fileId, $arAccessibleFilesIds, true))
{
$arAccessMap['f' . $fileId] = true;
unset($arMustBeCheckedFilesIds[$key]);
}
}
// check if file is in tasks' templates, that are accessible for this user
if ( ! empty($arMustBeCheckedFilesIds) )
{
$arAccessibleFilesIds = self::getFilesAttachedInAccessibleTemplates($userId);
foreach ($arMustBeCheckedFilesIds as $fileId)
{
if (in_array( (int) $fileId, $arAccessibleFilesIds, true))
$arAccessMap['f' . $fileId] = true;
}
}
return ($arAccessMap);
}