diff options
Diffstat (limited to 'public/catalog/controller/extension/module')
26 files changed, 1440 insertions, 0 deletions
diff --git a/public/catalog/controller/extension/module/account.php b/public/catalog/controller/extension/module/account.php new file mode 100644 index 0000000..333b9a1 --- /dev/null +++ b/public/catalog/controller/extension/module/account.php @@ -0,0 +1,26 @@ +<?php +class ControllerExtensionModuleAccount extends Controller { + public function index() { + $this->load->language('extension/module/account'); + + $data['logged'] = $this->customer->isLogged(); + $data['register'] = $this->url->link('account/register', '', true); + $data['login'] = $this->url->link('account/login', '', true); + $data['logout'] = $this->url->link('account/logout', '', true); + $data['forgotten'] = $this->url->link('account/forgotten', '', true); + $data['account'] = $this->url->link('account/account', '', true); + $data['edit'] = $this->url->link('account/edit', '', true); + $data['password'] = $this->url->link('account/password', '', true); + $data['address'] = $this->url->link('account/address', '', true); + $data['wishlist'] = $this->url->link('account/wishlist'); + $data['order'] = $this->url->link('account/order', '', true); + $data['download'] = $this->url->link('account/download', '', true); + $data['reward'] = $this->url->link('account/reward', '', true); + $data['return'] = $this->url->link('account/return', '', true); + $data['transaction'] = $this->url->link('account/transaction', '', true); + $data['newsletter'] = $this->url->link('account/newsletter', '', true); + $data['recurring'] = $this->url->link('account/recurring', '', true); + + return $this->load->view('extension/module/account', $data); + } +}
\ No newline at end of file diff --git a/public/catalog/controller/extension/module/amazon_login.php b/public/catalog/controller/extension/module/amazon_login.php new file mode 100644 index 0000000..9b8ae65 --- /dev/null +++ b/public/catalog/controller/extension/module/amazon_login.php @@ -0,0 +1,172 @@ +<?php + +class ControllerExtensionModuleAmazonLogin extends Controller { + public function index() { + if ($this->config->get('payment_amazon_login_pay_status') && $this->config->get('module_amazon_login_status') && !$this->customer->isLogged() && !empty($this->request->server['HTTPS'])) { + + $this->load->model('extension/payment/amazon_login_pay'); + + // capital L in Amazon cookie name is required, do not alter for coding standards + if (isset($this->request->cookie['amazon_Login_state_cache'])) { + setcookie('amazon_Login_state_cache', null, -1, '/'); + } + + $amazon_payment_js = $this->model_extension_payment_amazon_login_pay->getWidgetJs(); + + $this->document->addScript($amazon_payment_js); + + $data['client_id'] = trim($this->config->get('payment_amazon_login_pay_client_id')); + $data['merchant_id'] = $this->config->get('payment_amazon_login_pay_merchant_id'); + $data['return_url'] = html_entity_decode($this->url->link('extension/module/amazon_login/login', '', true), ENT_COMPAT, "UTF-8"); + $data['button_id'] = 'AmazonLoginButton'; + + if ($this->config->get('payment_amazon_login_pay_test') == 'sandbox') { + $data['sandbox'] = isset($this->session->data['user_id']); // Require an active admin panel session to show debug messages + } + + if ($this->config->get('module_amazon_login_button_type')) { + $data['button_type'] = $this->config->get('module_amazon_login_button_type'); + } else { + $data['button_type'] = 'lwa'; + } + + if ($this->config->get('module_amazon_login_button_colour')) { + $data['button_colour'] = $this->config->get('module_amazon_login_button_colour'); + } else { + $data['button_colour'] = 'gold'; + } + + if ($this->config->get('module_amazon_login_button_size')) { + $data['button_size'] = $this->config->get('module_amazon_login_button_size'); + } else { + $data['button_size'] = 'medium'; + } + + if ($this->config->get('payment_amazon_login_pay_language')) { + $data['language'] = $this->config->get('payment_amazon_login_pay_language'); + } else { + $data['language'] = 'en-US'; + } + + return $this->load->view('extension/module/amazon_login', $data); + } + } + + public function login() { + $this->load->language('extension/payment/amazon_login_pay'); + $this->load->language('account/login'); + + $this->load->model('extension/module/amazon_login'); + + $from_amazon_pay = isset($this->request->get['from_amazon_pay']); + + unset($this->session->data['apalwa']); + + try { + if (isset($this->request->get['access_token'])) { + $access_token = $this->request->get['access_token']; + + $this->session->data['apalwa']['login']['access_token'] = $access_token; + + $this->model_extension_module_amazon_login->verifyAccessToken($access_token); + + $amazon_profile = $this->model_extension_module_amazon_login->fetchProfile($access_token); + } else { + $this->model_extension_module_amazon_login->debugLog("EXCEPTION", $this->language->get('error_login')); + + throw new \RuntimeException($this->language->get('error_login')); + } + + // No issues found, and the Amazon profile has been fetched + if ($from_amazon_pay) { + unset($this->session->data['guest']); + unset($this->session->data['account']); + + if ($this->config->get('payment_amazon_login_pay_checkout') == 'guest') { + $this->session->data['account'] = 'guest'; + + $this->session->data['guest']['customer_group_id'] = $this->config->get('config_customer_group_id'); + $this->session->data['guest']['firstname'] = (string)$amazon_profile->first_name; + $this->session->data['guest']['lastname'] = (string)$amazon_profile->last_name; + $this->session->data['guest']['email'] = (string)$amazon_profile->email; + $this->session->data['guest']['telephone'] = '0000000'; + + $this->session->data['apalwa']['pay']['profile'] = $this->session->data['guest']; + } else { + // The payment button must log in a customer + $this->session->data['account'] = 'register'; + + $profile = $this->model_extension_module_amazon_login->loginProfile($amazon_profile); + + $this->session->data['apalwa']['pay']['profile'] = $profile; + + // If a customer is already logged in, we must overwrite their data with amazon data + // Therefore, at the end of the day, we will have a + } + + $this->response->redirect($this->url->link('extension/payment/amazon_login_pay/address', '', true)); + } else { + $this->model_extension_module_amazon_login->loginProfile($amazon_profile); + + $this->response->redirect($this->url->link('account/account', '', true)); + } + } catch (\RuntimeException $e) { + $this->session->data['apalwa']['login']['error'] = $e->getMessage(); + + $this->response->redirect($this->url->link('extension/module/amazon_login/error', '', true)); + } + } + + public function error() { + $this->load->language('extension/payment/amazon_login_pay'); + + $data = array(); + + $continue = $this->url->link('common/home', '', true); + + if (isset($this->session->data['apalwa']['login']['error'])) { + $data['error'] = $this->session->data['apalwa']['login']['error']; + $data['continue'] = $continue; + $data['heading_title'] = $this->language->get('error_login'); + + $this->document->setTitle($this->language->get('error_login')); + + unset($this->session->data['apalwa']); + + $data['breadcrumbs'] = array(); + + $data['breadcrumbs'][] = array( + 'href' => $this->url->link('common/home', '', true), + 'text' => $this->language->get('text_home') + ); + + $data['breadcrumbs'][] = array( + 'href' => null, + 'current' => true, + 'text' => $this->language->get('error_login') + ); + + $data['content_main'] = $this->load->view('extension/module/amazon_login_error', $data); + $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('extension/payment/amazon_login_pay_generic', $data)); + } else { + $this->response->redirect($continue); + } + } + + public function logout() { + unset($this->session->data['apalwa']); + + // capital L in Amazon cookie name is required, do not alter for coding standards + if (isset($this->request->cookie['amazon_Login_state_cache'])) { + //@todo - rework this by triggering the JavaScript logout + setcookie('amazon_Login_state_cache', null, -1, '/'); + } + } +} diff --git a/public/catalog/controller/extension/module/amazon_pay.php b/public/catalog/controller/extension/module/amazon_pay.php new file mode 100644 index 0000000..97bc3c0 --- /dev/null +++ b/public/catalog/controller/extension/module/amazon_pay.php @@ -0,0 +1,52 @@ +<?php +class ControllerExtensionModuleAmazonPay extends Controller { + public function index() { + $this->load->model('extension/payment/amazon_login_pay'); + + if ($this->config->get('payment_amazon_login_pay_status') && $this->config->get('module_amazon_pay_status') && !empty($this->request->server['HTTPS']) && !($this->config->get('payment_amazon_login_pay_minimum_total') > 0 && $this->config->get('payment_amazon_login_pay_minimum_total') > $this->cart->getSubTotal()) && $this->model_extension_payment_amazon_login_pay->isTotalPositive()) { + + // capital L in Amazon cookie name is required, do not alter for coding standards + if (!$this->customer->isLogged() && isset($this->request->cookie['amazon_Login_state_cache'])) { + setcookie('amazon_Login_state_cache', null, -1, '/'); + } + + $amazon_payment_js = $this->model_extension_payment_amazon_login_pay->getWidgetJs(); + $this->document->addScript($amazon_payment_js); + + $data['client_id'] = $this->config->get('payment_amazon_login_pay_client_id'); + $data['merchant_id'] = $this->config->get('payment_amazon_login_pay_merchant_id'); + $data['return_url'] = html_entity_decode($this->url->link('extension/module/amazon_login/login', 'from_amazon_pay=1', true), ENT_COMPAT, "UTF-8"); + $data['button_id'] = 'AmazonPayButton'; + + if ($this->config->get('payment_amazon_login_pay_test') == 'sandbox') { + $data['sandbox'] = isset($this->session->data['user_id']); // Require an active admin panel session to show debug messages + } + + if ($this->config->get('module_amazon_pay_button_type')) { + $data['button_type'] = $this->config->get('module_amazon_pay_button_type'); + } else { + $data['button_type'] = 'PwA'; + } + + if ($this->config->get('module_amazon_pay_button_colour')) { + $data['button_colour'] = $this->config->get('module_amazon_pay_button_colour'); + } else { + $data['button_colour'] = 'Gold'; + } + + if ($this->config->get('module_amazon_pay_button_size')) { + $data['button_size'] = $this->config->get('module_amazon_pay_button_size'); + } else { + $data['button_size'] = 'medium'; + } + + if ($this->config->get('payment_amazon_login_pay_language')) { + $data['language'] = $this->config->get('payment_amazon_login_pay_language'); + } else { + $data['language'] = 'en-US'; + } + + return $this->load->view('extension/module/amazon_login', $data); + } + } +} diff --git a/public/catalog/controller/extension/module/banner.php b/public/catalog/controller/extension/module/banner.php new file mode 100644 index 0000000..0e90702 --- /dev/null +++ b/public/catalog/controller/extension/module/banner.php @@ -0,0 +1,31 @@ +<?php +class ControllerExtensionModuleBanner extends Controller { + public function index($setting) { + static $module = 0; + + $this->load->model('design/banner'); + $this->load->model('tool/image'); + + $this->document->addStyle('catalog/view/javascript/jquery/swiper/css/swiper.min.css'); + $this->document->addStyle('catalog/view/javascript/jquery/swiper/css/opencart.css'); + $this->document->addScript('catalog/view/javascript/jquery/swiper/js/swiper.jquery.js'); + + $data['banners'] = array(); + + $results = $this->model_design_banner->getBanner($setting['banner_id']); + + foreach ($results as $result) { + if (is_file(DIR_IMAGE . $result['image'])) { + $data['banners'][] = array( + 'title' => $result['title'], + 'link' => $result['link'], + 'image' => $this->model_tool_image->resize($result['image'], $setting['width'], $setting['height']) + ); + } + } + + $data['module'] = $module++; + + return $this->load->view('extension/module/banner', $data); + } +}
\ No newline at end of file diff --git a/public/catalog/controller/extension/module/bestseller.php b/public/catalog/controller/extension/module/bestseller.php new file mode 100644 index 0000000..6b0a239 --- /dev/null +++ b/public/catalog/controller/extension/module/bestseller.php @@ -0,0 +1,62 @@ +<?php +class ControllerExtensionModuleBestSeller extends Controller { + public function index($setting) { + $this->load->language('extension/module/bestseller'); + + $this->load->model('catalog/product'); + + $this->load->model('tool/image'); + + $data['products'] = array(); + + $results = $this->model_catalog_product->getBestSellerProducts($setting['limit']); + + if ($results) { + foreach ($results as $result) { + if ($result['image']) { + $image = $this->model_tool_image->resize($result['image'], $setting['width'], $setting['height']); + } else { + $image = $this->model_tool_image->resize('placeholder.png', $setting['width'], $setting['height']); + } + + 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; + } + + if ($this->config->get('config_review_status')) { + $rating = $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']) + ); + } + + return $this->load->view('extension/module/bestseller', $data); + } + } +} diff --git a/public/catalog/controller/extension/module/carousel.php b/public/catalog/controller/extension/module/carousel.php new file mode 100644 index 0000000..f273cd1 --- /dev/null +++ b/public/catalog/controller/extension/module/carousel.php @@ -0,0 +1,31 @@ +<?php +class ControllerExtensionModuleCarousel extends Controller { + public function index($setting) { + static $module = 0; + + $this->load->model('design/banner'); + $this->load->model('tool/image'); + + $this->document->addStyle('catalog/view/javascript/jquery/swiper/css/swiper.min.css'); + $this->document->addStyle('catalog/view/javascript/jquery/swiper/css/opencart.css'); + $this->document->addScript('catalog/view/javascript/jquery/swiper/js/swiper.jquery.js'); + + $data['banners'] = array(); + + $results = $this->model_design_banner->getBanner($setting['banner_id']); + + foreach ($results as $result) { + if (is_file(DIR_IMAGE . $result['image'])) { + $data['banners'][] = array( + 'title' => $result['title'], + 'link' => $result['link'], + 'image' => $this->model_tool_image->resize($result['image'], $setting['width'], $setting['height']) + ); + } + } + + $data['module'] = $module++; + + return $this->load->view('extension/module/carousel', $data); + } +}
\ No newline at end of file diff --git a/public/catalog/controller/extension/module/category.php b/public/catalog/controller/extension/module/category.php new file mode 100644 index 0000000..e29ed4b --- /dev/null +++ b/public/catalog/controller/extension/module/category.php @@ -0,0 +1,64 @@ +<?php +class ControllerExtensionModuleCategory extends Controller { + public function index() { + $this->load->language('extension/module/category'); + + if (isset($this->request->get['path'])) { + $parts = explode('_', (string)$this->request->get['path']); + } else { + $parts = array(); + } + + if (isset($parts[0])) { + $data['category_id'] = $parts[0]; + } else { + $data['category_id'] = 0; + } + + if (isset($parts[1])) { + $data['child_id'] = $parts[1]; + } else { + $data['child_id'] = 0; + } + + $this->load->model('catalog/category'); + + $this->load->model('catalog/product'); + + $data['categories'] = array(); + + $categories = $this->model_catalog_category->getCategories(0); + + foreach ($categories as $category) { + $children_data = array(); + + if ($category['category_id'] == $data['category_id']) { + $children = $this->model_catalog_category->getCategories($category['category_id']); + + foreach($children as $child) { + $filter_data = array('filter_category_id' => $child['category_id'], 'filter_sub_category' => true); + + $children_data[] = array( + 'category_id' => $child['category_id'], + 'name' => $child['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), + 'href' => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id']) + ); + } + } + + $filter_data = array( + 'filter_category_id' => $category['category_id'], + 'filter_sub_category' => true + ); + + $data['categories'][] = array( + 'category_id' => $category['category_id'], + 'name' => $category['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), + 'children' => $children_data, + 'href' => $this->url->link('product/category', 'path=' . $category['category_id']) + ); + } + + return $this->load->view('extension/module/category', $data); + } +}
\ No newline at end of file diff --git a/public/catalog/controller/extension/module/divido_calculator.php b/public/catalog/controller/extension/module/divido_calculator.php new file mode 100644 index 0000000..40a7b3e --- /dev/null +++ b/public/catalog/controller/extension/module/divido_calculator.php @@ -0,0 +1,53 @@ +<?php +class ControllerExtensionModuleDividoCalculator extends Controller { + public function index() { + $this->load->language('extension/module/divido_calculator'); + $this->load->model('extension/payment/divido'); + $this->load->model('catalog/product'); + + $product_selection = $this->config->get('payment_divido_productselection'); + $product_threshold = $this->config->get('payment_divido_price_threshold'); + + if (!isset($this->request->get['product_id']) || !$this->config->get('payment_divido_status') || !$this->config->get('module_divido_calculator_status')) { + return false; + } + + $product_info = $this->model_catalog_product->getProduct($this->request->get['product_id']); + + $price = 0; + if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { + $base_price = !empty($product_info['special']) ? $product_info['special'] : $product_info['price']; + $price = $this->tax->calculate($base_price, $product_info['tax_class_id'], $this->config->get('config_tax')); + } + + if ($product_selection == 'threshold' && $product_threshold > $price) { + return false; + } + + $api_key = $this->config->get('payment_divido_api_key'); + $key_parts = explode('.', $api_key); + $js_key = strtolower(array_shift($key_parts)); + + $this->model_extension_payment_divido->setMerchant($api_key); + $plans = $this->model_extension_payment_divido->getProductPlans($this->request->get['product_id']); + + if (!$plans) { + return false; + } + + $plans_ids = array_map(function ($plan) { + return $plan->id; + }, $plans); + $plans_ids = array_unique($plans_ids); + $plans_list = implode(',', $plans_ids); + + $data = array( + 'merchant_script' => "//cdn.divido.com/calculator/{$js_key}.js", + 'product_price' => $price, + 'plan_list' => $plans_list, + 'generic_credit_req_error' => 'Credit request could not be initiated', + ); + + return $this->load->view('extension/module/divido_calculator', $data); + } +} diff --git a/public/catalog/controller/extension/module/ebay_listing.php b/public/catalog/controller/extension/module/ebay_listing.php new file mode 100644 index 0000000..0e763e7 --- /dev/null +++ b/public/catalog/controller/extension/module/ebay_listing.php @@ -0,0 +1,42 @@ +<?php +class ControllerExtensionModuleEbayListing extends Controller { + public function index() { + if ($this->config->get('ebay_status') == 1) { + $this->load->language('extension/module/ebay'); + + $this->load->model('tool/image'); + $this->load->model('extension/openbay/ebay_product'); + + $data['heading_title'] = $this->language->get('heading_title'); + + $data['products'] = array(); + + $products = $this->cache->get('ebay_listing.' . md5(serialize($products))); + + if (!$products) { + $products = $this->model_extension_openbay_ebay_product->getDisplayProducts(); + + $this->cache->set('ebay_listing.' . md5(serialize($products)), $products); + } + + foreach($products['products'] as $product) { + if (isset($product['pictures'][0])) { + $image = $this->model_extension_openbay_ebay_product->resize($product['pictures'][0], $this->config->get('ebay_listing_width'), $this->config->get('ebay_listing_height')); + } else { + $image = $this->model_tool_image->resize('placeholder.png', $this->config->get('ebay_listing_width'), $this->config->get('ebay_listing_height')); + } + + $data['products'][] = array( + 'thumb' => $image, + 'name' => base64_decode($product['Title']), + 'price' => $this->currency->format($product['priceGross'], $this->session->data['currency']), + 'href' => (string)$product['link'] + ); + } + + $data['tracking_pixel'] = $products['tracking_pixel']; + + return $this->load->view('extension/module/ebay', $data); + } + } +}
\ No newline at end of file diff --git a/public/catalog/controller/extension/module/featured.php b/public/catalog/controller/extension/module/featured.php new file mode 100644 index 0000000..b3b14c5 --- /dev/null +++ b/public/catalog/controller/extension/module/featured.php @@ -0,0 +1,72 @@ +<?php +class ControllerExtensionModuleFeatured extends Controller { + public function index($setting) { + $this->load->language('extension/module/featured'); + + $this->load->model('catalog/product'); + + $this->load->model('tool/image'); + + $data['products'] = array(); + + if (!$setting['limit']) { + $setting['limit'] = 4; + } + + if (!empty($setting['product'])) { + $products = array_slice($setting['product'], 0, (int)$setting['limit']); + + foreach ($products as $product_id) { + $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['width'], $setting['height']); + } else { + $image = $this->model_tool_image->resize('placeholder.png', $setting['width'], $setting['height']); + } + + if ($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')), $this->session->data['currency']); + } 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')), $this->session->data['currency']); + } else { + $special = false; + } + + if ($this->config->get('config_tax')) { + $tax = $this->currency->format((float)$product_info['special'] ? $product_info['special'] : $product_info['price'], $this->session->data['currency']); + } else { + $tax = false; + } + + if ($this->config->get('config_review_status')) { + $rating = $product_info['rating']; + } else { + $rating = false; + } + + $data['products'][] = array( + 'product_id' => $product_info['product_id'], + 'thumb' => $image, + 'name' => $product_info['name'], + 'description' => utf8_substr(strip_tags(html_entity_decode($product_info['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=' . $product_info['product_id']) + ); + } + } + } + + if ($data['products']) { + return $this->load->view('extension/module/featured', $data); + } + } +}
\ No newline at end of file diff --git a/public/catalog/controller/extension/module/filter.php b/public/catalog/controller/extension/module/filter.php new file mode 100644 index 0000000..36bedce --- /dev/null +++ b/public/catalog/controller/extension/module/filter.php @@ -0,0 +1,74 @@ +<?php +class ControllerExtensionModuleFilter extends Controller { + public function index() { + if (isset($this->request->get['path'])) { + $parts = explode('_', (string)$this->request->get['path']); + } else { + $parts = array(); + } + + $category_id = end($parts); + + $this->load->model('catalog/category'); + + $category_info = $this->model_catalog_category->getCategory($category_id); + + if ($category_info) { + $this->load->language('extension/module/filter'); + + $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']; + } + + $data['action'] = str_replace('&', '&', $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url)); + + if (isset($this->request->get['filter'])) { + $data['filter_category'] = explode(',', $this->request->get['filter']); + } else { + $data['filter_category'] = array(); + } + + $this->load->model('catalog/product'); + + $data['filter_groups'] = array(); + + $filter_groups = $this->model_catalog_category->getCategoryFilters($category_id); + + if ($filter_groups) { + foreach ($filter_groups as $filter_group) { + $childen_data = array(); + + foreach ($filter_group['filter'] as $filter) { + $filter_data = array( + 'filter_category_id' => $category_id, + 'filter_filter' => $filter['filter_id'] + ); + + $childen_data[] = array( + 'filter_id' => $filter['filter_id'], + 'name' => $filter['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : '') + ); + } + + $data['filter_groups'][] = array( + 'filter_group_id' => $filter_group['filter_group_id'], + 'name' => $filter_group['name'], + 'filter' => $childen_data + ); + } + + return $this->load->view('extension/module/filter', $data); + } + } + } +}
\ No newline at end of file diff --git a/public/catalog/controller/extension/module/google_hangouts.php b/public/catalog/controller/extension/module/google_hangouts.php new file mode 100644 index 0000000..5d61d87 --- /dev/null +++ b/public/catalog/controller/extension/module/google_hangouts.php @@ -0,0 +1,14 @@ +<?php +class ControllerExtensionModuleGoogleHangouts extends Controller { + public function index() { + $this->load->language('extension/module/google_hangouts'); + + if ($this->request->server['HTTPS']) { + $data['code'] = str_replace('http', 'https', html_entity_decode($this->config->get('module_google_hangouts_code'))); + } else { + $data['code'] = html_entity_decode($this->config->get('module_google_hangouts_code')); + } + + return $this->load->view('extension/module/google_hangouts', $data); + } +}
\ No newline at end of file diff --git a/public/catalog/controller/extension/module/html.php b/public/catalog/controller/extension/module/html.php new file mode 100644 index 0000000..bf32060 --- /dev/null +++ b/public/catalog/controller/extension/module/html.php @@ -0,0 +1,11 @@ +<?php +class ControllerExtensionModuleHTML extends Controller { + public function index($setting) { + if (isset($setting['module_description'][$this->config->get('config_language_id')])) { + $data['heading_title'] = html_entity_decode($setting['module_description'][$this->config->get('config_language_id')]['title'], ENT_QUOTES, 'UTF-8'); + $data['html'] = html_entity_decode($setting['module_description'][$this->config->get('config_language_id')]['description'], ENT_QUOTES, 'UTF-8'); + + return $this->load->view('extension/module/html', $data); + } + } +}
\ No newline at end of file diff --git a/public/catalog/controller/extension/module/information.php b/public/catalog/controller/extension/module/information.php new file mode 100644 index 0000000..15badd3 --- /dev/null +++ b/public/catalog/controller/extension/module/information.php @@ -0,0 +1,22 @@ +<?php +class ControllerExtensionModuleInformation extends Controller { + public function index() { + $this->load->language('extension/module/information'); + + $this->load->model('catalog/information'); + + $data['informations'] = array(); + + foreach ($this->model_catalog_information->getInformations() as $result) { + $data['informations'][] = array( + 'title' => $result['title'], + 'href' => $this->url->link('information/information', 'information_id=' . $result['information_id']) + ); + } + + $data['contact'] = $this->url->link('information/contact'); + $data['sitemap'] = $this->url->link('information/sitemap'); + + return $this->load->view('extension/module/information', $data); + } +}
\ No newline at end of file diff --git a/public/catalog/controller/extension/module/klarna_checkout_module.php b/public/catalog/controller/extension/module/klarna_checkout_module.php new file mode 100644 index 0000000..079207f --- /dev/null +++ b/public/catalog/controller/extension/module/klarna_checkout_module.php @@ -0,0 +1,138 @@ +<?php +class ControllerExtensionModuleKlarnaCheckoutModule extends Controller { + public function index() { + $this->load->model('extension/payment/klarna_checkout'); + + // If Payment Method or Module is disabled + if (!$this->config->get('module_klarna_checkout_status') || !$this->config->get('klarna_checkout_status')) { + $this->model_extension_payment_klarna_checkout->log('Not shown due to Payment Method or Module being disabled'); + return false; + } + + // Validate cart has products and has stock. + if ((!$this->cart->hasProducts() && empty($this->session->data['vouchers'])) || (!$this->cart->hasStock() && !$this->config->get('config_stock_checkout'))) { + $this->model_extension_payment_klarna_checkout->log('Not shown due to empty cart'); + return false; + } + + // Validate minimum quantity requirements. + $products = $this->cart->getProducts(); + + foreach ($products as $product) { + $product_total = 0; + + foreach ($products as $product_2) { + if ($product_2['product_id'] == $product['product_id']) { + $product_total += $product_2['quantity']; + } + } + + if ($product['minimum'] > $product_total) { + $this->model_extension_payment_klarna_checkout->log('Not shown due to cart not meeting minimum quantity reqs.'); + return false; + } + } + + // Validate cart has recurring products + if ($this->cart->hasRecurringProducts()) { + $this->model_extension_payment_klarna_checkout->log('Not shown due to cart having recurring products.'); + return false; + } + + list($totals, $taxes, $total) = $this->model_extension_payment_klarna_checkout->getTotals(); + + if ($this->config->get('klarna_checkout_total') > 0 && $this->config->get('klarna_checkout_total') > $total) { + return false; + } + + if ($this->model_extension_payment_klarna_checkout->checkForPaymentTaxes($products)) { + $this->model_extension_payment_klarna_checkout->log('Payment Address based taxes used.'); + return false; + } + + $this->setShipping(); + + list($klarna_account, $connector) = $this->model_extension_payment_klarna_checkout->getConnector($this->config->get('klarna_checkout_account'), $this->session->data['currency']); + + if (!$klarna_account || !$connector) { + $this->model_extension_payment_klarna_checkout->log('Couldn\'t secure connection to Klarna API.'); + return false; + } + + $data['klarna_checkout'] = $this->url->link('extension/payment/klarna_checkout', '', true); + + return $this->load->view('extension/module/klarna_checkout_module', $data); + } + + private function setShipping() { + $this->load->model('account/address'); + $this->load->model('localisation/country'); + $this->load->model('localisation/zone'); + + if (isset($this->session->data['shipping_address']) && !empty($this->session->data['shipping_address'])) { + $this->session->data['shipping_address'] = $this->session->data['shipping_address']; + } elseif ($this->customer->isLogged() && $this->customer->getAddressId()) { + $this->session->data['shipping_address'] = $this->model_account_address->getAddress($this->customer->getAddressId()); + } else { + $country_info = $this->model_localisation_country->getCountry($this->config->get('config_country_id')); + + $zone_info = $this->model_localisation_zone->getZone($this->config->get('config_zone_id')); + + $this->session->data['shipping_address'] = array( + 'address_id' => null, + 'firstname' => null, + 'lastname' => null, + 'company' => null, + 'address_1' => null, + 'address_2' => null, + 'postcode' => null, + 'city' => null, + 'zone_id' => $zone_info['zone_id'], + 'zone' => $zone_info['name'], + 'zone_code' => $zone_info['code'], + 'country_id' => $country_info['country_id'], + 'country' => $country_info['name'], + 'iso_code_2' => $country_info['iso_code_2'], + 'iso_code_3' => $country_info['iso_code_3'], + 'address_format' => '', + 'custom_field' => null, + ); + } + + if (isset($this->session->data['shipping_address'])) { + // Shipping Methods + $method_data = array(); + + $this->load->model('setting/extension'); + + $results = $this->model_setting_extension->getExtensions('shipping'); + + foreach ($results as $result) { + if ($this->config->get('shipping_' . $result['code'] . '_status')) { + $this->load->model('extension/shipping/' . $result['code']); + + $quote = $this->{'model_extension_shipping_' . $result['code']}->getQuote($this->session->data['shipping_address']); + + if ($quote) { + $method_data[$result['code']] = array( + 'title' => $quote['title'], + 'quote' => $quote['quote'], + 'sort_order' => $quote['sort_order'], + 'error' => $quote['error'] + ); + } + } + } + + $sort_order = array(); + + foreach ($method_data as $key => $value) { + $sort_order[$key] = $value['sort_order']; + } + + array_multisort($sort_order, SORT_ASC, $method_data); + + $this->session->data['shipping_methods'] = $method_data; + } + } +} diff --git a/public/catalog/controller/extension/module/latest.php b/public/catalog/controller/extension/module/latest.php new file mode 100644 index 0000000..44285de --- /dev/null +++ b/public/catalog/controller/extension/module/latest.php @@ -0,0 +1,69 @@ +<?php +class ControllerExtensionModuleLatest extends Controller { + public function index($setting) { + $this->load->language('extension/module/latest'); + + $this->load->model('catalog/product'); + + $this->load->model('tool/image'); + + $data['products'] = array(); + + $filter_data = array( + 'sort' => 'p.date_added', + 'order' => 'DESC', + 'start' => 0, + 'limit' => $setting['limit'] + ); + + $results = $this->model_catalog_product->getProducts($filter_data); + + if ($results) { + foreach ($results as $result) { + if ($result['image']) { + $image = $this->model_tool_image->resize($result['image'], $setting['width'], $setting['height']); + } else { + $image = $this->model_tool_image->resize('placeholder.png', $setting['width'], $setting['height']); + } + + 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; + } + + if ($this->config->get('config_review_status')) { + $rating = $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']) + ); + } + + return $this->load->view('extension/module/latest', $data); + } + } +} diff --git a/public/catalog/controller/extension/module/laybuy_layout.php b/public/catalog/controller/extension/module/laybuy_layout.php new file mode 100644 index 0000000..a586167 --- /dev/null +++ b/public/catalog/controller/extension/module/laybuy_layout.php @@ -0,0 +1,38 @@ +<?php +class ControllerExtensionModuleLaybuyLayout extends Controller { + public function index() { + $this->load->model('extension/module/laybuy_layout'); + + $status = $this->config->get('module_laybuy_layout_status'); + + if ($status && $this->config->get('payment_laybuy_status')) { + if ($this->customer->isLogged()) { + if (isset($this->request->get['order_id'])) { + $order_id = $this->request->get['order_id']; + + if ($this->model_extension_module_laybuy_layout->isLayBuyOrder($order_id)) { + $this->load->language('extension/module/laybuy_layout'); + + $transaction_info = $this->model_extension_module_laybuy_layout->getTransactionByOrderId($order_id); + + $data['transaction'] = array( + 'laybuy_ref_no' => $transaction_info['laybuy_ref_no'], + 'paypal_profile_id' => $transaction_info['paypal_profile_id'], + 'status' => $this->model_extension_module_laybuy_layout->getStatusLabel($transaction_info['status']), + 'amount' => $this->currency->format($transaction_info['amount'], $transaction_info['currency']), + 'downpayment' => $transaction_info['downpayment'], + 'months' => $transaction_info['months'], + 'downpayment_amount' => $this->currency->format($transaction_info['downpayment_amount'], $transaction_info['currency']), + 'payment_amounts' => $this->currency->format($transaction_info['payment_amounts'], $transaction_info['currency']), + 'first_payment_due' => date($this->language->get('date_format_short'), strtotime($transaction_info['first_payment_due'])), + 'last_payment_due' => date($this->language->get('date_format_short'), strtotime($transaction_info['last_payment_due'])), + 'report' => json_decode($transaction_info['report'], true) + ); + + return $this->load->view('extension/module/laybuy_layout', $data); + } + } + } + } + } +}
\ No newline at end of file diff --git a/public/catalog/controller/extension/module/pilibaba_button.php b/public/catalog/controller/extension/module/pilibaba_button.php new file mode 100644 index 0000000..bd7271a --- /dev/null +++ b/public/catalog/controller/extension/module/pilibaba_button.php @@ -0,0 +1,16 @@ +<?php +class ControllerExtensionModulePilibabaButton extends Controller { + public function index() { + $status = true; + + if (!$this->cart->hasProducts() || (!$this->cart->hasStock() && !$this->config->get('config_stock_checkout'))) { + $status = false; + } + + if ($status) { + $data['payment_url'] = $this->url->link('extension/payment/pilibaba/express', '', true); + + return $this->load->view('extension/module/pilibaba_button', $data); + } + } +}
\ No newline at end of file diff --git a/public/catalog/controller/extension/module/pp_braintree_button.php b/public/catalog/controller/extension/module/pp_braintree_button.php new file mode 100644 index 0000000..32f38d8 --- /dev/null +++ b/public/catalog/controller/extension/module/pp_braintree_button.php @@ -0,0 +1,51 @@ +<?php +class ControllerExtensionModulePPBraintreeButton extends Controller { + private $gateway = null; + + public function index() { + if ($this->config->get('payment_pp_braintree_status') == 1) { + $this->initialise(); + + $status = true; + + if ((!$this->cart->hasProducts() && empty($this->session->data['vouchers'])) || (!$this->cart->hasStock() && !$this->config->get('config_stock_checkout')) || (!$this->customer->isLogged() && ($this->cart->hasRecurringProducts() || $this->cart->hasDownload()))) { + $status = false; + } + + if ($status) { + $this->load->model('checkout/order'); + $this->load->model('extension/payment/pp_braintree'); + + $create_token = array(); + + $data['client_token'] = $this->model_extension_payment_pp_braintree->generateToken($this->gateway, $create_token); + + $data['payment_pp_braintree_settlement_immediate'] = $this->config->get('payment_pp_braintree_settlement_immediate'); + $data['payment_pp_braintree_paypal_button_colour'] = $this->config->get('payment_pp_braintree_paypal_button_colour'); + $data['payment_pp_braintree_paypal_button_size'] = $this->config->get('payment_pp_braintree_paypal_button_size'); + $data['payment_pp_braintree_paypal_button_shape'] = $this->config->get('payment_pp_braintree_paypal_button_shape'); + + /* + * The auth total is just a guess as to what the end total will be since the user has not + * selected a shipping option yet. The user does not see this amount during checkout but the figure + * may be too low if buying a low value item and shipping is more than 50% of the item value. + */ + $data['auth_total'] = $this->cart->getTotal() * 1.5; + $data['currency_code'] = $this->session->data['currency']; + $data['action'] = $this->url->link('extension/payment/pp_braintree/expressConfirm', '', true); + + return $this->load->view('extension/module/pp_braintree_button', $data); + } + } + } + + private function initialise() { + $this->load->model('extension/payment/pp_braintree'); + + if ($this->config->get('payment_pp_braintree_access_token') != '') { + $this->gateway = $this->model_extension_payment_pp_braintree->setGateway($this->config->get('payment_pp_braintree_access_token')); + } else { + $this->model_extension_payment_pp_braintree->setCredentials(); + } + } +} diff --git a/public/catalog/controller/extension/module/pp_button.php b/public/catalog/controller/extension/module/pp_button.php new file mode 100644 index 0000000..a217245 --- /dev/null +++ b/public/catalog/controller/extension/module/pp_button.php @@ -0,0 +1,34 @@ +<?php +class ControllerExtensionModulePPButton extends Controller { + public function index() { + if ($this->config->get('payment_pp_express_status') == 1) { + $status = true; + + if ((!$this->cart->hasProducts() && empty($this->session->data['vouchers'])) || (!$this->cart->hasStock() && !$this->config->get('config_stock_checkout')) || (!$this->customer->isLogged() && ($this->cart->hasRecurringProducts() || $this->cart->hasDownload()))) { + $status = false; + } + + if ($status) { + $this->load->model('extension/payment/pp_express'); + + if (preg_match('/Mobile|Android|BlackBerry|iPhone|Windows Phone/', $this->request->server['HTTP_USER_AGENT'])) { + $data['mobile'] = true; + } else { + $data['mobile'] = false; + } + + if ($this->config->get('payment_pp_express_test') == 1) { + $data['paypal_username'] = $this->config->get('payment_pp_express_sandbox_username'); + $data['paypal_environment'] = 'sandbox'; + } else { + $data['paypal_username'] = $this->config->get('payment_pp_express_username'); + $data['paypal_environment'] = 'production'; + } + + $data['payment_url'] = $this->url->link('extension/payment/pp_express/express', '', true); + + return $this->load->view('extension/module/pp_button', $data); + } + } + } +} diff --git a/public/catalog/controller/extension/module/pp_login.php b/public/catalog/controller/extension/module/pp_login.php new file mode 100644 index 0000000..dc581ab --- /dev/null +++ b/public/catalog/controller/extension/module/pp_login.php @@ -0,0 +1,202 @@ +<?php +class ControllerExtensionModulePPLogin extends Controller { + private $error = array(); + + public function index() { + if (!$this->customer->isLogged()) { + $data['client_id'] = $this->config->get('module_pp_login_client_id'); + $data['return_url'] = $this->url->link('extension/module/pp_login/login', '', true); + + if ($this->config->get('module_pp_login_sandbox')) { + $data['sandbox'] = 'sandbox'; + } else { + $data['sandbox'] = ''; + } + + if ($this->config->get('module_pp_login_button_colour') == 'grey') { + $data['button_colour'] = 'neutral'; + } else { + $data['button_colour'] = ''; + } + + $locale = $this->config->get('module_pp_login_locale'); + + $this->load->model('localisation/language'); + + $languages = $this->model_localisation_language->getLanguages(); + + foreach ($languages as $language) { + if ($language['status'] && ($language['code'] == $this->session->data['language']) && isset($locale[$language['language_id']])) { + $data['locale'] = $locale[$language['language_id']]; + } + } + + if (!isset($data['locale'])) { + $data['locale'] = 'en-gb'; + } + + $scopes = array( + 'profile', + 'email', + 'address', + 'phone' + ); + + if ($this->config->get('module_pp_login_seamless')) { + $scopes[] = 'https://uri.paypal.com/services/expresscheckout'; + } + + $data['scopes'] = implode(' ', $scopes); + + return $this->load->view('extension/module/pp_login', $data); + } + } + + public function login() { + $this->load->model('extension/module/pp_login'); + $this->load->model('account/customer'); + $this->load->model('account/customer_group'); + + if ($this->customer->isLogged()) { + echo '<script type="text/javascript">window.opener.location = "' . $this->url->link('account/account', '', true) . '"; window.close();</script>'; + } + + if (!isset($this->request->get['code'])) { + if (isset($this->request->get['error']) && isset($this->request->get['error_description'])) { + $this->model_extension_module_pp_login->log('No code returned. Error: ' . $this->request->get['error'] . ', Error Description: ' . $this->request->get['error_description']); + } + + echo '<script type="text/javascript">window.opener.location = "' . $this->url->link('account/login', '', true) . '"; window.close();</script>'; + } else { + $tokens = $this->model_extension_module_pp_login->getTokens($this->request->get['code']); + } + + if (isset($tokens->access_token) && !isset($tokens->error)) { + $user = $this->model_extension_module_pp_login->getUserInfo($tokens->access_token); + } + + if (isset($user)) { + $customer_info = $this->model_account_customer->getCustomerByEmail($user->email); + + if ($customer_info) { + if ($this->validate($user->email)) { + $this->completeLogin($customer_info['customer_id'], $customer_info['email'], $tokens->access_token); + } else { + $this->model_extension_module_pp_login->log('Could not login to - ID: ' . $customer_info['customer_id'] . ', Email: ' . $customer_info['email']); + echo '<script type="text/javascript">window.opener.location = "' . $this->url->link('account/login', '', true) . '"; window.close();</script>'; + } + } else { + $country = $this->db->query("SELECT `country_id` FROM `" . DB_PREFIX . "country` WHERE iso_code_2 = '" . $this->db->escape($user->address->country) . "'"); + + if ($country->num_rows) { + $country_id = $country->row['country_id']; + + $zone = $this->db->query("SELECT `zone_id` FROM `" . DB_PREFIX . "zone` WHERE country_id = '" . (int)$country_id . "' AND name = '" . $this->db->escape($user->address->region) . "'"); + + if ($zone->num_rows) { + $zone_id = $zone->row['zone_id']; + } else { + $zone_id = 0; + } + } else { + $country_id = 0; + $zone_id = 0; + } + + if ($this->config->get('module_pp_login_customer_group_id')) { + $customer_group_id = $this->config->get('module_pp_login_customer_group_id'); + } else { + $customer_group_id = $this->config->get('config_customer_group_id'); + } + + $data = array( + 'customer_group_id' => (int)$customer_group_id, + 'firstname' => $user->given_name, + 'lastname' => $user->family_name, + 'email' => $user->email, + 'telephone' => $user->phone_number, + 'password' => uniqid(rand(), true), + 'company' => '', + 'address_1' => $user->address->street_address, + 'address_2' => '', + 'city' => $user->address->locality, + 'postcode' => $user->address->postal_code, + 'country_id' => (int)$country_id, + 'zone_id' => (int)$zone_id, + ); + + $customer_id = $this->model_account_customer->addCustomer($data); + + $this->model_extension_module_pp_login->log('Customer ID date_added: ' . $customer_id); + + if ($this->validate($user->email)) { + $this->completeLogin($customer_id, $user->email, $tokens->access_token); + } else { + $this->model_extension_module_pp_login->log('Could not login to - ID: ' . $customer_id . ', Email: ' . $user->email); + echo '<script type="text/javascript">window.opener.location = "' . $this->url->link('account/login', '', true) . '"; window.close();</script>'; + } + } + } + } + + public function logout() { + if (isset($this->session->data['pp_login'])) { + unset($this->session->data['pp_login']); + } + } + + protected function completeLogin($customer_id, $email, $access_token) { + unset($this->session->data['guest']); + + // Default Shipping Address + $this->load->model('account/address'); + + if ($this->config->get('config_tax_customer') == 'payment') { + $this->session->data['payment_address'] = $this->model_account_address->getAddress($this->customer->getAddressId()); + } + + if ($this->config->get('config_tax_customer') == 'shipping') { + $this->session->data['shipping_address'] = $this->model_account_address->getAddress($this->customer->getAddressId()); + } + + if ($this->config->get('module_pp_login_seamless')) { + $this->session->data['pp_login']['seamless']['customer_id'] = $this->customer->getId(); + $this->session->data['pp_login']['seamless']['access_token'] = $access_token; + } else { + if (isset($this->session->data['pp_login']['seamless'])) { + unset($this->session->data['pp_login']['seamless']); + } + } + + $this->model_extension_module_pp_login->log('Customer logged in - ID: ' . $customer_id . ', Email: ' . $email); + echo '<script type="text/javascript">window.opener.location = "' . $this->url->link('account/account', '', true) . '"; window.close();</script>'; + } + + protected function validate($email) { + // Check how many login attempts have been made. + $login_info = $this->model_account_customer->getLoginAttempts($email); + + if ($login_info && ($login_info['total'] >= $this->config->get('config_login_attempts')) && strtotime('-1 hour') < strtotime($login_info['date_modified'])) { + $this->error['warning'] = $this->language->get('error_attempts'); + } + + // Check if customer has been approved. + $customer_info = $this->model_account_customer->getCustomerByEmail($email); + + if ($customer_info && !$customer_info['status']) { + $this->error['warning'] = $this->language->get('error_approved'); + } + + if (!$this->error) { + if (!$this->customer->login($email, '', true)) { + $this->error['warning'] = $this->language->get('error_login'); + + $this->model_account_customer->addLoginAttempt($email); + } else { + $this->model_account_customer->deleteLoginAttempts($email); + } + } + + return !$this->error; + } +}
\ No newline at end of file diff --git a/public/catalog/controller/extension/module/sagepay_direct_cards.php b/public/catalog/controller/extension/module/sagepay_direct_cards.php new file mode 100644 index 0000000..0d4dce1 --- /dev/null +++ b/public/catalog/controller/extension/module/sagepay_direct_cards.php @@ -0,0 +1,13 @@ +<?php +class ControllerExtensionModuleSagepayDirectCards extends Controller { + public function index() { + if ($this->config->get('module_sagepay_direct_cards_status') && $this->config->get('payment_sagepay_direct_status') && $this->customer->isLogged()) { + $this->load->language('account/sagepay_direct_cards'); + + $data['card'] = $this->url->link('account/sagepay_direct_cards', '', true); + + return $this->load->view('extension/module/sagepay_direct_cards', $data); + } + } + +}
\ No newline at end of file diff --git a/public/catalog/controller/extension/module/sagepay_server_cards.php b/public/catalog/controller/extension/module/sagepay_server_cards.php new file mode 100644 index 0000000..f4cc007 --- /dev/null +++ b/public/catalog/controller/extension/module/sagepay_server_cards.php @@ -0,0 +1,13 @@ +<?php +class ControllerExtensionModuleSagepayServerCards extends Controller { + public function index() { + if ($this->config->get('module_sagepay_server_cards_status') && $this->config->get('payment_sagepay_server_status') && $this->customer->isLogged()) { + $this->load->language('account/sagepay_server_cards'); + + $data['card'] = $this->url->link('account/sagepay_server_cards', '', true); + + return $this->load->view('extension/module/sagepay_server_cards', $data); + } + } + +}
\ No newline at end of file diff --git a/public/catalog/controller/extension/module/slideshow.php b/public/catalog/controller/extension/module/slideshow.php new file mode 100644 index 0000000..80265d7 --- /dev/null +++ b/public/catalog/controller/extension/module/slideshow.php @@ -0,0 +1,31 @@ +<?php +class ControllerExtensionModuleSlideshow extends Controller { + public function index($setting) { + static $module = 0; + + $this->load->model('design/banner'); + $this->load->model('tool/image'); + + $this->document->addStyle('catalog/view/javascript/jquery/swiper/css/swiper.min.css'); + $this->document->addStyle('catalog/view/javascript/jquery/swiper/css/opencart.css'); + $this->document->addScript('catalog/view/javascript/jquery/swiper/js/swiper.jquery.js'); + + $data['banners'] = array(); + + $results = $this->model_design_banner->getBanner($setting['banner_id']); + + foreach ($results as $result) { + if (is_file(DIR_IMAGE . $result['image'])) { + $data['banners'][] = array( + 'title' => $result['title'], + 'link' => $result['link'], + 'image' => $this->model_tool_image->resize($result['image'], $setting['width'], $setting['height']) + ); + } + } + + $data['module'] = $module++; + + return $this->load->view('extension/module/slideshow', $data); + } +}
\ No newline at end of file diff --git a/public/catalog/controller/extension/module/special.php b/public/catalog/controller/extension/module/special.php new file mode 100644 index 0000000..6f13eed --- /dev/null +++ b/public/catalog/controller/extension/module/special.php @@ -0,0 +1,69 @@ +<?php +class ControllerExtensionModuleSpecial extends Controller { + public function index($setting) { + $this->load->language('extension/module/special'); + + $this->load->model('catalog/product'); + + $this->load->model('tool/image'); + + $data['products'] = array(); + + $filter_data = array( + 'sort' => 'pd.name', + 'order' => 'ASC', + 'start' => 0, + 'limit' => $setting['limit'] + ); + + $results = $this->model_catalog_product->getProductSpecials($filter_data); + + if ($results) { + foreach ($results as $result) { + if ($result['image']) { + $image = $this->model_tool_image->resize($result['image'], $setting['width'], $setting['height']); + } else { + $image = $this->model_tool_image->resize('placeholder.png', $setting['width'], $setting['height']); + } + + 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; + } + + if ($this->config->get('config_review_status')) { + $rating = $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']) + ); + } + + return $this->load->view('extension/module/special', $data); + } + } +}
\ No newline at end of file diff --git a/public/catalog/controller/extension/module/store.php b/public/catalog/controller/extension/module/store.php new file mode 100644 index 0000000..40a0dd4 --- /dev/null +++ b/public/catalog/controller/extension/module/store.php @@ -0,0 +1,40 @@ +<?php +class ControllerExtensionModuleStore extends Controller { + public function index() { + $status = true; + + if ($this->config->get('module_store_admin')) { + $this->user = new Cart\User($this->registry); + + $status = $this->user->isLogged(); + } + + if ($status) { + $this->load->language('extension/module/store'); + + $data['store_id'] = $this->config->get('config_store_id'); + + $data['stores'] = array(); + + $data['stores'][] = array( + 'store_id' => 0, + 'name' => $this->language->get('text_default'), + 'url' => HTTP_SERVER . 'index.php?route=common/home&session_id=' . $this->session->getId() + ); + + $this->load->model('setting/store'); + + $results = $this->model_setting_store->getStores(); + + foreach ($results as $result) { + $data['stores'][] = array( + 'store_id' => $result['store_id'], + 'name' => $result['name'], + 'url' => $result['url'] . 'index.php?route=common/home&session_id=' . $this->session->getId() + ); + } + + return $this->load->view('extension/module/store', $data); + } + } +} |