leroy-merlin-br / bazaarvoice-feed
A PHP library for generating Bazaarvoice XML Product and Interaction Feeds.
2.3.1
2024-06-19 17:01 UTC
Requires
- php: ^8.0
- ext-simplexml: *
- phpseclib/phpseclib: ~2.0.38
Requires (Dev)
- ext-curl: *
- mikey179/vfsstream: ~1.6.11
- phpunit/phpunit: ^7.5.20 || ^8.5.29
README
A PHP library for generating and sFTPing XML Bazaarvoice Feeds.
Install
Via Composer
$ composer require leroy-merlin-br/bazaarvoice-feed
Usage
Creating a Feed.
$productFeed = new \BazaarVoice\Product\Feed();
Creating a feedElement
$productFeed = new \BazaarVoice\Product\Feed(); $feedElement = $productFeed->newFeed('my_feed');
Creating an Incremental feed.
$productFeed = new \BazaarVoice\Product\Feed(); $feedElement = $productFeed->newFeed('my_feed', true);
$productFeed = new \BazaarVoice\Product\Feed(); $feedElement = $productFeed->newFeed('my_feed') ->setIncremental(true);
Creating products and adding them to a feed.
$productFeed = new \BazaarVoice\Product\Feed(); $feedElement = $productFeed->newFeed('my_feed'); $productElement = $productFeed->newProduct('my_product', 'My Product', 'product_category_123', 'http://www.example.com/my-product', 'http://www.example.com/images/my-product.jpg'); $feedElement->addProduct($product_element); $moreProducts = []; $secondProduct = $productFeed->newProduct('second_product', 'Second Product', 'product_category_456', 'http://www.example.com/second-product', 'http://www.example.com/images/second-product.jpg'); ->setDescription('This is my second product') ->addPageUrl('http://www.example.es/second-product', 'es_SP') ->setBrandId('my_brand_123') ->addUPC('012345'); $moreProducts[] = $secondProduct; $moreProducts[] = $productFeed->newProduct('third_product', 'Third Product', 'product_category_789', 'http://www.example.com/third-product', 'http://www.example.com/images/third-product.jpg') ->addISBN('123-456-7890') ->addPageUrl('http://www.example.co.uk/third-product', 'en_UK') ->addCustomAttribute('PRODUCT_FAMILY', 'example_products'); $feedElement->addProducts($moreProducts);
Creating categories and adding them to a feed.
$productFeed = new \BazaarVoice\Product\Feed(); $feedElement = $productFeed->newFeed('my_feed'); // ... $categoryElement = $productFeed->newCategory('my_category', 'My Category', 'http://www.example.com/my-product'); $feedElement->addCategory($categoryElement); $moreCategories = []; $secondCategory = $productFeed->newCategory('second_category', 'Second Category', 'http://www.example.com/second-category') ->setImageUrl('http://www.example.com/images/second-category.jpg') ->addImageUrl('http://www.example.co.uk/images/uk-second-category.jpg', 'en_UK') ->setParentId('parent_category_id'); $moreCategories[] = $secondCategory; $feedElement->addCategories($moreCategories);
Creating brands and adding them to a feed.
$productFeed = new \BazaarVoice\Product\Feed(); $feedElement = $productFeed->newFeed('my_feed'); // ... $brandElement = $productFeed->newBrand('my_brand', 'My Brand'); $feedElement->addBrand($brandElement); $moreBrands = []; $secondBrand = $productFeed->newBrand('second_brand', 'Second Brand') ->addName('Duo Brand', 'es_SP') ->addName('Brand the Second', 'en_UK'); $moreBrands[] = $secondBrand; $moreBrands[] = $productFeed->newBrand('third_brand', 'Third Brand'); $feedElement->addBrands($moreBrands);
Creating interactions (orders) and adding them to a feed.
$orderFeed = new \BazaarVoice\Interaction\Feed(); $feedElement = $orderFeed->newFeed('Order feed'); $orderProducts = [ [ 'id' => 'productId123', 'name' => 'Product name', 'category' => 'Product Category', 'url' => 'http://product-url', 'imageUrl' => 'http://image-url', 'price' => 29, ], ]; $order = $feed->newInteraction('22/03/1987', 'john@doe.com', 'John Doe', 'userId123', 'pt_BR', $orderProducts); $feedElement->addInteraction($orderFeed); // $orderFeed->printFeed();
Print ProductFeed XML string
$productFeed = new \BazaarVoice\Product\Feed(); $feedElement = $productFeed->newFeed('my_feed'); // ... add products, brands & categories ... print $productFeed->printFeed($feedElement);
Saving Productfeed as an XML file.
$productFeed = new \BazaarVoice\Product\Feed(); $feedElement = $productFeed->newFeed('my_feed'); // ... add products, brands & categories ... $productFeed->saveFeed($feedElement, 'path/to/dir', 'my_feed_XYZ');
SFTP ProductFeed to BazaarVoice Production.
$productFeed = new \BazaarVoice\Product\Feed(); $feedElement = $productFeed->newFeed('my_feed'); // ... add products, brands & categories ... if ($feedFile = $productFeed->saveFeed($feedElement, 'path/to/dir', 'my_feed_XYZ') { try { $productFeed->sendFeed($feedFile, $sftpUsername, $sftpPassword); } catch (\Exception $e) { // Failed to FTP feed file. } }
SFTP ProductFeed to Bazaarvoice Staging.
$productFeed = new \BazaarVoice\Product\Feed(); $feedElement = $productFeed->newFeed('my_feed'); // ... add products, brands & categories ... if ($feedFile = $productFeed->saveFeed($feedElement, 'path/to/dir', 'my_feed_XYZ') { try { $productFeed->useStage()->sendFeed($feedFile, $sftpUsername, $sftpPassword); } catch (\Exception $e) { // Failed to FTP feed file. } }
Testing
$ composer test
Credits
License
The MIT License (MIT). Please see License File for more information.