HEX
Server: Apache/2.4.6 (CentOS) mpm-itk/2.4.7-04 mod_fcgid/2.3.9 PHP/5.4.16
System: Linux dvm.vladweb.ru 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64
User: region-gk.ru (1016)
PHP: 7.3.33
Disabled: NONE
Upload Files
File: //home/bk/__backup/view/WishlistView.php
<?php

require_once('View.php');

class WishlistView extends View {
    
    public function __construct() {
        parent::__construct();
    }

    /*Отображение списка избранного*/
    public function fetch() {
        $limit = 500;
        $id = $this->request->get('id', 'integer');
        
        if(!empty($_COOKIE['wished_products'])) {
            $products_ids = explode(',', $_COOKIE['wished_products']);
            $products_ids = array_reverse($products_ids);
        } else {
            $products_ids = array();
        }
        
        if($this->request->get('action', 'string') == 'delete') {
            $key = array_search($id, $products_ids);
            if ($key !== false) {
                unset($products_ids[$key]);
            }
        } elseif($id > 0) {
            array_push($products_ids, $id);
            $products_ids = array_unique($products_ids);
        }
        
        $products_ids = array_slice($products_ids, 0, $limit);
        $products_ids = array_reverse($products_ids);
        
        if(!count($products_ids)) {
            unset($_COOKIE['wished_products']);
            setcookie('wished_products', '', time()-3600, '/');
        } else {
            setcookie('wished_products', implode(',', $products_ids), time()+30*24*3600, '/');
        }
        
        $products = array();
        
        if (count($products_ids)) {
            foreach ($this->products->get_products(array('id'=>$products_ids, 'visible'=>1)) as $p) {
                $products[$p->id] = $p;
            }
            if (!empty($products)) {
                foreach ($this->products->get_images(array('product_id' => $products_ids)) as $image) {
                    if (isset($products[$image->product_id])) {
                        $products[$image->product_id]->images[] = $image;
                    }
                }

                foreach ($this->variants->get_variants(array('product_id' => $products_ids)) as $variant) {
                    if (isset($products[$variant->product_id])) {
                        $products[$variant->product_id]->variants[] = $variant;
                    }
                }

                foreach ($products_ids as $id) {
                    if (isset($products[$id])) {
                        if (isset($products[$id]->images[0])) {
                            $products[$id]->image = $products[$id]->images[0];
                        }
                        if (isset($products[$id]->variants[0])) {
                            $products[$id]->variant = $products[$id]->variants[0];
                        }
                    }
                }
            }
        }
        
        // Содержимое списка избранного
        $this->design->assign('wished_products', $products);
        
        // Выводим шаблон
        return $this->design->fetch('wishlist.tpl');
    }
    
}