There is also a lot of repetition i propose change the method getList() from its original to the code below that cut a lot of comparations and some redundancy
Code: Select all
private function getList() {
$toSearch=array('filter_name',
'filter_model',
'filter_price',
'filter_quantity',
'filter_status',
'sort',
'order',
'page');
$params=array('sort'=>'pd.name','order'=>'ASC','page'=>1);//Default data
$url = '';
foreach($toSearch as $s){
if (isset($this->request->get[$s])) {
$params[$s] = $this->request->get[$s];
if($s!=='sort') $url.='&'.$s.'='.$params[$s];
}else if (empty($params[$s])){
$params[$s]=null;
}
}
$this->data['breadcrumbs'] = array();
$this->data['breadcrumbs'][] = array(
'text' => $this->language->get('text_home'),
'href' => $this->url->link('common/home', 'token=' . $this->session->data['token'], 'SSL'),
'separator' => false
);
$this->data['breadcrumbs'][] = array(
'text' => $this->language->get('heading_title'),
'href' => $this->url->link('catalog/product', 'token=' . $this->session->data['token'] . $url, 'SSL'),
'separator' => ' :: '
);
$this->data['insert'] = $this->url->link('catalog/product/insert', 'token=' . $this->session->data['token'] . $url, 'SSL');
$this->data['copy'] = $this->url->link('catalog/product/copy', 'token=' . $this->session->data['token'] . $url, 'SSL');
$this->data['delete'] = $this->url->link('catalog/product/delete', 'token=' . $this->session->data['token'] . $url, 'SSL');
$this->data['products'] = array();
$adminLimit= $this->config->get('config_admin_limit');
$data = array(
'filter_name' => $params['filter_name'],
'filter_model' => $params['filter_model'],
'filter_price' => $params['filter_price'],
'filter_quantity' => $params['filter_quantity'],
'filter_status' => $params['filter_status'],
'sort' => $params['sort'],
'order' => $params['order'],
'start' => ($params['page'] - 1) *$adminLimit,
'limit' => $adminLimit
);
$this->load->model('tool/image');
$product_total = $this->model_catalog_product->getTotalProducts($data);
$results = $this->model_catalog_product->getProducts($data);
foreach ($results as $result) {
$action = array();
$action[] = array(
'text' => $this->language->get('text_edit'),
'href' => $this->url->link('catalog/product/update', 'token=' . $this->session->data['token'] . '&product_id=' . $result['product_id'] . $url, 'SSL')
);
if ($result['image'] && file_exists(DIR_IMAGE . $result['image'])) {
$image = $this->model_tool_image->resize($result['image'], 40, 40);
} else {
$image = $this->model_tool_image->resize('no_image.jpg', 40, 40);
}
$product_specials = $this->model_catalog_product->getProductSpecials($result['product_id']);
if ($product_specials) {
$special = reset($product_specials);
if(($special['date_start'] != '0000-00-00' && $special['date_start'] > date('Y-m-d')) || ($special['date_end'] != '0000-00-00' && $special['date_end'] < date('Y-m-d'))) {
$special = FALSE;
}
} else {
$special = FALSE;
}
$this->data['products'][] = array(
'product_id' => $result['product_id'],
'name' => $result['name'],
'model' => $result['model'],
'price' => $result['price'],
'special' => $special['price'],
'image' => $image,
'quantity' => $result['quantity'],
'status' => ($result['status'] ? $this->language->get('text_enabled') : $this->language->get('text_disabled')),
'selected' => isset($this->request->post['selected']) && in_array($result['product_id'], $this->request->post['selected']),
'action' => $action
);
}
$this->data['heading_title'] = $this->language->get('heading_title');
$this->data['text_enabled'] = $this->language->get('text_enabled');
$this->data['text_disabled'] = $this->language->get('text_disabled');
$this->data['text_no_results'] = $this->language->get('text_no_results');
$this->data['text_image_manager'] = $this->language->get('text_image_manager');
$this->data['column_image'] = $this->language->get('column_image');
$this->data['column_name'] = $this->language->get('column_name');
$this->data['column_model'] = $this->language->get('column_model');
$this->data['column_price'] = $this->language->get('column_price');
$this->data['column_quantity'] = $this->language->get('column_quantity');
$this->data['column_status'] = $this->language->get('column_status');
$this->data['column_action'] = $this->language->get('column_action');
$this->data['button_copy'] = $this->language->get('button_copy');
$this->data['button_insert'] = $this->language->get('button_insert');
$this->data['button_delete'] = $this->language->get('button_delete');
$this->data['button_filter'] = $this->language->get('button_filter');
$this->data['token'] = $this->session->data['token'];
if (isset($this->error['warning'])) {
$this->data['error_warning'] = $this->error['warning'];
} else {
$this->data['error_warning'] = '';
}
if (isset($this->session->data['success'])) {
$this->data['success'] = $this->session->data['success'];
unset($this->session->data['success']);
} else {
$this->data['success'] = '';
}
if ($params['order'] == 'ASC') {
$url .= '&order=DESC';
} else {
$url .= '&order=ASC';
}
$this->data['sort_name'] = $this->url->link('catalog/product', 'token=' . $this->session->data['token'] . '&sort=pd.name' . $url, 'SSL');
$this->data['sort_model'] = $this->url->link('catalog/product', 'token=' . $this->session->data['token'] . '&sort=p.model' . $url, 'SSL');
$this->data['sort_price'] = $this->url->link('catalog/product', 'token=' . $this->session->data['token'] . '&sort=p.price' . $url, 'SSL');
$this->data['sort_quantity'] = $this->url->link('catalog/product', 'token=' . $this->session->data['token'] . '&sort=p.quantity' . $url, 'SSL');
$this->data['sort_status'] = $this->url->link('catalog/product', 'token=' . $this->session->data['token'] . '&sort=p.status' . $url, 'SSL');
$this->data['sort_order'] = $this->url->link('catalog/product', 'token=' . $this->session->data['token'] . '&sort=p.sort_order' . $url, 'SSL');
$pagination = new Pagination();
$pagination->total = $product_total;
$pagination->page = $params['page'];
$pagination->limit = $this->config->get('config_admin_limit');
$pagination->text = $this->language->get('text_pagination');
$pagination->url = $this->url->link('catalog/product', 'token=' . $this->session->data['token'] . $url . '&page={page}', 'SSL');
$this->data['pagination'] = $pagination->render();
$this->data['filter_name'] = $params['filter_name'];
$this->data['filter_model'] = $params['filter_model'];
$this->data['filter_price'] = $params['filter_price'];
$this->data['filter_quantity'] = $params['filter_quantity'];
$this->data['filter_status'] = $params['filter_status'];
$this->data['sort'] = $params['sort'];
$this->data['order'] = $params['order'];
$this->layout = 'common/layout';
$this->template = 'catalog/product_list.tpl';
$this->children = array(
'common/header',
'common/footer',
);
$this->response->setOutput($this->render());
}