load->language('service/service'); $this->load->model('service/service'); $this->load->model('tool/image'); if ($this->config->get('config_noindex_disallow_params')) { $params = explode ("\r\n", $this->config->get('config_noindex_disallow_params')); if(!empty($params)) { $disallow_params = $params; } } if (isset($this->request->get['sort'])) { $sort = $this->request->get['sort']; if (!in_array('sort', $disallow_params, true) && $this->config->get('config_noindex_status')) { $this->document->setRobots('noindex,follow'); } } else { $sort = 'p.date_added'; } if (isset($this->request->get['order'])) { $order = $this->request->get['order']; if (!in_array('order', $disallow_params, true) && $this->config->get('config_noindex_status')) { $this->document->setRobots('noindex,follow'); } } else { $order = 'DESC'; } if (isset($this->request->get['page'])) { $page = $this->request->get['page']; if (!in_array('page', $disallow_params, true) && $this->config->get('config_noindex_status')) { $this->document->setRobots('noindex,follow'); } } else { $page = 1; } if (isset($this->request->get['limit'])) { $limit = $this->request->get['limit']; if (!in_array('limit', $disallow_params, true) && $this->config->get('config_noindex_status')) { $this->document->setRobots('noindex,follow'); } } else { $limit = $this->config->get('configblog_article_limit'); } $data['heading_title'] = $this->language->get('heading_title'); $this->document->setTitle($this->language->get('heading_title')); $data['breadcrumbs'] = array(); $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_home'), 'href' => $this->url->link('common/home') ); $data['breadcrumbs'][] = array( 'text' => $this->language->get('heading_title'), 'href' => $this->url->link('service/service') ); $url = ''; if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['text_refine'] = $this->language->get('text_refine'); $data['text_views'] = $this->language->get('text_views'); $data['text_empty'] = $this->language->get('text_empty'); $data['text_display'] = $this->language->get('text_display'); $data['text_list'] = $this->language->get('text_list'); $data['text_grid'] = $this->language->get('text_grid'); $data['text_sort'] = $this->language->get('text_sort'); $data['text_limit'] = $this->language->get('text_limit'); $data['text_sort_by'] = $this->language->get('text_sort_by'); $data['text_sort_name'] = $this->language->get('text_sort_name'); $data['text_sort_date'] = $this->language->get('text_sort_date'); $data['text_sort_viewed'] = $this->language->get('text_sort_viewed'); $data['button_more'] = $this->language->get('button_more'); $data['button_continue'] = $this->language->get('button_continue'); $data['services'] = array(); $service_data = array( 'sort' => $sort, 'order' => $order, 'start' => ($page - 1) * $limit, 'limit' => $limit ); $service_total = $this->model_service_service->getTotalServices($service_data); $results = $this->model_service_service->getServices($service_data); foreach ($results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $this->config->get('configblog_image_article_width'), $this->config->get('configblog_image_article_height')); } else { $image = false; } $data['services'][] = array( 'service_id' => $result['service_id'], 'thumb' => $image, 'name' => $result['name'], 'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get('configblog_article_description_length')) . '..', 'date_added' => date($this->language->get('date_format_short'), strtotime($result['date_added'])), 'viewed' => $result['viewed'], 'href' => $this->url->link('service/service/info', '&service_id=' . $result['service_id']) ); } $url = ''; if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['sorts'] = array(); $data['sorts'][] = array( 'text' => $this->language->get('text_default'), 'value' => 'p.sort_order-ASC', 'href' => $this->url->link('service/service', '&sort=p.sort_order&order=ASC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_name_asc'), 'value' => 'pd.name-ASC', 'href' => $this->url->link('service/service', '&sort=pd.name&order=ASC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_name_desc'), 'value' => 'pd.name-DESC', 'href' => $this->url->link('service/service', '&sort=pd.name&order=DESC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_date_asc'), 'value' => 'p.date_added-ASC', 'href' => $this->url->link('service/service', '&sort=p.date_added&order=ASC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_date_desc'), 'value' => 'p.date_added-DESC', 'href' => $this->url->link('service/service', '&sort=p.date_added&order=DESC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_viewed_desc'), 'value' => 'p.viewed-DESC', 'href' => $this->url->link('service/service', '&sort=p.viewed&order=DESC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_viewed_asc'), 'value' => 'p.viewed-ASC', 'href' => $this->url->link('service/service', '&sort=p.viewed&order=ASC' . $url) ); $url = ''; if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } $data['limits'] = array(); $limits = array_unique(array($this->config->get('configblog_article_limit'), 25, 50, 75, 100)); sort($limits); foreach($limits as $value){ $data['limits'][] = array( 'text' => $value, 'value' => $value, 'href' => $this->url->link('service/service', $url . '&limit=' . $value) ); } $url = ''; if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $pagination = new Pagination(); $pagination->total = $service_total; $pagination->page = $page; $pagination->limit = $limit; $pagination->text = $this->language->get('text_pagination'); $pagination->url = $this->url->link('service/service', $url . '&page={page}'); $data['pagination'] = $pagination->render(); $data['service_total'] = $service_total; $data['continue'] = $this->url->link('common/home'); $data['sort'] = $sort; $data['order'] = $order; $data['limit'] = $limit; $data['column_left'] = $this->load->controller('common/column_left'); $data['column_right'] = $this->load->controller('common/column_right'); $data['content_top'] = $this->load->controller('common/content_top'); $data['content_bottom'] = $this->load->controller('common/content_bottom'); $data['footer'] = $this->load->controller('common/footer'); $data['header'] = $this->load->controller('common/header'); $this->response->setOutput($this->load->view('service/service_list', $data)); } public function info() { $this->load->language('service/service'); $data['breadcrumbs'] = array(); $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_home'), 'href' => $this->url->link('common/home'), 'separator' => false ); $data['breadcrumbs'][] = array( 'text' => $this->language->get('heading_title'), 'href' => $this->url->link('service/service') ); if (isset($this->request->get['service_id'])) { $service_id = (int)$this->request->get['service_id']; } else { $service_id = 0; } $this->load->model('service/service'); $service_info = $this->model_service_service->getService($service_id); if ($service_info) { $data['breadcrumbs'][] = array( 'text' => $service_info['name'], 'href' => $this->url->link('service/service/info', 'service_id=' . $this->request->get['service_id']) ); if ($service_info['meta_title']) { $this->document->setTitle($service_info['meta_title']); } else { $this->document->setTitle($service_info['name']); } if ($service_info['noindex'] <= 0 && $this->config->get('config_noindex_status')) { $this->document->setRobots('noindex,follow'); } $this->document->setDescription($service_info['meta_description']); $this->document->setKeywords($service_info['meta_keyword']); $this->document->addLink($this->url->link('service/service/info', 'service_id=' . $this->request->get['service_id']), 'canonical'); if ($service_info['meta_h1']) { $data['heading_title'] = $service_info['meta_h1']; } else { $data['heading_title'] = $service_info['name']; } $data['text_related'] = $this->language->get('text_related'); $data['text_related_product'] = $this->language->get('text_related_product'); $data['service_id'] = $this->request->get['service_id']; $data['description'] = html_entity_decode($service_info['description'], ENT_QUOTES, 'UTF-8'); $this->load->model('tool/image'); $data['services'] = array(); $results = $this->model_service_service->getServiceRelated($this->request->get['service_id']); foreach ($results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $this->config->get('configblog_image_related_width'), $this->config->get('configblog_image_related_height')); } else { $image = false; } $data['services'][] = array( 'service_id' => $result['service_id'], 'thumb' => $image, 'name' => $result['name'], 'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get('configblog_article_description_length')) . '..', 'date_added' => date($this->language->get('date_format_short'), strtotime($result['date_added'])), 'viewed' => $result['viewed'], 'href' => $this->url->link('service/service/info', 'service_id=' . $result['service_id']), ); } $this->load->model('tool/image'); $data['products'] = array(); $results = $this->model_service_service->getServiceRelatedProduct($this->request->get['service_id']); foreach ($results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $this->config->get('configblog_image_related_width'), $this->config->get('configblog_image_related_height')); } else { $image = false; } if ($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; } $data['text_tax'] = $this->language->get('text_tax'); $data['products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get('configblog_article_description_length')) . '..', 'price' => $price, 'special' => $special, 'tax' => $tax, 'minimum' => $result['minimum'] > 0 ? $result['minimum'] : 1, 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']), ); } $data['downloads'] = array(); $results = $this->model_service_service->getDownloads($this->request->get['service_id']); foreach ($results as $result) { if (file_exists(DIR_DOWNLOAD . $result['filename'])) { $size = filesize(DIR_DOWNLOAD . $result['filename']); $i = 0; $suffix = array( 'B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB' ); while (($size / 10024) > 1) { $size = $size / 10024; $i++; } $data['downloads'][] = array( 'date_added' => date($this->language->get('date_format_short'), strtotime($result['date_added'])), 'name' => $result['name'], 'size' => round(substr($size, 0, strpos($size, '.') + 4), 2) . $suffix[$i], 'href' => $this->url->link('service/service/download', '&service_id='. $this->request->get['service_id']. '&download_id=' . $result['download_id']) ); } } $this->model_service_service->updateViewed($this->request->get['service_id']); $data['column_left'] = $this->load->controller('common/column_left'); $data['column_right'] = $this->load->controller('common/column_right'); $data['content_top'] = $this->load->controller('common/content_top'); $data['content_bottom'] = $this->load->controller('common/content_bottom'); $data['footer'] = $this->load->controller('common/footer'); $data['header'] = $this->load->controller('common/header'); $this->response->setOutput($this->load->view('service/service', $data)); } else { $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_error'), 'href' => $this->url->link('service/service/info', 'service_id=' . $service_id) ); $this->document->setTitle($this->language->get('text_error')); $data['heading_title'] = $this->language->get('text_error'); $data['text_error'] = $this->language->get('text_error'); $data['button_continue'] = $this->language->get('button_continue'); $data['continue'] = $this->url->link('common/home'); $this->response->addHeader($this->request->server['SERVER_PROTOCOL'] . ' 404 Not Found'); $data['column_left'] = $this->load->controller('common/column_left'); $data['column_right'] = $this->load->controller('common/column_right'); $data['content_top'] = $this->load->controller('common/content_top'); $data['content_bottom'] = $this->load->controller('common/content_bottom'); $data['footer'] = $this->load->controller('common/footer'); $data['header'] = $this->load->controller('common/header'); $this->response->setOutput($this->load->view('error/not_found', $data)); } } public function download() { $this->load->model('service/service'); if (isset($this->request->get['download_id'])) { $download_id = $this->request->get['download_id']; } else { $download_id = 0; } if (isset($this->request->get['service_id'])) { $service_id = $this->request->get['service_id']; } else { $service_id = 0; } $download_info = $this->model_service_service->getDownload($service_id, $download_id); if ($download_info) { $file = DIR_DOWNLOAD . $download_info['filename']; $mask = basename($download_info['mask']); if (!headers_sent()) { if (file_exists($file)) { header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="' . ($mask ? $mask : basename($file)) . '"'); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); header('Content-Length: ' . filesize($file)); readfile($file, 'rb'); exit; } else { exit('Error: Could not find file ' . $file . '!'); } } else { exit('Error: Headers already sent out!'); } } else { $this->redirect(HTTP_SERVER . 'index.php?route=account/download'); } } }