config = $config; $this->config->itemWrapper = 'item'; $this->config->itemsWrapper = 'items'; } /** * Retrieves grouped attributes for tax and shipping. * * @return array Array of grouped attributes categorized by type. */ public function get_grouped_attributes() { $group['additional_variant'] = [ 'additional_variant_label', 'additional_variant_value' ]; $group['tax'] = [ 'tax_country', 'tax_region', 'tax_rate', 'tax_ship' ]; $group['shipping'] = [ 'location_id', 'location_group_name', 'min_handling_time', 'max_handling_time', 'min_transit_time', 'max_transit_time' ]; return $group; } /** * Retrieves the XML structure. * * @return array The constructed XML data structure. */ public function get_xml_structure() { $additional_variant = []; $group = $this->get_grouped_attributes(); $attributes = $this->config->attributes; $mattributes = $this->config->mattributes; $static = $this->config->default; $type = $this->config->type; $wrapper = $this->config->itemWrapper; $data = []; if ( !\in_array( "identifier_exists", $attributes ) ){ \array_push( $attributes,'identifier_exists' ); \array_push( $mattributes,'identifier_exists' ); \array_push( $type,'attribute' ); } foreach ( $mattributes as $key => $attribute ) { $attribute_value = ( $type[ $key ] === 'pattern' ) ? $static[ $key ] : $attributes[ $key ]; $additional_variant_sub = \str_replace( "additional_variant_", "", $attribute ); $replaced_attribute = MerchantAttributeReplaceFactory::replace_attribute( $attribute, $this->config ); // Installment Attribute if ( \in_array( $attribute, $group['additional_variant'], true ) && \count( $additional_variant ) < 1 ) { $additional_variant[ $additional_variant_sub ] = $attribute_value; }elseif ( \in_array( $attribute, $group['additional_variant'], true ) ) { $additional_variant[ $additional_variant_sub ] = $attribute_value; $data[ $wrapper ][]['additional_variant_attribute'] = $additional_variant; $additional_variant = []; }elseif ( \strpos( $attribute, 'images_' ) !== false ) { $data[ $wrapper ][][ $replaced_attribute ] = $attribute_value; }else { $data[ $wrapper ][ $replaced_attribute ] = $attribute_value; } } return $data; } /** * Constructs a CSV structure based on the configuration settings and grouped attributes. * * @return array The constructed CSV data structure. */ public function get_csv_structure() { $group = $this->get_grouped_attributes(); $attributes = $this->config->attributes; $mattributes = $this->config->mattributes; $static = $this->config->default; $type = $this->config->type; $data = []; if ( !\in_array( "identifier_exists", $attributes ) ){ \array_push( $attributes,'identifier_exists' ); \array_push( $mattributes,'identifier_exists' ); \array_push( $type,'attribute' ); } foreach ( $mattributes as $key => $attribute ) { $additional_variant_sub = \str_replace( "additional_variant_", "", $attribute ); $attribute_value = ( $type[ $key ] === 'pattern' ) ? $static[ $key ] : $attributes[ $key ]; if ( \in_array( $attribute, $group['additional_variant'], true ) && \count( $additional_variant ) < 1 ) { $additional_variant[ $additional_variant_sub ] = $attribute_value; }elseif ( \in_array( $attribute, $group['additional_variant'], true ) ) { $additional_variant[ $additional_variant_sub ] = $attribute_value; $data[ 'additional_variant_attribute' ][] = $additional_variant; $additional_variant = []; } elseif ( \strpos( $attribute, 'images_' ) !== false ) { $replaced_attribute = MerchantAttributeReplaceFactory::replace_attribute( 'additional_image_link', $this->config ); $data[][$replaced_attribute] = $attribute_value; } else { $replaced_attribute = MerchantAttributeReplaceFactory::replace_attribute( $attribute, $this->config ); $data[][ $replaced_attribute ] = $attribute_value; } } if ( \array_key_exists( 'shipping', $data ) && ! empty( $data['shipping'] ) ) { $attr = 'shipping(' . \implode( ':', \array_keys( $data['shipping'] ) ) . ')'; $data[][ $attr ] = \implode( ':', \array_values( $data['shipping'] ) ); unset( $data['shipping'] ); } if ( \array_key_exists( 'additional_variant_attribute', $data ) && ! empty( $data['additional_variant_attribute'] ) ) { foreach ( $data['additional_variant_attribute'] as $detail ) { $additional_variant[] = \implode( ':', \array_values( $detail ) ); } $data[]['additional_variant_attribute'] = \implode( ',', \array_values( $additional_variant ) ); unset( $data['additional_variant_attribute'] ); } 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 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() { return $this->get_csv_structure(); } }