• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/tradingplatform/ebay/api/categories.php
  • Класс: BitrixSaleTradingPlatformEbayApiCategories
  • Вызов: Categories::refreshVariationsTableData
public function refreshVariationsTableData(array $ebayCategoriesIds = array())
{
	$refreshedCount = 0;

	$specXml = $this->getItemSpecifics(array(
		"CategoryID" => empty($ebayCategoriesIds) ? $this->getMappedCategories() : $ebayCategoriesIds
	));

	$specifics = new SimpleXMLElement($specXml, LIBXML_NOCDATA);

	foreach($specifics->Recommendations as $categoryRecommendation)
	{
		foreach($categoryRecommendation->NameRecommendation as $nameRecommendation)
		{
			$fields = array(
				"CATEGORY_ID" => $categoryRecommendation->CategoryID->__toString(),
				"NAME" => $nameRecommendation->Name->__toString()
			);

			if(isset($nameRecommendation->ValidationRules))
			{

				if($nameRecommendation->ValidationRules->MinValues)
					$fields["MIN_VALUES"] = $nameRecommendation->ValidationRules->MinValues->__toString();
				else
					$fields["MIN_VALUES"] = 0;

				if($nameRecommendation->ValidationRules->MinValues)
					$fields["MAX_VALUES"] = $nameRecommendation->ValidationRules->MaxValues->__toString();
				else
					$fields["MAX_VALUES"] = 0;

				$fields["REQUIRED"] = intval($fields["MIN_VALUES"]) > 0 ? "Y" : "N";
				$fields["SELECTION_MODE"] = $nameRecommendation->ValidationRules->SelectionMode->__toString();
				$fields["ALLOWED_AS_VARIATION"] = $nameRecommendation->ValidationRules->VariationSpecifics->__toString() == "Enabled" ? "Y" : "N";
				$fields["HELP_URL"] = $nameRecommendation->ValidationRules->HelpURL->__toString();
			}

			if(isset($nameRecommendation->ValueRecommendation))
			{
				$values = array();

				foreach($nameRecommendation->ValueRecommendation as $valueRecommendation)
					$values[] = $valueRecommendation->Value->__toString();

				$fields["VALUE"] = $values;
			}

			if(mb_strtolower(SITE_CHARSET) != 'utf-8')
				$fields = BitrixMainTextEncoding::convertEncodingArray($fields, 'UTF-8', SITE_CHARSET);

			$res = CategoryVariationTable::getList(array(
				"filter" => array(
					"CATEGORY_ID" => $fields["CATEGORY_ID"],
					"NAME" =>  $fields["NAME"]
				),
				"select" => array("ID")
			));

			if($savedVar = $res->fetch())
				$result = CategoryVariationTable::update($savedVar["ID"], $fields);
			else
				$result = CategoryVariationTable::add($fields);

			if($result->isSuccess())
			{
				$refreshedCount++;
			}
		}
	}

	return $refreshedCount;
}