true, 'file' => 'data/files/sellers.json', ]; protected function run(array $arguments) { $photosUrl = 'https://www.hannah.cz/data/photos/'; $blockUtil = ServiceContainer::getService(Block::class); $data = json_decode(file_get_contents($arguments['file']), true); foreach ($data as $seller) { if (!($sellerId = $this->getSellerIdByExternalId((int) $seller['id_external']))) { continue; } sqlQueryBuilder() ->update('sellers') ->directValues(['email' => $seller['email']]) ->where(Operator::equals(['id' => $sellerId])) ->execute(); if ($arguments['emailOnly'] ?? false) { continue; } // content if ($blockId = $blockUtil->insertFirstBlock('sellers', $sellerId, $seller['content'])) { sqlQueryBuilder() ->update('blocks') ->directValues(['json_content' => $seller['json_content']]) ->where(Operator::equals(['id' => $blockId])) ->execute(); } // photos $photos = explode(';', $seller['photos'] ?: ''); foreach ($photos as $position => $photo) { if ($photoId = $this->getDownloader()->importProductImage($photosUrl.$photo)) { try { sqlQueryBuilder() ->insert('photos_sellers_relation') ->directValues( [ 'id_photo' => $photoId, 'id_seller' => $sellerId, 'show_in_lead' => $position === 0 ? 'Y' : 'N', 'position' => $position, ] )->execute(); } catch (\Exception $e) { } } } } } private function getDownloader(): \Downloader { static $downloader; if (!$downloader) { $downloader = (new \Downloader()) ->setMethod('curl'); } return $downloader; } private function getSellerIdByExternalId(int $externalId): ?int { $sellerId = sqlQueryBuilder() ->select('id') ->from('sellers') ->where(Operator::equals(['id_external' => $externalId])) ->execute()->fetchOne(); if (!$sellerId) { return null; } return (int) $sellerId; } } return ImportSellersContentScript::class;