3require_once(
$_SERVER[
"DOCUMENT_ROOT"].
"/bitrix/modules/sale/general/location.php");
9 public static function GetList($arOrder =
array(
"SORT"=>
"ASC",
"COUNTRY_NAME_LANG"=>
"ASC",
"CITY_NAME_LANG"=>
"ASC"),
$arFilter =
array(), $arGroupBy =
false, $arNavStartParams =
false, $arSelectFields =
array())
13 if (is_string($arGroupBy) && mb_strlen($arGroupBy) == 2)
18 $arSelectFields =
array(
"ID",
"COUNTRY_ID",
"REGION_ID",
"CITY_ID",
"SORT",
"COUNTRY_NAME_ORIG",
"COUNTRY_SHORT_NAME",
"COUNTRY_NAME_LANG",
"CITY_NAME_ORIG",
"CITY_SHORT_NAME",
"CITY_NAME_LANG",
"REGION_NAME_ORIG",
"REGION_SHORT_NAME",
"REGION_NAME_LANG",
"COUNTRY_NAME",
"CITY_NAME",
"REGION_NAME",
"LOC_DEFAULT");
21 if (
count($arSelectFields) <= 0)
22 $arSelectFields =
array(
"ID",
"COUNTRY_ID",
"REGION_ID",
"CITY_ID",
"SORT",
"COUNTRY_NAME_ORIG",
"COUNTRY_SHORT_NAME",
"REGION_NAME_ORIG",
"CITY_NAME_ORIG",
"REGION_SHORT_NAME",
"CITY_SHORT_NAME",
"COUNTRY_LID",
"COUNTRY_NAME",
"REGION_LID",
"CITY_LID",
"REGION_NAME",
"CITY_NAME",
"LOC_DEFAULT");
24 if(!is_array($arOrder))
29 if (!in_array(
$key, $arSelectFields))
30 $arSelectFields[] =
$key;
40 $arSqls[
"SELECT"] = str_replace(
"%%_DISTINCT_%%",
"DISTINCT", $arSqls[
"SELECT"]);
42 if (is_array($arGroupBy) &&
count($arGroupBy)==0)
45 "SELECT ".$arSqls[
"SELECT"].
" ".
46 "FROM b_sale_location L ".
47 " ".$arSqls[
"FROM"].
" ";
48 if ($arSqls[
"WHERE"] <>
'')
49 $strSql .=
"WHERE ".$arSqls[
"WHERE"].
" ";
50 if ($arSqls[
"GROUPBY"] <>
'')
51 $strSql .=
"GROUP BY ".$arSqls[
"GROUPBY"].
" ";
63 "SELECT ".$arSqls[
"SELECT"].
" ".
64 "FROM b_sale_location L ".
65 " ".$arSqls[
"FROM"].
" ";
66 if ($arSqls[
"WHERE"] <>
'')
67 $strSql .=
"WHERE ".$arSqls[
"WHERE"].
" ";
68 if ($arSqls[
"GROUPBY"] <>
'')
69 $strSql .=
"GROUP BY ".$arSqls[
"GROUPBY"].
" ";
70 if ($arSqls[
"ORDERBY"] <>
'')
71 $strSql .=
"ORDER BY ".$arSqls[
"ORDERBY"].
" ";
73 if (is_array($arNavStartParams) && intval($arNavStartParams[
"nTopCount"])<=0)
76 "SELECT COUNT('x') as CNT ".
77 "FROM b_sale_location L ".
78 " ".$arSqls[
"FROM"].
" ";
79 if ($arSqls[
"WHERE"] <>
'')
80 $strSql_tmp .=
"WHERE ".$arSqls[
"WHERE"].
" ";
81 if ($arSqls[
"GROUPBY"] <>
'')
82 $strSql_tmp .=
"GROUP BY ".$arSqls[
"GROUPBY"].
" ";
88 if ($arSqls[
"GROUPBY"] ==
'')
96 $cnt =
$dbRes->SelectedRowsCount();
103 $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
107 if (is_array($arNavStartParams) && intval($arNavStartParams[
"nTopCount"])>0)
108 $strSql .=
"LIMIT ".intval($arNavStartParams[
"nTopCount"]);
118 public static function GetByID($primary, $strLang = LANGUAGE_ID)
120 if (self::isLocationProMigrated())
122 return parent::GetByID($primary, $strLang);
127 $primary = (int)$primary;
130 SELECT L.ID, L.COUNTRY_ID, L.CITY_ID, L.SORT, LC.NAME as COUNTRY_NAME_ORIG, LC.SHORT_NAME as COUNTRY_SHORT_NAME, LCL.NAME as COUNTRY_NAME_LANG,
131 LG.NAME as CITY_NAME_ORIG, LG.SHORT_NAME as CITY_SHORT_NAME, LGL.NAME as CITY_NAME_LANG,
132 L.REGION_ID, LR.NAME as REGION_NAME_ORIG, LR.SHORT_NAME as REGION_SHORT_NAME, LRL.NAME as REGION_NAME_LANG,
133 CASE WHEN LCL.ID IS NULL THEN LC.NAME ELSE LCL.NAME END as COUNTRY_NAME,
134 CASE WHEN LGL.ID IS NULL IS NULL THEN LG.NAME ELSE LGL.NAME END as CITY_NAME,
135 CASE WHEN LRL.ID IS NULL THEN LR.NAME ELSE LRL.NAME END as REGION_NAME
136 FROM b_sale_location L
137 LEFT JOIN b_sale_location_country LC ON (L.COUNTRY_ID = LC.ID)
138 LEFT JOIN b_sale_location_city LG ON (L.CITY_ID = LG.ID)
139 LEFT JOIN b_sale_location_country_lang LCL ON (LC.ID = LCL.COUNTRY_ID AND LCL.LID = '".$DB->ForSql($strLang, 2).
"')
140 LEFT JOIN b_sale_location_city_lang LGL ON (LG.ID = LGL.CITY_ID AND LGL.LID = '".
$DB->ForSql($strLang, 2).
"')
141 LEFT JOIN b_sale_location_region LR ON (L.REGION_ID = LR.ID)
142 LEFT JOIN b_sale_location_region_lang LRL ON (LR.ID = LRL.REGION_ID AND LRL.LID = '".
$DB->ForSql($strLang, 2).
"')
143 WHERE L.ID = ".$primary.
" ";
157 if(self::isLocationProMigrated())
161 $arSqlSearch = Array();
164 $filter_keys = Array();
168 $countFilterKey =
count($filter_keys);
169 for(
$i=0;
$i < $countFilterKey;
$i++)
172 if (
$val ==
'')
continue;
183 switch(mb_strtoupper(
$key))
186 $arSqlSearch[] =
"C.ID ".($bInvert?
"<>":
"=").
" ".intval(
$val).
" ";
189 $arSqlSearch[] =
"C.NAME ".($bInvert?
"<>":
"=").
" '".
$val.
"' ";
195 $countSqlSearch =
count($arSqlSearch);
196 for(
$i=0;
$i < $countSqlSearch;
$i++)
198 $strSqlSearch .=
" AND ";
199 $strSqlSearch .=
" (".$arSqlSearch[
$i].
") ";
203 "SELECT DISTINCT C.ID, C.NAME as NAME_ORIG, C.SHORT_NAME, CL.NAME as NAME, ".
204 " CASE WHEN CL.ID IS NULL THEN C.NAME ELSE CL.NAME END as NAME_LANG ".
205 "FROM b_sale_location_country C ".
206 " LEFT JOIN b_sale_location_country_lang CL ON (C.ID = CL.COUNTRY_ID AND CL.LID = '".$DB->ForSql($strLang, 2).
"') ".
208 ($arOrder[
'SORT'] ??
'') !==
''
210 " LEFT JOIN b_sale_location SL ON (SL.COUNTRY_ID = C.ID AND (SL.CITY_ID = 0 OR ISNULL(SL.CITY_ID))) "
215 " ".$strSqlSearch.
" ";
217 $arSqlOrder = Array();
218 foreach ($arOrder as $by=>
$order)
220 $by = mb_strtoupper($by);
224 if ($by ==
"SORT") $arSqlOrder[] =
" SL.SORT ".$order;
225 elseif ($by ==
"ID") $arSqlOrder[] =
" C.ID ".$order.
" ";
226 elseif ($by ==
"NAME") $arSqlOrder[] =
" C.NAME ".$order.
" ";
227 elseif ($by ==
"SHORT_NAME") $arSqlOrder[] =
" C.SHORT_NAME ".$order.
" ";
230 $arSqlOrder[] =
" CL.NAME ".$order.
" ";
237 $countSqlOrder =
count($arSqlOrder);
238 for (
$i=0;
$i < $countSqlOrder;
$i++)
241 $strSqlOrder =
" ORDER BY ";
243 $strSqlOrder .=
", ";
245 $strSqlOrder .= $arSqlOrder[
$i];
248 $strSql .= $strSqlOrder;
250 return $DB->Query($strSql);
263 if(self::isLocationProMigrated())
267 $arSqlSearch = Array();
270 $filter_keys = Array();
274 $countFilterKey =
count($filter_keys);
275 for(
$i=0;
$i < $countFilterKey;
$i++)
278 if (
$val ==
'')
continue;
289 switch(mb_strtoupper(
$key))
292 $arSqlSearch[] =
"C.ID ".($bInvert?
"<>":
"=").
" ".intval(
$val).
" ";
295 $arSqlSearch[] =
"C.NAME ".($bInvert?
"<>":
"=").
" '".
$val.
"' ";
298 $arSqlSearch[] =
"SL.COUNTRY_ID ".($bInvert?
"<>":
"=").
" '".
$val.
"' ";
304 $countSqlSearch =
count($arSqlSearch);
305 for(
$i=0;
$i < $countSqlSearch;
$i++)
307 $strSqlSearch .=
" AND ";
308 $strSqlSearch .=
" (".$arSqlSearch[
$i].
") ";
312 "SELECT C.ID, C.NAME as NAME_ORIG, C.SHORT_NAME, CL.NAME as NAME, ".
313 " CASE WHEN CL.ID IS NULL THEN C.NAME ELSE CL.NAME END as NAME_LANG ".
314 "FROM b_sale_location_region C ".
315 " LEFT JOIN b_sale_location_region_lang CL ON (C.ID = CL.REGION_ID AND CL.LID = '".$DB->ForSql($strLang, 2).
"') ".
316 " LEFT JOIN b_sale_location SL ON (SL.REGION_ID = C.ID AND (SL.CITY_ID = 0 OR ISNULL(SL.CITY_ID))) ".
318 " ".$strSqlSearch.
" ";
320 $arSqlOrder = Array();
321 foreach ($arOrder as $by=>
$order)
323 $by = mb_strtoupper($by);
327 if ($by ==
"SORT") $arSqlOrder[] =
" SL.SORT ".$order;
328 elseif ($by ==
"ID") $arSqlOrder[] =
" C.ID ".$order.
" ";
329 elseif ($by ==
"NAME") $arSqlOrder[] =
" C.NAME ".$order.
" ";
330 elseif ($by ==
"SHORT_NAME") $arSqlOrder[] =
" C.SHORT_NAME ".$order.
" ";
333 $arSqlOrder[] =
" CL.NAME ".$order.
" ";
340 $countSqlOrder =
count($arSqlOrder);
341 for (
$i=0;
$i < $countSqlOrder;
$i++)
344 $strSqlOrder =
" ORDER BY ";
346 $strSqlOrder .=
", ";
348 $strSqlOrder .= $arSqlOrder[
$i];
351 $strSql .= $strSqlOrder;
365 public static function GetCityList($arOrder = Array(
"NAME_LANG"=>
"ASC"),
$arFilter=Array(), $strLang = LANGUAGE_ID)
367 if(self::isLocationProMigrated())
371 $arSqlSearch = Array();
374 $filter_keys = Array();
378 $countFilterKey =
count($filter_keys);
379 for(
$i=0;
$i < $countFilterKey;
$i++)
382 if (
$val ==
'')
continue;
393 switch(mb_strtoupper(
$key))
396 $arSqlSearch[] =
"C.ID ".($bInvert?
"<>":
"=").
" ".intval(
$val).
" ";
399 $arSqlSearch[] =
"C.NAME ".($bInvert?
"<>":
"=").
" '".
$val.
"' ";
402 $arSqlSearch[] =
"SL.REGION_ID ".($bInvert?
"<>":
"=").
" '".
$val.
"' ";
408 $countSqlSearch =
count($arSqlSearch);
409 for(
$i=0;
$i < $countSqlSearch;
$i++)
411 $strSqlSearch .=
" AND ";
412 $strSqlSearch .=
" (".$arSqlSearch[
$i].
") ";
416 "SELECT C.ID, C.NAME as NAME_ORIG, C.SHORT_NAME, CL.NAME as NAME, ".
417 " CASE WHEN CL.ID IS NULL THEN C.NAME ELSE CL.NAME END as NAME_LANG ".
418 "FROM b_sale_location_city C ".
419 " LEFT JOIN b_sale_location_city_lang CL ON (C.ID = CL.CITY_ID AND CL.LID = '".$DB->ForSql($strLang, 2).
"') ".
420 " LEFT JOIN b_sale_location SL ON (SL.CITY_ID = C.ID) ".
422 " ".$strSqlSearch.
" ";
424 $arSqlOrder = Array();
425 foreach ($arOrder as $by=>
$order)
427 $by = mb_strtoupper($by);
431 if ($by ==
"SORT") $arSqlOrder[] =
" SL.SORT ".$order;
432 elseif ($by ==
"ID") $arSqlOrder[] =
" C.ID ".$order.
" ";
433 elseif ($by ==
"NAME") $arSqlOrder[] =
" C.NAME ".$order.
" ";
434 elseif ($by ==
"SHORT_NAME") $arSqlOrder[] =
" C.SHORT_NAME ".$order.
" ";
437 $arSqlOrder[] =
" CL.NAME ".$order.
" ";
444 $countSqlOrder =
count($arSqlOrder);
445 for (
$i=0;
$i < $countSqlOrder;
$i++)
448 $strSqlOrder =
" ORDER BY ";
450 $strSqlOrder .=
", ";
452 $strSqlOrder .= $arSqlOrder[
$i];
455 $strSql .= $strSqlOrder;
469 if(self::isLocationProMigrated())
474 foreach (
GetModuleEvents(
'sale',
'OnBeforeCountryAdd',
true) as $arEvent)
480 $arInsert =
$DB->PrepareInsert(
"b_sale_location_country",
$arFields);
482 "INSERT INTO b_sale_location_country(".$arInsert[0].
") ".
483 "VALUES(".$arInsert[1].
")";
486 $ID = intval(
$DB->LastID());
489 while ($arLang = $db_lang->Fetch())
493 $arInsert =
$DB->PrepareInsert(
"b_sale_location_country_lang",
$arFields[$arLang[
"LID"]]);
495 "INSERT INTO b_sale_location_country_lang(COUNTRY_ID, ".$arInsert[0].
") ".
496 "VALUES(".$ID.
", ".$arInsert[1].
")";
515 if(self::isLocationProMigrated())
526 $arInsert =
$DB->PrepareInsert(
"b_sale_location_city",
$arFields);
528 "INSERT INTO b_sale_location_city(".$arInsert[0].
") ".
529 "VALUES(".$arInsert[1].
")";
532 $ID = intval(
$DB->LastID());
535 while ($arLang = $db_lang->Fetch())
539 $arInsert =
$DB->PrepareInsert(
"b_sale_location_city_lang",
$arFields[$arLang[
"LID"]]);
541 "INSERT INTO b_sale_location_city_lang(CITY_ID, ".$arInsert[0].
") ".
542 "VALUES(".$ID.
", ".$arInsert[1].
")";
561 if(self::isLocationProMigrated())
566 foreach (
GetModuleEvents(
'sale',
'OnBeforeRegionAdd',
true) as $arEvent)
572 $arInsert =
$DB->PrepareInsert(
"b_sale_location_region",
$arFields);
574 "INSERT INTO b_sale_location_region(".$arInsert[0].
") ".
575 "VALUES(".$arInsert[1].
")";
578 $ID = intval(
$DB->LastID());
581 while ($arLang = $db_lang->Fetch())
585 $arInsert =
$DB->PrepareInsert(
"b_sale_location_region_lang",
$arFields[$arLang[
"LID"]]);
587 "INSERT INTO b_sale_location_region_lang(REGION_ID, ".$arInsert[0].
") ".
588 "VALUES(".$ID.
", ".$arInsert[1].
")";
606 if(self::isLocationProMigrated())
612 $arFields[
'CODE'] =
'randstr'.rand(999, 99999);
614 foreach (
GetModuleEvents(
'sale',
'OnBeforeLocationAdd',
true) as $arEvent)
620 $arInsert =
$DB->PrepareInsert(
"b_sale_location",
$arFields);
622 "INSERT INTO b_sale_location(".$arInsert[0].
") ".
623 "VALUES(".$arInsert[1].
")";
626 $ID = intval(
$DB->LastID());
static update($primary, array $data)
static GetList($by="sort", $order="asc", $arFilter=[])
static RegionCheckFields($ACTION, &$arFields)
static CityCheckFields($ACTION, &$arFields)
static getFilterForGetList($arFilter)
static RebindLocationTriplet($fields=array())
static LocationCheckFields($ACTION, &$arFields)
static CountryCheckFields($ACTION, &$arFields)
static AddLocationUnattached($typeCode, $names=array())
static getFieldMapForGetList($arFilter)
static GetLocationTypeList($typeCode='', $arOrder=Array("NAME_LANG"=>"ASC"), $arFilter=Array(), $strLang=LANGUAGE_ID)
static PrepareSql(&$arFields, $arOrder, &$arFilter, $arGroupBy, $arSelectFields, $obUserFieldsSql=false, $callback=false, $arOptions=array())
static GetList($arOrder=array("SORT"=>"ASC", "COUNTRY_NAME_LANG"=>"ASC", "CITY_NAME_LANG"=>"ASC"), $arFilter=array(), $arGroupBy=false, $arNavStartParams=false, $arSelectFields=array())
static GetByID($primary, $strLang=LANGUAGE_ID)
static AddRegion($arFields)
static AddCountry($arFields)
static AddCity($arFields)
static GetCountryList($arOrder=Array("NAME_LANG"=>"ASC"), $arFilter=Array(), $strLang=LANGUAGE_ID)
static GetRegionList($arOrder=Array("NAME_LANG"=>"ASC"), $arFilter=Array(), $strLang=LANGUAGE_ID)
static GetCityList($arOrder=Array("NAME_LANG"=>"ASC"), $arFilter=Array(), $strLang=LANGUAGE_ID)
static AddLocation($arFields)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
$_SERVER["DOCUMENT_ROOT"]
ExecuteModuleEventEx($arEvent, $arParams=[])
DelDuplicateSort(&$arSort)
GetModuleEvents($MODULE_ID, $MESSAGE_ID, $bReturnArray=false)
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
if(empty($signedUserToken)) $key
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"