public function js_element_data($button_class = "")
 {
     $drag_elements = array();
     $tags = array();
     foreach (TM_EPO_BUILDER()->get_elements() as $element => $settings) {
         if (isset(TM_EPO_BUILDER()->elements_array[$element])) {
             if ($settings['show_on_backend']) {
                 $tagclass = "";
                 if ($settings['_is_addon']) {
                     $tags[$settings['namespace']][sanitize_title("tc-" . $settings['tags'])] = $settings['tags'];
                     $tagclass .= " tc-" . sanitize_title($settings['tags']) . " tc-" . sanitize_title($settings['namespace']);
                 } else {
                     $tag = explode(" ", $settings['tags']);
                     foreach ($tag as $key => $value) {
                         $tags[$settings['namespace']][sanitize_title($value)] = $value;
                         $tagclass .= " tc-" . sanitize_title($value);
                     }
                 }
                 $_drag_elements = '<li class="transition tm-element-button' . $tagclass . '">';
                 $_drag_elements .= "<div data-element='" . $element . "' class='" . $button_class . " tc-element-button element-" . $element . "'>" . "<div class='tm-label'>" . "<i class='tmfa tcfa " . $settings["icon"] . "'></i> " . "<span class='tm-element-name'>" . $settings["name"] . "</span>" . "<i class='tm-description'>" . $settings["description"] . "</i>" . "</div></div>";
                 $_drag_elements .= '</li>';
                 $drag_elements[$settings['namespace']][] = $_drag_elements;
             }
         }
     }
     $tm_drag_elements = $drag_elements[TM_EPO_BUILDER()->elements_namespace];
     unset($drag_elements[TM_EPO_BUILDER()->elements_namespace]);
     $drag_elements_html = implode("", $tm_drag_elements);
     foreach ($drag_elements as $key => $value) {
         $drag_elements_html .= implode("", $value);
     }
     $tm_tags = $tags[TM_EPO_BUILDER()->elements_namespace];
     unset($tags[TM_EPO_BUILDER()->elements_namespace]);
     //$tags = array_unique($tags,SORT_REGULAR);//requires php > 5.2.9
     $tags = array_map('unserialize', array_unique(array_map('serialize', $tags)));
     $tag_counter = 1;
     $out = '<div class="transition tm-tabs tm-tags-container">';
     $out .= '<div class="transition tm-tab-headers">';
     $out .= '<div class="tm-box tma-tab-label">' . '<h4 class="tab-header open" data-tm-tag="' . esc_attr("all") . '" data-id="tc-tag' . $tag_counter . '-tab">' . __('All', TM_EPO_TRANSLATION) . '</h4>' . '</div>';
     foreach ($tm_tags as $key => $value) {
         $tag_counter++;
         $out .= '<div class="tm-box tma-tab-label">' . '<h4 class="tab-header closed" data-tm-tag="tc-' . esc_attr($key) . '" data-id="tc-tag' . $tag_counter . '-tab">' . $value . '</h4>' . '</div>';
     }
     foreach ($tags as $key => $value) {
         $tag_counter++;
         $out .= '<div class="tm-box tma-tab-label">' . '<h4 class="tab-header closed" data-tm-tag="tc-' . esc_attr(sanitize_title($key)) . '" data-id="tc-tag' . $tag_counter . '-tab">' . $key . '</h4>' . '</div>';
     }
     $out .= '</div>';
     $out .= '<div class="transition tm-tab tc-tag' . $tag_counter . '-tab">';
     $out .= '<ul class="tm-elements-container tm-bsbb-all">';
     $out .= $drag_elements_html;
     $out .= '</ul>';
     $out .= '</div>';
     $out .= '</div>';
     return $out;
 }
Exemple #2
0
 public function register_addon()
 {
     TM_EPO_BUILDER()->register_addon(array("name" => "tm_button", "options" => array("name" => __("TM Buttom", TM_EPO_TRANSLATION), "width" => "w100", "width_display" => "1/1", "icon" => "fa-terminal", "is_post" => "post", "type" => "single", "post_name_prefix" => "tm_button", "fee_type" => "single", "subscription_fee_type" => "single"), "settings" => array("required", "price", "text_after_price", "price_type6", "hide_amount", array("id" => "my_custom_setting", "default" => "", "type" => "text", "label" => __('My Custom Setting name', TM_EPO_TRANSLATION), "desc" => __('My Custom Setting description.', TM_EPO_TRANSLATION)))));
 }
 /**
  * Gets a list of all the Extra Product Options (local and global)
  * for the specific $post_id.
  */
 public function get_product_tm_epos($post_id = 0, $form_prefix = "")
 {
     if (empty($post_id)) {
         return array();
     }
     if (!empty($this->cpf[$post_id])) {
         return $this->cpf[$post_id];
     }
     $in_cat = array();
     $tmglobalprices = array();
     $terms = get_the_terms($post_id, 'product_cat');
     if ($terms) {
         foreach ($terms as $term) {
             $in_cat[] = $term->term_id;
         }
     }
     // get all categories (no matter the language)
     $_all_categories = TM_EPO_WPML()->get_terms(null, 'product_cat', array('fields' => "ids", 'hide_empty' => false));
     if (!$_all_categories) {
         $_all_categories = array();
     }
     /* Get Local options */
     $args = array('post_type' => TM_EPO_LOCAL_POST_TYPE, 'post_status' => array('publish'), 'numberposts' => -1, 'orderby' => 'menu_order', 'order' => 'asc', 'suppress_filters' => true, 'post_parent' => floatval(TM_EPO_WPML()->get_original_id($post_id)));
     TM_EPO_WPML()->remove_sql_filter();
     $tmlocalprices = get_posts($args);
     TM_EPO_WPML()->restore_sql_filter();
     $this->set_tm_meta($post_id);
     $tm_meta_cpf_global_forms = isset($this->tm_meta_cpf['global_forms']) && is_array($this->tm_meta_cpf['global_forms']) ? $this->tm_meta_cpf['global_forms'] : array();
     foreach ($tm_meta_cpf_global_forms as $key => $value) {
         $tm_meta_cpf_global_forms[$key] = absint($value);
     }
     $tm_meta_cpf_global_forms_added = array();
     if (!$this->tm_meta_cpf['exclude']) {
         $meta_array = TM_EPO_HELPER()->build_meta_query('OR', 'tm_meta_disable_categories', 1, '!=', 'NOT EXISTS');
         $args = array('post_type' => TM_EPO_GLOBAL_POST_TYPE, 'post_status' => array('publish'), 'numberposts' => -1, 'orderby' => 'date', 'order' => 'asc', 'meta_query' => $meta_array);
         $tmp_tmglobalprices = get_posts($args);
         if ($tmp_tmglobalprices) {
             $wpml_tmp_tmglobalprices = array();
             $wpml_tmp_tmglobalprices_added = array();
             foreach ($tmp_tmglobalprices as $price) {
                 /* Get Global options that belong to the product categories */
                 if (!empty($in_cat) && has_term($in_cat, 'product_cat', $price)) {
                     $tmglobalprices[] = $price;
                     $tm_meta_cpf_global_forms_added[] = $price->ID;
                 }
                 /* Get Global options that have no catergory set (they apply to all products) */
                 if (!has_term($_all_categories, 'product_cat', $price)) {
                     if (TM_EPO_WPML()->is_active()) {
                         $price_meta_lang = get_post_meta($price->ID, TM_EPO_WPML_LANG_META, true);
                         $original_product_id = floatval(TM_EPO_WPML()->get_original_id($price->ID, $price->post_type));
                         if ($price_meta_lang == TM_EPO_WPML()->get_lang() || $price_meta_lang == '' && TM_EPO_WPML()->get_lang() == TM_EPO_WPML()->get_default_lang()) {
                             $tmglobalprices[] = $price;
                             $tm_meta_cpf_global_forms_added[] = $price->ID;
                             if ($price_meta_lang != TM_EPO_WPML()->get_default_lang() && $price_meta_lang != '') {
                                 $wpml_tmp_tmglobalprices_added[$original_product_id] = $price;
                             }
                         } else {
                             if ($price_meta_lang == TM_EPO_WPML()->get_default_lang() || $price_meta_lang == '') {
                                 $wpml_tmp_tmglobalprices[$original_product_id] = $price;
                             }
                         }
                     } else {
                         $tmglobalprices[] = $price;
                         $tm_meta_cpf_global_forms_added[] = $price->ID;
                     }
                 }
             }
             // replace missing translation with original
             if (TM_EPO_WPML()->is_active()) {
                 $wpml_gp_keys = array_keys($wpml_tmp_tmglobalprices);
                 foreach ($wpml_gp_keys as $key => $value) {
                     if (!isset($wpml_tmp_tmglobalprices_added[$value])) {
                         $tmglobalprices[] = $wpml_tmp_tmglobalprices[$value];
                         $tm_meta_cpf_global_forms_added[] = $price->ID;
                     }
                 }
             }
         }
         /* Get Global options that apply to the product */
         $args = array('post_type' => TM_EPO_GLOBAL_POST_TYPE, 'post_status' => array('publish'), 'numberposts' => -1, 'orderby' => 'date', 'order' => 'asc', 'meta_query' => array(array('key' => 'tm_meta_product_ids', 'value' => '"' . $post_id . '";', 'compare' => 'LIKE')));
         $tmglobalprices_products = get_posts($args);
         /* Merge Global options */
         if ($tmglobalprices_products) {
             $global_id_array = array();
             if (isset($tmglobalprices)) {
                 foreach ($tmglobalprices as $price) {
                     $global_id_array[] = $price->ID;
                 }
             } else {
                 $tmglobalprices = array();
             }
             foreach ($tmglobalprices_products as $price) {
                 if (!in_array($price->ID, $global_id_array)) {
                     $tmglobalprices[] = $price;
                     $tm_meta_cpf_global_forms_added[] = $price->ID;
                 }
             }
         }
     }
     $tm_meta_cpf_global_forms_added = array_unique($tm_meta_cpf_global_forms_added);
     foreach ($tm_meta_cpf_global_forms as $key => $value) {
         if (!in_array($value, $tm_meta_cpf_global_forms_added)) {
             if (TM_EPO_WPML()->is_active()) {
                 $tm_meta_lang = get_post_meta($value, TM_EPO_WPML_LANG_META, true);
                 if (empty($tm_meta_lang)) {
                     $tm_meta_lang = TM_EPO_WPML()->get_default_lang();
                 }
                 $meta_query = TM_EPO_HELPER()->build_meta_query('AND', TM_EPO_WPML_LANG_META, TM_EPO_WPML()->get_lang(), '=', 'EXISTS');
                 $meta_query[] = array('key' => TM_EPO_WPML_PARENT_POSTID, 'value' => $value, 'compare' => '=');
                 $query = new WP_Query(array('post_type' => TM_EPO_GLOBAL_POST_TYPE, 'post_status' => array('publish'), 'numberposts' => -1, 'orderby' => 'date', 'order' => 'asc', 'meta_query' => $meta_query));
                 if (!empty($query->posts)) {
                     $tmglobalprices[] = get_post($query->post->ID);
                 } elseif (empty($query->posts)) {
                     $tmglobalprices[] = get_post($value);
                 }
             } else {
                 $tmglobalprices[] = get_post($value);
             }
         }
     }
     // Add current product to Global options array (has to be last to not conflict)
     $tmglobalprices[] = get_post($post_id);
     // End of DB init
     $product_epos = array();
     $global_epos = array();
     $epos_prices = array();
     if ($tmglobalprices) {
         $wpml_section_fields = array();
         foreach (TM_EPO_BUILDER()->_section_elements as $key => $value) {
             if (isset($value['id']) && empty($value['wpmldisable'])) {
                 $wpml_section_fields[$value['id']] = $value['id'];
             }
         }
         foreach ($tmglobalprices as $price) {
             if (!is_object($price)) {
                 continue;
             }
             $original_product_id = $price->ID;
             if (TM_EPO_WPML()->is_active()) {
                 $wpml_is_original_product = TM_EPO_WPML()->is_original_product($price->ID, $price->post_type);
                 if (!$wpml_is_original_product) {
                     $original_product_id = floatval(TM_EPO_WPML()->get_original_id($price->ID, $price->post_type));
                 }
             }
             $tmcp_id = absint($original_product_id);
             $tmcp_meta = get_post_meta($original_product_id, 'tm_meta', true);
             $current_builder = get_post_meta($price->ID, 'tm_meta_wpml', true);
             if (!$current_builder) {
                 $current_builder = array();
             } else {
                 if (!isset($current_builder['tmfbuilder'])) {
                     $current_builder['tmfbuilder'] = array();
                 }
                 $current_builder = $current_builder['tmfbuilder'];
             }
             $priority = isset($tmcp_meta['priority']) ? absint($tmcp_meta['priority']) : 1000;
             if (isset($tmcp_meta['tmfbuilder'])) {
                 $global_epos[$priority][$tmcp_id]['is_form'] = 1;
                 $global_epos[$priority][$tmcp_id]['is_taxonomy'] = 0;
                 $global_epos[$priority][$tmcp_id]['name'] = $price->post_title;
                 $global_epos[$priority][$tmcp_id]['description'] = $price->post_excerpt;
                 $global_epos[$priority][$tmcp_id]['sections'] = array();
                 $builder = $tmcp_meta['tmfbuilder'];
                 if (is_array($builder) && count($builder) > 0 && isset($builder['element_type']) && is_array($builder['element_type']) && count($builder['element_type']) > 0) {
                     // All the elements
                     $_elements = $builder['element_type'];
                     // All element sizes
                     $_div_size = $builder['div_size'];
                     // All sections (holds element count for each section)
                     $_sections = $builder['sections'];
                     // All section sizes
                     $_sections_size = $builder['sections_size'];
                     // All section styles
                     $_sections_style = $builder['sections_style'];
                     // All section placements
                     $_sections_placement = $builder['sections_placement'];
                     $_sections_slides = isset($builder['sections_slides']) ? $builder['sections_slides'] : '';
                     if (!is_array($_sections)) {
                         $_sections = array(count($_elements));
                     }
                     if (!is_array($_sections_size)) {
                         $_sections_size = array_fill(0, count($_sections), "w100");
                     }
                     if (!is_array($_sections_style)) {
                         $_sections_style = array_fill(0, count($_sections), "");
                     }
                     if (!is_array($_sections_placement)) {
                         $_sections_placement = array_fill(0, count($_sections), "before");
                     }
                     if (!is_array($_sections_slides)) {
                         $_sections_slides = array_fill(0, count($_sections), "");
                     }
                     $_helper_counter = 0;
                     $_counter = array();
                     for ($_s = 0; $_s < count($_sections); $_s++) {
                         $_sections_uniqid = $this->get_builder_element('sections_uniqid', $builder, $current_builder, $_s, TM_EPO_HELPER()->tm_temp_uniqid(count($_sections)), $wpml_section_fields);
                         $global_epos[$priority][$tmcp_id]['sections'][$_s] = array('total_elements' => $_sections[$_s], 'sections_size' => $_sections_size[$_s], 'sections_slides' => $_sections_slides[$_s], 'sections_style' => $_sections_style[$_s], 'sections_placement' => $_sections_placement[$_s], 'sections_uniqid' => $_sections_uniqid, 'sections_clogic' => $this->get_builder_element('sections_clogic', $builder, $current_builder, $_s, false, $wpml_section_fields), 'sections_logic' => $this->get_builder_element('sections_logic', $builder, $current_builder, $_s, "", $wpml_section_fields), 'sections_class' => $this->get_builder_element('sections_class', $builder, $current_builder, $_s, "", $wpml_section_fields), 'sections_type' => $this->get_builder_element('sections_type', $builder, $current_builder, $_s, "", $wpml_section_fields), 'label_size' => $this->get_builder_element('section_header_size', $builder, $current_builder, $_s, "", $wpml_section_fields), 'label' => $this->get_builder_element('section_header_title', $builder, $current_builder, $_s, "", $wpml_section_fields), 'label_color' => $this->get_builder_element('section_header_title_color', $builder, $current_builder, $_s, "", $wpml_section_fields), 'description' => $this->get_builder_element('section_header_subtitle', $builder, $current_builder, $_s, "", $wpml_section_fields), 'description_position' => $this->get_builder_element('section_header_subtitle_position', $builder, $current_builder, $_s, "", $wpml_section_fields), 'description_color' => $this->get_builder_element('section_header_subtitle_color', $builder, $current_builder, $_s, "", $wpml_section_fields), 'divider_type' => $this->get_builder_element('section_divider_type', $builder, $current_builder, $_s, "", $wpml_section_fields));
                         for ($k0 = $_helper_counter; $k0 < intval($_helper_counter + intval($_sections[$_s])); $k0++) {
                             $current_element = $_elements[$k0];
                             $wpml_element_fields = array();
                             if (isset(TM_EPO_BUILDER()->elements_array[$current_element])) {
                                 foreach (TM_EPO_BUILDER()->elements_array[$current_element] as $key => $value) {
                                     if (isset($value['id']) && empty($value['wpmldisable'])) {
                                         $wpml_element_fields[$value['id']] = $value['id'];
                                     }
                                 }
                             }
                             if (isset($current_element) && isset($this->tm_original_builder_elements[$current_element])) {
                                 if (!isset($_counter[$current_element])) {
                                     $_counter[$current_element] = 0;
                                 } else {
                                     $_counter[$current_element]++;
                                 }
                                 $current_counter = $_counter[$current_element];
                                 $_options = array();
                                 $_regular_price = array();
                                 $_regular_price_filtered = array();
                                 $_regular_price_type = array();
                                 $_new_type = $current_element;
                                 $_prefix = "";
                                 $_min_price0 = '';
                                 $_min_price = '';
                                 $_max_price = '';
                                 $_regular_currencies = array();
                                 $price_per_currencies = array();
                                 $_description = false;
                                 $_use_lightbox = '';
                                 if ($this->tm_original_builder_elements[$current_element]) {
                                     if ($this->tm_original_builder_elements[$current_element]["type"] == "single") {
                                         $_prefix = $current_element . "_";
                                         $_is_field_required = $this->get_builder_element($_prefix . 'required', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element);
                                         $_changes_product_image = $this->get_builder_element($_prefix . 'changes_product_image', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element);
                                         $_use_images = $this->get_builder_element($_prefix . 'use_images', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element);
                                         if (empty($builder[$current_element . '_price'][$current_counter])) {
                                             $builder[$current_element . '_price'][$current_counter] = 0;
                                         }
                                         $new_currency = false;
                                         $mt_prefix = TM_EPO_HELPER()->get_currency_price_prefix();
                                         $_price = $builder[$current_element . '_price'][$current_counter];
                                         if (isset($builder[$current_element . '_sale_price'][$current_counter]) && $builder[$current_element . '_sale_price'][$current_counter] !== '') {
                                             $_price = $builder[$current_element . '_sale_price'][$current_counter];
                                         }
                                         $_current_currency_price = isset($builder[$current_element . '_price' . $mt_prefix]) ? $builder[$current_element . '_price' . $mt_prefix][$current_counter] : '';
                                         $_current_currency_sale_price = isset($builder[$current_element . '_sale_price' . $mt_prefix]) ? $builder[$current_element . '_sale_price' . $mt_prefix][$current_counter] : '';
                                         if ($mt_prefix !== '' && $_current_currency_price && $_current_currency_price !== '') {
                                             $_price = $_current_currency_price;
                                             if ($_current_currency_sale_price && $_current_currency_sale_price !== '') {
                                                 $_price = $_current_currency_sale_price;
                                             }
                                             $_regular_currencies = array(get_woocommerce_currency());
                                             $new_currency = true;
                                         }
                                         foreach (TM_EPO_HELPER()->get_currencies() as $currency) {
                                             $mt_prefix = TM_EPO_HELPER()->get_currency_price_prefix($currency);
                                             $_current_currency_price = isset($builder[$current_element . '_price' . $mt_prefix][$current_counter]) ? $builder[$current_element . '_price' . $mt_prefix][$current_counter] : '';
                                             $_current_currency_sale_price = isset($builder[$current_element . '_sale_price' . $mt_prefix][$current_counter]) ? $builder[$current_element . '_sale_price' . $mt_prefix][$current_counter] : '';
                                             if ($_current_currency_sale_price && $_current_currency_sale_price !== '') {
                                                 $_current_currency_price = $_current_currency_sale_price;
                                             }
                                             $price_per_currencies[$currency] = array(array(wc_format_decimal($_current_currency_price, false, true)));
                                         }
                                         $_regular_price = array(array(wc_format_decimal($_price, false, true)));
                                         $_regular_price_type = isset($builder[$current_element . '_price_type'][$current_counter]) ? array(array($builder[$current_element . '_price_type'][$current_counter])) : array();
                                         $_for_filter_price_type = isset($builder[$current_element . '_price_type'][$current_counter]) ? $builder[$current_element . '_price_type'][$current_counter] : "";
                                         if (!$new_currency) {
                                             $_price = apply_filters('woocommerce_tm_epo_price2', $_price, $_for_filter_price_type);
                                         }
                                         if ($_price !== '' && isset($builder[$current_element . '_price_type'][$current_counter]) && $builder[$current_element . '_price_type'][$current_counter] == '') {
                                             $_min_price = $_max_price = wc_format_decimal($_price, false, true);
                                             if ($_is_field_required) {
                                                 $_min_price0 = $_min_price;
                                             } else {
                                                 $_min_price0 = 0;
                                             }
                                         } else {
                                             $_min_price = $_max_price = false;
                                             $_min_price0 = 0;
                                         }
                                         $_regular_price_filtered = array(array(wc_format_decimal($_price, false, true)));
                                     } elseif ($this->tm_original_builder_elements[$current_element]["type"] == "multiple" || $this->tm_original_builder_elements[$current_element]["type"] == "multipleall" || $this->tm_original_builder_elements[$current_element]["type"] == "multiplesingle") {
                                         $_prefix = $current_element . "_";
                                         $_is_field_required = $this->get_builder_element($_prefix . 'required', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element);
                                         $_changes_product_image = $this->get_builder_element($_prefix . 'changes_product_image', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element);
                                         $_use_images = $this->get_builder_element($_prefix . 'use_images', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element);
                                         $_use_lightbox = $this->get_builder_element($_prefix . 'use_lightbox', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element);
                                         if (isset($builder['multiple_' . $current_element . '_options_price'][$current_counter])) {
                                             if (empty($builder['multiple_' . $current_element . '_options_price'][$current_counter])) {
                                                 $builder['multiple_' . $current_element . '_options_price'][$current_counter] = 0;
                                             }
                                             $_prices = $builder['multiple_' . $current_element . '_options_price'][$current_counter];
                                             $_sale_prices = $_prices;
                                             if (isset($builder['multiple_' . $current_element . '_options_sale_price'][$current_counter])) {
                                                 $_sale_prices = $builder['multiple_' . $current_element . '_options_sale_price'][$current_counter];
                                             }
                                             $_prices = TM_EPO_HELPER()->merge_price_array($_prices, $_sale_prices);
                                             $mt_prefix = TM_EPO_HELPER()->get_currency_price_prefix();
                                             $_current_currency_prices = isset($builder['multiple_' . $current_element . '_options_price' . $mt_prefix][$current_counter]) ? $builder['multiple_' . $current_element . '_options_price' . $mt_prefix][$current_counter] : '';
                                             $_current_currency_sale_prices = isset($builder['multiple_' . $current_element . '_options_sale_price' . $mt_prefix][$current_counter]) ? $builder['multiple_' . $current_element . '_options_sale_price' . $mt_prefix][$current_counter] : '';
                                             $_values = $this->get_builder_element('multiple_' . $current_element . '_options_value', $builder, $current_builder, $current_counter, "", true, $current_element);
                                             $_titles = $this->get_builder_element('multiple_' . $current_element . '_options_title', $builder, $current_builder, $current_counter, "", true, $current_element);
                                             $_images = $this->get_builder_element('multiple_' . $current_element . '_options_image', $builder, $current_builder, $current_counter, array(), true, $current_element, 'tm_image_url');
                                             $_imagesp = $this->get_builder_element('multiple_' . $current_element . '_options_imagep', $builder, $current_builder, $current_counter, array(), true, $current_element, 'tm_image_url');
                                             foreach (TM_EPO_HELPER()->get_currencies() as $currency) {
                                                 $mt_prefix = TM_EPO_HELPER()->get_currency_price_prefix($currency);
                                                 $_current_currency_price = isset($builder['multiple_' . $current_element . '_options_price' . $mt_prefix][$current_counter]) ? $builder['multiple_' . $current_element . '_options_price' . $mt_prefix][$current_counter] : '';
                                                 $_current_currency_sale_price = isset($builder['multiple_' . $current_element . '_options_sale_price' . $mt_prefix][$current_counter]) ? $builder['multiple_' . $current_element . '_options_sale_price' . $mt_prefix][$current_counter] : '';
                                                 $_current_currency_price = TM_EPO_HELPER()->merge_price_array($_current_currency_price, $_current_currency_sale_price);
                                                 $price_per_currencies[$currency] = $_current_currency_price;
                                                 foreach ($_prices as $_n => $_price) {
                                                     $to_price = '';
                                                     if (is_array($_current_currency_price) && isset($_current_currency_price[$_n])) {
                                                         $to_price = $_current_currency_price[$_n];
                                                     }
                                                     $price_per_currencies[$currency][esc_attr($_values[$_n]) . "_" . $_n] = array(wc_format_decimal($to_price, false, true));
                                                 }
                                             }
                                             if ($_changes_product_image == "images" && $_use_images == "") {
                                                 $_imagesp = $_images;
                                                 $_images = array();
                                                 $_changes_product_image = "custom";
                                             }
                                             if ($_use_images == "") {
                                                 $_use_lightbox = "";
                                             }
                                             $_url = $this->get_builder_element('multiple_' . $current_element . '_options_url', $builder, $current_builder, $current_counter, array(), true, $current_element);
                                             $_description = $this->get_builder_element('multiple_' . $current_element . '_options_description', $builder, $current_builder, $current_counter, array(), true, $current_element);
                                             $_prices_type = $this->get_builder_element('multiple_' . $current_element . '_options_price_type', $builder, $current_builder, $current_counter, array(), true, $current_element);
                                             $_values_c = $_values;
                                             $mt_prefix = TM_EPO_HELPER()->get_currency_price_prefix();
                                             foreach ($_prices as $_n => $_price) {
                                                 $new_currency = false;
                                                 if ($mt_prefix !== '' && $_current_currency_prices !== '' && is_array($_current_currency_prices) && isset($_current_currency_prices[$_n]) && $_current_currency_prices[$_n] != '') {
                                                     $new_currency = true;
                                                     $_price = $_current_currency_prices[$_n];
                                                     $_regular_currencies[esc_attr($_values[$_n]) . "_" . $_n] = array(get_woocommerce_currency());
                                                 }
                                                 $_f_price = wc_format_decimal($_price, false, true);
                                                 $_regular_price[esc_attr($_values[$_n]) . "_" . $_n] = array($_f_price);
                                                 $_for_filter_price_type = isset($_prices_type[$_n]) ? $_prices_type[$_n] : "";
                                                 if (!$new_currency) {
                                                     $_price = apply_filters('woocommerce_tm_epo_price2', $_price, $_for_filter_price_type);
                                                 }
                                                 $_regular_price_filtered[esc_attr($_values[$_n]) . "_" . $_n] = array(wc_format_decimal($_price, false, true));
                                                 $_regular_price_type[esc_attr($_values[$_n]) . "_" . $_n] = isset($_prices_type[$_n]) ? array($_prices_type[$_n]) : array('');
                                                 $_options[esc_attr($_values[$_n]) . "_" . $_n] = $_titles[$_n];
                                                 $_values_c[$_n] = $_values[$_n] . "_" . $_n;
                                                 if (isset($_prices_type[$_n]) && $_prices_type[$_n] == '') {
                                                     if ($_min_price !== false && $_price !== '') {
                                                         if ($_min_price === '') {
                                                             $_min_price = $_f_price;
                                                         } else {
                                                             if ($_min_price > $_f_price) {
                                                                 $_min_price = $_f_price;
                                                             }
                                                         }
                                                         if ($_min_price0 === '') {
                                                             if ($_is_field_required) {
                                                                 $_min_price0 = floatval($_min_price);
                                                             } else {
                                                                 $_min_price0 = 0;
                                                             }
                                                         } else {
                                                             if ($_is_field_required && $_min_price0 > floatval($_min_price)) {
                                                                 $_min_price0 = floatval($_min_price);
                                                             }
                                                         }
                                                         if ($_max_price === '') {
                                                             $_max_price = $_f_price;
                                                         } else {
                                                             if ($_max_price < $_f_price) {
                                                                 $_max_price = $_f_price;
                                                             }
                                                         }
                                                     } else {
                                                         if ($_price === '') {
                                                             $_min_price0 = 0;
                                                         }
                                                     }
                                                 } else {
                                                     $_min_price = $_max_price = false;
                                                     if ($_min_price0 === '') {
                                                         $_min_price0 = 0;
                                                     } else {
                                                         if ($_min_price0 > floatval($_min_price)) {
                                                             $_min_price0 = floatval($_min_price);
                                                         }
                                                     }
                                                 }
                                             }
                                         }
                                     }
                                 }
                                 $default_value = "";
                                 if (isset($builder['multiple_' . $current_element . '_options_default_value'][$current_counter])) {
                                     $default_value = $builder['multiple_' . $current_element . '_options_default_value'][$current_counter];
                                 } elseif (isset($builder[$_prefix . 'default_value']) && isset($builder[$_prefix . 'default_value'][$current_counter])) {
                                     $default_value = $builder[$_prefix . 'default_value'][$current_counter];
                                 }
                                 $selectbox_fee = false;
                                 $selectbox_cart_fee = false;
                                 switch ($current_element) {
                                     case "selectbox":
                                         $_new_type = "select";
                                         $selectbox_fee = isset($builder[$current_element . '_price_type'][$current_counter]) ? array(array($builder[$current_element . '_price_type'][$current_counter])) : false;
                                         $selectbox_cart_fee = isset($builder[$current_element . '_price_type'][$current_counter]) ? array(array($builder[$current_element . '_price_type'][$current_counter])) : false;
                                         break;
                                     case "radiobuttons":
                                         $_new_type = "radio";
                                         break;
                                     case "checkboxes":
                                         $_new_type = "checkbox";
                                         break;
                                 }
                                 $_rules = $_regular_price;
                                 $_rules_filtered = $_regular_price_filtered;
                                 foreach ($_regular_price as $key => $value) {
                                     foreach ($value as $k => $v) {
                                         $_regular_price[$key][$k] = wc_format_localized_price($v);
                                         $_regular_price_filtered[$key][$k] = wc_format_localized_price($v);
                                     }
                                 }
                                 $_rules_type = $_regular_price_type;
                                 foreach ($_regular_price_type as $key => $value) {
                                     foreach ($value as $k => $v) {
                                         $_regular_price_type[$key][$k] = $v;
                                     }
                                 }
                                 $epos_prices[] = array("min" => floatval($_min_price0), "max" => floatval($_max_price), "logic" => $this->get_builder_element($_prefix . 'logic', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element));
                                 if ($_min_price !== false) {
                                     $_min_price = wc_format_localized_price($_min_price);
                                 }
                                 if ($_max_price !== false) {
                                     $_max_price = wc_format_localized_price($_max_price);
                                 }
                                 if ($current_element != "header" && $current_element != "divider") {
                                     $global_epos[$priority][$tmcp_id]['sections'][$_s]['elements'][] = array_merge(TM_EPO_BUILDER()->get_custom_properties($builder, $_prefix, $_counter, $_elements, $k0), array('_' => TM_EPO_BUILDER()->get_default_properties($builder, $_prefix, $_counter, $_elements, $k0), 'internal_name' => $this->get_builder_element($_prefix . 'internal_name', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'builder' => isset($wpml_is_original_product) && empty($wpml_is_original_product) ? $current_builder : $builder, 'section' => $_sections_uniqid, 'type' => $_new_type, 'size' => $_div_size[$k0], 'required' => $this->get_builder_element($_prefix . 'required', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'use_images' => $_use_images, 'use_lightbox' => $_use_lightbox, 'use_url' => $this->get_builder_element($_prefix . 'use_url', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'items_per_row' => $this->get_builder_element($_prefix . 'items_per_row', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'label_size' => $this->get_builder_element($_prefix . 'header_size', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'label' => $this->get_builder_element($_prefix . 'header_title', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'label_position' => $this->get_builder_element($_prefix . 'header_title_position', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'label_color' => $this->get_builder_element($_prefix . 'header_title_color', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'description' => $this->get_builder_element($_prefix . 'header_subtitle', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'description_position' => $this->get_builder_element($_prefix . 'header_subtitle_position', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'description_color' => $this->get_builder_element($_prefix . 'header_subtitle_color', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'divider_type' => $this->get_builder_element($_prefix . 'divider_type', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'placeholder' => $this->get_builder_element($_prefix . 'placeholder', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'min_chars' => $this->get_builder_element($_prefix . 'min_chars', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'max_chars' => $this->get_builder_element($_prefix . 'max_chars', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'hide_amount' => $this->get_builder_element($_prefix . 'hide_amount', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'text_before_price' => $this->get_builder_element($_prefix . 'text_before_price', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'text_after_price' => $this->get_builder_element($_prefix . 'text_after_price', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'options' => $_options, 'min_price' => $_min_price, 'max_price' => $_max_price, 'rules' => $_rules, 'price_rules' => $_regular_price, 'rules_filtered' => $_rules_filtered, 'price_rules_filtered' => $_regular_price_filtered, 'price_rules_type' => $_regular_price_type, 'rules_type' => $_rules_type, 'currencies' => $_regular_currencies, 'price_per_currencies' => $price_per_currencies, 'images' => isset($_images) ? $_images : "", 'imagesp' => isset($_imagesp) ? $_imagesp : "", 'url' => isset($_url) ? $_url : "", 'cdescription' => $_description !== false ? $_description : "", 'limit' => $this->get_builder_element($_prefix . 'limit_choices', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'exactlimit' => $this->get_builder_element($_prefix . 'exactlimit_choices', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'minimumlimit' => $this->get_builder_element($_prefix . 'minimumlimit_choices', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'clear_options' => $this->get_builder_element($_prefix . 'clear_options', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'option_values' => isset($_values_c) ? $_values_c : array(), 'button_type' => $this->get_builder_element($_prefix . 'button_type', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'uniqid' => $this->get_builder_element($_prefix . 'uniqid', $builder, $current_builder, $current_counter, uniqid('', true), $wpml_element_fields, $current_element), 'clogic' => $this->get_builder_element($_prefix . 'clogic', $builder, $current_builder, $current_counter, false, $wpml_element_fields, $current_element), 'logic' => $this->get_builder_element($_prefix . 'logic', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'format' => $this->get_builder_element($_prefix . 'format', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'start_year' => $this->get_builder_element($_prefix . 'start_year', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'end_year' => $this->get_builder_element($_prefix . 'end_year', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'min_date' => $this->get_builder_element($_prefix . 'min_date', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'max_date' => $this->get_builder_element($_prefix . 'max_date', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'disabled_dates' => $this->get_builder_element($_prefix . 'disabled_dates', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'enabled_only_dates' => $this->get_builder_element($_prefix . 'enabled_only_dates', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'disabled_weekdays' => $this->get_builder_element($_prefix . 'disabled_weekdays', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'theme' => $this->get_builder_element($_prefix . 'theme', $builder, $current_builder, $current_counter, "epo", $wpml_element_fields, $current_element), 'theme_size' => $this->get_builder_element($_prefix . 'theme_size', $builder, $current_builder, $current_counter, "medium", $wpml_element_fields, $current_element), 'theme_position' => $this->get_builder_element($_prefix . 'theme_position', $builder, $current_builder, $current_counter, "normal", $wpml_element_fields, $current_element), 'tranlation_day' => $this->get_builder_element($_prefix . 'tranlation_day', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'tranlation_month' => $this->get_builder_element($_prefix . 'tranlation_month', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'tranlation_year' => $this->get_builder_element($_prefix . 'tranlation_year', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), "default_value" => $default_value, 'text_after_price' => $this->get_builder_element($_prefix . 'text_before_price', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'text_after_price' => $this->get_builder_element($_prefix . 'text_after_price', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'selectbox_fee' => $selectbox_fee, 'selectbox_cart_fee' => $selectbox_cart_fee, 'class' => $this->get_builder_element($_prefix . 'class', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'swatchmode' => $this->get_builder_element($_prefix . 'swatchmode', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'changes_product_image' => $_changes_product_image, 'min' => $this->get_builder_element($_prefix . 'min', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'max' => $this->get_builder_element($_prefix . 'max', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'step' => $this->get_builder_element($_prefix . 'step', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'pips' => $this->get_builder_element($_prefix . 'pips', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'show_picker_value' => $this->get_builder_element($_prefix . 'show_picker_value', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'quantity' => $this->get_builder_element($_prefix . 'quantity', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'quantity_min' => $this->get_builder_element($_prefix . 'quantity_min', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'quantity_max' => $this->get_builder_element($_prefix . 'quantity_max', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'quantity_step' => $this->get_builder_element($_prefix . 'quantity_step', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'quantity_default_value' => $this->get_builder_element($_prefix . 'quantity_default_value', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'validation1' => $this->get_builder_element($_prefix . 'validation1', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element)));
                                 } elseif ($current_element == "header") {
                                     $global_epos[$priority][$tmcp_id]['sections'][$_s]['elements'][] = array('internal_name' => $this->get_builder_element($_prefix . 'internal_name', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'section' => $_sections_uniqid, 'type' => $_new_type, 'size' => $_div_size[$k0], 'required' => "", 'use_images' => "", 'use_url' => "", 'items_per_row' => "", 'label_size' => $this->get_builder_element($_prefix . 'header_size', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'label' => $this->get_builder_element($_prefix . 'header_title', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'label_position' => $this->get_builder_element($_prefix . 'header_title_position', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'label_color' => $this->get_builder_element($_prefix . 'header_title_color', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'description' => $this->get_builder_element($_prefix . 'header_subtitle', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'description_color' => $this->get_builder_element($_prefix . 'header_subtitle_color', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'description_position' => $this->get_builder_element($_prefix . 'header_subtitle_position', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'divider_type' => "", 'placeholder' => "", 'max_chars' => "", 'hide_amount' => "", "options" => $_options, 'min_price' => $_min_price, 'max_price' => $_max_price, 'rules' => $_rules, 'price_rules' => $_regular_price, 'rules_filtered' => $_rules_filtered, 'price_rules_filtered' => $_regular_price_filtered, 'price_rules_type' => $_regular_price_type, 'rules_type' => $_rules_type, 'images' => "", 'limit' => "", 'exactlimit' => "", 'minimumlimit' => "", 'option_values' => array(), 'button_type' => '', 'class' => $this->get_builder_element('header_class', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'uniqid' => $this->get_builder_element('header_uniqid', $builder, $current_builder, $current_counter, uniqid('', true), $wpml_element_fields, $current_element), 'clogic' => $this->get_builder_element('header_clogic', $builder, $current_builder, $current_counter, false, $wpml_element_fields, $current_element), 'logic' => $this->get_builder_element('header_logic', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'format' => '', 'start_year' => '', 'end_year' => '', 'tranlation_day' => '', 'tranlation_month' => '', 'tranlation_year' => '', 'swatchmode' => "", 'changes_product_image' => "", 'min' => "", 'max' => "", 'step' => "", 'pips' => "");
                                 } elseif ($current_element == "divider") {
                                     $global_epos[$priority][$tmcp_id]['sections'][$_s]['elements'][] = array('internal_name' => $this->get_builder_element($_prefix . 'internal_name', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'section' => $_sections_uniqid, 'type' => $_new_type, 'size' => $_div_size[$k0], 'required' => "", 'use_images' => "", 'use_url' => "", 'items_per_row' => "", 'label_size' => "", 'label' => "", 'label_color' => "", 'label_position' => "", 'description' => "", 'description_color' => "", 'divider_type' => $this->get_builder_element($_prefix . 'divider_type', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'placeholder' => "", 'max_chars' => "", 'hide_amount' => "", "options" => $_options, 'min_price' => $_min_price, 'max_price' => $_max_price, 'rules' => $_rules, 'price_rules' => $_regular_price, 'rules_filtered' => $_rules_filtered, 'price_rules_filtered' => $_regular_price_filtered, 'price_rules_type' => $_regular_price_type, 'rules_type' => $_rules_type, 'images' => "", 'limit' => "", 'exactlimit' => "", 'minimumlimit' => "", 'option_values' => array(), 'button_type' => '', 'class' => $this->get_builder_element('divider_class', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'uniqid' => $this->get_builder_element('divider_uniqid', $builder, $current_builder, $current_counter, uniqid('', true), $wpml_element_fields, $current_element), 'clogic' => $this->get_builder_element('divider_clogic', $builder, $current_builder, $current_counter, false, $wpml_element_fields, $current_element), 'logic' => $this->get_builder_element('divider_logic', $builder, $current_builder, $current_counter, "", $wpml_element_fields, $current_element), 'format' => '', 'start_year' => '', 'end_year' => '', 'tranlation_day' => '', 'tranlation_month' => '', 'tranlation_year' => '', 'swatchmode' => "", 'changes_product_image' => "", 'min' => "", 'max' => "", 'step' => "", 'pips' => "");
                                 }
                             }
                         }
                         $_helper_counter = intval($_helper_counter + intval($_sections[$_s]));
                     }
                 }
             }
         }
     }
     ksort($global_epos);
     if ($tmlocalprices) {
         TM_EPO_WPML()->remove_sql_filter();
         $attributes = maybe_unserialize(get_post_meta(floatval(TM_EPO_WPML()->get_original_id($post_id)), '_product_attributes', true));
         $wpml_attributes = maybe_unserialize(get_post_meta($post_id, '_product_attributes', true));
         foreach ($tmlocalprices as $price) {
             $tmcp_id = absint($price->ID);
             $tmcp_required = get_post_meta($tmcp_id, 'tmcp_required', true);
             $tmcp_hide_price = get_post_meta($tmcp_id, 'tmcp_hide_price', true);
             $tmcp_limit = get_post_meta($tmcp_id, 'tmcp_limit', true);
             $product_epos[$tmcp_id]['is_form'] = 0;
             $product_epos[$tmcp_id]['required'] = empty($tmcp_required) ? 0 : 1;
             $product_epos[$tmcp_id]['hide_price'] = empty($tmcp_hide_price) ? 0 : 1;
             $product_epos[$tmcp_id]['limit'] = empty($tmcp_limit) ? "" : $tmcp_limit;
             $product_epos[$tmcp_id]['name'] = get_post_meta($tmcp_id, 'tmcp_attribute', true);
             $product_epos[$tmcp_id]['is_taxonomy'] = get_post_meta($tmcp_id, 'tmcp_attribute_is_taxonomy', true);
             $product_epos[$tmcp_id]['label'] = wc_attribute_label($product_epos[$tmcp_id]['name']);
             $product_epos[$tmcp_id]['type'] = get_post_meta($tmcp_id, 'tmcp_type', true);
             // Retrieve attributes
             $product_epos[$tmcp_id]['attributes'] = array();
             $product_epos[$tmcp_id]['attributes_wpml'] = array();
             if ($product_epos[$tmcp_id]['is_taxonomy']) {
                 if (!$attributes[$product_epos[$tmcp_id]['name']]['is_variation']) {
                     $all_terms = TM_EPO_WPML()->get_terms(null, $attributes[$product_epos[$tmcp_id]['name']]['name'], 'orderby=name&hide_empty=0');
                     if ($all_terms) {
                         foreach ($all_terms as $term) {
                             $has_term = has_term((int) $term->term_id, $attributes[$product_epos[$tmcp_id]['name']]['name'], floatval(TM_EPO_WPML()->get_original_id($post_id))) ? 1 : 0;
                             $wpml_term_id = TM_EPO_WPML()->is_active() ? icl_object_id($term->term_id, $attributes[$product_epos[$tmcp_id]['name']]['name'], false) : false;
                             if ($has_term) {
                                 $product_epos[$tmcp_id]['attributes'][esc_attr($term->slug)] = apply_filters('woocommerce_tm_epo_option_name', esc_html($term->name));
                                 if ($wpml_term_id) {
                                     $wpml_term = get_term($wpml_term_id, $attributes[$product_epos[$tmcp_id]['name']]['name']);
                                     $product_epos[$tmcp_id]['attributes_wpml'][esc_attr($term->slug)] = apply_filters('woocommerce_tm_epo_option_name', esc_html($wpml_term->name));
                                 } else {
                                     $product_epos[$tmcp_id]['attributes_wpml'][esc_attr($term->slug)] = $product_epos[$tmcp_id]['attributes'][esc_attr($term->slug)];
                                 }
                             }
                         }
                     }
                 }
             } else {
                 if (isset($attributes[$product_epos[$tmcp_id]['name']])) {
                     $options = array_map('trim', explode(WC_DELIMITER, $attributes[$product_epos[$tmcp_id]['name']]['value']));
                     $wpml_options = array_map('trim', explode(WC_DELIMITER, $wpml_attributes[$product_epos[$tmcp_id]['name']]['value']));
                     foreach ($options as $k => $option) {
                         $product_epos[$tmcp_id]['attributes'][esc_attr(sanitize_title($option))] = esc_html(apply_filters('woocommerce_tm_epo_option_name', $option));
                         $product_epos[$tmcp_id]['attributes_wpml'][esc_attr(sanitize_title($option))] = esc_html(apply_filters('woocommerce_tm_epo_option_name', isset($wpml_options[$k]) ? $wpml_options[$k] : $option));
                     }
                 }
             }
             // Retrieve price rules
             $_regular_price = get_post_meta($tmcp_id, '_regular_price', true);
             $_regular_price_type = get_post_meta($tmcp_id, '_regular_price_type', true);
             $product_epos[$tmcp_id]['rules'] = $_regular_price;
             $_regular_price_filtered = TM_EPO_HELPER()->array_map_deep($_regular_price, $_regular_price_type, array($this, 'tm_epo_price_filtered'));
             $product_epos[$tmcp_id]['rules_filtered'] = $_regular_price_filtered;
             $product_epos[$tmcp_id]['rules_type'] = $_regular_price_type;
             if (!is_array($_regular_price)) {
                 $_regular_price = array();
             }
             if (!is_array($_regular_price_type)) {
                 $_regular_price_type = array();
             }
             foreach ($_regular_price as $key => $value) {
                 foreach ($value as $k => $v) {
                     $_regular_price[$key][$k] = wc_format_localized_price($v);
                 }
             }
             foreach ($_regular_price_type as $key => $value) {
                 foreach ($value as $k => $v) {
                     $_regular_price_type[$key][$k] = $v;
                 }
             }
             $product_epos[$tmcp_id]['price_rules'] = $_regular_price;
             $product_epos[$tmcp_id]['price_rules_filtered'] = $_regular_price_filtered;
             $product_epos[$tmcp_id]['price_rules_type'] = $_regular_price_type;
         }
         TM_EPO_WPML()->restore_sql_filter();
     }
     $global_epos = $this->tm_fill_element_names($post_id, $global_epos, $product_epos, $form_prefix);
     $epos = array('global' => $global_epos, 'local' => $product_epos, 'price' => $epos_prices);
     $this->cpf[$post_id] = $epos;
     return $epos;
 }