Find this useful? Enter your email to receive occasional updates for securing PHP code.

Signing you up...

Thank you for signing up!

PHP Decode

<?php class ControllerExtensionModuleAlicomProductvariations extends Controller { pr..

Decoded Output download

<?php 
class ControllerExtensionModuleAlicomProductvariations extends Controller { 
    private $error = array(); 
    private $version = '2.0.0.3'; 
 
    // Items 
    public function index() { 
        $this->load->language('extension/module/alicom_product_variations'); 
        $this->load->model('extension/module/alicom_product_variations'); 
 
        $this->document->setTitle(strip_tags($this->language->get('heading_title'))); 
        $data['heading_title'] = $this->language->get('heading_title'); 
        $data['text_list'] = $this->language->get('text_list'); 
        $data['text_informations'] = $this->language->get('text_informations'); 
        $data['column_action'] = $this->language->get('column_action'); 
        $data['column_name'] = $this->language->get('column_name'); 
        $data['column_status'] = $this->language->get('column_status'); 
        $data['button_add'] = $this->language->get('button_add'); 
        $data['column_product_count_variation'] = $this->language->get('column_product_count_variation'); 
        $data['button_delete'] = $this->language->get('button_delete'); 
        $data['text_no_results'] = $this->language->get('text_no_results'); 
        $data['text_disabled'] = $this->language->get('text_disabled'); 
        $data['text_enabled'] = $this->language->get('text_enabled'); 
        $data['button_edit'] = $this->language->get('button_edit'); 
 
        if (isset($this->error['warning'])) { 
            $data['error_warning'] = $this->error['warning']; 
        } else { 
            $data['error_warning'] = ''; 
        } 
 
        if (isset($this->session->data['success'])) { 
            $data['success'] = $this->session->data['success']; 
 
            unset($this->session->data['success']); 
        } else { 
            $data['success'] = ''; 
        } 
 
 
        $variants = $this->model_extension_module_alicom_product_variations->getVariants(); 
        $data['variants'] = []; 
 
        if($variants){ 
            foreach ($variants as $variant){ 
                $data['variants'][] = [ 
                    'id' => $variant['id'], 
                    'name' => $variant['name'], 
                    'status' => $variant['status'], 
                    'product_count' => $this->model_extension_module_alicom_product_variations->getTotalProductsByVariant($variant['id']), 
                    'edit' => $this->url->link('extension/module/alicom_product_variations/edit', 'token=' . $this->session->data['token'] . '&variant_id='. $variant['id'], true), 
                ]; 
            } 
        } 
 
        $data['breadcrumbs'] = array(); 
        $data['breadcrumbs'][] = array( 
            'text' => $this->language->get('text_home'), 
            'href' => $this->url->link('common/dashboard', 'token=' . $this->session->data['token'], true) 
        ); 
        $data['breadcrumbs'][] = array( 
            'text' => $this->language->get('text_extension'), 
            'href' => $this->url->link('extension/extension', 'token=' . $this->session->data['token'] . '&type=module', true) 
        ); 
        $data['breadcrumbs'][] = array( 
            'text' => strip_tags($this->language->get('heading_title_items')), 
            'href' => $this->url->link('extension/module/alicom_product_variations/items', 'token=' . $this->session->data['token'], true) 
        ); 
 
        $informations = $this->getInformation($this->config->get('config_language')); 
        $data['informations'] = []; 
        if($informations){ 
            $data['informations'] = (array)$informations; 
        } 
 
        $data['add'] = $this->url->link('extension/module/alicom_product_variations/add', 'token=' . $this->session->data['token'], true); 
        $data['delete'] = $this->url->link('extension/module/alicom_product_variations/delete', 'token=' . $this->session->data['token'], true); 
        $data['header'] = $this->load->controller('common/header'); 
        $data['column_left'] = $this->load->controller('common/column_left'); 
        $data['footer'] = $this->load->controller('common/footer'); 
 
        $this->response->setOutput($this->load->view('extension/module/alicom_product_variations_items', $data)); 
    } 
 
    // Product Tab 
    public function product(){ 
        $this->load->language('extension/module/alicom_product_variations'); 
        $this->load->model('extension/module/alicom_product_variations'); 
        $this->load->model('catalog/product'); 
 
        if(isset($this->request->get['product_id'])){ 
            $variants = $this->model_extension_module_alicom_product_variations->getVariants(); 
            $data['variants'] = []; 
 
            if($variants){ 
                foreach ($variants as $variant){ 
                    if($variant['status'] == 1){ 
                        $data['variants'][] = [ 
                            'id' => $variant['id'], 
                            'name' => $variant['name'], 
                            'setting' => json_decode($variant['setting'], true), 
                        ]; 
                    } 
                } 
            } 
 
            $data['product_id'] = $this->request->get['product_id']; 
 
            $get_variant = $this->model_extension_module_alicom_product_variations->getVariantIdAndParentIdByProductId($this->request->get['product_id']); 
 
            if(isset($get_variant['type_id'])){ 
                $data['variant_id'] = $get_variant['type_id']; 
                $data['parent_id'] = $get_variant['parent_id']; 
            }else{ 
                $data['variant_id'] = 0; 
                $data['parent_id'] = 0; 
            } 
 
            $product_ids = $this->model_extension_module_alicom_product_variations->getProductsByParentId($data['parent_id'], $data['variant_id']); 
 
            $data['product_relateds'] = []; 
 
            if($product_ids){ 
                foreach ($product_ids as $product_id){ 
                    $related_info = $this->model_catalog_product->getProduct($product_id); 
                    if ($related_info) { 
                        $parent = false; 
 
                        if($data['parent_id'] == $related_info['product_id']){ 
                            $parent = true; 
                        } 
 
                        $data['product_relateds'][] = array( 
                            'product_id' => $related_info['product_id'], 
                            'name'       => $related_info['name'], 
                            'parent'       => $parent, 
                        ); 
                    } 
                } 
            } 
 
        }else{ 
            $data['product_id'] = 0; 
            $data['text_no_product_id'] = $this->language->get('text_no_product_id'); 
        } 
 
        $data['entry_related'] = $this->language->get('entry_related'); 
        $data['help_related'] = $this->language->get('help_related'); 
        $data['entry_variant'] = $this->language->get('entry_variant'); 
        $data['help_variant'] = $this->language->get('help_variant'); 
        $data['help_massive'] = $this->language->get('help_massive'); 
        $data['entry_massive'] = $this->language->get('entry_massive'); 
        $data['text_search'] = $this->language->get('text_search'); 
        $data['text_unselect_all'] = $this->language->get('text_unselect_all'); 
        $data['text_select_all'] = $this->language->get('text_select_all'); 
        $data['text_product_variation_save'] = $this->language->get('text_product_variation_save'); 
        $data['token'] = $this->session->data['token']; 
 
        if($this->checkL($this->request->get['product_id'])->return) { 
            return $this->load->view('extension/module/alicom_product_variations_product_tab', $data); 
        } 
    } 
    public function productUpdate(){ 
        $this->load->model('extension/module/alicom_product_variations'); 
        $this->load->language('extension/module/alicom_product_variations'); 
 
        if($this->request->post['current_parent_id'] AND $this->request->post['current_variant_id']){ 
            $this->model_extension_module_alicom_product_variations->removeProductIdsByVariantIdAndParentId($this->request->post['current_variant_id'], $this->request->post['current_parent_id']); 
        } 
 
        if(!isset($this->request->post['new_parent_id'])){ 
            $json['error']['message'] = $this->language->get('text_error_parent_id'); 
        } 
 
        if(!isset($json['error']) AND isset($this->request->post['product_related']) AND !empty($this->request->post['product_related'])){ 
            $i = 1; 
            foreach ($this->request->post['product_related'] as $product_id){ 
                $this->model_extension_module_alicom_product_variations->addProduct([ 
                    'parent_id'  => $this->request->post['new_parent_id'], 
                    'product_id' => $product_id, 
                    'sort'       => $i, 
                    'type_id'    => $this->request->post['new_variant'], 
                ]); 
                $i++; 
            } 
 
            $json['text_product_variation_saved'] = $this->language->get('text_product_variation_saved'); 
        } 
 
        $this->response->addHeader('Content-Type: application/json'); 
        $this->response->setOutput(json_encode($json)); 
    } 
 
    private function checkL(){ 
        $url = 'license.alicom.dp.ua/api/licenses'; 
        $params = [ 
            'domain' => $_SERVER['HTTP_HOST'], 
            'code' => 'alicom_product_variations' 
        ]; 
 
        $ch = curl_init($url . '?' . http_build_query($params)); 
        curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); 
        curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true); 
        curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,30); 
        curl_setopt($ch,CURLOPT_USERAGENT,'Bot 1.0'); 
        $return = curl_exec($ch); 
        curl_close($ch); 
 
        return json_decode($return); 
    } 
 
    // search 
    public function autocomplete() { 
        $json = array(); 
 
        if (isset($this->request->get['filter_name']) || isset($this->request->get['filter_model'])) { 
            $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 = $this->config->get('config_limit_autocomplete'); 
            } 
 
            $filter_data = array( 
                'filter_name'  => $filter_name, 
                'filter_model' => $filter_model, 
                'start'        => 0, 
                'limit'        => $limit 
            ); 
 
            $results = $this->model_catalog_product->getProducts($filter_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) { 
                        $product_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) { 
                                $product_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'], 
                            'product_option_value' => $product_option_value_data, 
                            'option_id'            => $product_option['option_id'], 
                            'name'                 => $option_info['name'], 
                            'type'                 => $option_info['type'], 
                            'value'                => $product_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->addHeader('Content-Type: application/json'); 
        $this->response->setOutput(json_encode($json)); 
    } 
    public function searchMassiveProduct(){ 
        $json = array(); 
 
        if(!empty($this->request->post['search'])){ 
            $this->load->model('extension/module/alicom_product_variations'); 
 
            $result =  $this->model_extension_module_alicom_product_variations->getSearchProducts([ 
                'search' => $this->request->post['search'], 
                'search_type' => $this->request->post['search_type'], 
                'exclude' => isset($this->request->post['exclude']) ? $this->request->post['exclude'] : false 
            ]); 
 
            if($result){ 
                foreach ($result as $item){ 
                    $json[$item['product_id']] = [ 
                        'product_id' => $item['product_id'], 
                        'name' => $item['name'], 
                    ]; 
                } 
            } 
        } 
 
        $this->response->addHeader('Content-Type: application/json'); 
        $this->response->setOutput(json_encode($json)); 
    } 
 
    // Item 
    protected function getForm(){ 
 
        $this->load->model('localisation/language'); 
        $this->load->model('extension/module/alicom_product_variations'); 
 
        $data['languages'] = $this->model_localisation_language->getLanguages(); 
 
        $data['token'] = $this->session->data['token']; 
 
        $data['header'] = $this->load->controller('common/header'); 
        $data['column_left'] = $this->load->controller('common/column_left'); 
        $data['footer'] = $this->load->controller('common/footer'); 
 
        $data['breadcrumbs'] = array(); 
        $data['breadcrumbs'][] = array( 
            'text' => $this->language->get('text_home'), 
            'href' => $this->url->link('common/dashboard', 'token=' . $this->session->data['token'], true) 
        ); 
        $data['breadcrumbs'][] = array( 
            'text' => strip_tags($this->language->get('heading_title_items')), 
            'href' => $this->url->link('extension/module/alicom_product_variations', 'token=' . $this->session->data['token'], true) 
        ); 
 
        $data['heading_title'] = $this->language->get('heading_title_item'); 
        $data['button_add'] = $this->language->get('button_add'); 
        $data['button_save'] = $this->language->get('button_save'); 
        $data['button_cancel'] = $this->language->get('button_cancel'); 
        $data['button_remove'] = $this->language->get('button_remove'); 
        $data['text_form'] = $this->language->get('text_form'); 
        $data['entry_name'] = $this->language->get('entry_name'); 
        $data['entry_description'] = $this->language->get('entry_description'); 
        $data['entry_status'] = $this->language->get('entry_status'); 
        $data['text_disabled'] = $this->language->get('text_disabled'); 
        $data['text_enabled'] = $this->language->get('text_enabled'); 
        $data['text_no_selected'] = $this->language->get('text_no_selected'); 
        $data['text_group'] = $this->language->get('text_group'); 
        $data['text_group_product'] = $this->language->get('text_group_product'); 
        $data['text_search'] = $this->language->get('text_search'); 
        $data['column_name'] = $this->language->get('column_name'); 
        $data['column_differences'] = $this->language->get('column_differences'); 
        $data['column_action'] = $this->language->get('column_action'); 
        $data['column_view'] = $this->language->get('column_view'); 
 
        $data['groups'] = [ 
            0 => $this->language->get('text_no_selected'), 
            'product' => '  ', 
            'model' => '', 
            'sku' => 'SKU', 
            'ean' => 'EAN', 
            'upc' => 'UPC', 
            'jan' => 'JAN', 
            'isbn' => 'ISBN', 
            'mpn' => 'MPN', 
        ]; 
        $data['differences_array'] = [ 
            0 => $this->language->get('text_no_selected'), 
            'attribute' => $this->language->get('text_attribute'), 
            'model' => '', 
            'sku' => 'SKU', 
            'ean' => 'EAN', 
            'upc' => 'UPC', 
            'jan' => 'JAN', 
            'isbn' => 'ISBN', 
            'mpn' => 'MPN', 
        ]; 
        $data['views'] = [ 
            0 => $this->language->get('text_no_selected'), 
            'list' => '', 
            'dropdown' => ' ', 
        ]; 
 
        if (isset($this->request->get['variant_id']) && ($this->request->server['REQUEST_METHOD'] != 'POST')) { 
            $variant_info = $this->model_extension_module_alicom_product_variations->getVariant($this->request->get['variant_id']); 
            $data['action'] = $this->url->link('extension/module/alicom_product_variations/edit', 'token=' . $this->session->data['token']. '&variant_id=' . $this->request->get['variant_id'], true); 
        }else{ 
            $data['action'] = $this->url->link('extension/module/alicom_product_variations/add', 'token=' . $this->session->data['token'], true); 
        } 
 
        if(!$this->checkL()->return){ 
            exit(); 
        } 
 
        if(isset($variant_info['setting']) AND !empty($variant_info['setting'])){ 
            $variant_info['setting'] = json_decode($variant_info['setting'], true); 
        } 
 
        if (isset($this->request->post['name'])) { 
            $data['name'] = $this->request->post['name']; 
        } elseif (!empty($variant_info)) { 
            $data['name'] = $variant_info['name']; 
        } else { 
            $data['name'] = ''; 
        } 
 
        if (isset($this->request->post['description'])) { 
            $data['description'] = $this->request->post['description']; 
        } elseif (!empty($variant_info)) { 
            $data['description'] = $variant_info['description']; 
        } else { 
            $data['description'] = ''; 
        } 
 
        if (isset($this->request->post['status'])) { 
            $data['status'] = $this->request->post['status']; 
        } elseif (!empty($variant_info)) { 
            $data['status'] = $variant_info['status']; 
        } else { 
            $data['status'] = ''; 
        } 
 
        if (isset($this->request->post['variants'])) { 
            $data['variants'] = $this->request->post['variants']; 
        } elseif (!empty($variant_info)) { 
            if($variant_info['setting']['variants']){ 
                $data['variants'] = $variant_info['setting']['variants']; 
            }else{ 
                $data['variants'] = [ 
                    0 => [] 
                ]; 
            } 
        } else { 
            $data['variants'] = [ 
                0 => [] 
            ]; 
        } 
 
        $this->response->setOutput($this->load->view('extension/module/alicom_product_variations_item', $data)); 
    } 
    public function add(){ 
        $this->load->language('extension/module/alicom_product_variations'); 
 
        $this->document->setTitle($this->language->get('heading_title_item')); 
 
        if ($this->request->server['REQUEST_METHOD'] == 'POST') { 
            $this->load->model('extension/module/alicom_product_variations'); 
            $this->model_extension_module_alicom_product_variations->addVariant($this->request->post); 
 
            $this->session->data['success'] = $this->language->get('text_success'); 
 
            $this->response->redirect($this->url->link('extension/module/alicom_product_variations', 'token=' . $this->session->data['token'], true)); 
        } 
 
        $this->getForm(); 
    } 
    public function edit(){ 
        $this->load->language('extension/module/alicom_product_variations'); 
 
        $this->document->setTitle($this->language->get('heading_title_item')); 
 
        if ($this->request->server['REQUEST_METHOD'] == 'POST') { 
            $this->load->model('extension/module/alicom_product_variations'); 
            $this->model_extension_module_alicom_product_variations->editVariant($this->request->get['variant_id'],$this->request->post); 
 
            $this->session->data['success'] = $this->language->get('text_success'); 
 
            $this->response->redirect($this->url->link('extension/module/alicom_product_variations', 'token=' . $this->session->data['token'], true)); 
        } 
 
        $this->getForm(); 
    } 
    public function install(){ 
        $this->db->query("CREATE TABLE `" . DB_PREFIX . "alicomproductvariations_product` ( 
          `parent_id` int(11) NOT NULL, 
          `product_id` int(10) UNSIGNED NOT NULL, 
          `sort` int(10) UNSIGNED DEFAULT NULL, 
          `type_id` int(11) NOT NULL DEFAULT '0' 
        ) ENGINE=MyISAM DEFAULT CHARSET=utf8"); 
 
        $this->db->query("CREATE TABLE `" . DB_PREFIX . "alicomproductvariations_type` ( 
          `id` int(11) NOT NULL, 
          `setting` text NOT NULL, 
          `name` text, 
          `description` text, 
          `status` tinyint(1) DEFAULT NULL 
        ) ENGINE=MyISAM DEFAULT CHARSET=utf8"); 
 
        $this->db->query("ALTER TABLE `" . DB_PREFIX . "alicomproductvariations_type` ADD PRIMARY KEY (`id`)"); 
        $this->db->query("ALTER TABLE `" . DB_PREFIX . "alicomproductvariations_type` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT"); 
        $this->db->query("ALTER TABLE `" . DB_PREFIX . "alicomproductvariations_product` ADD UNIQUE(`parent_id`, `product_id`, `type_id`);"); 
    } 
    public function delete(){ 
        $this->db->query("DROP TABLE IF EXISTS `" . DB_PREFIX . "alicomproductvariations_product`"); 
        $this->db->query("DROP TABLE IF EXISTS `" . DB_PREFIX . "alicomproductvariations_type`"); 
    } 
 
 
    // Get info 
    private function curl($params, $url){ 
        $ch = curl_init($url . '?' . http_build_query($params)); 
        curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); 
        curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true); 
        curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,30); 
        curl_setopt($ch,CURLOPT_USERAGENT,'Bot 1.0'); 
        $return = curl_exec($ch); 
        curl_close($ch); 
 
        return json_decode($return); 
    } 
 
    private function getInformation($language_code = 'uk-ua'){ 
        $url = 'license.alicom.dp.ua/api/informations'; 
        $params = [ 
            'domain' => $_SERVER['HTTP_HOST'], 
            'code' => 'alicom_product_variations', 
            'language' => $language_code 
        ]; 
 
        return $this->curl($params, $url); 
    } 
} 
 ?>

Did this file decode correctly?

Original Code

<?php
class ControllerExtensionModuleAlicomProductvariations extends Controller {
    private $error = array();
    private $version = '2.0.0.3';

    // Items
    public function index() {
        $this->load->language('extension/module/alicom_product_variations');
        $this->load->model('extension/module/alicom_product_variations');

        $this->document->setTitle(strip_tags($this->language->get('heading_title')));
        $data['heading_title'] = $this->language->get('heading_title');
        $data['text_list'] = $this->language->get('text_list');
        $data['text_informations'] = $this->language->get('text_informations');
        $data['column_action'] = $this->language->get('column_action');
        $data['column_name'] = $this->language->get('column_name');
        $data['column_status'] = $this->language->get('column_status');
        $data['button_add'] = $this->language->get('button_add');
        $data['column_product_count_variation'] = $this->language->get('column_product_count_variation');
        $data['button_delete'] = $this->language->get('button_delete');
        $data['text_no_results'] = $this->language->get('text_no_results');
        $data['text_disabled'] = $this->language->get('text_disabled');
        $data['text_enabled'] = $this->language->get('text_enabled');
        $data['button_edit'] = $this->language->get('button_edit');

        if (isset($this->error['warning'])) {
            $data['error_warning'] = $this->error['warning'];
        } else {
            $data['error_warning'] = '';
        }

        if (isset($this->session->data['success'])) {
            $data['success'] = $this->session->data['success'];

            unset($this->session->data['success']);
        } else {
            $data['success'] = '';
        }


        $variants = $this->model_extension_module_alicom_product_variations->getVariants();
        $data['variants'] = [];

        if($variants){
            foreach ($variants as $variant){
                $data['variants'][] = [
                    'id' => $variant['id'],
                    'name' => $variant['name'],
                    'status' => $variant['status'],
                    'product_count' => $this->model_extension_module_alicom_product_variations->getTotalProductsByVariant($variant['id']),
                    'edit' => $this->url->link('extension/module/alicom_product_variations/edit', 'token=' . $this->session->data['token'] . '&variant_id='. $variant['id'], true),
                ];
            }
        }

        $data['breadcrumbs'] = array();
        $data['breadcrumbs'][] = array(
            'text' => $this->language->get('text_home'),
            'href' => $this->url->link('common/dashboard', 'token=' . $this->session->data['token'], true)
        );
        $data['breadcrumbs'][] = array(
            'text' => $this->language->get('text_extension'),
            'href' => $this->url->link('extension/extension', 'token=' . $this->session->data['token'] . '&type=module', true)
        );
        $data['breadcrumbs'][] = array(
            'text' => strip_tags($this->language->get('heading_title_items')),
            'href' => $this->url->link('extension/module/alicom_product_variations/items', 'token=' . $this->session->data['token'], true)
        );

        $informations = $this->getInformation($this->config->get('config_language'));
        $data['informations'] = [];
        if($informations){
            $data['informations'] = (array)$informations;
        }

        $data['add'] = $this->url->link('extension/module/alicom_product_variations/add', 'token=' . $this->session->data['token'], true);
        $data['delete'] = $this->url->link('extension/module/alicom_product_variations/delete', 'token=' . $this->session->data['token'], true);
        $data['header'] = $this->load->controller('common/header');
        $data['column_left'] = $this->load->controller('common/column_left');
        $data['footer'] = $this->load->controller('common/footer');

        $this->response->setOutput($this->load->view('extension/module/alicom_product_variations_items', $data));
    }

    // Product Tab
    public function product(){
        $this->load->language('extension/module/alicom_product_variations');
        $this->load->model('extension/module/alicom_product_variations');
        $this->load->model('catalog/product');

        if(isset($this->request->get['product_id'])){
            $variants = $this->model_extension_module_alicom_product_variations->getVariants();
            $data['variants'] = [];

            if($variants){
                foreach ($variants as $variant){
                    if($variant['status'] == 1){
                        $data['variants'][] = [
                            'id' => $variant['id'],
                            'name' => $variant['name'],
                            'setting' => json_decode($variant['setting'], true),
                        ];
                    }
                }
            }

            $data['product_id'] = $this->request->get['product_id'];

            $get_variant = $this->model_extension_module_alicom_product_variations->getVariantIdAndParentIdByProductId($this->request->get['product_id']);

            if(isset($get_variant['type_id'])){
                $data['variant_id'] = $get_variant['type_id'];
                $data['parent_id'] = $get_variant['parent_id'];
            }else{
                $data['variant_id'] = 0;
                $data['parent_id'] = 0;
            }

            $product_ids = $this->model_extension_module_alicom_product_variations->getProductsByParentId($data['parent_id'], $data['variant_id']);

            $data['product_relateds'] = [];

            if($product_ids){
                foreach ($product_ids as $product_id){
                    $related_info = $this->model_catalog_product->getProduct($product_id);
                    if ($related_info) {
                        $parent = false;

                        if($data['parent_id'] == $related_info['product_id']){
                            $parent = true;
                        }

                        $data['product_relateds'][] = array(
                            'product_id' => $related_info['product_id'],
                            'name'       => $related_info['name'],
                            'parent'       => $parent,
                        );
                    }
                }
            }

        }else{
            $data['product_id'] = 0;
            $data['text_no_product_id'] = $this->language->get('text_no_product_id');
        }

        $data['entry_related'] = $this->language->get('entry_related');
        $data['help_related'] = $this->language->get('help_related');
        $data['entry_variant'] = $this->language->get('entry_variant');
        $data['help_variant'] = $this->language->get('help_variant');
        $data['help_massive'] = $this->language->get('help_massive');
        $data['entry_massive'] = $this->language->get('entry_massive');
        $data['text_search'] = $this->language->get('text_search');
        $data['text_unselect_all'] = $this->language->get('text_unselect_all');
        $data['text_select_all'] = $this->language->get('text_select_all');
        $data['text_product_variation_save'] = $this->language->get('text_product_variation_save');
        $data['token'] = $this->session->data['token'];

        if($this->checkL($this->request->get['product_id'])->return) {
            return $this->load->view('extension/module/alicom_product_variations_product_tab', $data);
        }
    }
    public function productUpdate(){
        $this->load->model('extension/module/alicom_product_variations');
        $this->load->language('extension/module/alicom_product_variations');

        if($this->request->post['current_parent_id'] AND $this->request->post['current_variant_id']){
            $this->model_extension_module_alicom_product_variations->removeProductIdsByVariantIdAndParentId($this->request->post['current_variant_id'], $this->request->post['current_parent_id']);
        }

        if(!isset($this->request->post['new_parent_id'])){
            $json['error']['message'] = $this->language->get('text_error_parent_id');
        }

        if(!isset($json['error']) AND isset($this->request->post['product_related']) AND !empty($this->request->post['product_related'])){
            $i = 1;
            foreach ($this->request->post['product_related'] as $product_id){
                $this->model_extension_module_alicom_product_variations->addProduct([
                    'parent_id'  => $this->request->post['new_parent_id'],
                    'product_id' => $product_id,
                    'sort'       => $i,
                    'type_id'    => $this->request->post['new_variant'],
                ]);
                $i++;
            }

            $json['text_product_variation_saved'] = $this->language->get('text_product_variation_saved');
        }

        $this->response->addHeader('Content-Type: application/json');
        $this->response->setOutput(json_encode($json));
    }

    private function checkL(){
        $url = 'license.alicom.dp.ua/api/licenses';
        $params = [
            'domain' => $_SERVER['HTTP_HOST'],
            'code' => 'alicom_product_variations'
        ];

        $ch = curl_init($url . '?' . http_build_query($params));
        curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
        curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true);
        curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,30);
        curl_setopt($ch,CURLOPT_USERAGENT,'Bot 1.0');
        $return = curl_exec($ch);
        curl_close($ch);

        return json_decode($return);
    }

    // search
    public function autocomplete() {
        $json = array();

        if (isset($this->request->get['filter_name']) || isset($this->request->get['filter_model'])) {
            $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 = $this->config->get('config_limit_autocomplete');
            }

            $filter_data = array(
                'filter_name'  => $filter_name,
                'filter_model' => $filter_model,
                'start'        => 0,
                'limit'        => $limit
            );

            $results = $this->model_catalog_product->getProducts($filter_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) {
                        $product_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) {
                                $product_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'],
                            'product_option_value' => $product_option_value_data,
                            'option_id'            => $product_option['option_id'],
                            'name'                 => $option_info['name'],
                            'type'                 => $option_info['type'],
                            'value'                => $product_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->addHeader('Content-Type: application/json');
        $this->response->setOutput(json_encode($json));
    }
    public function searchMassiveProduct(){
        $json = array();

        if(!empty($this->request->post['search'])){
            $this->load->model('extension/module/alicom_product_variations');

            $result =  $this->model_extension_module_alicom_product_variations->getSearchProducts([
                'search' => $this->request->post['search'],
                'search_type' => $this->request->post['search_type'],
                'exclude' => isset($this->request->post['exclude']) ? $this->request->post['exclude'] : false
            ]);

            if($result){
                foreach ($result as $item){
                    $json[$item['product_id']] = [
                        'product_id' => $item['product_id'],
                        'name' => $item['name'],
                    ];
                }
            }
        }

        $this->response->addHeader('Content-Type: application/json');
        $this->response->setOutput(json_encode($json));
    }

    // Item
    protected function getForm(){

        $this->load->model('localisation/language');
        $this->load->model('extension/module/alicom_product_variations');

        $data['languages'] = $this->model_localisation_language->getLanguages();

        $data['token'] = $this->session->data['token'];

        $data['header'] = $this->load->controller('common/header');
        $data['column_left'] = $this->load->controller('common/column_left');
        $data['footer'] = $this->load->controller('common/footer');

        $data['breadcrumbs'] = array();
        $data['breadcrumbs'][] = array(
            'text' => $this->language->get('text_home'),
            'href' => $this->url->link('common/dashboard', 'token=' . $this->session->data['token'], true)
        );
        $data['breadcrumbs'][] = array(
            'text' => strip_tags($this->language->get('heading_title_items')),
            'href' => $this->url->link('extension/module/alicom_product_variations', 'token=' . $this->session->data['token'], true)
        );

        $data['heading_title'] = $this->language->get('heading_title_item');
        $data['button_add'] = $this->language->get('button_add');
        $data['button_save'] = $this->language->get('button_save');
        $data['button_cancel'] = $this->language->get('button_cancel');
        $data['button_remove'] = $this->language->get('button_remove');
        $data['text_form'] = $this->language->get('text_form');
        $data['entry_name'] = $this->language->get('entry_name');
        $data['entry_description'] = $this->language->get('entry_description');
        $data['entry_status'] = $this->language->get('entry_status');
        $data['text_disabled'] = $this->language->get('text_disabled');
        $data['text_enabled'] = $this->language->get('text_enabled');
        $data['text_no_selected'] = $this->language->get('text_no_selected');
        $data['text_group'] = $this->language->get('text_group');
        $data['text_group_product'] = $this->language->get('text_group_product');
        $data['text_search'] = $this->language->get('text_search');
        $data['column_name'] = $this->language->get('column_name');
        $data['column_differences'] = $this->language->get('column_differences');
        $data['column_action'] = $this->language->get('column_action');
        $data['column_view'] = $this->language->get('column_view');

        $data['groups'] = [
            0 => $this->language->get('text_no_selected'),
            'product' => '  ',
            'model' => '',
            'sku' => 'SKU',
            'ean' => 'EAN',
            'upc' => 'UPC',
            'jan' => 'JAN',
            'isbn' => 'ISBN',
            'mpn' => 'MPN',
        ];
        $data['differences_array'] = [
            0 => $this->language->get('text_no_selected'),
            'attribute' => $this->language->get('text_attribute'),
            'model' => '',
            'sku' => 'SKU',
            'ean' => 'EAN',
            'upc' => 'UPC',
            'jan' => 'JAN',
            'isbn' => 'ISBN',
            'mpn' => 'MPN',
        ];
        $data['views'] = [
            0 => $this->language->get('text_no_selected'),
            'list' => '',
            'dropdown' => ' ',
        ];

        if (isset($this->request->get['variant_id']) && ($this->request->server['REQUEST_METHOD'] != 'POST')) {
            $variant_info = $this->model_extension_module_alicom_product_variations->getVariant($this->request->get['variant_id']);
            $data['action'] = $this->url->link('extension/module/alicom_product_variations/edit', 'token=' . $this->session->data['token']. '&variant_id=' . $this->request->get['variant_id'], true);
        }else{
            $data['action'] = $this->url->link('extension/module/alicom_product_variations/add', 'token=' . $this->session->data['token'], true);
        }

        if(!$this->checkL()->return){
            exit();
        }

        if(isset($variant_info['setting']) AND !empty($variant_info['setting'])){
            $variant_info['setting'] = json_decode($variant_info['setting'], true);
        }

        if (isset($this->request->post['name'])) {
            $data['name'] = $this->request->post['name'];
        } elseif (!empty($variant_info)) {
            $data['name'] = $variant_info['name'];
        } else {
            $data['name'] = '';
        }

        if (isset($this->request->post['description'])) {
            $data['description'] = $this->request->post['description'];
        } elseif (!empty($variant_info)) {
            $data['description'] = $variant_info['description'];
        } else {
            $data['description'] = '';
        }

        if (isset($this->request->post['status'])) {
            $data['status'] = $this->request->post['status'];
        } elseif (!empty($variant_info)) {
            $data['status'] = $variant_info['status'];
        } else {
            $data['status'] = '';
        }

        if (isset($this->request->post['variants'])) {
            $data['variants'] = $this->request->post['variants'];
        } elseif (!empty($variant_info)) {
            if($variant_info['setting']['variants']){
                $data['variants'] = $variant_info['setting']['variants'];
            }else{
                $data['variants'] = [
                    0 => []
                ];
            }
        } else {
            $data['variants'] = [
                0 => []
            ];
        }

        $this->response->setOutput($this->load->view('extension/module/alicom_product_variations_item', $data));
    }
    public function add(){
        $this->load->language('extension/module/alicom_product_variations');

        $this->document->setTitle($this->language->get('heading_title_item'));

        if ($this->request->server['REQUEST_METHOD'] == 'POST') {
            $this->load->model('extension/module/alicom_product_variations');
            $this->model_extension_module_alicom_product_variations->addVariant($this->request->post);

            $this->session->data['success'] = $this->language->get('text_success');

            $this->response->redirect($this->url->link('extension/module/alicom_product_variations', 'token=' . $this->session->data['token'], true));
        }

        $this->getForm();
    }
    public function edit(){
        $this->load->language('extension/module/alicom_product_variations');

        $this->document->setTitle($this->language->get('heading_title_item'));

        if ($this->request->server['REQUEST_METHOD'] == 'POST') {
            $this->load->model('extension/module/alicom_product_variations');
            $this->model_extension_module_alicom_product_variations->editVariant($this->request->get['variant_id'],$this->request->post);

            $this->session->data['success'] = $this->language->get('text_success');

            $this->response->redirect($this->url->link('extension/module/alicom_product_variations', 'token=' . $this->session->data['token'], true));
        }

        $this->getForm();
    }
    public function install(){
        $this->db->query("CREATE TABLE `" . DB_PREFIX . "alicomproductvariations_product` (
          `parent_id` int(11) NOT NULL,
          `product_id` int(10) UNSIGNED NOT NULL,
          `sort` int(10) UNSIGNED DEFAULT NULL,
          `type_id` int(11) NOT NULL DEFAULT '0'
        ) ENGINE=MyISAM DEFAULT CHARSET=utf8");

        $this->db->query("CREATE TABLE `" . DB_PREFIX . "alicomproductvariations_type` (
          `id` int(11) NOT NULL,
          `setting` text NOT NULL,
          `name` text,
          `description` text,
          `status` tinyint(1) DEFAULT NULL
        ) ENGINE=MyISAM DEFAULT CHARSET=utf8");

        $this->db->query("ALTER TABLE `" . DB_PREFIX . "alicomproductvariations_type` ADD PRIMARY KEY (`id`)");
        $this->db->query("ALTER TABLE `" . DB_PREFIX . "alicomproductvariations_type` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT");
        $this->db->query("ALTER TABLE `" . DB_PREFIX . "alicomproductvariations_product` ADD UNIQUE(`parent_id`, `product_id`, `type_id`);");
    }
    public function delete(){
        $this->db->query("DROP TABLE IF EXISTS `" . DB_PREFIX . "alicomproductvariations_product`");
        $this->db->query("DROP TABLE IF EXISTS `" . DB_PREFIX . "alicomproductvariations_type`");
    }


    // Get info
    private function curl($params, $url){
        $ch = curl_init($url . '?' . http_build_query($params));
        curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
        curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true);
        curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,30);
        curl_setopt($ch,CURLOPT_USERAGENT,'Bot 1.0');
        $return = curl_exec($ch);
        curl_close($ch);

        return json_decode($return);
    }

    private function getInformation($language_code = 'uk-ua'){
        $url = 'license.alicom.dp.ua/api/informations';
        $params = [
            'domain' => $_SERVER['HTTP_HOST'],
            'code' => 'alicom_product_variations',
            'language' => $language_code
        ];

        return $this->curl($params, $url);
    }
}

Function Calls

None

Variables

None

Stats

MD5 05b7773b5fda9cc7b877e5f77279234c
Eval Count 0
Decode Time 70 ms