Пример #1
0
 /**
  * <p>Функция изменяет параметры города с кодом ID на значения из массива arFields </p>
  *
  *
  *
  *
  * @param int $ID  Код города.
  *
  *
  *
  * @param array $arFields  Массив с параметрами города должен содержать ключи: <ul> <li> <b>NAME</b> -
  * название города (не зависящее от языка);</li> <li> <b>SHORT_NAME</b> -
  * сокращенное название города - абревиатура (не зависящее от
  * языка);</li> <li> <b>&lt;код языка&gt;</b> - ключем является код языка, а
  * значением ассоциативный массив вида <pre class="syntax"> array("LID" =&gt; "код
  * языка", "NAME" =&gt; "название города на этом языке", "SHORT_NAME" =&gt;
  * "сокращенное название города (аббревиатура) на этом языке")</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__updatecity.3fe4165d.php
  * @author Bitrix
  */
 public static function UpdateCity($ID, $arFields)
 {
     global $DB;
     $ID = intval($ID);
     if ($ID <= 0 || !CSaleLocation::CityCheckFields("UPDATE", $arFields)) {
         return false;
     }
     foreach (GetModuleEvents("sale", "OnBeforeCityUpdate", true) as $arEvent) {
         if (ExecuteModuleEventEx($arEvent, array($ID, &$arFields)) === false) {
             return false;
         }
     }
     $strUpdate = $DB->PrepareUpdate("b_sale_location_city", $arFields);
     $strSql = "UPDATE b_sale_location_city 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::GetCityLangByID($ID, $arLang["LID"])) {
             $strUpdate = $DB->PrepareUpdate("b_sale_location_city_lang", $arFields[$arLang["LID"]]);
             $strSql = "UPDATE b_sale_location_city_lang SET " . $strUpdate . " WHERE ID = " . $arCntLang["ID"] . "";
         } else {
             $arInsert = $DB->PrepareInsert("b_sale_location_city_lang", $arFields[$arLang["LID"]]);
             $strSql = "INSERT INTO b_sale_location_city_lang(CITY_ID, " . $arInsert[0] . ") " . "VALUES(" . $ID . ", " . $arInsert[1] . ")";
         }
         $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     }
     foreach (GetModuleEvents("sale", "OnCityUpdate", true) as $arEvent) {
         ExecuteModuleEventEx($arEvent, array($ID, $arFields));
     }
     return $ID;
 }
Пример #2
0
 /**
  * <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&amp;LESSON_ID=3570" >здесь</a>.</p>
  *
  *
  * @param array $arFields  Ассоциативный массив с параметрами города должен содержать
  * ключи: <ul> <li> <b>NAME</b> - название города (не зависящее от языка);</li> <li>
  * <b>SHORT_NAME</b> - сокращенное название города - аббревиатура (не
  * зависящее от языка);</li> <li> <b>&lt;код языка&gt;</b> - ключем является код
  * языка, а значением ассоциативный массив вида <pre class="syntax"> array("LID"
  * =&gt; "код языка", "NAME" =&gt; "название города на этом языке", "SHORT_NAME" =&gt;
  * "сокращенное название города (аббревиатура) на этом языке")</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>&lt;код языка&gt;</b> - ключем является код языка, а значением ассоциативный массив вида
  * <pre class="syntax">
  * array("LID" =&gt; "код языка",
  *       "NAME" =&gt; "название города на этом языке",
  *       "SHORT_NAME" =&gt; "сокращенное название города
  *                        (аббревиатура) на этом языке")</pre>
  * Эта пара ключ-значение должна присутствовать для каждого языка системы.</li>
  * </ul>
  * </td>
  * </tr>
  * 
  * 
  * 
  * &lt;?
  * $arCity = array(
  *    "NAME" =&gt; "Kaliningrad",
  *    "SHORT_NAME" =&gt; "Kaliningrad",
  *    "ru" =&gt; array(
  *       "LID" =&gt; "ru",
  *       "NAME" =&gt; "Калининград",
  *       "SHORT_NAME" =&gt; "Калининград"
  *       ),
  *    "en" =&gt; array(
  *       "LID" =&gt; "en",
  *       "NAME" =&gt; "Kaliningrad",
  *       "SHORT_NAME" =&gt; "Kaliningrad"
  *       )
  * );
  * 
  * $ID = CSaleLocation::AddCity($arCity);
  * if (IntVal($ID)&lt;=0)
  *    echo "Ошибка добавления города";
  * ?&gt;
  * </pre>
  *
  *
  * @static
  * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csalelocation/csalelocation__addcity.d2d048d2.php
  * @author Bitrix
  */
 public static function AddCity($arFields)
 {
     global $DB;
     if (!CSaleLocation::CityCheckFields("ADD", $arFields)) {
         return false;
     }
     if (self::isLocationProMigrated()) {
         return self::AddLocationUnattached('CITY', $arFields);
     }
     foreach (GetModuleEvents('sale', 'OnBeforeCityAdd', true) as $arEvent) {
         if (ExecuteModuleEventEx($arEvent, array($arFields)) === false) {
             return false;
         }
     }
     $arInsert = $DB->PrepareInsert("b_sale_location_city", $arFields);
     $strSql = "INSERT INTO b_sale_location_city(" . $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_city_lang", $arFields[$arLang["LID"]]);
             $strSql = "INSERT INTO b_sale_location_city_lang(CITY_ID, " . $arInsert[0] . ") " . "VALUES(" . $ID . ", " . $arInsert[1] . ")";
             $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         }
     }
     foreach (GetModuleEvents('sale', 'OnCityAdd', true) as $arEvent) {
         ExecuteModuleEventEx($arEvent, array($ID, $arFields));
     }
     return $ID;
 }
Пример #3
0
 /**
  * <p>Метод изменяет параметры города с кодом ID на значения из массива arFields. Метод динамичный.</p>
  *
  *
  * @param int $ID  Код города.
  *
  * @param array $arFields  Массив с параметрами города должен содержать ключи: <ul> <li> <b>NAME</b> -
  * название города (не зависящее от языка);</li> <li> <b>SHORT_NAME</b> -
  * сокращенное название города - абревиатура (не зависящее от
  * языка);</li> <li> <b>&lt;код языка&gt;</b> - ключем является код языка, а
  * значением ассоциативный массив вида <pre class="syntax"> array("LID" =&gt; "код
  * языка", "NAME" =&gt; "название города на этом языке", "SHORT_NAME" =&gt;
  * "сокращенное название города (аббревиатура) на этом языке")</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__updatecity.3fe4165d.php
  * @author Bitrix
  */
 public static function UpdateCity($ID, $arFields)
 {
     global $DB;
     $ID = intval($ID);
     if ($ID <= 0 || !CSaleLocation::CityCheckFields("UPDATE", $arFields)) {
         return false;
     }
     foreach (GetModuleEvents("sale", "OnBeforeCityUpdate", true) as $arEvent) {
         if (ExecuteModuleEventEx($arEvent, array($ID, &$arFields)) === false) {
             return false;
         }
     }
     if (self::isLocationProMigrated()) {
         try {
             $locId = self::getLocationIdByCityId($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_city", $arFields);
         $strSql = "UPDATE b_sale_location_city 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::GetCityLangByID($ID, $arLang["LID"])) {
                 $strUpdate = $DB->PrepareUpdate("b_sale_location_city_lang", $arFields[$arLang["LID"]]);
                 $strSql = "UPDATE b_sale_location_city_lang SET " . $strUpdate . " WHERE ID = " . $arCntLang["ID"] . "";
             } else {
                 $arInsert = $DB->PrepareInsert("b_sale_location_city_lang", $arFields[$arLang["LID"]]);
                 $strSql = "INSERT INTO b_sale_location_city_lang(CITY_ID, " . $arInsert[0] . ") " . "VALUES(" . $ID . ", " . $arInsert[1] . ")";
             }
             $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
         }
     }
     foreach (GetModuleEvents("sale", "OnCityUpdate", true) as $arEvent) {
         ExecuteModuleEventEx($arEvent, array($ID, $arFields));
     }
     return $ID;
 }
Пример #4
0
	function AddCity($arFields)
	{
		global $DB;

		if (!CSaleLocation::CityCheckFields("ADD", $arFields))
			return false;

		$db_events = GetModuleEvents("sale", "OnBeforeCityAdd");
		while ($arEvent = $db_events->Fetch())
			if (ExecuteModuleEventEx($arEvent, array($arFields))===false)
				return false;

		$arInsert = $DB->PrepareInsert("b_sale_location_city", $arFields);
		$strSql =
			"INSERT INTO b_sale_location_city(".$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_city_lang", $arFields[$arLang["LID"]]);
				$strSql =
					"INSERT INTO b_sale_location_city_lang(CITY_ID, ".$arInsert[0].") ".
					"VALUES(".$ID.", ".$arInsert[1].")";
				$DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__);
			}
		}

		$events = GetModuleEvents("sale", "OnCityAdd");
		while ($arEvent = $events->Fetch())
			ExecuteModuleEventEx($arEvent, array($ID, $arFields));

		return $ID;
	}