• Модуль: webdav
  • Путь к файлу: ~/bitrix/modules/webdav/classes/extlinks.php
  • Класс: CWebDavExtLinks
  • Вызов: CWebDavExtLinks::GetList
static function GetList($arFilter, $arFields = array(), $arOptions = array())
{
	global $DB;
	$fields = "*";
	$groupBy = "";
	if(isset($arFilter["HASH"]) && self::DEMO_HASH == $arFilter["HASH"])
	{
		return self::GetDemoList();
	}
	$arSqlSearch = Array();
	if(!is_array($arFilter))
	{
		$arFilter = Array();
	}
	if(!array_key_exists("LINK_TYPE", $arFilter))
	{
		$arFilter['LINK_TYPE'] = self::LINK_TYPE_MANUAL;
	}

	if(array_key_exists("ONLY_CURRENT_USER", $arFilter) && !self::IsAdmin())
	{
		$arFilter["USER_ID"] = self::GetUserID();
	}
	if(array_key_exists("BASE_URL", $arFilter) && array_key_exists("URL", $arFilter) && is_string($arFilter["BASE_URL"]) && is_string($arFilter["URL"]))
	{
		$arFilter["URL_HASH"] = md5($arFilter["BASE_URL"] . $arFilter["URL"]);
		unset($arFilter["URL"]);
		unset($arFilter["BASE_URL"]);
	}
	if(is_array($arFields) && count($arFields) > 0)
	{
		$arFieldsV = self::VerifyFields($arFields);
		if(count($arFieldsV) > 0)
		{
			$fields = implode(",", $arFieldsV);
		}
	}
	if(isset($arOptions["COUNT"]) && $arOptions["COUNT"] === true)
	{
		$groupBy = $fields;
		$fields = ($fields == "*" ? "" : $fields . ", " ) . "count( " . $fields . " ) AS CT";
	}

	foreach($arFilter as $key => $val)
	{
		if((is_array($val) && count($val) <= 0) || (!is_array($val) && $val == ''))
		{
			continue;
		}
		$key = mb_strtoupper($key);
		if (is_array($val))
		{
			$val = implode(" | ",$val);
		}
		$strSqlSearch2 = "";
		switch($key)
		{
			case "LINK_TYPE":
				$arSqlSearch[] = GetFilterQuery("EL.LINK_TYPE", $val, "N");
				break;
			case "URL_HASH":
				$arSqlSearch[] = GetFilterQuery("EL.URL_HASH", $val, "N");
				break;
			case "URL":
				$arSqlSearch[] = ("EL.URL = '" .  $DB->ForSql($val) . "'");
				break;
			case "BASE_URL":
				$arSqlSearch[] = ("EL.BASE_URL = '" .  $DB->ForSql($val) . "'");
				break;
			case "HASH":
				$arSqlSearch[] = GetFilterQuery("EL.HASH", $val, "N");
				break;
			case "RESOURCE_TYPE":
				$arSqlSearch[] = GetFilterQuery("EL.RESOURCE_TYPE", $val, "N");
				break;
			case "ACTUAL":
				$strSqlSearch2 .= "
			AND EL.LIFETIME >= ".time();
				break;
			case "USER_ID":
				$arSqlSearch[] = GetFilterQuery("USER_ID", $val, "N");
				break;
		}
	}
	$strSqlSearch = GetFilterSqlSearch($arSqlSearch);

	if($groupBy <> '')
	{
		$groupBy = "GROUP BY " . $groupBy;
	}

	$strSql = "
		SELECT
			$fields
		FROM
			" . self::EXT_LINKS_TABLE . " EL
		WHERE
		$strSqlSearch
		$strSqlSearch2
		$groupBy";
	$rs = $DB->Query($strSql, false, self::ErrMess( __FUNCTION__ , __LINE__ ));
	return $rs;
}