• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/classes/general/task.php
  • Класс: CTasks
  • Вызов: CTasks::GetFilter
static function GetFilter($arFilter, $sAliasPrefix = "", $arParams = false)
{
	if (!is_array($arFilter))
	{
		$arFilter = [];
	}

	$arSqlSearch = [];

	if (is_array($arParams) && array_key_exists('USER_ID', $arParams) && ($arParams['USER_ID'] > 0))
	{
		$userID = (int)$arParams['USER_ID'];
	}
	else
	{
		$userID = User::getId();
	}

	// if TRUE will be generated constraint for members
	$bMembersTableJoined = false;
	if (isset($arParams['bMembersTableJoined']))
	{
		$bMembersTableJoined = (bool)$arParams['bMembersTableJoined'];
	}

	$bGetZombie = false;
	$sql = self::GetSqlByFilter($arFilter, $userID, $sAliasPrefix, $bGetZombie, $bMembersTableJoined, $arParams);
	if ($sql <> '')
	{
		$arSqlSearch[] = $sql;
	}

	// enable legacy access if no option passed (by default)
	// disable legacy access when ENABLE_LEGACY_ACCESS === true
	// we can not switch legacy access off by default, because getFilter() can be used separately
	$enableLegacyAccess = !is_array($arParams) || !array_key_exists('ENABLE_LEGACY_ACCESS', $arParams) || $arParams['ENABLE_LEGACY_ACCESS'] !== false;
	if ($enableLegacyAccess && static::needAccessRestriction($arFilter, $arParams))
	{
		[$arSubSqlSearch, $fields] = static::getPermissionFilterConditions(
			$arParams,
			['ALIAS' => $sAliasPrefix]
		);

		if (!empty($arSubSqlSearch))
		{
			$arSqlSearch[] = " n/*access LEGACY BEGIN*/n (" .
				implode(" OR ", $arSubSqlSearch) .
				") n/*access LEGACY END*/n";
		}
	}

	return $arSqlSearch;
}