81 if (!is_array($arSelectFields))
87 $productFilterExists = array_key_exists(
'PRODUCT_ID',
$arFilter);
88 if ($productFilterExists)
92 $productFilterExists = !empty($productIds);
96 if (empty($arSelectFields))
98 $arSelectFields = $defaultList;
107 "FIELD" =>
"CS.ACTIVE",
111 "FIELD" =>
"CS.TITLE",
115 "FIELD" =>
"CS.PHONE",
119 "FIELD" =>
"CS.SCHEDULE",
123 "FIELD" =>
"CS.ADDRESS",
127 "FIELD" =>
"CS.DESCRIPTION",
131 "FIELD" =>
"CS.GPS_N",
135 "FIELD" =>
"CS.GPS_S",
139 "FIELD" =>
"CS.IMAGE_ID",
143 "FIELD" =>
"CS.LOCATION_ID",
147 "FIELD" =>
"CS.DATE_CREATE",
148 "TYPE" =>
"datetime",
151 "FIELD" =>
"CS.DATE_MODIFY",
152 "TYPE" =>
"datetime",
155 "FIELD" =>
"CS.USER_ID",
159 "FIELD" =>
"CS.MODIFIED_BY",
163 "FIELD" =>
"CS.XML_ID",
167 "FIELD" =>
"CS.SORT",
171 "FIELD" =>
"CS.EMAIL",
175 "FIELD" =>
"CS.ISSUING_CENTER",
179 "FIELD" =>
"CS.SHIPPING_CENTER",
183 "FIELD" =>
"CS.SITE_ID",
187 "FIELD" =>
"CS.CODE",
191 "FIELD" =>
"CS.IS_DEFAULT",
194 if ($productFilterExists)
197 "FIELD" =>
"CP.AMOUNT",
199 "FROM" =>
"LEFT JOIN b_catalog_store_product CP ON "
200 .
"(CS.ID = CP.STORE_ID AND CP.PRODUCT_ID IN (" . implode(
',', $productIds) .
"))"
203 if (in_array(
'*', $arSelectFields) || in_array(
'PRODUCT_AMOUNT', $arSelectFields))
206 "FIELD" =>
"CP.PRODUCT_ID",
212 if (!is_array($arOrder))
216 if (!empty($arOrder))
218 $arOrder = array_change_key_case($arOrder, CASE_UPPER);
219 foreach (array_keys($arOrder) as $field)
221 $arOrder[$field] = strtoupper($arOrder[$field]);
222 if ($arOrder[$field] !==
'DESC')
224 $arOrder[$field] =
'ASC';
230 $userField->SetEntity(
"CAT_STORE",
"CS.ID");
231 $userField->SetSelect($arSelectFields);
233 $userField->SetOrder($arOrder);
235 $strUfFilter = $userField->GetFilter();
236 $strSqlUfFilter = ($strUfFilter <>
'') ?
" (".$strUfFilter.
") " :
"";
240 foreach ($arOrder as $field => $by)
242 $field = $userField->GetOrder($field);
246 if ($strSqlUfOrder <>
'')
247 $strSqlUfOrder .=
', ';
248 $strSqlUfOrder .= $field.
" ".$by;
252 $arSqls[
"SELECT"] = str_replace(
"%%_DISTINCT_%%",
"", $arSqls[
"SELECT"]);
254 if (empty($arGroupBy) && is_array($arGroupBy))
256 $strSql =
"SELECT ".$arSqls[
"SELECT"].
" ".$userField->GetSelect().
" FROM b_catalog_store CS ".$arSqls[
"FROM"].
" ".$userField->GetJoin(
"CS.ID");
257 if (!empty($arSqls[
"WHERE"]))
258 $strSql .=
" WHERE ".$arSqls[
"WHERE"].
" ";
260 if ($arSqls[
"WHERE"] <>
'' && $strSqlUfFilter <>
'')
261 $strSql .=
" AND ".$strSqlUfFilter.
" ";
262 elseif ($arSqls[
"WHERE"] ==
'' && $strSqlUfFilter <>
'')
263 $strSql .=
" WHERE ".$strSqlUfFilter.
" ";
265 if (!empty($arSqls[
"GROUPBY"]))
266 $strSql .=
" GROUP BY ".$arSqls[
"GROUPBY"];
274 $strSql =
"SELECT ".$arSqls[
"SELECT"].
" ".$userField->GetSelect().
" FROM b_catalog_store CS ".$arSqls[
"FROM"].
" ".$userField->GetJoin(
"CS.ID");
275 if (!empty($arSqls[
"WHERE"]))
276 $strSql .=
" WHERE ".$arSqls[
"WHERE"].
" ";
278 if ($arSqls[
"WHERE"] <>
'' && $strSqlUfFilter <>
'')
279 $strSql .=
" AND ".$strSqlUfFilter.
" ";
280 elseif ($arSqls[
"WHERE"] ==
'' && $strSqlUfFilter <>
'')
281 $strSql .=
" WHERE ".$strSqlUfFilter.
" ";
283 if (!empty($arSqls[
"GROUPBY"]))
284 $strSql .=
" GROUP BY ".$arSqls[
"GROUPBY"];
286 if (!empty($arSqls[
"ORDERBY"]))
287 $strSql .=
" ORDER BY ".$arSqls[
"ORDERBY"];
288 elseif ($arSqls[
"ORDERBY"] ==
'' && $strSqlUfOrder <>
'')
289 $strSql .=
" ORDER BY ".$strSqlUfOrder;
292 $boolNavStartParams = (!empty($arNavStartParams) && is_array($arNavStartParams));
293 if ($boolNavStartParams && array_key_exists(
'nTopCount', $arNavStartParams))
294 $intTopCount = intval($arNavStartParams[
"nTopCount"]);
296 if ($boolNavStartParams && 0 >= $intTopCount)
298 $strSql_tmp =
"SELECT COUNT('x') as CNT FROM b_catalog_store CS ".$arSqls[
"FROM"].
" ".$userField->GetJoin(
"CS.ID");
299 if (!empty($arSqls[
"WHERE"]))
300 $strSql_tmp .=
" WHERE ".$arSqls[
"WHERE"];
302 if ($arSqls[
"WHERE"] <>
'' && $strSqlUfFilter <>
'')
303 $strSql_tmp .=
" AND ".$strSqlUfFilter.
" ";
304 elseif ($arSqls[
"WHERE"] ==
'' && $strSqlUfFilter <>
'')
305 $strSql_tmp .=
" WHERE ".$strSqlUfFilter.
" ";
307 if (!empty($arSqls[
"GROUPBY"]))
308 $strSql_tmp .=
" GROUP BY ".$arSqls[
"GROUPBY"];
313 if (empty($arSqls[
"GROUPBY"]))
317 $cnt =
$dbRes->SelectedRowsCount();
321 $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
325 if($boolNavStartParams && 0 < $intTopCount)
326 $strSql .=
" LIMIT ".$intTopCount;