decodeExport( $data['tiered_price_fixed'] ); $product->update_meta_data( '_fixed_price_rules', $fixed ); } if ( isset( $data['tiered_price_percentage'] ) ) { $percentage = $this->decodeExport( $data['tiered_price_percentage'] ); $product->update_meta_data( '_percentage_price_rules', $percentage ); } if ( isset( $data['tiered_price_type'] ) ) { if ( in_array( $data['tiered_price_type'], array( 'fixed', 'percentage' ) ) ) { $product->update_meta_data( '_tiered_price_rules_type', $data['tiered_price_type'] ); } } if ( isset( $data['tiered_price_minimum'] ) ) { $minimum = (int) $data['tiered_price_minimum']; $product->update_meta_data( '_tiered_price_minimum_qty', $minimum ); } foreach ( wp_roles()->roles as $WPRole => $role_data ) { if ( isset( $data[$WPRole . '_tiered_price_fixed'] ) ) { $fixed = $this->decodeExport( $data[$WPRole . '_tiered_price_fixed'] ); $product->update_meta_data( '_' . $WPRole . '_fixed_price_rules', $fixed ); } if ( isset( $data[$WPRole . '_tiered_price_percentage'] ) ) { $percentage = $this->decodeExport( $data[$WPRole . '_tiered_price_percentage'] ); $product->update_meta_data( '_' . $WPRole . '_percentage_price_rules', $percentage ); } if ( isset( $data[$WPRole . '_tiered_price_type'] ) ) { if ( in_array( $data[$WPRole . '_tiered_price_type'], array( 'fixed', 'percentage' ) ) ) { $product->update_meta_data( '_' . $WPRole . '_tiered_price_rules_type', $data[$WPRole . '_tiered_price_type'] ); } } if ( isset( $data[$WPRole . '_tiered_price_minimum'] ) ) { $minimum = (int) $data[$WPRole . '_tiered_price_minimum']; $product->update_meta_data( '_' . $WPRole . '_tiered_price_minimum_qty', $minimum ); } } return $product; } /** * Decode export file format to array * * @param string $data * * @return array */ protected function decodeExport( $data ) { $rules = explode( TierPricingTablePlugin::getRulesSeparator(), $data ); $data = array(); if ( $rules ) { foreach ( $rules as $rule ) { $rule = explode( ':', $rule ); if ( isset( $rule[0] ) && isset( $rule[1] ) ) { $data[intval( $rule[0] )] = $rule[1]; } } } $data = array_filter( $data ); $data = array_filter( $data, function ( $itemKey ) { return is_numeric( $itemKey ) && $itemKey > 1; }, ARRAY_FILTER_USE_KEY ); return ( !empty($data) ? $data : array() ); } }