oont-contents/plugins/webappick-product-feed-for-woocommerce/V5/Structure/CustomStructure.php
2025-03-31 21:42:48 +02:00

136 lines
4 KiB
PHP

<?php
/**
* Class CustomStructure
*
* @package CTXFeed
* @subpackage CTXFeed\V5\Structure
*/
namespace CTXFeed\V5\Structure;
use CTXFeed\V5\Merchant\MerchantAttributeReplaceFactory;
/**
* Class representing the structure for Custom2.
* Implements the StructureInterface for Custom-related operations.
*/
class CustomStructure implements StructureInterface,StructureXLSXInterface {
/**
* Configuration settings.
*
* @var \Config $config
*/
private $config;
/**
* Constructor for Custom2Structure.
*
* @param mixed $config Configuration settings.
*/
public function __construct( $config ) {
$this->config = $config;
}
/**
* Retrieves the XML structure.
*
* @return array The constructed XML data structure.
*/
public function get_xml_structure() {
$attributes = $this->config->attributes;
$mattributes = $this->config->mattributes;
$static = $this->config->default;
$type = $this->config->type;
$wrapper = \str_replace( " ", "_", $this->config->itemWrapper );;
$wrapper = apply_filters('woo_feed_product_item_wrapper', $wrapper, $this->config );
$data = [];
foreach ( $mattributes as $key => $attribute ) {
$attribute_value = ( $type[ $key ] === 'pattern' ) ? $static[ $key ] : $attributes[ $key ];
$replaced_attribute = MerchantAttributeReplaceFactory::replace_attribute( $attribute, $this->config );
$replaced_attribute = \str_replace( " ", "_", $replaced_attribute );
$data[ $wrapper ][][ $replaced_attribute ] = $attribute_value;
}
return $data;
}
public function get_csv_structure() {
$attributes = $this->config->attributes;
$mattributes = $this->config->mattributes;
$static = $this->config->default;
$type = $this->config->type;
$data = [];
foreach ( $mattributes as $key => $attribute ) {
$attribute_value = ( $type[ $key ] === 'pattern' ) ? $static[ $key ] : $attributes[ $key ];
$replaced_attribute = MerchantAttributeReplaceFactory::replace_attribute( $attribute, $this->config );
$data[][ $replaced_attribute ] = $attribute_value;
}
return $data;
}
/**
* Retrieves the TSV structure.
* Currently, this method serves as a wrapper for the get_csv_structure method.
*
* @return mixed The CSV structure converted to TSV format.
*/
public function get_tsv_structure() {
return $this->get_csv_structure();
}
/**
* Retrieves the TXT structure.
* Currently, this method serves as a wrapper for the get_csv_structure method.
*
* @return mixed The CSV structure converted to TXT format.
*/
public function get_txt_structure() {
return $this->get_csv_structure();
}
/**
* Retrieves the XLS structure.
* Currently, this method serves as a wrapper for the get_csv_structure method.
*
* @return mixed The CSV structure converted to XLS format.
*/
public function get_xls_structure() {
return $this->get_csv_structure();
}
/**
* Retrieves the XLSX structure.
* Currently, this method serves as a wrapper for the get_csv_structure method.
*
* @return mixed The CSV structure converted to XLSX format.
*/
public function get_xlsx_structure() {
return $this->get_csv_structure();
}
/**
* Retrieves the JSON structure.
* Currently, this method serves as a wrapper for the get_csv_structure method.
*
* @return mixed The CSV structure converted to JSON format.
*/
public function get_json_structure() {
$attributes = $this->config->attributes;
$mattributes = $this->config->mattributes;
$static = $this->config->default;
$type = $this->config->type;
$data = [];
foreach ( $mattributes as $key => $attribute ) {
$attribute_value = ( $type[ $key ] === 'pattern' ) ? $static[ $key ] : $attributes[ $key ];
$replaced_attribute = MerchantAttributeReplaceFactory::replace_attribute( $attribute, $this->config );
$data[ $replaced_attribute ] = $attribute_value;
}
return $data;
}
}