function fn_get_product_data_for_compare($product_ids, $action)
{
    $auth =& $_SESSION['auth'];
    $comparison_data = array('product_features' => array(0 => array()));
    $tmp = array();
    foreach ($product_ids as $product_id) {
        $inventory_product_ids = array();
        $product_data = fn_get_product_data($product_id, $auth, CART_LANGUAGE, '', false, true, false, false);
        fn_gather_additional_product_data($product_data, false, false, false, true, false);
        if (!empty($product_data['product_features'])) {
            foreach ($product_data['product_features'] as $k => $v) {
                if ($v['feature_type'] == 'G' && empty($v['subfeatures'])) {
                    continue;
                }
                $_features = $v['feature_type'] == 'G' ? $v['subfeatures'] : array($k => $v);
                $group_id = $v['feature_type'] == 'G' ? $k : 0;
                $comparison_data['feature_groups'][$k] = $v['description'];
                foreach ($_features as $_k => $_v) {
                    if (in_array($_k, $_SESSION['excluded_features'])) {
                        if (empty($comparison_data['hidden_features'][$_k])) {
                            $comparison_data['hidden_features'][$_k] = $_v['description'];
                        }
                        continue;
                    }
                    if (!empty($_v['full_description'])) {
                        $comparison_data['product_features_full_description'][$_k] = $_v['full_description'];
                    }
                    if (empty($comparison_data['product_features'][$group_id][$_k])) {
                        $comparison_data['product_features'][$group_id][$_k] = $_v['description'];
                    }
                }
            }
        }
        $inventory_product_ids = db_get_row("SELECT MIN(b.price ) AS min_price, MAX(b.price ) AS max_price FROM ?:products as a JOIN ?:product_options_inventory_prices as b ON a.product_id=b.product_id WHERE a.product_id = ?i GROUP BY a.product_id", $product_id);
        if ($inventory_product_ids && count($inventory_product_ids) > 0) {
            $product_data['price_range'] = $inventory_product_ids;
        }
        $comparison_data['products'][] = $product_data;
        unset($product_data);
    }
    if ($action != 'show_all' && !empty($comparison_data['product_features'])) {
        $value = '';
        foreach ($comparison_data['product_features'] as $group_id => $v) {
            foreach ($v as $feature_id => $_v) {
                unset($value);
                $c = $action == 'similar_only' ? true : false;
                foreach ($comparison_data['products'] as $product) {
                    $features = !empty($group_id) && isset($product['product_features'][$group_id]) ? $product['product_features'][$group_id]['subfeatures'] : $product['product_features'];
                    if (empty($features[$feature_id])) {
                        $c = !$c;
                        break;
                    }
                    if (!isset($value)) {
                        $value = fn_get_feature_selected_value($features[$feature_id]);
                        continue;
                    } elseif ($value != fn_get_feature_selected_value($features[$feature_id])) {
                        $c = !$c;
                        break;
                    }
                }
                if ($c == false) {
                    unset($comparison_data['product_features'][$group_id][$feature_id]);
                }
            }
        }
    }
    return $comparison_data;
}
Example #2
0
function fn_get_product_data_for_compare($product_ids, $action)
{
    $auth =& $_SESSION['auth'];
    $comparison_data = array('product_features' => array(0 => array()));
    $tmp = array();
    foreach ($product_ids as $product_id) {
        $product_data = fn_get_product_data($product_id, $auth, CART_LANGUAGE, '', false, true, false, false);
        fn_gather_additional_product_data($product_data, false, false, false, true, false);
        if (!empty($product_data['product_features'])) {
            foreach ($product_data['product_features'] as $k => $v) {
                if ($v['feature_type'] == 'G' && empty($v['subfeatures'])) {
                    continue;
                }
                $_features = $v['feature_type'] == 'G' ? $v['subfeatures'] : array($k => $v);
                $group_id = $v['feature_type'] == 'G' ? $k : 0;
                $comparison_data['feature_groups'][$k] = $v['description'];
                foreach ($_features as $_k => $_v) {
                    if (in_array($_k, $_SESSION['excluded_features'])) {
                        if (empty($comparison_data['hidden_features'][$_k])) {
                            $comparison_data['hidden_features'][$_k] = $_v['description'];
                        }
                        continue;
                    }
                    if (empty($comparison_data['product_features'][$group_id][$_k])) {
                        $comparison_data['product_features'][$group_id][$_k] = $_v['description'];
                    }
                }
            }
        }
        $comparison_data['products'][] = $product_data;
        unset($product_data);
    }
    if ($action != 'show_all' && !empty($comparison_data['product_features'])) {
        $value = '';
        foreach ($comparison_data['product_features'] as $group_id => $v) {
            foreach ($v as $feature_id => $_v) {
                unset($value);
                $c = $action == 'similar_only' ? true : false;
                foreach ($comparison_data['products'] as $product) {
                    $features = !empty($group_id) && isset($product['product_features'][$group_id]) ? $product['product_features'][$group_id]['subfeatures'] : $product['product_features'];
                    if (empty($features[$feature_id])) {
                        $c = !$c;
                        break;
                    }
                    if (!isset($value)) {
                        $value = fn_get_feature_selected_value($features[$feature_id]);
                        continue;
                    } elseif ($value != fn_get_feature_selected_value($features[$feature_id])) {
                        $c = !$c;
                        break;
                    }
                }
                if ($c == false) {
                    unset($comparison_data['product_features'][$group_id][$feature_id]);
                }
            }
        }
    }
    return $comparison_data;
}
Example #3
0
function fn_get_product_data_for_compare($product_ids, $action)
{
    $auth =& Tygh::$app['session']['auth'];
    $comparison_data = array('product_features' => array(0 => array()));
    $tmp = array();
    foreach ($product_ids as $product_id) {
        $product_data = fn_get_product_data($product_id, $auth, CART_LANGUAGE, '', false, true, false, false, false, false);
        list($product_data['product_features']) = fn_get_product_features(array('product_id' => $product_id, 'product_company_id' => !empty($product_data['company_id']) ? $product_data['company_id'] : 0, 'statuses' => array('A'), 'variants' => true, 'plain' => false, 'existent_only' => true, 'variants_selected_only' => true), 0);
        fn_gather_additional_product_data($product_data, false, false, false, true, false);
        if (!empty($product_data['product_features'])) {
            foreach ($product_data['product_features'] as $k => $v) {
                if ($v['display_on_product'] === 'N' && $v['display_on_catalog'] == 'N' && $v['display_on_header'] == 'N') {
                    continue;
                }
                if ($v['feature_type'] == ProductFeatures::GROUP && empty($v['subfeatures'])) {
                    continue;
                }
                $_features = $v['feature_type'] == ProductFeatures::GROUP ? $v['subfeatures'] : array($k => $v);
                $group_id = $v['feature_type'] == ProductFeatures::GROUP ? $k : 0;
                $comparison_data['feature_groups'][$k] = $v['description'];
                foreach ($_features as $_k => $_v) {
                    if (in_array($_k, Tygh::$app['session']['excluded_features'])) {
                        if (empty($comparison_data['hidden_features'][$_k])) {
                            $comparison_data['hidden_features'][$_k] = $_v['description'];
                        }
                        continue;
                    }
                    if (empty($comparison_data['product_features'][$group_id][$_k])) {
                        $comparison_data['product_features'][$group_id][$_k] = $_v['description'];
                    }
                }
            }
        }
        $comparison_data['products'][] = $product_data;
        unset($product_data);
    }
    if ($action != 'show_all' && !empty($comparison_data['product_features'])) {
        $value = '';
        foreach ($comparison_data['product_features'] as $group_id => $v) {
            foreach ($v as $feature_id => $_v) {
                unset($value);
                $c = $action == 'similar_only' ? true : false;
                foreach ($comparison_data['products'] as $product) {
                    $features = !empty($group_id) && isset($product['product_features'][$group_id]['subfeatures']) ? $product['product_features'][$group_id]['subfeatures'] : $product['product_features'];
                    if (empty($features[$feature_id])) {
                        $c = !$c;
                        break;
                    }
                    if (!isset($value)) {
                        $value = fn_get_feature_selected_value($features[$feature_id]);
                        continue;
                    } elseif ($value != fn_get_feature_selected_value($features[$feature_id])) {
                        $c = !$c;
                        break;
                    }
                }
                if ($c == false) {
                    unset($comparison_data['product_features'][$group_id][$feature_id]);
                }
            }
        }
    }
    return $comparison_data;
}