/** * Парсинг 1 товара * @param CMSPluginUrl $itemUrl * @param CMSTableBrand $brand * @return bool|void */ private function parseItem(CMSPluginUrl $itemUrl, CMSTableBrand $brand) { $http = $this->getHttp(); $itemExternalId = $itemUrl->getParamValue('productId'); echo "-----Parse item by:\n -------{$itemUrl} \n"; if (!$http->doGet($itemUrl)) { echo "GET URL Item FAIL!\n"; return; } $content = $http->getContents(); // пока есть два варианта ошибок на этом этапе // 1 - в ответ приходит пустая строка // 2 - страница с текстом ошибки (предположительно закончилась сессия) if (!$content) { echo "Error. Content is empty.\n"; $this->doReLogin(); $this->parseItem($itemUrl, $brand); return; } if ($this->isError($content)) { echo "Error. May be session end.\n"; $this->doReLogin(); $this->parseItem($itemUrl, $brand); return; } echo "\n-------Clear cart.\n"; $this->clearCart(); echo "\n-------Get item main params.\n"; $itemParams = $this->getItemTitleAndCategoryParams($content); $variations = $this->getVariations($content); // определяем тип очков $typeItem = $this->getItemType($itemParams['categoryType']); foreach ($variations as $key => $variation) { $upcCode = $this->getUpcCode($itemParams['title'], $variation['colorCode'], $variation['sizes']['one']); echo "\n"; echo "----------brand - {$brand->getTitle()}\n"; echo "----------model_name - {$itemParams['title']}\n"; echo "----------external_id - {$itemExternalId}\n"; echo "----------color_title - {$variation['color']}\n"; echo "----------color_code - {$variation['colorCode']}\n"; echo "----------size 1 - {$variation['sizes']['one']}\n"; echo "----------size 2 - {$variation['sizes']['two']}\n"; echo "----------size 3 - {$variation['sizes']['three']}\n"; echo "----------image - {$variation['img']}\n"; echo "----------price - {$variation['price']}\n"; echo "----------type - {$itemParams['categoryType']}\n"; echo "----------upc - {$upcCode}\n"; echo "----------stock - {$variation['stock']}\n\n"; echo "----------country - {$variation['country']}\n"; echo "----------cartStock - {$variation['cartStock']}\n"; echo "--------------------------------------------\n"; $imgFile = $this->getImgFile($variation['img']); // continue; // создаем обьект модели и синхронизируем $item = new CMSClassGlassesParserItem(); $item->setBrand($brand); $item->setTitle($itemParams['title']); $item->setExternalId($itemExternalId); $item->setColor($variation['color']); $item->setColorCode($variation['colorCode']); $item->setSize($variation['sizes']['one']); $item->setSize2($variation['sizes']['two']); $item->setSize3($variation['sizes']['three']); $item->setPrice($variation['price']); $item->setType($typeItem); $item->setStockCount($variation['cartStock']); $item->setIsValid(1); if ($variation['country'] == self::COUNTRY_ITALY) { $item->setSellFrom(1); } if ($imgFile) { $item->setImgFile($imgFile->getFile()); } if ($upcCode && $upcCode != '') { $item->setUpc($upcCode); } $result[] = $item; } echo "\n=============================================================================================\n"; $this->syncingResult($result); echo "\n=============================================================================================\n"; }