1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
store.php
См. документацию.
1<?php
2
5
6require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/catalog/general/store.php");
7
9{
15 public static function Add($arFields)
16 {
18
19 global $DB;
20
21 foreach (GetModuleEvents("catalog", "OnBeforeCatalogStoreAdd", true) as $arEvent)
22 {
23 if(ExecuteModuleEventEx($arEvent, array(&$arFields)) === false)
24 return false;
25 }
26
27 if (!self::CheckFields('ADD',$arFields))
28 return false;
29
30 if (
31 isset($arFields['IMAGE_ID'])
32 && is_array($arFields['IMAGE_ID'])
33 )
34 {
35 CFile::SaveForDB($arFields, 'IMAGE_ID', 'catalog');
36 }
37 $arInsert = $DB->PrepareInsert("b_catalog_store", $arFields);
38 $strSql = "INSERT INTO b_catalog_store (".$arInsert[0].") VALUES(".$arInsert[1].")";
39
40 $res = $DB->Query($strSql);
41 if(!$res)
42 return false;
43 $lastId = (int)$DB->LastID();
44
45 Catalog\StoreTable::cleanCache();
46
47 foreach(GetModuleEvents("catalog", "OnCatalogStoreAdd", true) as $arEvent)
49
50 return $lastId;
51 }
52
53 public static function GetList($arOrder = array(), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
54 {
55 global $DB;
56
57 $defaultList = [
58 'ID',
59 'ACTIVE',
60 'TITLE',
61 'PHONE',
62 'SCHEDULE',
63 'ADDRESS',
64 'DESCRIPTION',
65 'GPS_N',
66 'GPS_S',
67 'IMAGE_ID',
68 'DATE_CREATE',
69 'DATE_MODIFY',
70 'USER_ID',
71 'XML_ID',
72 'SORT',
73 'EMAIL',
74 'ISSUING_CENTER',
75 'SHIPPING_CENTER',
76 'SITE_ID',
77 'CODE',
78 'IS_DEFAULT',
79 ];
80
81 if (!is_array($arSelectFields))
82 {
83 $arSelectFields = [];
84 }
85
86 $productIds = [];
87 $productFilterExists = array_key_exists('PRODUCT_ID', $arFilter);
88 if ($productFilterExists)
89 {
90 $productIds = is_array($arFilter['PRODUCT_ID']) ? $arFilter['PRODUCT_ID'] : [$arFilter['PRODUCT_ID']];
92 $productFilterExists = !empty($productIds);
93 unset($arFilter['PRODUCT_ID']);
94 }
95
96 if (empty($arSelectFields))
97 {
98 $arSelectFields = $defaultList;
99 }
100
101 $arFields = [];
102 $arFields["ID"] = [
103 "FIELD" => "CS.ID",
104 "TYPE" => "int",
105 ];
106 $arFields["ACTIVE"] = [
107 "FIELD" => "CS.ACTIVE",
108 "TYPE" => "string",
109 ];
110 $arFields["TITLE"] = [
111 "FIELD" => "CS.TITLE",
112 "TYPE" => "string",
113 ];
114 $arFields["PHONE"] = [
115 "FIELD" => "CS.PHONE",
116 "TYPE" => "string",
117 ];
118 $arFields["SCHEDULE"] = [
119 "FIELD" => "CS.SCHEDULE",
120 "TYPE" => "string",
121 ];
122 $arFields["ADDRESS"] = [
123 "FIELD" => "CS.ADDRESS",
124 "TYPE" => "string",
125 ];
126 $arFields["DESCRIPTION"] = [
127 "FIELD" => "CS.DESCRIPTION",
128 "TYPE" => "string",
129 ];
130 $arFields["GPS_N"] = [
131 "FIELD" => "CS.GPS_N",
132 "TYPE" => "string",
133 ];
134 $arFields["GPS_S"] = [
135 "FIELD" => "CS.GPS_S",
136 "TYPE" => "string",
137 ];
138 $arFields["IMAGE_ID"] = [
139 "FIELD" => "CS.IMAGE_ID",
140 "TYPE" => "int",
141 ];
142 $arFields["LOCATION_ID"] = [
143 "FIELD" => "CS.LOCATION_ID",
144 "TYPE" => "int",
145 ];
146 $arFields["DATE_CREATE"] = [
147 "FIELD" => "CS.DATE_CREATE",
148 "TYPE" => "datetime",
149 ];
150 $arFields["DATE_MODIFY"] = [
151 "FIELD" => "CS.DATE_MODIFY",
152 "TYPE" => "datetime",
153 ];
154 $arFields["USER_ID"] = [
155 "FIELD" => "CS.USER_ID",
156 "TYPE" => "int",
157 ];
158 $arFields["MODIFIED_BY"] = [
159 "FIELD" => "CS.MODIFIED_BY",
160 "TYPE" => "int",
161 ];
162 $arFields["XML_ID"] = [
163 "FIELD" => "CS.XML_ID",
164 "TYPE" => "string",
165 ];
166 $arFields["SORT"] = [
167 "FIELD" => "CS.SORT",
168 "TYPE" => "int",
169 ];
170 $arFields["EMAIL"] = [
171 "FIELD" => "CS.EMAIL",
172 "TYPE" => "string",
173 ];
174 $arFields["ISSUING_CENTER"] = [
175 "FIELD" => "CS.ISSUING_CENTER",
176 "TYPE" => "char",
177 ];
178 $arFields["SHIPPING_CENTER"] = [
179 "FIELD" => "CS.SHIPPING_CENTER",
180 "TYPE" => "char",
181 ];
182 $arFields["SITE_ID"] = [
183 "FIELD" => "CS.SITE_ID",
184 "TYPE" => "string",
185 ];
186 $arFields["CODE"] = [
187 "FIELD" => "CS.CODE",
188 "TYPE" => "string",
189 ];
190 $arFields["IS_DEFAULT"] = [
191 "FIELD" => "CS.IS_DEFAULT",
192 "TYPE" => "char",
193 ];
194 if ($productFilterExists)
195 {
196 $arFields["PRODUCT_AMOUNT"] = [
197 "FIELD" => "CP.AMOUNT",
198 "TYPE" => "double",
199 "FROM" => "LEFT JOIN b_catalog_store_product CP ON "
200 . "(CS.ID = CP.STORE_ID AND CP.PRODUCT_ID IN (" . implode(',', $productIds) . "))"
201 ,
202 ];
203 if (in_array('*', $arSelectFields) || in_array('PRODUCT_AMOUNT', $arSelectFields))
204 {
205 $arFields["ELEMENT_ID"] = [
206 "FIELD" => "CP.PRODUCT_ID",
207 "TYPE" => "int",
208 ];
209 }
210 }
211
212 if (!is_array($arOrder))
213 {
214 $arOrder = [];
215 }
216 if (!empty($arOrder))
217 {
218 $arOrder = array_change_key_case($arOrder, CASE_UPPER);
219 foreach (array_keys($arOrder) as $field)
220 {
221 $arOrder[$field] = strtoupper($arOrder[$field]);
222 if ($arOrder[$field] !== 'DESC')
223 {
224 $arOrder[$field] = 'ASC';
225 }
226 }
227 }
228
229 $userField = new CUserTypeSQL();
230 $userField->SetEntity("CAT_STORE", "CS.ID");
231 $userField->SetSelect($arSelectFields);
232 $userField->SetFilter($arFilter);
233 $userField->SetOrder($arOrder);
234
235 $strUfFilter = $userField->GetFilter();
236 $strSqlUfFilter = ($strUfFilter <> '') ? " (".$strUfFilter.") " : "";
237
238
239 $strSqlUfOrder = "";
240 foreach ($arOrder as $field => $by)
241 {
242 $field = $userField->GetOrder($field);
243 if (empty($field))
244 continue;
245
246 if ($strSqlUfOrder <> '')
247 $strSqlUfOrder .= ', ';
248 $strSqlUfOrder .= $field." ".$by;
249 }
250
251 $arSqls = CCatalog::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);
252 $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]);
253
254 if (empty($arGroupBy) && is_array($arGroupBy))
255 {
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"]." ";
259
260 if ($arSqls["WHERE"] <> '' && $strSqlUfFilter <> '')
261 $strSql .= " AND ".$strSqlUfFilter." ";
262 elseif ($arSqls["WHERE"] == '' && $strSqlUfFilter <> '')
263 $strSql .= " WHERE ".$strSqlUfFilter." ";
264
265 if (!empty($arSqls["GROUPBY"]))
266 $strSql .= " GROUP BY ".$arSqls["GROUPBY"];
267
268 $dbRes = $DB->Query($strSql);
269 if ($arRes = $dbRes->Fetch())
270 return $arRes["CNT"];
271 else
272 return false;
273 }
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"]." ";
277
278 if ($arSqls["WHERE"] <> '' && $strSqlUfFilter <> '')
279 $strSql .= " AND ".$strSqlUfFilter." ";
280 elseif ($arSqls["WHERE"] == '' && $strSqlUfFilter <> '')
281 $strSql .= " WHERE ".$strSqlUfFilter." ";
282
283 if (!empty($arSqls["GROUPBY"]))
284 $strSql .= " GROUP BY ".$arSqls["GROUPBY"];
285
286 if (!empty($arSqls["ORDERBY"]))
287 $strSql .= " ORDER BY ".$arSqls["ORDERBY"];
288 elseif ($arSqls["ORDERBY"] == '' && $strSqlUfOrder <> '')
289 $strSql .= " ORDER BY ".$strSqlUfOrder;
290
291 $intTopCount = 0;
292 $boolNavStartParams = (!empty($arNavStartParams) && is_array($arNavStartParams));
293 if ($boolNavStartParams && array_key_exists('nTopCount', $arNavStartParams))
294 $intTopCount = intval($arNavStartParams["nTopCount"]);
295
296 if ($boolNavStartParams && 0 >= $intTopCount)
297 {
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"];
301
302 if ($arSqls["WHERE"] <> '' && $strSqlUfFilter <> '')
303 $strSql_tmp .= " AND ".$strSqlUfFilter." ";
304 elseif ($arSqls["WHERE"] == '' && $strSqlUfFilter <> '')
305 $strSql_tmp .= " WHERE ".$strSqlUfFilter." ";
306
307 if (!empty($arSqls["GROUPBY"]))
308 $strSql_tmp .= " GROUP BY ".$arSqls["GROUPBY"];
309
310 $dbRes = $DB->Query($strSql_tmp);
311
312 $cnt = 0;
313 if (empty($arSqls["GROUPBY"]))
314 if ($arRes = $dbRes->Fetch())
315 $cnt = $arRes["CNT"];
316 else
317 $cnt = $dbRes->SelectedRowsCount();
318
319 $dbRes = new CDBResult();
320
321 $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
322 }
323 else
324 {
325 if($boolNavStartParams && 0 < $intTopCount)
326 $strSql .= " LIMIT ".$intTopCount;
327
328 $dbRes = $DB->Query($strSql);
329 }
330
331 return $dbRes;
332 }
333}
static normalizeArrayValuesByInt(&$map, $sorted=true)
Определения collection.php:150
static PrepareSql(&$arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields)
Определения catalog.php:389
Определения store.php:10
Определения store.php:9
static Add($arFields)
Определения store.php:15
static GetList($arOrder=array(), $arFilter=array(), $arGroupBy=false, $arNavStartParams=false, $arSelectFields=array())
Определения store.php:53
Определения usertypesql.php:4
if(!\Bitrix\Main\Loader::includeModule('clouds')) $lastId
Определения sync.php:68
$arFields
Определения dblapprove.php:5
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$res
Определения filter_act.php:7
$_SERVER["DOCUMENT_ROOT"]
Определения cron_frame.php:9
global $DB
Определения cron_frame.php:29
ExecuteModuleEventEx($arEvent, $arParams=[])
Определения tools.php:5214
GetModuleEvents($MODULE_ID, $MESSAGE_ID, $bReturnArray=false)
Определения tools.php:5177
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения prolog_main_admin.php:393
$arRes
Определения options.php:104
$arFilter
Определения user_search.php:106
$dbRes
Определения yandex_detail.php:168