21 private int $exportId;
29 $this->exportId = $exportId;
40 if (empty($this->exportId))
45 $agent = $this->getAgentId();
49 $ttl = self::CACHE_TTL;
50 $timeToStart = ConvertTimeStamp(strtotime(date(
'Y-m-d H:i:s', time() + $ttl)),
'FULL');
52 return \CAgent::AddAgent(
53 self::createAgentName($this->exportId),
74 private function getAgentId()
79 'NAME' => self::createAgentName($this->exportId),
83 if ($agent =
$dbRes->Fetch())
101 'NAME' => self::createAgentName($this->exportId),
105 if ($agent =
$dbRes->Fetch())
106 \CAgent::Delete($agent[
"ID"]);
129 private static function createCacheId()
132 return self::CACHE_ID_PREFIX;
140 private static function createAgentName(
int $exportId): string
142 return 'Bitrix\Sale\TradingPlatform\Vk\VkCategories::updateVkCategoriesAgent(' . $exportId .
');';
154 $cacheManager = Application::getInstance()->getManagedCache();
157 if ($cacheManager->read(self::CACHE_TTL, self::createCacheId()))
159 $result = $cacheManager->get(self::createCacheId());
163 $result = self::updateDataToCache($this->exportId);
185 private static function updateDataToCache($exportId)
187 if (empty($exportId))
192 $vkCategories = self::getDataFromVk($exportId);
194 if (is_array($vkCategories))
196 $cacheManager = Application::getInstance()->getManagedCache();
197 $cacheManager->set(self::createCacheId(), $vkCategories);
199 return $vkCategories;
214 private static function getDataFromVk($exportId)
216 $apiHelper =
new ApiHelper($exportId);
218 return $apiHelper->getVkCategories();
228 private static function convertVkCategoriesToTree($categoriesList)
230 $categoriesTree =
array();
231 foreach ($categoriesList as $category)
233 if (!isset($categoriesTree[$category[
"section"][
"id"]]))
236 $categoriesTree[$category[
"section"][
"id"]] =
array(
237 "ID" => $category[
"section"][
"id"],
238 "NAME" => $category[
"section"][
"name"],
244 $categoriesTree[$category[
"section"][
"id"]][
"ITEMS"][$category[
"id"]] =
array(
245 "ID" => $category[
"id"],
246 "NAME" => $category[
"name"],
250 return $categoriesTree;
260 private static function convertVkCategoriesToList($categoriesList)
262 $categoriesListFormatted =
array();
263 foreach ($categoriesList as $category)
265 $categoriesListFormatted[$category[
"id"]]=
array(
266 "ID" => $category[
"id"],
267 "NAME" => $category[
"name"],
271 return $categoriesListFormatted;
284 $vkCategory = $this->
getList();
287 $defaultItemText = $defaultItemText <>
'' ? $defaultItemText : Loc::getMessage(
"SALE_CATALOG_CHANGE_VK_CATEGORY");
288 $strSelect =
'<option value="-1">[' . $defaultItemText .
']</option>';
290 foreach ($vkCategory as $vkTreeItem)
292 $strSelect .=
'<option disabled value="0">'.mb_strtoupper($vkTreeItem[
"NAME"]) .
'</option>';
294 foreach ($vkTreeItem[
"ITEMS"] as $sectionItem)
297 if ($catVkSelected && ($sectionItem[
"ID"] == $catVkSelected))
298 $selected =
" selected";
300 $strSelect .=
'<option' . $selected .
' value="' . $sectionItem[
"ID"] .
'">- ' . $sectionItem[
"NAME"] .
'</option>';
316 if (self::updateDataToCache($exportId))
318 return self::createAgentName($exportId);