/** * getRegionsList * @return array regions (locations) list */ public static function getRegionsList($countryId = 0, $bFlip = false) { static $arRegions = array(); $flipIndex = intval($bFlip); if (isset($arRegions[$countryId][$flipIndex])) { return $arRegions[$countryId][$flipIndex]; } if (CSaleLocation::isLocationProMigrated()) { $types = array(); $res = \Bitrix\Sale\Location\TypeTable::getList(array('select' => array('ID', 'CODE'))); while ($item = $res->fetch()) { $types[$item['CODE']] = $item['ID']; } $filter = array(array('LOGIC' => 'OR', array('=TYPE_ID' => $types['CITY'], '=NAME.LANGUAGE_ID' => LANGUAGE_ID, array('LOGIC' => 'OR', array('=PARENT.TYPE_ID' => $types['COUNTRY']), array('=PARENT.TYPE_ID' => $types['COUNTRY_DISTRICT']), array('=PARENT_ID' => '0'))), array('=TYPE_ID' => $types['REGION']))); if (intval($countryId)) { $filter['=PARENTS.TYPE_ID'] = $types['COUNTRY']; $filter['=PARENTS.ID'] = $countryId; } $dbRegionList = \Bitrix\Sale\Location\LocationTable::getList(array('filter' => $filter, 'select' => array('ID', 'CODE', 'NAME_LANG' => 'NAME.NAME'), 'order' => array('NAME.NAME' => 'asc'))); } else { $arFilterRegion = array(); if (intval($countryId) > 0) { $arFilterRegion["COUNTRY_ID"] = $countryId; } $dbRegionList = CSaleLocation::GetRegionList(array("NAME_LANG" => "ASC"), $arFilterRegion, LANGUAGE_ID); } $key = 'ID'; while ($arRegionList = $dbRegionList->Fetch()) { if ($key == 'ID' && isset($arRegionList['CODE'])) { $key = 'CODE'; } if ($key == 'CODE' && strlen($arRegionList['CODE']) <= 0) { continue; } $arRegions[$countryId][0][$arRegionList[$key]] = $arRegionList["NAME_LANG"]; // $bFlip == false $arRegions[$countryId][1][$arRegionList["NAME_LANG"]] = $arRegionList[$key]; // $bFlip == true } return isset($arRegions[$countryId][$flipIndex]) ? $arRegions[$countryId][$flipIndex] : array(); }
/** * @param string $lang - language Id * @return array - list of all regions */ public static function getAllRegions($lang) { static $result = null; if ($result === null) { $result = array(); $dbRegionList = \CSaleLocation::GetRegionList(array(), array(), $lang); while ($arRegion = $dbRegionList->GetNext()) { $result[$arRegion["ID"]] = $arRegion["NAME_LANG"]; } } return $result; }
public static function getRegionsNames($countryID = false) { $arFilterRegion = array(); if ($countryID && intval($countryID) > 0) { $arFilterRegion["COUNTRY_ID"] = $countryID; } $arRNames = array(); $dbRegList = CSaleLocation::GetRegionList(array("NAME" => "ASC"), $arFilterRegion, LANGUAGE_ID); while ($arRegion = $dbRegList->Fetch()) { $arRNames[$arRegion["ID"]] = $arRegion["NAME_ORIG"] . " [" . $arRegion["NAME_LANG"] . "]"; } return $arRNames; }
/** * getRegionsList * @return array regions (locations) list */ public static function getRegionsList($countryId = 0, $bFlip = false) { static $arRegions = array(); $flipIndex = intval($bFlip); if (isset($arRegions[$countryId][$flipIndex])) { return $arRegions[$countryId][$flipIndex]; } $arFilterRegion = array(); if (intval($countryId) > 0) { $arFilterRegion["COUNTRY_ID"] = $countryId; } $dbRegionList = CSaleLocation::GetRegionList(array("NAME_LANG" => "ASC"), $arFilterRegion, LANGUAGE_ID); while ($arRegionList = $dbRegionList->Fetch()) { $arRegions[$countryId][0][$arRegionList['ID']] = $arRegionList["NAME_LANG"]; // $bFlip == false $arRegions[$countryId][1][$arRegionList["NAME_LANG"]] = $arRegionList['ID']; // $bFlip == true } return isset($arRegions[$countryId][$flipIndex]) ? $arRegions[$countryId][$flipIndex] : array(); }
private static function getRegionsList() { $arResult = array(0 => GetMessage('SPFPCT_CHOOSE_REGION')); $dbReg = CSaleLocation::GetRegionList(); while ($arReg = $dbReg->Fetch()) { $arResult[$arReg["ID"]] = $arReg["NAME"]; } return $arResult; }
/** * <p>Функция обновляет параметры местоположения с кодом ID в соответствии с параметрами из массива arFields. Обновляются так же страна и город этого местоположения. </p> * * * * * @param int $ID Код местоположения. </h * * * * @param array $arFields Ассоциативный массив параметров местоположения с ключами: <ul> <li> * <b>SORT</b> - индекс сортировки; </li> <li> <b>COUNTRY_ID</b> - код страны (если такая * страна уже есть, иначе код должен быть нулем, и должен быть * заполнен ключ COUNTRY);</li> <li> <b>COUNTRY</b> - массив с параметрами страны * (должен быть заполнен, если не установлен ключ COUNTRY_ID или если ключ * CHANGE_COUNTRY установлен в значение Y); </li> <li> <b>CHANGE_COUNTRY</b> - флаг (Y/N), * изменять ли параметры страны (долны быть установлены ключи COUNTRY_ID * и COUNTRY); </li> <li> <b>WITHOUT_CITY</b> - флаг (Y/N), означающий, что это * местоположение без города (только страна) (если значением с этим * ключем является N, то необходимо заполнить ключ CITY);</li> <li> <b>CITY_ID</b> - * код города (если такой город уже есть, иначе код должен быть нулем, * и должен быть заполнен ключ CITY);</li> <li> <b>CITY</b> - массив с параметрами * города (если установлен флаг WITHOUT_CITY в значение Y, то этот ключ * заполнять не нужно);</li> </ul> Массив с параметрами страны должен * содержать ключи: <ul> <li> <b>NAME</b> - название страны (не зависящее от * языка);</li> <li> <b>SHORT_NAME</b> - сокращенное название страны - абревиатура * (не зависящее от языка);</li> <li> <b><код языка></b> - ключем является * код языка, а значением ассоциативный массив вида <pre class="syntax"> * array("LID" => "код языка", "NAME" => "название страны на этом языке", * "SHORT_NAME" => "сокращенное название страны (аббревиатура) на этом * языке")</pre> Эта пара ключ-значение должна присутствовать для * каждого языка системы. </li> </ul> Массив с параметрами города должен * содержать ключи: <ul> <li> <b>NAME</b> - название города (не зависящее от * языка);</li> <li> <b>SHORT_NAME</b> - сокращенное название города - абревиатура * (не зависящее от языка);</li> <li> <b><код языка></b> - ключем является * код языка, а значением ассоциативный массив вида <pre class="syntax"> * array("LID" => "код языка", "NAME" => "название города на этом языке", * "SHORT_NAME" => "сокращенное название города (аббревиатура) на этом * языке")</pre> Эта пара ключ-значение должна присутствовать для * каждого языка системы.</li> </ul> * * * * @return int <p>Возвращается код измененного местоположения или <i>false</i> у * случае ошибки.</p> <a name="examples"></a> * * * <h4>Example</h4> * <pre> * <? * $arFields = array( * "SORT" => 100, * "COUNTRY_ID" => 8, * "WITHOUT_CITY" => "N" * ); * * $arCity = array( * "NAME" => "Kaliningrad", * "SHORT_NAME" => "Kaliningrad", * "ru" => array( * "LID" => "ru", * "NAME" => "Калининград", * "SHORT_NAME" => "Калининград" * ), * "en" => array( * "LID" => "en", * "NAME" => "Kaliningrad", * "SHORT_NAME" => "Kaliningrad" * ) * ); * * $arFields["CITY"] = $arCity; * * if (!CSaleLocation::Update(6, $arFields)) * echo "Ошибка изменения местоположения"; * ?> * </pre> * * * @static * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csalelocation/csalelocation__update.a6601f1c.php * @author Bitrix */ public static function Update($ID, $arFields) { global $DB; if (!CSaleLocation::CheckFields("UPDATE", $arFields)) { return false; } if (!($arLocRes = CSaleLocation::GetByID($ID, LANGUAGE_ID))) { return false; } if ((!is_set($arFields, "COUNTRY_ID") || IntVal($arFields["COUNTRY_ID"]) <= 0) && $arFields["COUNTRY_ID"] != "") { $arFields["COUNTRY_ID"] = CSaleLocation::AddCountry($arFields["COUNTRY"]); if (IntVal($arFields["COUNTRY_ID"]) <= 0) { return false; } unset($arFields["CITY_ID"]); unset($arFields["REGION_ID"]); CSaleLocation::AddLocation($arFields); } elseif ($arFields["CHANGE_COUNTRY"] == "Y" || $arFields["COUNTRY_ID"] == "") { CSaleLocation::UpdateCountry($arFields["COUNTRY_ID"], $arFields["COUNTRY"]); } //city if ($arFields["WITHOUT_CITY"] != "Y") { if (IntVal($arLocRes["CITY_ID"]) > 0) { CSaleLocation::UpdateCity(IntVal($arLocRes["CITY_ID"]), $arFields["CITY"]); } else { $arFields["CITY_ID"] = CSaleLocation::AddCity($arFields["CITY"]); if (IntVal($arFields["CITY_ID"]) <= 0) { return false; } } } else { CSaleLocation::DeleteCity($arLocRes["CITY_ID"]); $arFields["CITY_ID"] = false; } //region if (IntVal($arFields["REGION_ID"]) > 0) { CSaleLocation::UpdateRegion(IntVal($arLocRes["REGION_ID"]), $arFields["REGION"]); } elseif ($arFields["REGION_ID"] == 0 && $arFields["REGION_ID"] != '') { $db_res = CSaleLocation::GetRegionList(array("ID" => "DESC"), array("NAME" => $arFields["REGION"][LANGUAGE_ID]["NAME"])); $arRegion = $db_res->Fetch(); if (count($arRegion) > 1) { $arFields["REGION_ID"] = $arRegion["ID"]; } else { $arFields["REGION_ID"] = CSaleLocation::AddRegion($arFields["REGION"]); if (IntVal($arFields["REGION_ID"]) <= 0) { return false; } $arFieldsTmp = $arFields; unset($arFieldsTmp["CITY_ID"]); CSaleLocation::AddLocation($arFieldsTmp); } } elseif ($arFields["REGION_ID"] == '') { //CSaleLocation::DeleteRegion($arLocRes["REGION_ID"]); $arFields["REGION_ID"] = 0; } else { unset($arFields["REGION_ID"]); } CSaleLocation::UpdateLocation($ID, $arFields); return $ID; }
if (count($arResult["COUNTRY_LIST"]) <= 0) { $arResult["COUNTRY_LIST"] = array(); } elseif (count($arResult["COUNTRY_LIST"]) == 1) { $arParams["COUNTRY"] = $arResult["COUNTRY_LIST"][0]["ID"]; } //select region $arResult["REGION_LIST"] = array(); if (($arParams["COUNTRY"] > 0 || count($arResult["COUNTRY_LIST"]) <= 0) && (strlen($arParams["REGION_INPUT_NAME"]) > 0 || $arParams["ZIPCODE"] > 0)) { $arRegionFilter = array("LID" => LANGUAGE_ID, "!REGION_ID" => "NULL", "!REGION_ID" => "0"); if ($arParams["COUNTRY"] > 0) { $arRegionFilter["COUNTRY_ID"] = IntVal($arParams["COUNTRY"]); } if ($arResult["EMPTY_CITY"] == "Y") { $rsRegionList = CSaleLocation::GetList(array("SORT" => "ASC", "NAME_LANG" => "ASC"), $arRegionFilter, false, false, array("ID", "REGION_ID", "REGION_NAME_LANG", "SORT")); } else { $rsRegionList = CSaleLocation::GetRegionList(array("SORT" => "ASC", "NAME_LANG" => "ASC"), $arRegionFilter); } $regionSortIndex = array(); while ($arRegion = $rsRegionList->GetNext()) { if (!SalesZone::checkRegionId($arRegion["ID"], $arParams["SITE_ID"])) { continue; } if ($arResult["EMPTY_CITY"] == "Y") { $arRegion["NAME_LANG"] = $arRegion["REGION_NAME_LANG"]; } $arResult["REGION_LIST"][$arRegion['ID']] = $arRegion; $regionSortIndex[$arRegion['SORT']][$arRegion['NAME_LANG']] = $arRegion['ID']; if ($arRegion["ID"] == $arParams["REGION"] && strlen($arRegion["NAME_LANG"]) > 0) { $locationString = $arRegion["NAME_LANG"] . ", " . $locationString; } }
</option> <option value="" <?php if (isset($REGION_ID) && $REGION_ID == "" || $str_REGION_ID == "" || $str_REGION_ID == "0") { echo " selected"; } ?> ><?php echo GetMessage("WITHOUT_REGION"); ?> </option> <?php $arFilterRegion = array(); if (isset($str_COUNTRY_ID) && $str_COUNTRY_ID > 0) { $arFilterRegion["COUNTRY_ID"] = $str_COUNTRY_ID; } $dbRegionList = CSaleLocation::GetRegionList(array("NAME" => "ASC"), $arFilterRegion, LANG); while ($arRegionList = $dbRegionList->Fetch()) { ?> <option value="<?php echo $arRegionList["ID"]; ?> "<?php if (IntVal($arRegionList["ID"]) == IntVal($str_REGION_ID)) { echo " selected"; } ?> ><?php echo htmlspecialcharsEx($arRegionList["NAME_ORIG"]); ?> </option><?php }
function Update($ID, $arFields) { global $DB; if (!CSaleLocation::CheckFields("UPDATE", $arFields)) return false; if (!($arLocRes = CSaleLocation::GetByID($ID, LANGUAGE_ID))) return false; if(self::isLocationProMigrated()) { try { // only partial support: name update functionality if(($arFields["CHANGE_COUNTRY"]=="Y" || intval($arFields["COUNTRY_ID"])) && is_array($arFields["COUNTRY"])) CSaleLocation::UpdateCountry($arFields["COUNTRY_ID"], $arFields["COUNTRY"]); if(intval($arFields["REGION_ID"]) && is_array($arFields["REGION"])) CSaleLocation::UpdateRegion($arFields["REGION_ID"], $arFields["REGION"]); if(intval($arFields["CITY_ID"]) && is_array($arFields["CITY"])) CSaleLocation::UpdateCity($arFields["CITY_ID"], $arFields["CITY"]); } catch(Exception $e) { return false; } } else { if ((!is_set($arFields, "COUNTRY_ID") || IntVal($arFields["COUNTRY_ID"])<=0) && $arFields["COUNTRY_ID"] != "") { $arFields["COUNTRY_ID"] = CSaleLocation::AddCountry($arFields["COUNTRY"]); if (IntVal($arFields["COUNTRY_ID"])<=0) return false; UnSet($arFields["CITY_ID"]); UnSet($arFields["REGION_ID"]); CSaleLocation::AddLocation($arFields); } elseif ($arFields["CHANGE_COUNTRY"]=="Y" || $arFields["COUNTRY_ID"] == "") { CSaleLocation::UpdateCountry($arFields["COUNTRY_ID"], $arFields["COUNTRY"]); } //city if ($arFields["WITHOUT_CITY"]!="Y") { if (IntVal($arLocRes["CITY_ID"])>0) { CSaleLocation::UpdateCity(IntVal($arLocRes["CITY_ID"]), $arFields["CITY"]); } else { $arFields["CITY_ID"] = CSaleLocation::AddCity($arFields["CITY"]); if (IntVal($arFields["CITY_ID"])<=0) return false; } } else { CSaleLocation::DeleteCity($arLocRes["CITY_ID"]); $arFields["CITY_ID"] = false; } //region if (IntVal($arFields["REGION_ID"])>0) { CSaleLocation::UpdateRegion(IntVal($arLocRes["REGION_ID"]), $arFields["REGION"]); } elseif ($arFields["REGION_ID"] == 0 && $arFields["REGION_ID"] != '') { $db_res = CSaleLocation::GetRegionList(array("ID" => "DESC"), array("NAME" => $arFields["REGION"][LANGUAGE_ID]["NAME"])); $arRegion = $db_res->Fetch(); if (count($arRegion) > 1) $arFields["REGION_ID"] = $arRegion["ID"]; else { $arFields["REGION_ID"] = CSaleLocation::AddRegion($arFields["REGION"]); if (IntVal($arFields["REGION_ID"])<=0) return false; $arFieldsTmp = $arFields; UnSet($arFieldsTmp["CITY_ID"]); CSaleLocation::AddLocation($arFieldsTmp); } } elseif ($arFields["REGION_ID"] == '') { //CSaleLocation::DeleteRegion($arLocRes["REGION_ID"]); $arFields["REGION_ID"] = 0; } else { UnSet($arFields["REGION_ID"]); } CSaleLocation::UpdateLocation($ID, $arFields); return $ID; } }
</form> <?php $tabControl->EndTab(); $tabControl->End(); echo BeginNote(); echo GetMessage("LOCA_LOCATIONS_STATS") . ': <ul style="font-size: 100%">'; $rsLocations = CSaleLocation::GetList(array(), array(), array("COUNTRY_ID", "COUNT" => "CITY_ID")); $numLocations = 0; $numCountries = 0; $numCities = 0; $numRegion = 0; while ($arStat = $rsLocations->Fetch()) { $numCountries++; $numCities += $arStat["CITY_ID"]; $numLocations += $arStat['CNT']; } $rsRegion = CSaleLocation::GetRegionList(array(), array(), LANG); $numRegion = $rsRegion->SelectedRowsCount(); echo '<li>' . GetMessage('LOCA_LOCATIONS_COUNTRY_STATS') . ': ' . $numCountries . '</li>'; echo '<li>' . GetMessage('LOCA_LOCATIONS_REGION_STATS') . ': ' . $numRegion . '</li>'; echo '<li>' . GetMessage('LOCA_LOCATIONS_CITY_STATS') . ': ' . $numCities . '</li>'; echo '<li>' . GetMessage('LOCA_LOCATIONS_LOC_STATS') . ': ' . $numLocations . '</li>'; $rsLocationGroups = CSaleLocationGroup::GetList(); $numGroups = 0; while ($arGroup = $rsLocationGroups->Fetch()) { $numGroups++; } echo '<li>' . GetMessage('LOCA_LOCATIONS_GROUP_STATS') . ': ' . $numGroups . '</li>'; echo '</ul>'; echo EndNote(); require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/epilog_admin.php";