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