Skip to content

A PHP library for generating Bazaarvoice XML Product and Interaction Feeds.

License

Notifications You must be signed in to change notification settings

leroy-merlin-br/bazaarvoice-feed

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Bazaarvoice Product and Interaction feed Library

Latest Version on Packagist Software License Total Downloads Build Status Coverage Status

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.

About

A PHP library for generating Bazaarvoice XML Product and Interaction Feeds.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 98.3%
  • Dockerfile 1.5%
  • Makefile 0.2%