- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/classes/general/taskfiles.php
- Класс: CTaskFiles
- Вызов: CTaskFiles::isUserfieldFileAccessibleByUser
static function isUserfieldFileAccessibleByUser($taskId, $fileId, $userId)
{
/**
* @global CUserTypeManager $USER_FIELD_MANAGER
*/
global $USER_FIELD_MANAGER;
$isAccessible = false;
$fileId = (int) $fileId;
if ( ! ($fileId >= 1) )
return (false);
static $arOrder = array();
static $arSelect = array('ID');
$arFilter = array('ID' => $taskId);
$arParams = array('USER_ID' => $userId);
$r = CTasks::GetList($arOrder, $arFilter, $arSelect, $arParams);
$arTask = $r->Fetch();
if ( ! $arTask )
return (false);
// We got the task, it means user have access to this task and to all files of this task
$arUserFields = $USER_FIELD_MANAGER->GetUserFields('TASKS_TASK', $arTask['ID'], LANGUAGE_ID, $userId);
$bFileAttachedToGivenTask = false;
foreach($arUserFields as $arUserField)
{
if ($arUserField['USER_TYPE']['USER_TYPE_ID'] !== 'file')
continue;
if ( ! is_array($arUserField['VALUE']) )
$arUserField['VALUE'] = array($arUserField['VALUE']);
foreach ($arUserField['VALUE'] as $attachedFileId)
{
if ($fileId === (int)$attachedFileId)
{
$bFileAttachedToGivenTask = true;
break;
}
}
}
if ($bFileAttachedToGivenTask)
$isAccessible = true;
return ($isAccessible);
}