/** * <p>Функция изменяет параметры страны с кодом ID на новые параметры из массива arFields </p> * * * * * @param int $ID Код страны. * * * * @param array $arFields Массив с параметрами страны должен содержать ключи: <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> <br><br> * * @static * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csalelocation/csalelocation__updatecountry.d8fa5b90.php * @author Bitrix */ public static function UpdateCountry($ID, $arFields) { global $DB; $ID = intval($ID); if ($ID <= 0 || !CSaleLocation::CountryCheckFields("UPDATE", $arFields)) { return false; } foreach (GetModuleEvents("sale", "OnBeforeCountryUpdate", true) as $arEvent) { if (ExecuteModuleEventEx($arEvent, array($ID, &$arFields)) === false) { return false; } } $strUpdate = $DB->PrepareUpdate("b_sale_location_country", $arFields); $strSql = "UPDATE b_sale_location_country SET " . $strUpdate . " WHERE ID = " . $ID . ""; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); $db_lang = CLangAdmin::GetList($b = "sort", $o = "asc", array("ACTIVE" => "Y")); while ($arLang = $db_lang->Fetch()) { if ($arCntLang = CSaleLocation::GetCountryLangByID($ID, $arLang["LID"])) { $strUpdate = $DB->PrepareUpdate("b_sale_location_country_lang", $arFields[$arLang["LID"]]); $strSql = "UPDATE b_sale_location_country_lang SET " . $strUpdate . " WHERE ID = " . $arCntLang["ID"] . ""; } else { $arInsert = $DB->PrepareInsert("b_sale_location_country_lang", $arFields[$arLang["LID"]]); $strSql = "INSERT INTO b_sale_location_country_lang(COUNTRY_ID, " . $arInsert[0] . ") " . "VALUES(" . $ID . ", " . $arInsert[1] . ")"; } $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } foreach (GetModuleEvents("sale", "OnCountryUpdate", true) as $arEvent) { ExecuteModuleEventEx($arEvent, array($ID, $arFields)); } return $ID; }
/** * <p>Метод добавляет новую страну с параметрами из массива <i> arFields</i>. Метод динамичный.</p> <p class="note"><b>Внимание!</b> Начиная с версии 14.10.0 метод не обновляется и обратная совместимость не поддерживается. Рекомендуется использовать методы нового ядра D7. Примеры работы с новым ядром можно увидеть <a href="https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=43&LESSON_ID=3570" >здесь</a>.</p> * * * @param array $arFields Массив с параметрами страны должен содержать ключи: <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> * Параметры вызова * </h * <tr> * <th width="15%">Параметр</th> * <th>Описание</th> * </tr> * <tr> * <td>arFields</td> * <td>Массив с параметрами страны должен содержать ключи: * <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> * </td> * </tr> * * * * <? * $arCountry = array( * "NAME" => "Russian Federation", * "SHORT_NAME" => "Russia", * "ru" => array( * "LID" => "ru", * "NAME" => "Российская федерация", * "SHORT_NAME" => "Россия" * ), * "en" => array( * "LID" => "en", * "NAME" => "Russian Federation", * "SHORT_NAME" => "Russia" * ) * ); * * $ID = CSaleLocation::AddCountry($arCountry); * if (IntVal($ID)<=0) * echo "Ошибка добавления страны"; * ?> * </pre> * * * @static * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csalelocation/csalelocation__addcountry.cbe82f7a.php * @author Bitrix */ public static function AddCountry($arFields) { global $DB; if (!CSaleLocation::CountryCheckFields("ADD", $arFields)) { return false; } if (self::isLocationProMigrated()) { return self::AddLocationUnattached('COUNTRY', $arFields); } foreach (GetModuleEvents('sale', 'OnBeforeCountryAdd', true) as $arEvent) { if (ExecuteModuleEventEx($arEvent, array($arFields)) === false) { return false; } } $arInsert = $DB->PrepareInsert("b_sale_location_country", $arFields); $strSql = "INSERT INTO b_sale_location_country(" . $arInsert[0] . ") " . "VALUES(" . $arInsert[1] . ")"; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); $ID = IntVal($DB->LastID()); $b = "sort"; $o = "asc"; $db_lang = CLangAdmin::GetList($b, $o, array("ACTIVE" => "Y")); while ($arLang = $db_lang->Fetch()) { if ($arFields[$arLang['LID']]) { $arInsert = $DB->PrepareInsert("b_sale_location_country_lang", $arFields[$arLang["LID"]]); $strSql = "INSERT INTO b_sale_location_country_lang(COUNTRY_ID, " . $arInsert[0] . ") " . "VALUES(" . $ID . ", " . $arInsert[1] . ")"; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } } foreach (GetModuleEvents('sale', 'OnCountryAdd', true) as $arEvent) { ExecuteModuleEventEx($arEvent, array($ID, $arFields)); } return $ID; }
/** * <p>Метод изменяет параметры страны с кодом ID на новые параметры из массива arFields. Метод динамичный.</p> * * * @param int $ID Код страны. * * @param array $arFields Массив с параметрами страны должен содержать ключи: <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> <br><br> * * @static * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csalelocation/csalelocation__updatecountry.d8fa5b90.php * @author Bitrix */ public static function UpdateCountry($ID, $arFields) { global $DB; $ID = intval($ID); if ($ID <= 0 || !CSaleLocation::CountryCheckFields("UPDATE", $arFields)) { return false; } foreach (GetModuleEvents("sale", "OnBeforeCountryUpdate", true) as $arEvent) { if (ExecuteModuleEventEx($arEvent, array($ID, &$arFields)) === false) { return false; } } ////////////////////////////////////// if (self::isLocationProMigrated()) { try { // get location id by country id $locId = self::getLocationIdByCountryId($ID); if (!$locId) { return false; } $res = Location\LocationTable::update($locId, self::refineFieldsForSaveCRC($item['ID'], $arFields), array('REBALANCE' => false)); if ($res->isSuccess()) { return $ID; } return false; } catch (Exception $e) { return false; } } else { $strUpdate = $DB->PrepareUpdate("b_sale_location_country", $arFields); $strSql = "UPDATE b_sale_location_country SET " . $strUpdate . " WHERE ID = " . $ID . ""; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); $db_lang = CLangAdmin::GetList($b = "sort", $o = "asc", array("ACTIVE" => "Y")); while ($arLang = $db_lang->Fetch()) { if ($arCntLang = CSaleLocation::GetCountryLangByID($ID, $arLang["LID"])) { $strUpdate = $DB->PrepareUpdate("b_sale_location_country_lang", $arFields[$arLang["LID"]]); $strSql = "UPDATE b_sale_location_country_lang SET " . $strUpdate . " WHERE ID = " . $arCntLang["ID"] . ""; } else { $arInsert = $DB->PrepareInsert("b_sale_location_country_lang", $arFields[$arLang["LID"]]); $strSql = "INSERT INTO b_sale_location_country_lang(COUNTRY_ID, " . $arInsert[0] . ") " . "VALUES(" . $ID . ", " . $arInsert[1] . ")"; } $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } } ////////////////////////////////////// foreach (GetModuleEvents("sale", "OnCountryUpdate", true) as $arEvent) { ExecuteModuleEventEx($arEvent, array($ID, $arFields)); } return $ID; }
function AddCountry($arFields) { global $DB; if (!CSaleLocation::CountryCheckFields("ADD", $arFields)) return false; $db_events = GetModuleEvents("sale", "OnBeforeCountryAdd"); while ($arEvent = $db_events->Fetch()) if (ExecuteModuleEventEx($arEvent, array($arFields))===false) return false; $arInsert = $DB->PrepareInsert("b_sale_location_country", $arFields); $strSql = "INSERT INTO b_sale_location_country(".$arInsert[0].") ". "VALUES(".$arInsert[1].")"; $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__); $ID = IntVal($DB->LastID()); $db_lang = CLangAdmin::GetList(($b="sort"), ($o="asc"), array("ACTIVE" => "Y")); while ($arLang = $db_lang->Fetch()) { if ($arFields[$arLang['LID']]) { $arInsert = $DB->PrepareInsert("b_sale_location_country_lang", $arFields[$arLang["LID"]]); $strSql = "INSERT INTO b_sale_location_country_lang(COUNTRY_ID, ".$arInsert[0].") ". "VALUES(".$ID.", ".$arInsert[1].")"; $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__); } } $events = GetModuleEvents("sale", "OnCountryAdd"); while ($arEvent = $events->Fetch()) ExecuteModuleEventEx($arEvent, array($ID, $arFields)); return $ID; }