Класс Comparison.php

 

Класс Comparison

Предназначен для работы модуля "список сравнения"

Функция get_comparison()

Код функции (спойлер)
 
    /*Выборка списка товаров в сравнении*/
    public function get_comparison() {
        $comparison = new stdClass();
        $comparison->products = array();
        $comparison->features = array();
        $comparison->ids = array();

        if(!empty($_SESSION['comparison'])) {
            $session_items = $_SESSION['comparison'];
            $products = array();
            foreach($session_items as $v) {
                $products[intval($v)]=$this->products->get_product(intval($v));
            }
            if(!empty($products)) {
                $products_ids = array_keys($products);
                $comparison->ids = $products_ids;
                foreach($products as $product) {
                    $product->variants = array();
                    $product->images = array();
                    $product->features = array();
                }

                $variants = $this->variants->get_variants(array('product_id'=>$products_ids));

                foreach($variants as $variant) {
                    $products[$variant->product_id]->variants[] = $variant;
                }

                $images = $this->products->get_images(array('product_id'=>$products_ids));
                foreach($images as $image) {
                    $products[$image->product_id]->images[] = $image;
                }

                $options = array();
                $features_ids = array();
                foreach($this->features->get_comparison_options($products_ids) as $o) {
                    $options[$o->feature_id][$o->product_id] = $o->value;
                    $features_ids[] = $o->feature_id;
                }
                $features = array();
                if (!empty($features_ids)) {
                    foreach ($this->features->get_features(array('id' => $features_ids)) as $f) {
                        $features[$f->id] = $f;
                        foreach ($products as $p) {
                            if(isset($options[$f->id][$p->id])){
                                $features[$f->id]->products[$p->id] = $options[$f->id][$p->id];
                            }
                            else{
                                $features[$f->id]->products[$p->id] = null;
                            }
                        }
                        $features[$f->id]->not_unique = (count(array_unique($features[$f->id]->products)) == 1) ? true : false;
                    }
                }
                if(!empty($features)) {
                    $comparison->features = $features;
                }

                foreach($products as $product) {
                    if(isset($product->variants[0])) {
                        $product->variant = $product->variants[0];
                    }
                    if(isset($product->images[0])) {
                        $product->image = $product->images[0];
                    }
                    foreach($features as $id=>$f) {
                        if(isset($options[$id][$product->id])){
                            $product->features[$id] = $options[$id][$product->id];
                        }
                        else{
                            $product->features[$id] = null;
                        }
                    }
                }
                $comparison->products = $products;
            }
        }
        return $comparison;
    }

Функция для выборки товаров в списке сравнения

Функция возвращает массив объектов с данными о товарах


Функция add_item()

Код функции (спойлер)
    /*Добавление товара в список сравнения*/
    public function add_item($product_id) {
        if(is_array($_SESSION['comparison']) && !in_array($product_id,$_SESSION['comparison'])) {
            $_SESSION['comparison'][] = $product_id;
            if($this->settings->comparison_count && $this->settings->comparison_count < count($_SESSION['comparison'])) {
                array_shift($_SESSION['comparison']);
            }
        } else {
            $_SESSION['comparison'][] = $product_id;
        }
    }

Функция добавление товара в список сравнения

Функция принимает один аргумент $product_id

Параметры которые содержит функция:

  • $product_id - id товара, который нужно добавить в список сравнения

Функция delete_item()

Код функции (спойлер)
     /*Удаление товара из списка сравнения*/
    public function delete_item($product_id) {
        foreach($_SESSION['comparison'] as $k=>$id) {
            if($id == $product_id) {
                unset($_SESSION['comparison'][$k]);
            }
        }
    }

Функция удаления товара из списка избранного

Функция принимает аргумент $product_id

Параметры которые содержит функция:

  • $product_id - id товара, который нужно удалить из списка сравнения

Функция empty_comparison()

Код функции (спойлер)
     /*Очистка списка сравнения*/
    public function empty_comparison() {
        unset($_SESSION['comparison']);
    }

Полная очистка списка сравнения