function build_xref(&$final_array_node, &$product) { global $map_array, $config_cat_ids, $config_ids, $swatches; static $tmp = array(); $product_config_cats = (array) $product->product_config_cats_in_seq; if (isset($product_config_cats["product_config_cat"][count((array) $tmp)])) { $rtmp =& $product_config_cats["product_config_cat"][count((array) $tmp)]; $cat_id = (int) $rtmp["id"]; if (!in_array($cat_id, @(array) $config_cat_ids[(int) $product["product_id"]])) { $config_cat_ids[(int) $product["product_id"]][] = $cat_id; } foreach ($rtmp->product_configs->product_config as $product_config) { $config_id = (int) $product_config["id"]; if (!in_array($config_id, @(array) $config_ids[(int) $product["product_id"]][$cat_id])) { $config_ids[(int) $product["product_id"]][$cat_id][] = $config_id; } $swatch_array = array(); if (strlen((string) $product_config->swatch)) { $swatch_array["image"] = (string) $product_config->swatch; $swatch_array["caption"] = (string) $product_config->swatch_label; } if (count($swatch_array)) { $swatches[(int) $product["product_id"]][$cat_id][$config_id] = $swatch_array; } $tmp[$cat_id] = $config_id; build_xref($final_array_node[$config_id], $product); array_pop($tmp); } return; } $tmp2 = $tmp; ksort($tmp2, SORT_NUMERIC); if (isset($map_array[serialize($tmp2)])) { $final_array_node = $map_array[serialize($tmp2)]; } }
/* print_r($config_cat_ids); print_r($config_ids); print_r($map_array); print_r($config_array); exit; */ //build ensemble product map_array foreach ($cross_sell_products->cross_sell_products_group as $cross_sell_products_group) { foreach ($cross_sell_products_group->products->product as $cross_sell_product) { $map_array = array(); foreach ($cross_sell_product->exact_products->exact_product as $cross_sell_exact_product) { map_array_build($map_array, (int) $cross_sell_product["product_id"], $cross_sell_exact_product, $cross_sell_exact_product->product_config); } $final_array = array(); build_xref($final_array, $cross_sell_product); $max_orderable_qty[(int) $cross_sell_product["product_id"]] = (int) $cross_sell_product->max_orderable_qty; $min_product_price[(int) $cross_sell_product["product_id"]] = (string) $cross_sell_product->discounted_retail_min_price; $swatch_array = array(); if (strlen((string) $cross_sell_product->thumbnail_image->url)) { $swatch_array["image"] = (string) $cross_sell_product->thumbnail_image->url; $swatch_array["caption"] = (string) (strlen((string) $cross_sell_product->thumbnail_image->caption) ? $cross_sell_product->thumbnail_image->caption : $cross_sell_product->name); } $swatches[(int) $cross_sell_product["product_id"]][0] = $swatch_array; $config_array[(int) $cross_sell_product["product_id"]] = $final_array; } } } } //print "--retailers: ".(int)$has_retailers; ?>