<?php
class ControllerModuleBossCategoryfeatured extends Controller {
	protected function index($setting) {
		$this->language->load('module/boss_categoryfeatured'); 

      	$this->data['heading_title'] = $this->language->get('heading_title');
		
		$this->data['button_cart'] = $this->language->get('button_cart');
		
		$this->load->model('catalog/product'); 
		
		$this->load->model('tool/image');
		
		$this->load->model('catalog/review');
		
		$this->data['products'] = array();
		
		// category
		if (isset($this->request->get['path'])) {
			$path = '';
		
			$parts = explode('_', (string)$this->request->get['path']);
		
			$category_id = array_pop($parts);
		} else {
			$category_id = 0;
		}
		// end category
		
		$products = explode(',', $this->config->get('boss_categoryfeatured_product'));		
		shuffle($products);		
		
		$count = 0;
		foreach ($products as $product_id) {
			if($this->checkProductInCategory($product_id,$category_id) && $count < $setting['limit']) {
				$product_info = $this->model_catalog_product->getProduct($product_id);
				
				if ($product_info) {
					if ($product_info['image']) {
						$image = $this->model_tool_image->resize($product_info['image'], $setting['image_width'], $setting['image_height']);
					} else {
						$image = false;
					}

					if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
						$price = $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax')));
					} else {
						$price = false;
					}
							
					if ((float)$product_info['special']) {
						$special = $this->currency->format($this->tax->calculate($product_info['special'], $product_info['tax_class_id'], $this->config->get('config_tax')));
					} else {
						$special = false;
															}
					
					if ($this->config->get('config_review_status')) {
						$rating = $product_info['rating'];
					} else {
						$rating = false;
					}
						
					$this->data['products'][] = array(
						'product_id' => $product_info['product_id'],
						'thumb'   	 => $image,
						'name'    	 => $product_info['name'],
						'price'   	 => $price,
						'special' 	 => $special,
						'rating'     => $rating,
						'count_rating' => $this->model_catalog_review->getTotalReviewsByProductId($product_info['product_id']),	
						'reviews'    => sprintf($this->language->get('text_reviews'), (int)$product_info['reviews']),
						'href'    	 => $this->url->link('product/product', 'product_id=' . $product_info['product_id']),
					);
				}
				$count ++;
			}
		}
		
		$this->data['template'] = $this->config->get('config_template');
		
		if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/boss_categoryfeatured.tpl')) {
			$this->template = $this->config->get('config_template') . '/template/module/boss_categoryfeatured.tpl';
		} else {
			$this->template = 'default/template/module/boss_categoryfeatured.tpl';
		}

		$this->render();     
	}
	
	private function checkProductInCategory($product_id, $category_id)
	{
		$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$product_id . "' AND category_id = '" . (int)$category_id . "'");
		
		return $query->rows;
	}
}
?>