$json = array();
if (isset($this->request->get['filter_name']) || isset($this->request->get['filter_model']) || isset($this->request->get['filter_category_id'])) {
$this->load->model('catalog/product');
$this->load->model('catalog/option');
if (isset($this->request->get['filter_name'])) {
$filter_name = $this->request->get['filter_name'];
} else {
$filter_name = '';
}
if (isset($this->request->get['filter_model'])) {
$filter_model = $this->request->get['filter_model'];
} else {
$filter_model = '';
}
if (isset($this->request->get['limit'])) {
$limit = $this->request->get['limit'];
} else {
$limit = 20;
}
$data = array(
'filter_name' => $filter_name,
'filter_model' => $filter_model,
'start' => 0,
'limit' => $limit
);
$results = $this->model_catalog_product->getProducts($data);
foreach ($results as $result) {
$option_data = array();
$product_options = $this->model_catalog_product->getProductOptions($result['product_id']);
foreach ($product_options as $product_option) {
$option_info = $this->model_catalog_option->getOption($product_option['option_id']);
if ($option_info) {
if ($option_info['type'] == 'select' || $option_info['type'] == 'radio' || $option_info['type'] == 'checkbox' || $option_info['type'] == 'image') {
$option_value_data = array();
foreach ($product_option['product_option_value'] as $product_option_value) {
$option_value_info = $this->model_catalog_option->getOptionValue($product_option_value['option_value_id']);
if ($option_value_info) {
$option_value_data[] = array(
'product_option_value_id' => $product_option_value['product_option_value_id'],
'option_value_id' => $product_option_value['option_value_id'],
'name' => $option_value_info['name'],
'price' => (float)$product_option_value['price'] ? $this->currency->format($product_option_value['price'], $this->config->get('config_currency')) : false,
'price_prefix' => $product_option_value['price_prefix']
);
}
}
$option_data[] = array(
'product_option_id' => $product_option['product_option_id'],
'option_id' => $product_option['option_id'],
'name' => $option_info['name'],
'type' => $option_info['type'],
'option_value' => $option_value_data,
'required' => $product_option['required']
);
} else {
$option_data[] = array(
'product_option_id' => $product_option['product_option_id'],
'option_id' => $product_option['option_id'],
'name' => $option_info['name'],
'type' => $option_info['type'],
'option_value' => $product_option['option_value'],
'required' => $product_option['required']
);
}
}
}
$json[] = array(
'product_id' => $result['product_id'],
'name' => strip_tags(html_entity_decode($result['name'], ENT_QUOTES, 'UTF-8')),
'model' => $result['model'],
'option' => $option_data,
'price' => $result['price']
);
}
}
$this->response->setOutput(json_encode($json));