Current File : //var/www/vinorea/modules/klaviyopsautomation/classes/PrestashopServices/ProductService.php |
<?php
/**
* Klaviyo
*
* NOTICE OF LICENSE
*
* This source file is subject to the Commercial License
* you can't distribute, modify or sell this code
*
* DISCLAIMER
*
* Do not edit or add to this file
* If you need help please contact extensions@klaviyo.com
*
* @author Klaviyo
* @copyright Klaviyo
* @license commercial
*/
namespace KlaviyoPs\Classes\PrestashopServices;
if (!defined('_PS_VERSION_')) {
exit;
}
use ArrayObject;
use KlaviyoV3Sdk\Exception\KlaviyoException;
use KlaviyoPs\Classes\BusinessLogicServices\ProductPayloadService;
use Product;
use Validate;
class ProductService
{
/**
* Normalizing data from PrestaShop allows to use them in a uniform and secure way.
* To use the methods of this class, start by normalizing data.
*
* @param Product|array $product
* @return ArrayObject
*/
public function normalize($product)
{
$productObject = null;
if (is_object($product)) {
$productObject = $product;
$product = (array)$product;
$product['id_product'] = $productObject->id;
$product['cache_object'] = $productObject;
unset($product['id']);
}
if (!isset($product['id_product'])) {
$product['id_product'] = 0;
}
if (!isset($product['id_product_attribute'])) {
$product['id_product_attribute'] = 0;
}
if (!isset($product['id_customization'])) {
$product['id_customization'] = 0;
}
$product['id_product'] = (int) $product['id_product'];
$product['id_product_attribute'] = (int)$product['id_product_attribute'];
$product['id_customization'] = (int)$product['id_customization'];
return new ArrayObject($product);
}
/**
* Get Product object from normalized data
*
* @param ArrayObject $product
* @return Product
* @throws KlaviyoException
*/
public function getObject(ArrayObject $product)
{
if (!$product->offsetExists('cache_object')) {
$product['cache_object'] = new Product($product['id_product']);
if (!Validate::isLoadedObject($product['cache_object'])) {
throw new KlaviyoException('Product is not valid');
}
}
return $product['cache_object'];
}
/**
* @param ArrayObject $product
* @param ArrayObject $context
* @return array
*/
public function getCategoryNames(
ArrayObject $product,
ArrayObject $context
) {
if (!$product->offsetExists('cache_category_names')) {
$product['cache_category_names'] = ProductPayloadService::getCategoryNamesForProduct(
$product['id_product'],
$context['id_lang']
);
}
return $product['cache_category_names'];
}
/**
* @param ArrayObject $product
* @param ArrayObject $context
* @return array
*/
public function getTags(
ArrayObject $product,
ArrayObject $context
) {
if (!$product->offsetExists('cache_tags_array')) {
$product['cache_tags_array'] = ProductPayloadService::getProductTagsArray(
$product['id_product'],
$context['id_lang']
);
}
return $product['cache_tags_array'];
}
/**
* @param ArrayObject $product
* @return bool
*/
public function isVirtual(ArrayObject $product)
{
if (!isset($product['is_virtual'])) {
return false;
}
return (bool)$product['is_virtual'];
}
}