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