oont-contents/plugins/webappick-product-feed-for-woocommerce/includes/feeds/class-woo-feed-facebook.php
2025-03-31 21:42:48 +02:00

143 lines
3.6 KiB
PHP

<?php /** @noinspection PhpUnusedPrivateMethodInspection, PhpUndefinedMethodInspection, PhpUnused, PhpUnusedPrivateFieldInspection, PhpUnusedLocalVariableInspection, DuplicatedCode, PhpUnusedParameterInspection, PhpForeachNestedOuterKeyValueVariablesConflictInspection, RegExpRedundantEscape */
/**
* Class Google
*
* Responsible for processing and generating feed for Google.com
*
* @since 1.0.0
* @package Google
*
*/
class Woo_Feed_Facebook {
/**
* This variable is responsible for holding all product attributes and their values
*
* @since 1.0.0
* @var array $products Contains all the product attributes to generate feed
* @access public
*/
public $products;
/**
* This variable is responsible for holding feed configuration form values
*
* @since 1.0.0
* @var array $rules Contains feed configuration form values
* @access public
*/
public $rules;
/**
* This variable is responsible for mapping store attributes to merchant attribute
*
* @since 1.0.0
* @var array $mapping Map store attributes to merchant attribute
* @access public
*/
public $mapping;
/**
* This variable is responsible for generate error logs
*
* @since 1.0.0
* @var array $errorLog Generate error logs
* @access public
*/
public $errorLog;
/**
* This variable is responsible for making error number
*
* @since 1.0.0
* @var int $errorCounter Generate error number
* @access public
*/
public $errorCounter;
/**
* Feed Wrapper text for enclosing each product information
*
* @since 1.0.0
* @var string $feedWrapper Feed Wrapper text
* @access public
*/
public $feedWrapper = 'item';
/**
* Store product information
*
* @since 1.0.0
* @var array $storeProducts
* @access public
*/
private $storeProducts;
/**
* Define the core functionality to generate feed.
*
* Set the feed rules. Map products according to the rules and Check required attributes
* and their values according to merchant specification.
* @var Woo_Generate_Feed $feedRule Contain Feed Configuration
* @since 1.0.0
*/
public function __construct( $feedRule ) {
$feedRule['itemWrapper'] = $this->feedWrapper;
$this->products = new Woo_Feed_Products_v3( $feedRule );
// When update via cron job then set productIds.
if ( ! isset( $feedRule['productIds'] ) ) {
$feedRule['productIds'] = $this->products->query_products();
}
$this->products->get_products( $feedRule['productIds'] );
$this->rules = $feedRule;
}
/**
* Return Feed
*
* @return array|bool|string
*/
public function returnFinalProduct() {
if ( ! empty( $this->products ) ) {
if ( 'xml' == $this->rules['feedType'] ) {
// return $this->get_feed($this->products);
$feed = array(
'body' => $this->products->feedBody,
'header' => $this->products->feedHeader,
'footer' => $this->products->feedFooter,
);
return $feed;
} elseif ( 'txt' == $this->rules['feedType'] ) {
$feed = array(
'body' => $this->products->feedBody,
'header' => $this->products->feedHeader,
'footer' => '',
);
return $feed;
} elseif ( 'csv' == $this->rules['feedType'] || 'tsv' == $this->rules['feedType'] || 'xls' == $this->rules['feedType'] || 'xlsx' == $this->rules['feedType'] ) {
$feed = array(
'body' => $this->products->feedBody,
'header' => $this->products->feedHeader,
'footer' => '',
);
return $feed;
}
}
$feed = array(
'body' => '',
'header' => '',
'footer' => '',
);
return $feed;
}
}