<?php
// *	@copyright	OPENCART.PRO 2011 - 2017.
// *	@forum	http://forum.opencart.pro
// *	@source		See SOURCE.txt for source and other copyright.
// *	@license	GNU General Public License version 3; see LICENSE.txt

class ControllerCommonHeader extends Controller {
	function formatPhoneNumber($phone) {
	    // Удаляем все символы, кроме цифр
	    $phone_digits = preg_replace('/[^0-9]/', '', $phone);
	    // Если номер телефона начинается с "0", заменяем его на "+380"
	    if (substr($phone_digits, 0, 1) === '0') {
	        $phone_digits = '+380' . substr($phone_digits, 1);
	    }
	    return $phone_digits;
	}
	
	public function index() {
		$m = microtime(true);
	
	    $is_dev = $data['is_dev'] = IS_DEV;
        $data['request_get'] = false;
	    if($is_dev) {
        }



        //Прелоад первого фото для баннера
        $this->load->model('design/banner');

		$results = $this->model_design_banner->getBanner(10);

		$data['banners'] = array();

		$data['banner_preload_mobile']  = '';
		$data['banner_preload_desktop'] = '';
		$data['banner_preload_srcset']  = '';
		$data['banner_preload_sizes']   = '(max-width: 768px) 668px, 1540px';

		foreach ($results as $result) {
		    if (is_file(DIR_IMAGE . $result['image'])) {
		        $data['banners'][] = array(
		            'title'          => $result['title'],
		            'link'           => $result['link'],
		            'image_mobile'   => $this->model_tool_image->resize($result['image'], 668, 146),
		            'image_desktop'  => $this->model_tool_image->resize($result['image'], 1540, 337),
		            'width_mobile'   => 668,
		            'height_mobile'  => 146,
		            'width_desktop'  => 1540,
		            'height_desktop' => 337
		        );
		    }
		}

		if (!empty($data['banners'][0])) {
		    $data['banner_preload_mobile']  = $data['banners'][0]['image_mobile'];
		    $data['banner_preload_desktop'] = $data['banners'][0]['image_desktop'];
		    $data['banner_preload_srcset']  = $data['banner_preload_mobile'] . ' 668w, ' . $data['banner_preload_desktop'] . ' 1540w';
		}
		//Прелоад первого фото для баннера
					



        $data['request_get'] = [$this->request->get,$is_dev];
		//New
		$this->load->model('catalog/information');

		$data['informations'] = array();

		foreach ($this->model_catalog_information->getInformations() as $result) {
			if ($result['top']) {
				$data['informations'][] = array(
					'title' => $result['title'],
					'href'  => $this->url->link('information/information', 'information_id=' . $result['information_id']),
					'blank' => false
				);
			}
		}

		$data['informations'][] = array('title' => $this->language->get('text_shops'), 'href' => 'https://afrodita.erotikon.com.ua/', 'blank' => true);

		$data['super_search'] = $this->load->controller('common/supersearch');
		$data['super_cart']   = $this->load->controller('common/supercart');


		$this->load->language('common/header');

		$data['text_info']       = $this->language->get('text_info');
		$data['text_contact']    = $this->language->get('text_contact');
		$data['text_callback']   = $this->language->get('text_callback');
		$data['text_work_time']  = $this->language->get('text_work_time');
		$data['text_category']   = $this->language->get('text_category');
		$data['text_work']       = $this->language->get('text_work');
		$data['text_menu_2']     = $this->language->get('text_menu_2');

		$data['text_hpayment']     = $this->language->get('text_hpayment');


		$data['phone_1_clear'] = $this->formatPhoneNumber($this->config->get('config_telephone'));
		$data['phone_2_clear'] = $this->formatPhoneNumber($this->config->get('config_telephone_2'));
		$data['phone_3_clear'] = $this->formatPhoneNumber($this->config->get('config_telephone_3'));
		$data['phone_1'] = $this->config->get('config_telephone');
		$data['phone_2'] = $this->config->get('config_telephone_2');
		$data['phone_3'] = $this->config->get('config_telephone_3');
 		
		//Категории ПК
		$this->load->model('catalog/category');
		$categories_pc = $this->model_catalog_category->getCategories(0);
		
		$data['categories_pc'] = $this->cache->get('controller.common.header.getcategories_pc.' . (int)$this->config->get('config_language_id'));

		if (!$data['categories_pc']) {
			$data['categories_pc'] = array();

			foreach ($categories_pc as $category) {
				if ($category['top']) {
					// Level 2
					$children_data = array();
					$children = $this->model_catalog_category->getCategories($category['category_id']);
					foreach ($children as $child) {
						$filter_data = array(
							'filter_category_id'  => $child['category_id'],
							'filter_sub_category' => true
						);

						$children_lvl_2 = $this->model_catalog_category->getCategories($child['category_id']);

							$children_data_lvl_2 = array();

							foreach ($children_lvl_2 as $child2) {

								$children_data_lvl_3 = array();
								$children_lvl_3 = $this->model_catalog_category->getCategories($child2['category_id']);

								foreach ($children_lvl_3 as $child3) {
									$children_data_lvl_3[] = array(
										'name'  => $child3['name'],
										'href'  => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id'] . '_' . $child2['category_id'] . '_' . $child3['category_id']),
									);
								}
								$children_data_lvl_2[] = array(
									'category_id' => $child2['category_id'],
									'name'  => $child2['name'],
									'href'  => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id'] . '_' . $child2['category_id']),
									'children' => $children_data_lvl_3,
								);
							}

							$children_data[] = array(
								'category_id' => $child['category_id'],
								'name'  => $child['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''),
								'href'  => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id']),
								'children' => $children_data_lvl_2,
							);
						}

					$icon = false;
					switch ($category['category_id']) {
						case 4303:
							$icon = '/image/catalog/new-d/icons/newest.svg';
							break;
						case 3935:
							$icon = '/image/catalog/new-d/icons/seks-igrushki.svg';
							break;
						case 3936:
							$icon = '/image/catalog/new-d/icons/lubrikanti.svg';
							break;
						case 3937:
							$icon = '/image/catalog/new-d/icons/vozbuditeli.svg';
							break;
						case 3938:
							$icon = '/image/catalog/new-d/icons/lingerie.svg';
							break;
						case 1602:
							$icon = '/image/catalog/new-d/icons/bdsm.svg';
							break;
						case 4279:
							$icon = '/image/catalog/new-d/icons/populjarnie-brendi.svg';
							break;
						case 4398:
							$icon = '/image/catalog/new-d/icons/jekskljuziv.svg';
							break;
					}

					// Level 1
					$data['categories_pc'][] = array(
						'category_id' => $category['category_id'],
						'name'     => $category['name'],
						'icon'     => $icon,
						'children' => $children_data,
						'href'     => $this->url->link('product/category', 'path=' . $category['category_id'])
					);
				}
			}
			
			$this->cache->set('controller.common.header.getcategories_pc.' . (int)$this->config->get('config_language_id'), $data['categories_pc']);
		}

		// $data['categories_mobile'] = $this->cache->get('controller.common.header.getcategories_mobile.' . (int)$this->config->get('config_language_id'));

		$key = 'categories_mobile_' . (int)$this->config->get('config_language_id') . '_' . (int)$this->config->get('config_store_id');

		if (defined('Lightning') && in_cache($key, 'category product')) {
		    $data['categories_mobile'] = cache();
		} else {
		    if (!$data['categories_mobile']) {
		        $data['categories_mobile'] = array();

		        function mobileSort($a, $b) {
		            return $a['column'] - $b['column'];
		        }

		        usort($categories_pc, 'mobileSort');

		        foreach ($categories_pc as $category) {
		            if ($category['column'] > 99) {
		                $children_data = array();

		                $children = $this->model_catalog_category->getCategories($category['category_id']);

		                foreach ($children as $child) {
		                    $filter_data = array(
		                        'filter_category_id'  => $child['category_id'],
		                        'filter_sub_category' => true
		                    );

		                    $children_lvl_2 = $this->model_catalog_category->getCategories($child['category_id']);
		                    $children_data_lvl_2 = array();

		                    foreach ($children_lvl_2 as $child2) {
		                        $children_data_lvl_3 = array();
		                        $children_lvl_3 = $this->model_catalog_category->getCategories($child2['category_id']);

		                        foreach ($children_lvl_3 as $child3) {
		                            $children_data_lvl_3[] = array(
		                                'name'  => $child3['name'],
		                                'href'  => $this->url->link(
		                                    'product/category',
		                                    'path=' . $category['category_id'] . '_' . $child['category_id'] . '_' . $child2['category_id'] . '_' . $child3['category_id']
		                                ),
		                            );
		                        }

		                        $children_data_lvl_2[] = array(
		                            'category_id' => $child2['category_id'],
		                            'name'        => $child2['name'],
		                            'href'        => $this->url->link(
		                                'product/category',
		                                'path=' . $category['category_id'] . '_' . $child['category_id'] . '_' . $child2['category_id']
		                            ),
		                            'children'    => $children_data_lvl_3,
		                        );
		                    }

		                    $children_data[] = array(
		                        'category_id' => $child['category_id'],
		                        'name'        => $child['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''),
		                        'href'        => $this->url->link(
		                            'product/category',
		                            'path=' . $category['category_id'] . '_' . $child['category_id']
		                        ),
		                        'children'    => $children_data_lvl_2,
		                    );
		                }

		                $data['categories_mobile'][] = array(
		                    'category_id' => $category['category_id'],
		                    'name'        => $category['name'],
		                    'children'    => $children_data,
		                    'href'        => $this->url->link('product/category', 'path=' . $category['category_id'])
		                );
		            }
		        }
		    }

		    // $this->cache->set('controller.common.header.getcategories_mobile.' . (int)$this->config->get('config_language_id'), $data['categories_mobile']);

		    if (defined('Lightning')) {
		        cache($data['categories_mobile']);
		    }
		}

		

		$arrayCategories = [4303, 4300, 4398];

		foreach($arrayCategories as $category) {
			$category_dop_info = $this->model_catalog_category->getCategory($category);

			if ($category_dop_info) {
				$data['categories_dop_list'][] = array(
					'name'     => $category_dop_info['name'],
					'href'     => $this->url->link('product/category', 'path=' . $category_dop_info['category_id'])
				);
			}
		}

		//Все что ниже это нужно просмотреть и удалить
       
		// Analytics
		$this->load->model('extension/extension');

		$data['analytics'] = array();

		$analytics = $this->model_extension_extension->getExtensions('analytics');

		foreach ($analytics as $analytic) {
			if ($this->config->get($analytic['code'] . '_status')) {
				$data['analytics'][] = $this->load->controller('extension/analytics/' . $analytic['code'], $this->config->get($analytic['code'] . '_status'));
			}
		}

		if ($this->request->server['HTTPS']) {
			$server = $this->config->get('config_ssl');
		} else {
			$server = $this->config->get('config_url');
		}

		if (is_file(DIR_IMAGE . $this->config->get('config_icon'))) {
			$this->document->addLink($server . 'image/' . $this->config->get('config_icon'), 'icon');
		}

		$data['title'] = $this->document->getTitle();

		$data['base'] = $server;
		$data['description'] = $this->document->getDescription();
		$data['keywords'] = $this->document->getKeywords();
		
		$data['octOpenGraphs'] = $this->document->getOCTOpenGraph();
		if(!$data['octOpenGraphs']) {
            $data['ogimage'] = $this->document->getOgimage();
            $data['ogurl'] = $this->document->getOgurl();
        }
		
		$data['links'] = $this->document->getLinks();
		$data['robots'] = $this->document->getRobots();
		$data['styles'] = $this->document->getStyles();
		$data['scripts'] = $this->document->getScripts();
		$data['lang'] = $this->language->get('code');
		$data['direction'] = $this->language->get('direction');

		$data['name'] = $this->config->get('config_name');

		if (is_file(DIR_IMAGE . $this->config->get('config_logo'))) {
			$data['logo'] = $server . 'image/' . $this->config->get('config_logo');
		} else {
			$data['logo'] = '';
		}

		$data['text_home'] = $this->language->get('text_home');

		// Wishlist
		if ($this->customer->isLogged()) {
			$this->load->model('account/wishlist');

			$data['text_wishlist'] = sprintf($this->language->get('text_wishlist'), $this->model_account_wishlist->getTotalWishlist());
		} else {
			$data['text_wishlist'] = sprintf($this->language->get('text_wishlist'), (isset($this->session->data['wishlist']) ? count($this->session->data['wishlist']) : 0));
		}

		$data['text_shopping_cart'] = $this->language->get('text_shopping_cart');
		$data['text_logged'] = sprintf($this->language->get('text_logged'), $this->url->link('account/account', '', true), $this->customer->getFirstName(), $this->url->link('account/logout', '', true));

		$data['text_account'] = $this->language->get('text_account');
		$data['text_register'] = $this->language->get('text_register');
		$data['text_login'] = $this->language->get('text_login');
		$data['text_order'] = $this->language->get('text_order');
		$data['text_transaction'] = $this->language->get('text_transaction');
		$data['text_download'] = $this->language->get('text_download');
		$data['text_logout'] = $this->language->get('text_logout');
		$data['text_checkout'] = $this->language->get('text_checkout');
		$data['text_category'] = $this->language->get('text_category');
		$data['text_all'] = $this->language->get('text_all');

		$data['home'] = $this->url->link('common/home');
		$data['wishlist'] = $this->url->link('account/wishlist', '', true);
		$data['logged'] = $this->customer->isLogged();
		$data['account'] = $this->url->link('account/account', '', true);
		$data['register'] = $this->url->link('account/register', '', true);
		$data['login'] = $this->url->link('account/login', '', true);
		$data['order'] = $this->url->link('account/order', '', true);

		$data['transaction'] = $this->url->link('account/transaction', '', true);
		$data['download'] = $this->url->link('account/download', '', true);
		$data['logout'] = $this->url->link('account/logout', '', true);

		$data['shopping_cart'] = $this->url->link('checkout/cart');
		$data['checkout'] = $this->url->link('checkout/checkout', '', true);
		$data['contact'] = $this->url->link('information/contact');

		$data['telephone'] = $this->config->get('config_telephone');


		$data['language'] = $this->load->controller('common/language');
		$data['currency'] = $this->load->controller('common/currency');
		$data['search']   = $this->load->controller('common/search');
		$data['cart']     = $this->load->controller('common/cart');

		// For page specific css
		if (isset($this->request->get['route'])) {
			if (isset($this->request->get['product_id'])) {
				$class = '-' . $this->request->get['product_id'];
			} elseif (isset($this->request->get['path'])) {
				$class = '-' . $this->request->get['path'];
			} elseif (isset($this->request->get['manufacturer_id'])) {
				$class = '-' . $this->request->get['manufacturer_id'];
			} elseif (isset($this->request->get['information_id'])) {
				$class = '-' . $this->request->get['information_id'];
			} else {
				$class = '';
			}

			$data['class'] = str_replace('/', '-', $this->request->get['route']) . $class;
		} else {
			$data['class'] = 'common-home';
		}


		return $this->load->view('common/header', $data);
	}

}