File "ocsearchcategory.php"
Full path: /home/cakedeco/retaildirectonline.co.uk/catalog/controller/extension/module/ocsearchcategory.php
File
size: 7.41 B (7.41 KB bytes)
MIME-type: text/x-php
Charset: utf-8
Download Open Edit Advanced Editor &nnbsp; Back
<?php
class ControllerExtensionModuleOcsearchcategory extends Controller {
public function index() {
$this->load->language('extension/module/ocsearchcategory');
$this->load->model('catalog/category');
$this->load->model('tool/image');
if (isset($this->request->get['search'])) {
$data['search'] = $this->request->get['search'];
} else {
$data['search'] = '';
}
if (isset($this->request->get['category_id'])) {
$category_id = $this->request->get['category_id'];
} else {
$category_id = 0;
}
// 3 Level Category Search
$data['categories'] = array();
$categories_1 = $this->model_catalog_category->getCategories(0);
foreach ($categories_1 as $category_1) {
$level_2_data = array();
$categories_2 = $this->model_catalog_category->getCategories($category_1['category_id']);
foreach ($categories_2 as $category_2) {
$level_3_data = array();
$categories_3 = $this->model_catalog_category->getCategories($category_2['category_id']);
foreach ($categories_3 as $category_3) {
$level_3_data[] = array(
'category_id' => $category_3['category_id'],
'name' => $category_3['name'],
);
}
$level_2_data[] = array(
'category_id' => $category_2['category_id'],
'name' => $category_2['name'],
'children' => $level_3_data
);
}
$data['categories'][] = array(
'category_id' => $category_1['category_id'],
'name' => $category_1['name'],
'children' => $level_2_data
);
}
$data['category_id'] = $category_id;
$data['search_action'] = $this->url->link('product/search', '', true);
$data['search_ajax_action'] = $this->url->link('extension/module/ocsearchcategory/ajaxSearch', '', true);
$data['ocsearchcategory_ajax_enabled'] = $this->config->get('module_ocsearchcategory_ajax_enabled');
$data['ocsearchcategory_loader_img'] = $this->config->get('config_url') . 'image/' . $this->config->get('module_ocsearchcategory_loader_img');
return $this->load->view('extension/module/ocsearchcategory/ocsearchcategory', $data);
}
public function ajaxSearch() {
$this->load->language('extension/module/ocsearchcategory');
$json = array();
if(($this->request->server['REQUEST_METHOD'] == 'POST')) {
$postData = $this->request->post;
$this->setAjaxSearchResult($postData);
if(!$json) {
$json['success'] = true;
}
$productCollection = $this->getAjaxSearchResult();
if(!$productCollection || count($productCollection) == 0) {
$data['products'] = array();
} else {
$data['products'] = $productCollection;
}
$data['product_img_enabled'] = (int) $this->config->get('module_ocsearchcategory_product_img');
$data['product_price_enabled'] = (int) $this->config->get('module_ocsearchcategory_product_price');
$json['result_html'] = $this->load->view('extension/module/ocsearchcategory/searchajaxresult', $data);
} else {
if(!$json) {
$json['success'] = false;
}
}
$this->response->addHeader('Content-Type: application/json');
$this->response->setOutput(json_encode($json));
}
private function setAjaxSearchResult($data) {
$text_search = $data['text_search'];
$cate_search = $data['cate_search'];
$this->load->model('catalog/category');
$this->load->model('catalog/product');
$this->load->model('tool/image');
$url = '';
if (isset($text_search)) {
$search = $text_search;
$url .= '&search=' . urlencode(html_entity_decode($text_search, ENT_QUOTES, 'UTF-8'));
} else {
$search = '';
}
if (isset($cate_search)) {
$category_id = $cate_search;
$url .= '&category_id=' . $cate_search;
} else {
$category_id = 0;
}
$data['products'] = array();
$filter_data = array(
'filter_name' => $search,
'filter_category_id' => $category_id
);
$results = $this->model_catalog_product->getProducts($filter_data);
foreach ($results as $result) {
if ($result['image']) {
$image = $this->model_tool_image->resize($result['image'], $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_height'));
} else {
$image = $this->model_tool_image->resize('placeholder.png', $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_height'));
}
if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
$price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']);
} else {
$price = false;
}
if ((float)$result['special']) {
$special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']);
} else {
$special = false;
}
if ($this->config->get('config_tax')) {
$tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price'], $this->session->data['currency']);
} else {
$tax = false;
}
if ($this->config->get('config_review_status')) {
$rating = (int)$result['rating'];
} else {
$rating = false;
}
$data['products'][] = array(
'product_id' => $result['product_id'],
'thumb' => $image,
'name' => $result['name'],
'description' => utf8_substr(trim(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8'))), 0, $this->config->get('theme_' . $this->config->get('config_theme') . '_product_description_length')) . '..',
'price' => $price,
'special' => $special,
'tax' => $tax,
'rating' => $rating,
'href' => $this->url->link('product/product', 'product_id=' . $result['product_id'] . $url)
);
}
$this->__set('ajax_search_result', $data['products']);
}
public function getAjaxSearchResult() {
return $this->__get('ajax_search_result');
}
}