91 public static function GetList($arOrder = Array(
"SORT" =>
"ASC",
"ID" =>
"DESC"),
$arFilter = Array(), $arGroupBy =
false, $arNavStartParams =
false, $arSelectFields =
array())
95 if (
count($arSelectFields) <= 0)
97 $arSelectFields =
array(
"ID",
"SITE_ID",
"NAME",
"SORT");
100 $bShouldBeCached =
false;
102 if (CACHED_b_sonet_group_subjects !=
false)
104 if ($arSelectFields ==
false && $arNavStartParams ==
false && $arGroupBy ==
false)
106 $bFilterByID = array_key_exists(
"ID",
$arFilter);
107 $bFilterBySite = array_key_exists(
"SITE_ID",
$arFilter);
110 $bShouldBeCached =
true;
111 $cacheId =
"b_sonet_group_subjects".md5(serialize($arOrder));
112 if (
$CACHE_MANAGER->Read(CACHED_b_sonet_group_subjects, $cacheId,
"b_sonet_group_subjects"))
116 $arReturnValue =
array();
118 for (
$i = 0;
$i < $cnt;
$i++)
137 $res =
new CDBResult;
145 static $arFields1 =
array(
146 "ID" => Array(
"FIELD" =>
"S.ID",
"TYPE" =>
"int"),
147 "NAME" => Array(
"FIELD" =>
"S.NAME",
"TYPE" =>
"string"),
148 "SORT" => Array(
"FIELD" =>
"S.SORT",
"TYPE" =>
"int"),
151 if (array_key_exists(
"SITE_ID",
$arFilter))
153 $arFields[
"SITE_ID"] = Array(
"FIELD" =>
"SGSS.SITE_ID",
"TYPE" =>
"string",
"FROM" =>
"LEFT JOIN b_sonet_group_subject_site SGSS ON S.ID = SGSS.SUBJECT_ID");
154 $strDistinct =
" DISTINCT ";
155 foreach ($arSelectFields as
$i => $strFieldTmp)
157 if ($strFieldTmp ===
'SITE_ID')
159 unset($arSelectFields[
$i]);
163 foreach ($arOrder as $by =>
$order)
165 if (!in_array($by, $arSelectFields))
167 $arSelectFields[] = $by;
173 $arFields[
"SITE_ID"] = Array(
"FIELD" =>
"S.SITE_ID",
"TYPE" =>
"string");
179 $arSqls = CSocNetGroup::PrepareSql(
$arFields, $arOrder,
$arFilter, $arGroupBy, $arSelectFields);
181 $arSqls[
"SELECT"] = str_replace(
"%%_DISTINCT_%%", $strDistinct, $arSqls[
"SELECT"]);
183 if (is_array($arGroupBy) &&
count($arGroupBy) === 0)
186 "SELECT ".$arSqls[
"SELECT"].
" ".
187 "FROM b_sonet_group_subject S ".
188 " ".$arSqls[
"FROM"].
" ";
189 if ($arSqls[
"WHERE"] <>
'')
191 $strSql .=
"WHERE ".$arSqls[
"WHERE"].
" ";
193 if ($arSqls[
"GROUPBY"] <>
'')
195 $strSql .=
"GROUP BY ".$arSqls[
"GROUPBY"].
" ";
210 "SELECT ".$arSqls[
"SELECT"].
" ".
211 "FROM b_sonet_group_subject S ".
212 " ".$arSqls[
"FROM"].
" ";
213 if ($arSqls[
"WHERE"] <>
'')
215 $strSql .=
"WHERE ".$arSqls[
"WHERE"].
" ";
218 if ($arSqls[
"GROUPBY"] <>
'')
220 $strSql .=
"GROUP BY ".$arSqls[
"GROUPBY"].
" ";
223 if ($arSqls[
"ORDERBY"] <>
'')
225 $strSql .=
"ORDER BY ".$arSqls[
"ORDERBY"].
" ";
229 is_array($arNavStartParams)
230 && (
int) ($arNavStartParams[
"nTopCount"] ??
null) <= 0
234 "SELECT COUNT('x') as CNT ".
235 "FROM b_sonet_group_subject S ".
236 " ".$arSqls[
"FROM"].
" ";
237 if ($arSqls[
"WHERE"] <>
'')
239 $strSql_tmp .=
"WHERE ".$arSqls[
"WHERE"].
" ";
242 if ($arSqls[
"GROUPBY"] <>
'')
244 $strSql_tmp .=
"GROUP BY ".$arSqls[
"GROUPBY"].
" ";
251 if ($arSqls[
"GROUPBY"] ==
'')
261 $cnt =
$dbRes->SelectedRowsCount();
268 $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
272 if (is_array($arNavStartParams) && (
int)$arNavStartParams[
"nTopCount"] > 0)
274 $strSql .=
"LIMIT ".(int)$arNavStartParams[
"nTopCount"];
281 if (CACHED_b_sonet_group_subjects ==
false || !$bShouldBeCached)