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 /********************************************************/ /* @copyright OCTemplat..
Decoded Output download
<?php
/********************************************************/
/* @copyright OCTemplates 2015-2022 */
/* @support https://octemplates.net/ */
/* @license LICENSE.txt */
/********************************************************/
class ControllerExtensionThemeOCTReMarket extends Controller {
private $error = [];
private $gretret = [];
private $oct_theme = 'oct_remarket';
private $version = '1.2.1';
public function index() {
$this->load->language('octemplates/theme/'. $this->oct_theme);
$oct_models = [
'setting/setting',
'catalog/category',
'localisation/language',
'catalog/information',
'tool/image',
'setting/store',
'customer/customer_group',
'octemplates/main/oct_settings',
];
$oct_styles = [
'view/javascript/octemplates/codemirror/lib/codemirror.css',
'view/javascript/summernote/summernote.css',
'view/javascript/octemplates/spectrum/spectrum.css',
'view/stylesheet/'. $this->oct_theme .'.css',
];
$oct_scripts = [
'view/javascript/octemplates/bootstrap-notify/bootstrap-notify.min.js',
'view/javascript/octemplates/codemirror/lib/codemirror.js',
'view/javascript/octemplates/codemirror/mode/javascript/javascript.js',
'view/javascript/octemplates/codemirror/mode/css/css.js',
'view/javascript/summernote/summernote.js',
'view/javascript/summernote/summernote-image-attributes.js',
'view/javascript/summernote/opencart.js',
'view/javascript/octemplates/spectrum/spectrum.js',
'view/javascript/octemplates/oct_main.js',
];
$oct_error_data = [
'warning',
'license',
'product_limit',
'product_description_length',
'image_category',
'image_sub_category',
'image_thumb',
'image_popup',
'image_product',
'image_manufacturer',
'image_additional',
'image_related',
'image_compare',
'image_wishlist',
'image_cart',
'image_location',
];
foreach ($oct_models as $oct_model) {
$this->load->model($oct_model);
}
foreach ($oct_styles as $oct_style) {
$this->document->addStyle($oct_style);
}
foreach ($oct_scripts as $oct_script) {
$this->document->addScript($oct_script);
}
$store_id = isset($this->request->get['store_id']) ? $this->request->get['store_id'] : 0;
if (isset($this->request->get['store_id']) && $this->request->get['store_id']) {
$this->load->model('setting/store');
$store = $this->model_setting_store->getStore($this->request->get['store_id']);
$data['heading_title'] = $theme_title = $this->language->get('heading_title') . ' ('. $store['name'] .')';
$this->document->setTitle($this->language->get('heading_title'));
} else {
$data['heading_title'] = $theme_title = $this->language->get('heading_title') . ' ('. $this->config->get('config_name') .')';
$this->document->setTitle($theme_title);
}
if(($this->{$this->_1481607973(0)}->{$this->_1481607973(1)}[$this->_1481607973(2)]==$this->_1481607973(3))&&$this->{$this->_1908729617(0)}()){if(isset($this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(5)])&&!empty($this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(5)])){$this->{$this->_1481607973(6)}->{$this->_1481607973(7)}($this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(5)]);unset($this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(5)]);}else{$this->{$this->_1481607973(6)}->{$this->_1481607973(7)}([]);}if(isset($this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(8)])&&!empty($this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(8)])){$this->{$this->_1481607973(6)}->{$this->_1481607973(9)}($this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(8)]);unset($this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(8)]);}else{$this->{$this->_1481607973(6)}->{$this->_1481607973(9)}([]);}$this->{$this->_1481607973(10)}->{$this->_1481607973(11)}($this->_1481607973(12).$this->{$this->_1481607973(13)},$this->{$this->_1481607973(0)}->{$this->_1481607973(4)},$this->{$this->_1481607973(0)}->{$this->_1481607973(15)}[$this->_1481607973(16)]);$this->generateCss($this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.$this->_1481607973(14)],$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_css_code'],$store_id);$this->{$this->_1481607973(24)}->{$this->_1481607973(17)}['success']=$this->{$this->_1314128468(4)}->{$this->_1481607973(15)}($this->_2074209311(2));$this->{$this->_2074209311(3)}->{$this->_2074209311(4)}($this->{$this->_2074209311(5)}->{$this->_2074209311(6)}($this->_1481607973(18).$this->{$this->_1481607973(13)},$this->_1481607973(23).'='.$this->{$this->_1481607973(24)}->{$this->_1481607973(17)}[$this->_1481607973(23)].'&'.$this->_1481607973(16).'='.$this->{$this->_1481607973(0)}->{$this->_1481607973(15)}[$this->_1481607973(16)],true));}
foreach ($oct_error_data as $error) {
if (isset($this->error[$error])) {
$data['error_'.$error] = $this->error[$error];
} else {
$data['error_'.$error] = '';
}
}
if (isset($this->session->data['success'])) {
$data['success'] = $this->session->data['success'];
unset($this->session->data['success']);
} else {
$data['success'] = '';
}
$data['breadcrumbs'] = [];
$data['breadcrumbs'][] = [
'text' => $this->language->get('text_home'),
'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true)
];
$data['breadcrumbs'][] = [
'text' => $this->language->get('text_extension'),
'href' => $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=theme', true)
];
$data['breadcrumbs'][] = [
'text' => $this->language->get('heading_title'),
'href' => $this->url->link('extension/theme/'. $this->oct_theme, 'user_token=' . $this->session->data['user_token'] . '&store_id=' . $this->request->get['store_id'], true)
];
$data['action'] = $this->url->link('extension/theme/'. $this->oct_theme, 'user_token=' . $this->session->data['user_token'] . '&store_id=' . $this->request->get['store_id'], true);
$data['cache_delete'] = $this->url->link('extension/theme/'. $this->oct_theme .'/cacheDelete', 'user_token=' . $this->session->data['user_token'] . '&store_id=' . $this->request->get['store_id'], true);
$data['clear_modification'] = $this->url->link('extension/theme/'. $this->oct_theme .'/refresh', 'user_token=' . $this->session->data['user_token'] . '&store_id=' . $this->request->get['store_id'], true);
$data['cancel'] = $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=theme', true);
if (file_exists(DIR_SYSTEM ."library/octemplates/quickstart/". $this->oct_theme .".sql") || file_exists(DIR_SYSTEM ."library/octemplates/quickstart/". $this->oct_theme .".json")) {
$data['quick_start'] = $this->url->link('extension/theme/'. $this->oct_theme .'/octQuickStart', 'user_token=' . $this->session->data['user_token'] . '&store_id=' . $this->request->get['store_id'], true);
}
if (isset($this->request->get['store_id']) && ($this->request->server['REQUEST_METHOD'] != 'POST')) {
$setting_info = $this->model_setting_setting->getSetting('theme_'. $this->oct_theme, $this->request->get['store_id']);
}
$data['user_token'] = $this->session->data['user_token'];
$data['store_id'] = $store_id;
$data['languages'] = $this->model_localisation_language->getLanguages();
$data['theme_'. $this->oct_theme .'_directory'] = $this->oct_theme;
foreach ($this->octSettings() as $config) {
if (isset($this->request->post[$config])) {
$data[$config] = $this->request->post[$config];
} elseif (isset($setting_info[$config])) {
$data[$config] = $setting_info[$config];
} else {
$data[$config] = $this->config->get($config);
}
}
$data['update'] = false;
$data['hasblog'] = $this->model_octemplates_main_oct_settings->checkIfTableExist(DB_PREFIX . 'oct_blogarticle_related_product') ? true : false;
if (!isset($data['theme_'. $this->oct_theme .'_version']) || $data['theme_'. $this->oct_theme .'_version'] != $this->version) {
$data['update'] = $this->url->link('extension/theme/'. $this->oct_theme .'/update', 'user_token=' . $this->session->data['user_token'] . '&type=theme' . '&store_id=' . $this->request->get['store_id'], true);
}
if (isset($data['theme_'. $this->oct_theme .'_lazyload_image']) && !empty($data['theme_'. $this->oct_theme .'_lazyload_image']) && file_exists(DIR_IMAGE.$data['theme_'. $this->oct_theme .'_lazyload_image'])) {
$data['image_lazy'] = $data['theme_'. $this->oct_theme .'_lazyload_image'];
$data['thumb_lazy'] = $this->model_tool_image->resize($data['theme_'. $this->oct_theme .'_lazyload_image'], 30, 30);
} else {
$data['image_lazy'] = '';
$data['thumb_lazy'] = $this->model_tool_image->resize('no_image.png', 30, 30);
}
if (isset($data['theme_'. $this->oct_theme .'_data']['payments']['customers']) && !empty($data['theme_'. $this->oct_theme .'_data']['payments']['customers'])) {
foreach ($data['theme_'. $this->oct_theme .'_data']['payments']['customers'] as $key => $img) {
if (isset($img['image']) && !empty($img['image']) && file_exists(DIR_IMAGE.$img['image'])) {
$data['theme_'. $this->oct_theme .'_data']['payments']['customers'][$key]['thumb_image'] = $this->model_tool_image->resize($img['image'], 52, 32);
} else {
$data['theme_'. $this->oct_theme .'_data']['payments']['customers'][$key]['thumb_image'] = $this->model_tool_image->resize('no_image.png', 52, 32);
}
}
}
if (isset($data['theme_'. $this->oct_theme .'_data']['contact_image']) && !empty($data['theme_'. $this->oct_theme .'_data']['contact_image']) && file_exists(DIR_IMAGE.$data['theme_'. $this->oct_theme .'_data']['contact_image'])) {
$data['contact_image_thumb'] = $this->model_tool_image->resize($data['theme_'. $this->oct_theme .'_data']['contact_image'], 100, 100);
} else {
$data['contact_image_thumb'] = $this->model_tool_image->resize('no_image.png', 100, 100);
}
$data['placeholder'] = $this->model_tool_image->resize('no_image.png', 30, 30);
$data['contact_placeholder'] = $this->model_tool_image->resize('no_image.png', 100, 100);
$data['links_categories'] = [];
if (isset($data['theme_'. $this->oct_theme .'_data']['footer_category_links']) && !empty($data['theme_'. $this->oct_theme .'_data']['footer_category_links'])) {
foreach ($data['theme_'. $this->oct_theme .'_data']['footer_category_links'] as $category_id) {
$category_info = $this->model_catalog_category->getCategory($category_id);
if ($category_info) {
$data['links_categories'][] = [
'category_id' => $category_info['category_id'],
'name' => ($category_info['path']) ? $category_info['path'] . ' > ' . $category_info['name'] : $category_info['name']
];
}
}
}
$data['oct_locations'] = $this->model_octemplates_main_oct_settings->getOCTLocations();
$data['oct_megamenu'] = $this->model_octemplates_main_oct_settings->getMenuItems();
$header_links = [];
if (isset($data['theme_'. $this->oct_theme .'_data']['header_information_links']) && !empty($data['theme_'. $this->oct_theme .'_data']['header_information_links'])) {
foreach ($data['theme_'. $this->oct_theme .'_data']['header_information_links'] as $key=>$information_id) {
$information_info = $this->model_catalog_information->getInformation($information_id);
if ($information_info) {
$information_desc = $this->model_catalog_information->getInformationDescriptions($information_id);
$information_href = $this->model_catalog_information->getInformationSeoUrls($information_id);
foreach ($data['languages'] as $langs) {
$header_links[$key][$langs['language_id']]['title'] = $information_desc[$langs['language_id']]['title'];
$header_links[$key][$langs['language_id']]['link'] = !empty($information_href) ? '/'. $information_href[$store_id][$langs['language_id']] : '/index.php?route=information/information&information_id='.$information_id;
}
}
}
}
if (!empty($header_links)) {
$data['theme_'. $this->oct_theme .'_data']['header_links'] = $header_links;
}
$footer_links = [];
if (isset($data['theme_'. $this->oct_theme .'_data']['footer_information_links']) && !empty($data['theme_'. $this->oct_theme .'_data']['footer_information_links'])) {
foreach ($data['theme_'. $this->oct_theme .'_data']['footer_information_links'] as $key=>$information_id) {
$information_info = $this->model_catalog_information->getInformation($information_id);
if ($information_info) {
$information_desc = $this->model_catalog_information->getInformationDescriptions($information_id);
$information_href = $this->model_catalog_information->getInformationSeoUrls($information_id);
foreach ($data['languages'] as $langs) {
$footer_links[$key][$langs['language_id']]['title'] = $information_desc[$langs['language_id']]['title'];
$footer_links[$key][$langs['language_id']]['link'] = !empty($information_href) ? '/'. $information_href[$store_id][$langs['language_id']] : '/index.php?route=information/information&information_id='.$information_id;
}
}
}
}
if (!empty($footer_links)) {
$data['theme_'. $this->oct_theme .'_data']['footer_links'] = $footer_links;
}
$mobile_links = [];
if (isset($data['theme_'. $this->oct_theme .'_data']['mobile_information_links']) && !empty($data['theme_'. $this->oct_theme .'_data']['mobile_information_links'])) {
foreach ($data['theme_'. $this->oct_theme .'_data']['mobile_information_links'] as $key=>$information_id) {
$information_info = $this->model_catalog_information->getInformation($information_id);
if ($information_info) {
$information_desc = $this->model_catalog_information->getInformationDescriptions($information_id);
$information_href = $this->model_catalog_information->getInformationSeoUrls($information_id);
foreach ($data['languages'] as $langs) {
$mobile_links[$key][$langs['language_id']]['title'] = $information_desc[$langs['language_id']]['title'];
$mobile_links[$key][$langs['language_id']]['link'] = !empty($information_href) ? '/'. $information_href[$store_id][$langs['language_id']] : '/index.php?route=information/information&information_id='.$information_id;
}
}
}
}
if (!empty($mobile_links)) {
$data['theme_'. $this->oct_theme .'_data']['mobile_links'] = $mobile_links;
}
if (!isset($data['theme_'. $this->oct_theme .'_image_logo_width']) || (isset($data['theme_'. $this->oct_theme .'_image_logo_width']) && empty($data['theme_'. $this->oct_theme .'_image_logo_width']))) {
$data['theme_'. $this->oct_theme .'_image_logo_width'] = 141;
}
if (!isset($data['theme_'. $this->oct_theme .'_image_logo_height']) || (isset($data['theme_'. $this->oct_theme .'_image_logo_height']) && empty($data['theme_'. $this->oct_theme .'_image_logo_height']))) {
$data['theme_'. $this->oct_theme .'_image_logo_height'] = 64;
}
$data['stores'][] = [
'store_id' => 0,
'name' => $this->language->get('text_default_theme'),
'href' => $this->url->link('extension/theme/'. $this->oct_theme, 'user_token=' . $this->session->data['user_token'] . '&store_id=0', true)
];
$stores = $this->model_setting_store->getStores();
foreach ($stores as $store) {
$store_info = $this->model_setting_setting->getSetting('theme_'. $this->oct_theme, $store['store_id']);
$data['stores'][] = [
'store_id' => $store['store_id'],
'name' => $store['name'],
'href' => $store_info ? $this->url->link('extension/theme/'. $this->oct_theme, 'user_token=' . $this->session->data['user_token'] . '&store_id=' . $store['store_id'], true) : $this->url->link('extension/theme/'. $this->oct_theme .'/installStore', 'user_token=' . $this->session->data['user_token'] . '&store_id=' . $store['store_id'], true)
];
}
$data['customer_groups'] = [];
$filter_data = [
'sort' => 'cgd.name',
'order' => 'ASC',
'start' => 0,
'limit' => 100000
];
$results = $this->model_customer_customer_group->getCustomerGroups($filter_data);
foreach ($results as $result) {
$data['customer_groups'][] = array(
'customer_group_id' => $result['customer_group_id'],
'name' => $result['name']
);
}
$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('octemplates/theme/'. $this->oct_theme, $data));
}
public function installStore() {
$this->load->language('octemplates/theme/'. $this->oct_theme);
$this->load->model('setting/setting');
$store_id = isset($this->request->get['store_id']) ? $this->request->get['store_id'] : 0;
$store_info = $this->model_setting_setting->getSetting('theme_'. $this->oct_theme, $store_id);
if ($store_info) {
$this->response->redirect($this->url->link('extension/theme/'. $this->oct_theme, 'user_token=' . $this->session->data['user_token'] . '&store_id=' . $store_id, true));
} else {
$setting_info = $this->model_setting_setting->getSetting('theme_'. $this->oct_theme, 0);
$data['theme_'. $this->oct_theme .'_directory'] = $this->oct_theme;
foreach ($this->octSettings() as $config) {
if (isset($setting_info[$config])) {
$data[$config] = $setting_info[$config];
} else {
$data[$config] = $this->config->get($config);
}
}
$this->model_setting_setting->editSetting('theme_'. $this->oct_theme, $this->request->post, $this->request->get['store_id']);
$this->generateCss($this->request->post['theme_'. $this->oct_theme .'_data_colors'], $this->request->post['theme_'. $this->oct_theme .'_data_colors'], $store_id);
$this->session->data['success'] = $this->language->get('text_success');
$this->response->redirect($this->url->link('extension/theme/'. $this->oct_theme, 'user_token=' . $this->session->data['user_token'] . '&store_id='. $store_id, true));
}
}
public function getIcons() {
if (isset($this->request->server['HTTP_X_REQUESTED_WITH']) && !empty($this->request->server['HTTP_X_REQUESTED_WITH']) && strtolower($this->request->server['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
$data = [];
if (isset($this->request->get['icone_id']) && isset($this->request->get['input_id'])) {
$this->load->model('octemplates/main/oct_settings');
$data['icone_id'] = $this->request->get['icone_id'];
$data['input_id'] = $this->request->get['input_id'];
$data['fa_icons'] = $this->model_octemplates_main_oct_settings->faIcons();
$this->response->setOutput($this->load->view('octemplates/oct_icons', $data));
}
}
}
private function generateCss($data, $css_code, $store_id) {
$css = '';
if (isset($data['main_color']) && !empty($data['main_color'])) {
$css .= "#rm_fixed_contact_button, .rm-fixed-contact-pulsation, .rm-header-cart-quantity, .rm-news-item-date, .oct-fixed-bar-quantity-cart, .rm-slideshow-plus .slick-dots li.slick-active button, .rm-slideshow-plus .slick-dots li:hover button, .rm-day-discounts .slick-dots li.slick-active button, .rm-day-discounts .slick-dots li:hover button, .rm-product-tabs .nav-link.active:before, .radio-box::after, .rm-product-images-main .slick-dots li.slick-active button {background:". $data['main_color'] .";}".PHP_EOL;
$css .= "@media (min-width: 1200px){.rm-account-list-item:hover::before{background:". $data['main_color'] .";}}".PHP_EOL;
$css .= ".rm-product-top-button:hover, .oct-fixed-bar-item:hover {background:". $data['main_color'] .";}".PHP_EOL;
$css .= ".rm-module-header span, .rm-product-top-button:hover {border-color:". $data['main_color'] .";}".PHP_EOL;
}
if (isset($data['fon_color']) && !empty($data['fon_color'])) {
$css .= "body {background-color:". $data['fon_color'] .";}".PHP_EOL;
}
if (isset($data['main_link_color']) && !empty($data['main_link_color'])) {
$css .= ".form-checkbox-group label a, .subcat-item:hover .subcat-item-title, .rm-content a, .blue-link, .blue-link:hover, .rm-category-wall-item:hover span, .rm-promotional-product-item:hover a, #oct-menu-ul .group-title a, .rm-last-reviews-item:hover .rm-last-reviews-item-title, .rm-module-item:hover .rm-module-title > a, .rm-module-item:hover .rm-module-title > a:visited, .rm-news-item:hover .rm-news-item-title, .rm-livesearch-list-item-name a, .rm-fixed-contact-item:hover, .category-landing-links-item-link span, .modal-content a, .rm-manufacturer-item a:hover span, .table td a, .rm-alert-text a, .rm-day-discounts-item:hover a, .rm-header-phones-list-item:hover, .rm-header-location-phones a .rm-footer-phones-link, .rm-footer-mail-link, .rm-footer-mail-link:hover, .collapse-value > button, .collapse-value > button:focus, .collapse-value > button:active, .collapse-value > button:active:focus, .rm-product-advantages-item:hover .rm-product-advantages-item-title, .rm-contact-location a, .rm-breadcrumb-item a, .rm-account-list-item:hover a, .rm-menu-list-item:hover > div:first-child .rm-menu-list-item-link, .rm-menu-list-item.active > div:first-child .rm-menu-list-item-link, .rm-footer-phones-link, .rm-footer-phones-link:hover {color:". $data['main_link_color'] .";}".PHP_EOL;
}
if (isset($data['button_color_main']) && !empty($data['button_color_main'])) {
$css .= ".rm-btn.primary, button[data-target=\"#ocfilter-hidden-options\"], #ocfilter .btn-primary, #ocfilter .btn-primary:active, #ocfilter .btn-primary:focus, .simplecheckout-cart-buttons .button:hover, .simplecheckout-button-right .button:hover, #simplecheckout_button_login:hover, .pagination li.active span, .pagination li:hover a, #rm_livesearch_close, .simplecheckout-cart-buttons .button, .rm-header-location.active .rm-btn, #rm_mobile_menu_button, .rm-sidebar #rm_mobile_menu_toggle_button:before, .rm-btn.secondary:hover, .rm-btn.dark:hover {background-color:". $data['button_color_main'] .";}".PHP_EOL;
$css .= "@media (min-width: 1200px){.rm-btn.secondary:hover, .rm-btn.dark:hover, .rm-module-item:hover .rm-cart-btn {background:". $data['button_color_main'] .";}}".PHP_EOL;
}
if (isset($data['button_color_text']) && !empty($data['button_color_text'])) {
$css .= ".rm-btn.primary, .rm-btn.primary .rm-btn-text {color:". $data['button_color_text'] .";}".PHP_EOL;
}
if (isset($data['button_fon_dark']) && !empty($data['button_fon_dark'])) {
$css .= ".rm-btn.dark {background-color:". $data['button_fon_dark'] .";}".PHP_EOL;
}
if (isset($data['button_text_dark']) && !empty($data['button_text_dark'])) {
$css .= ".rm-btn.dark, .rm-btn.dark .rm-btn-text {color:". $data['button_text_dark'] .";}".PHP_EOL;
}
if (isset($data['button_fon_light']) && !empty($data['button_fon_light'])) {
$css .= ".rm-btn.secondary {background-color:". $data['button_fon_light'] .";}".PHP_EOL;
}
if (isset($data['button_text_light']) && !empty($data['button_text_light'])) {
$css .= ".rm-btn.secondary, .rm-btn.secondary .rm-btn-text {color:". $data['button_text_light'] .";}".PHP_EOL;
}
if (isset($data['top_fon_color']) && !empty($data['top_fon_color'])) {
$css .= "#top {background:". $data['top_fon_color'] .";}".PHP_EOL;
}
if (isset($data['top_link_color']) && !empty($data['top_link_color'])) {
$css .= ".top-nav-info-list a, .top-nav-account-links-item a, .top-nav-account-links-item button, .top-nav-account-links-item > span {color:". $data['top_link_color'] ."!important;}".PHP_EOL;
}
if (isset($data['top_link_color_hover']) && !empty($data['top_link_color_hover'])) {
$css .= ".top-nav-info-list a:hover, #top .top-nav-account-links-item button:focus, .top-nav-account-links-item:hover > a, .top-nav-account-links-item button:hover, .top-nav-account-links-item:hover form > button, .top-nav li:hover > a, .top-nav-account-links-item > span:hover {color:". $data['top_link_color_hover'] ." !important;}".PHP_EOL;
$css .= ".top-nav .rm-dropdown-box:hover .rm-dropdown-toggle::after {background:". $data['top_link_color_hover'] ." !important;}".PHP_EOL;
}
if (isset($data['footer_fon_color']) && !empty($data['footer_fon_color'])) {
$css .= ".rm-footer {background-color:". $data['footer_fon_color'] .";}".PHP_EOL;
}
if (isset($data['footer_text_color']) && !empty($data['footer_text_color'])) {
$css .= ".rm-footer-text, .rm-footer-credits {color:". $data['footer_text_color'] .";}".PHP_EOL;
}
if (isset($data['footer_link_color']) && !empty($data['footer_link_color'])) {
$css .= ".rm-footer-phones, .rm-footer-links-list a {color:". $data['footer_link_color'] .";}".PHP_EOL;
}
if (isset($data['footer_link_hover_color']) && !empty($data['footer_link_hover_color'])) {
$css .= ".rm-footer-phones a:hover, .rm-footer-links-list a:hover {color:". $data['footer_link_hover_color'] .";}".PHP_EOL;
}
if (isset($data['category_module_fon_color']) && !empty($data['category_module_fon_color'])) {
$css .= ".rm-column-categories-item {background:". $data['category_module_fon_color'] .";}".PHP_EOL;
}
if (isset($data['category_module_link_color']) && !empty($data['category_module_link_color'])) {
$css .= ".rm-column-categories-item {color:". $data['category_module_link_color'] .";}".PHP_EOL;
}
if (isset($data['category_module_link_hover_color']) && !empty($data['category_module_link_hover_color'])) {
$css .= ".rm-column-categories-item.active > span, .rm-column-categories-item .rm-categories-3 .active, .rm-column-categories-item a:hover {color:". $data['category_module_link_hover_color'] .";}".PHP_EOL;
}
if (isset($data['modal_fon_title_color']) && !empty($data['modal_fon_title_color'])) {
$css .= ".modal-header {background:". $data['modal_fon_title_color'] .";}".PHP_EOL;
}
if (isset($data['modal_text_title_color']) && !empty($data['modal_text_title_color'])) {
$css .= ".modal-title {color:". $data['modal_text_title_color'] .";}".PHP_EOL;
}
if (isset($data['modal_fon_icon_color']) && !empty($data['modal_fon_icon_color'])) {
$css .= ".modal-close-icon {background-color:". $data['modal_fon_icon_color'] .";}".PHP_EOL;
}
if (isset($data['mobile_fon_top_color']) && !empty($data['mobile_fon_top_color'])) {
$css .= "#rm_mobile_nav {background:". $data['mobile_fon_top_color'] .";}".PHP_EOL;
}
if (!isset($data['compare'])) {
$css .= ".oct-fixed-bar-item-compare, .rm-module-buttons-item.compare, .rm-product-top-button-compare, .rm-btn.compare, #rm_mobile_compare {display: none!important;}".PHP_EOL;
}
if (!isset($data['wishlist'])) {
$css .= ".oct-fixed-bar-item-wishlist, .rm-module-buttons-item.wishlist, .rm-product-top-button-wishlist, .rm-btn.wishlist, #rm_mobile_wishlist {display: none!important;}".PHP_EOL;
}
if (!empty($css_code)) {
$css .= html_entity_decode($css_code, ENT_QUOTES, 'UTF-8');
}
file_put_contents(DIR_CATALOG . 'view/theme/'. $this->oct_theme .'/stylesheet/dynamic_stylesheet_'. $store_id .'.css', $css);
}
public function cacheDelete() {
if ($this->validateModification()) {
$this->load->language('octemplates/theme/'. $this->oct_theme);
$maintenance = $this->config->get('config_maintenance');
$this->load->model('setting/setting');
$this->cache->delete('octemplates');
$this->model_setting_setting->editSettingValue('config', 'config_maintenance', true);
if (isset($this->request->get['store_id'])) {
$store_id = $this->request->get['store_id'];
} else {
$store_id = 0;
}
$setting_info = $this->model_setting_setting->getSetting('theme_'. $this->oct_theme, $store_id);
$oct_colors = isset($setting_info['theme_'. $this->oct_theme .'_data_colors']) && !empty($setting_info['theme_'. $this->oct_theme .'_data_colors']) ? $setting_info['theme_'. $this->oct_theme .'_data_colors'] : [];
$oct_css_code = isset($setting_info['theme_'. $this->oct_theme .'_css_code']) && !empty($setting_info['theme_'. $this->oct_theme .'_css_code']) ? $setting_info['theme_'. $this->oct_theme .'_css_code'] : '';
$this->generateCss($oct_colors, $oct_css_code, $store_id);
if (is_dir($this->request->server['DOCUMENT_ROOT'] . '/min/cache/')) {
$this->delTree($this->request->server['DOCUMENT_ROOT'] . '/min/cache/');
}
$this->delTree(DIR_CACHE);
if (!file_exists(DIR_CACHE)) {
mkdir(DIR_CACHE);
$addindexf = fopen(DIR_CACHE .'index.html', 'w');
fclose($addindexf);
}
$this->session->data['success'] = $this->language->get('text_success_cache');
// Maintance mode back to original settings
$this->model_setting_setting->editSettingValue('config', 'config_maintenance', $maintenance);
}
$this->response->redirect($this->url->link('extension/theme/'. $this->oct_theme, 'user_token=' . $this->session->data['user_token'] . '&store_id='.$this->request->get['store_id'], true));
}
private function delTree($dir) {
$files = array_diff(scandir($dir), ['.','..']);
foreach ($files as $file) {
(is_dir("$dir/$file")) ? $this->delTree("$dir/$file") : unlink("$dir/$file");
}
return rmdir($dir);
}
public function refresh($reload = true) {
$this->load->language('marketplace/modification');
$this->load->model('setting/modification');
if ($this->validateModification()) {
// Just before files are deleted, if config settings say maintenance mode is off then turn it on
$maintenance = $this->config->get('config_maintenance');
$this->load->model('setting/setting');
$this->model_setting_setting->editSettingValue('config', 'config_maintenance', true);
//Log
$log = [];
// Clear all modification files
$files = [];
// Make path into an array
$path = [DIR_MODIFICATION . '*'];
// While the path array is still populated keep looping through
while (count($path) != 0) {
$next = array_shift($path);
foreach (glob($next) as $file) {
// If directory add to path array
if (is_dir($file)) {
$path[] = $file . '/*';
}
// Add the file to the files to be deleted array
$files[] = $file;
}
}
// Reverse sort the file array
rsort($files);
// Clear all modification files
foreach ($files as $file) {
if ($file != DIR_MODIFICATION . 'index.html') {
// If file just delete
if (is_file($file)) {
unlink($file);
// If directory use the remove directory function
} elseif (is_dir($file)) {
rmdir($file);
}
}
}
// Begin
$xml = [];
// Load the default modification XML
$xml[] = file_get_contents(DIR_SYSTEM . 'modification.xml');
// This is purly for developers so they can run mods directly and have them run without upload after each change.
$files = glob(DIR_SYSTEM . '*.ocmod.xml');
if ($files) {
foreach ($files as $file) {
$xml[] = file_get_contents($file);
}
}
// Get the default modification file
$results = $this->model_setting_modification->getModifications();
foreach ($results as $result) {
if ($result['status']) {
$xml[] = $result['xml'];
}
}
$modification = [];
foreach ($xml as $xml) {
if (empty($xml)){
continue;
}
$dom = new DOMDocument('1.0', 'UTF-8');
$dom->preserveWhiteSpace = false;
$dom->loadXml($xml);
// Log
$log[] = 'MOD: ' . $dom->getElementsByTagName('name')->item(0)->textContent;
// Wipe the past modification store in the backup array
$recovery = [];
// Set the a recovery of the modification code in case we need to use it if an abort attribute is used.
if (isset($modification)) {
$recovery = $modification;
}
$files = $dom->getElementsByTagName('modification')->item(0)->getElementsByTagName('file');
foreach ($files as $file) {
$operations = $file->getElementsByTagName('operation');
$files = explode('|', $file->getAttribute('path'));
foreach ($files as $file) {
$path = '';
// Get the full path of the files that are going to be used for modification
if ((substr($file, 0, 7) == 'catalog')) {
$path = DIR_CATALOG . substr($file, 8);
}
if ((substr($file, 0, 5) == 'admin')) {
$path = DIR_APPLICATION . substr($file, 6);
}
if ((substr($file, 0, 6) == 'system')) {
$path = DIR_SYSTEM . substr($file, 7);
}
if ($path) {
$files = glob($path, GLOB_BRACE);
if ($files) {
foreach ($files as $file) {
// Get the key to be used for the modification cache filename.
if (substr($file, 0, strlen(DIR_CATALOG)) == DIR_CATALOG) {
$key = 'catalog/' . substr($file, strlen(DIR_CATALOG));
}
if (substr($file, 0, strlen(DIR_APPLICATION)) == DIR_APPLICATION) {
$key = 'admin/' . substr($file, strlen(DIR_APPLICATION));
}
if (substr($file, 0, strlen(DIR_SYSTEM)) == DIR_SYSTEM) {
$key = 'system/' . substr($file, strlen(DIR_SYSTEM));
}
// If file contents is not already in the modification array we need to load it.
if (!isset($modification[$key])) {
$content = file_get_contents($file);
$modification[$key] = preg_replace('~
?
~', "
", $content);
$original[$key] = preg_replace('~
?
~', "
", $content);
// Log
$log[] = PHP_EOL . 'FILE: ' . $key;
}
foreach ($operations as $operation) {
$error = $operation->getAttribute('error');
// Ignoreif
$ignoreif = $operation->getElementsByTagName('ignoreif')->item(0);
if ($ignoreif) {
if ($ignoreif->getAttribute('regex') != 'true') {
if (strpos($modification[$key], $ignoreif->textContent) !== false) {
continue;
}
} else {
if (preg_match($ignoreif->textContent, $modification[$key])) {
continue;
}
}
}
$status = false;
// Search and replace
if ($operation->getElementsByTagName('search')->item(0)->getAttribute('regex') != 'true') {
// Search
$search = $operation->getElementsByTagName('search')->item(0)->textContent;
$trim = $operation->getElementsByTagName('search')->item(0)->getAttribute('trim');
$index = $operation->getElementsByTagName('search')->item(0)->getAttribute('index');
// Trim line if no trim attribute is set or is set to true.
if (!$trim || $trim == 'true') {
$search = trim($search);
}
// Add
$add = $operation->getElementsByTagName('add')->item(0)->textContent;
$trim = $operation->getElementsByTagName('add')->item(0)->getAttribute('trim');
$position = $operation->getElementsByTagName('add')->item(0)->getAttribute('position');
$offset = $operation->getElementsByTagName('add')->item(0)->getAttribute('offset');
if ($offset == '') {
$offset = 0;
}
// Trim line if is set to true.
if ($trim == 'true') {
$add = trim($add);
}
// Log
$log[] = 'CODE: ' . $search;
// Check if using indexes
if ($index !== '') {
$indexes = explode(',', $index);
} else {
$indexes = [];
}
// Get all the matches
$i = 0;
$lines = explode("
", $modification[$key]);
for ($line_id = 0; $line_id < count($lines); $line_id++) {
$line = $lines[$line_id];
// Status
$match = false;
// Check to see if the line matches the search code.
if (stripos($line, $search) !== false) {
// If indexes are not used then just set the found status to true.
if (!$indexes) {
$match = true;
} elseif (in_array($i, $indexes)) {
$match = true;
}
$i++;
}
// Now for replacing or adding to the matched elements
if ($match) {
switch ($position) {
default:
case 'replace':
$new_lines = explode("
", $add);
if ($offset < 0) {
array_splice($lines, $line_id + $offset, abs($offset) + 1, [str_replace($search, $add, $line)]);
$line_id -= $offset;
} else {
array_splice($lines, $line_id, $offset + 1, [str_replace($search, $add, $line)]);
}
break;
case 'before':
$new_lines = explode("
", $add);
array_splice($lines, $line_id - $offset, 0, $new_lines);
$line_id += count($new_lines);
break;
case 'after':
$new_lines = explode("
", $add);
array_splice($lines, ($line_id + 1) + $offset, 0, $new_lines);
$line_id += count($new_lines);
break;
}
// Log
$log[] = 'LINE: ' . $line_id;
$status = true;
}
}
$modification[$key] = implode("
", $lines);
} else {
$search = trim($operation->getElementsByTagName('search')->item(0)->textContent);
$limit = $operation->getElementsByTagName('search')->item(0)->getAttribute('limit');
$replace = trim($operation->getElementsByTagName('add')->item(0)->textContent);
// Limit
if (!$limit) {
$limit = -1;
}
// Log
$match = [];
preg_match_all($search, $modification[$key], $match, PREG_OFFSET_CAPTURE);
// Remove part of the the result if a limit is set.
if ($limit > 0) {
$match[0] = array_slice($match[0], 0, $limit);
}
if ($match[0]) {
$log[] = 'REGEX: ' . $search;
for ($i = 0; $i < count($match[0]); $i++) {
$log[] = 'LINE: ' . (substr_count(substr($modification[$key], 0, $match[0][$i][1]), "
") + 1);
}
$status = true;
}
// Make the modification
$modification[$key] = preg_replace($search, $replace, $modification[$key], $limit);
}
if (!$status) {
// Abort applying this modification completely.
if ($error == 'abort') {
$modification = $recovery;
// Log
$log[] = 'NOT FOUND - ABORTING!';
break 5;
}
// Skip current operation or break
elseif ($error == 'skip') {
// Log
$log[] = 'NOT FOUND - OPERATION SKIPPED!';
continue;
}
// Break current operations
else {
// Log
$log[] = 'NOT FOUND - OPERATIONS ABORTED!';
break;
}
}
}
}
}
}
}
}
// Log
$log[] = '----------------------------------------------------------------';
}
// Log
$ocmod = new Log('ocmod.log');
$ocmod->write(implode("
", $log));
// Write all modification files
foreach ($modification as $key => $value) {
// Only create a file if there are changes
if ($original[$key] != $value) {
$path = '';
$directories = explode('/', dirname($key));
foreach ($directories as $directory) {
$path = $path . '/' . $directory;
if (!is_dir(DIR_MODIFICATION . $path)) {
@mkdir(DIR_MODIFICATION . $path, 0777);
}
}
$handle = fopen(DIR_MODIFICATION . $key, 'w');
fwrite($handle, $value);
fclose($handle);
}
}
// Maintance mode back to original settings
$this->model_setting_setting->editSettingValue('config', 'config_maintenance', $maintenance);
// Do not return success message if refresh() was called with $data
$this->session->data['success'] = $this->language->get('text_success');
$handle = fopen(DIR_LOGS . 'ocmod.log', 'w+');
fclose($handle);
$url = '';
if (isset($this->request->get['store_id'])) {
$url .= '&store_id=' . $this->request->get['store_id'];
} else {
$url .= '&store_id=0';
}
if ($reload) {
$this->response->redirect($this->url->link('extension/theme/'. $this->oct_theme, 'user_token=' . $this->session->data['user_token'] . '&type=theme' . $url, true));
}
}
}
public function update() {
if (isset($this->request->get['store_id'])) {
$url = '&store_id=' . $this->request->get['store_id'];
$store_id = $this->request->get['store_id'];
} else {
$url = '&store_id=0';
$store_id = 0;
}
$this->load->model('setting/setting');
$this->load->model('setting/store');
$this->load->model('localisation/language');
$this->load->model('octemplates/main/oct_settings');
$stores = $this->model_setting_store->getStores();
if ($stores) {
$this->model_setting_setting->editSettingValue('theme_'. $this->oct_theme, 'theme_'. $this->oct_theme .'_version', $this->version, 0);
foreach ($stores as $store) {
$this->model_setting_setting->editSettingValue('theme_'. $this->oct_theme, 'theme_'. $this->oct_theme .'_version', $this->version, $store['store_id']);
}
} else {
$this->model_setting_setting->editSettingValue('theme_'. $this->oct_theme, 'theme_'. $this->oct_theme .'_version', $this->version, $store_id);
}
$oct_slideshow_plus_image = $this->model_octemplates_main_oct_settings->checkTypeColumn(DB_PREFIX . 'oct_slideshow_plus_image', 'image');
if ($oct_slideshow_plus_image && $oct_slideshow_plus_image == 'varchar') {
$this->load->model('octemplates/design/oct_slideshow_plus');
$this->model_octemplates_design_oct_slideshow_plus->updateTypeColumn();
$this->model_octemplates_design_oct_slideshow_plus->updateImages();
}
$this->refresh(false);
$this->cacheDelete();
$file = DIR_APPLICATION . 'view/stylesheet/bootstrap.css';
if (is_file($file) && is_file(DIR_APPLICATION . 'view/stylesheet/sass/_bootstrap.scss')) {
unlink($file);
}
$files = glob(DIR_CATALOG . 'view/theme/*/stylesheet/sass/_bootstrap.scss');
foreach ($files as $file) {
$file = substr($file, 0, -21) . '/bootstrap.css';
if (is_file($file)) {
file_put_contents($file, '');
unlink($file);
}
}
}
public function octSettings() {
return [
'theme_'. $this->oct_theme .'_status',
'theme_'. $this->oct_theme .'_version',
'theme_'. $this->oct_theme .'_license',
'theme_'. $this->oct_theme .'_scripts_in_footer',
'theme_'. $this->oct_theme .'_lazyload_desktop',
'theme_'. $this->oct_theme .'_lazyload_mobile',
'theme_'. $this->oct_theme .'_lazyload_tablet',
'theme_'. $this->oct_theme .'_lazyload_image',
'theme_'. $this->oct_theme .'_data_colors',
'theme_'. $this->oct_theme .'_css_code',
'theme_'. $this->oct_theme .'_js_code',
'theme_'. $this->oct_theme .'_webp',
'theme_'. $this->oct_theme .'_no_quantity_last',
'theme_'. $this->oct_theme .'_no_quantity_grayscale',
'theme_'. $this->oct_theme .'_sort_data',
'theme_'. $this->oct_theme .'_data',
'theme_'. $this->oct_theme .'_data_osucsess',
'theme_'. $this->oct_theme .'_data_atributes',
'theme_'. $this->oct_theme .'_data_cat_atr_limit',
'theme_'. $this->oct_theme .'_data_model',
'theme_'. $this->oct_theme .'_popup_cart_status',
'theme_'. $this->oct_theme .'_isPopup',
'theme_'. $this->oct_theme .'_data_pr_atr_limit',
'theme_'. $this->oct_theme .'_product_limit',
'theme_'. $this->oct_theme .'_product_description_length',
'theme_'. $this->oct_theme .'_image_logo_width',
'theme_'. $this->oct_theme .'_image_logo_height',
'theme_'. $this->oct_theme .'_image_category_width',
'theme_'. $this->oct_theme .'_image_category_height',
'theme_'. $this->oct_theme .'_image_sub_category_width',
'theme_'. $this->oct_theme .'_image_sub_category_height',
'theme_'. $this->oct_theme .'_image_thumb_width',
'theme_'. $this->oct_theme .'_image_thumb_height',
'theme_'. $this->oct_theme .'_image_popup_width',
'theme_'. $this->oct_theme .'_image_popup_height',
'theme_'. $this->oct_theme .'_image_product_width',
'theme_'. $this->oct_theme .'_image_product_height',
'theme_'. $this->oct_theme .'_image_manufacturer_width',
'theme_'. $this->oct_theme .'_image_manufacturer_height',
'theme_'. $this->oct_theme .'_image_additional_width',
'theme_'. $this->oct_theme .'_image_additional_height',
'theme_'. $this->oct_theme .'_image_related_width',
'theme_'. $this->oct_theme .'_image_related_height',
'theme_'. $this->oct_theme .'_image_compare_width',
'theme_'. $this->oct_theme .'_image_compare_height',
'theme_'. $this->oct_theme .'_image_wishlist_width',
'theme_'. $this->oct_theme .'_image_wishlist_height',
'theme_'. $this->oct_theme .'_image_cart_width',
'theme_'. $this->oct_theme .'_image_cart_height',
'theme_'. $this->oct_theme .'_image_location_width',
'theme_'. $this->oct_theme .'_image_location_height',
'theme_'. $this->oct_theme .'_alert_status',
'theme_'. $this->oct_theme .'_alert_data',
'theme_'. $this->oct_theme .'_bar_data',
'theme_'. $this->oct_theme .'_live_search_status',
'theme_'. $this->oct_theme .'_live_search_data',
'theme_'. $this->oct_theme .'_feedback_status',
'theme_'. $this->oct_theme .'_feedback_data',
'theme_'. $this->oct_theme .'_seo_title_status',
'theme_'. $this->oct_theme .'_seo_title_data',
'theme_'. $this->oct_theme .'_seo_url_status',
'theme_'. $this->oct_theme .'_seo_url_data',
];
}
public function install() {
$this->load->model('setting/setting');
$this->load->model('user/user_group');
$this->load->model('octemplates/main/oct_settings');
$this->load->model('octemplates/design/oct_banner_plus');
$this->load->model('octemplates/design/oct_slideshow_plus');
$this->load->model('octemplates/faq/oct_product_faq');
$this->model_user_user_group->addPermission($this->user->getGroupId(), 'access', 'extension/theme/'. $this->oct_theme);
$this->model_user_user_group->addPermission($this->user->getGroupId(), 'modify', 'extension/theme/'. $this->oct_theme);
$this->model_setting_setting->editSetting('theme_'. $this->oct_theme, [
'theme_'. $this->oct_theme .'_status' => 0,
'theme_'. $this->oct_theme .'_version' => $this->version,
'theme_'. $this->oct_theme .'_license' => '',
'theme_'. $this->oct_theme .'_directory' => $this->oct_theme,
'theme_'. $this->oct_theme .'_product_limit' => 24,
'theme_'. $this->oct_theme .'_product_description_length' => 250,
'theme_'. $this->oct_theme .'_image_sub_category_width' => 95,
'theme_'. $this->oct_theme .'_image_sub_category_height' => 95,
'theme_'. $this->oct_theme .'_image_logo_width' => 141,
'theme_'. $this->oct_theme .'_image_logo_height' => 64,
'theme_'. $this->oct_theme .'_image_category_width' => 80,
'theme_'. $this->oct_theme .'_image_category_height' => 80,
'theme_'. $this->oct_theme .'_image_manufacturer_width' => 90,
'theme_'. $this->oct_theme .'_image_manufacturer_height' => 80,
'theme_'. $this->oct_theme .'_image_thumb_width' => 700,
'theme_'. $this->oct_theme .'_image_thumb_height' => 700,
'theme_'. $this->oct_theme .'_image_popup_width' => 700,
'theme_'. $this->oct_theme .'_image_popup_height' => 700,
'theme_'. $this->oct_theme .'_image_product_width' => 228,
'theme_'. $this->oct_theme .'_image_product_height' => 228,
'theme_'. $this->oct_theme .'_image_additional_width' => 80,
'theme_'. $this->oct_theme .'_image_additional_height' => 80,
'theme_'. $this->oct_theme .'_image_related_width' => 228,
'theme_'. $this->oct_theme .'_image_related_height' => 228,
'theme_'. $this->oct_theme .'_image_compare_width' => 90,
'theme_'. $this->oct_theme .'_image_compare_height' => 90,
'theme_'. $this->oct_theme .'_image_wishlist_width' => 100,
'theme_'. $this->oct_theme .'_image_wishlist_height' => 100,
'theme_'. $this->oct_theme .'_image_cart_width' => 100,
'theme_'. $this->oct_theme .'_image_cart_height' => 100,
'theme_'. $this->oct_theme .'_image_location_width' => 360,
'theme_'. $this->oct_theme .'_image_location_height' => 320,
'theme_'. $this->oct_theme .'_scripts_in_footer' => 0,
'theme_'. $this->oct_theme .'_lazyload_desktop' => 1,
'theme_'. $this->oct_theme .'_lazyload_mobile' => 1,
'theme_'. $this->oct_theme .'_lazyload_tablet' => 1,
'theme_'. $this->oct_theme .'_data_pr_atr_limit' => 5,
'theme_'. $this->oct_theme .'_lazyload_image' => 'catalog/remarket/lazy-image.svg',
'theme_'. $this->oct_theme .'_css_code' => '',
'theme_'. $this->oct_theme .'_js_code' => '',
'theme_'. $this->oct_theme .'_webp' => 0,
'theme_'. $this->oct_theme .'_no_quantity_last' => 1,
'theme_'. $this->oct_theme .'_no_quantity_grayscale' => 1,
'theme_'. $this->oct_theme .'_data_atributes' => 0,
'theme_'. $this->oct_theme .'_data_cat_atr_limit' => 5,
'theme_'. $this->oct_theme .'_data_model' => 0,
'theme_'. $this->oct_theme .'_data_colors' => [
'main_color' => 'rgb(251, 145, 48)',
'main_link_color' => 'rgb(10, 120, 191)',
'fon_color' => 'rgb(249, 249, 252)',
'button_color_main' => 'rgb(251, 145, 48)',
'button_color_text' => 'rgb(255, 255, 255)',
'button_fon_dark' => 'rgb(101, 108, 125)',
'button_text_dark' => 'rgb(255, 255, 255)',
'button_fon_light' => 'rgb(233, 233, 233)',
'button_text_light' => 'rgb(39, 35, 35)',
'top_fon_color' => 'rgb(249, 249, 252)',
'top_link_color' => 'rgb(101, 108, 125)',
'top_link_color_hover' => 'rgb(10, 120, 191)',
'footer_fon_color' => 'rgb(255, 255, 255)',
'footer_text_color' => 'rgb(101, 108, 125)',
'footer_link_color' => 'rgb(101, 108, 125)',
'footer_link_hover_color' => 'rgb(10, 120, 191)',
'category_module_fon_color' => 'rgb(252, 252, 252)',
'category_module_link_color' => 'rgb(39, 35, 35)',
'category_module_link_hover_color' => 'rgb(10, 120, 191)',
'mobile_fon_top_color' => 'rgb(253, 253, 253)',
'modal_fon_title_color' => 'rgba(255, 255, 255, 0)',
'modal_text_title_color' => 'rgb(39, 35, 35)',
'modal_fon_icon_color' => 'rgb(119, 119, 119)',
'compare' => 1,
'wishlist' => 1,
],
'theme_'. $this->oct_theme .'_sort_data' => [
'deff_sort' => 'p.sort_order-ASC',
'sorts' => [
'p.sort_order-ASC',
'p.sort_order-DESC',
'pd.name-ASC',
'pd.name-DESC',
'p.price-ASC',
'p.price-DESC',
'p.model-ASC',
'p.model-DESC',
'p.quantity-ASC',
'p.quantity-DESC',
'p.viewed-ASC',
'p.viewed-DESC',
'p.date_added-ASC',
'p.date_added-DESC',
'rating-ASC',
'rating-DESC',
],
],
'theme_'. $this->oct_theme .'_data' => [
'minify' => 1,
'micro' => 1,
'open_graph' => 0,
'header_information_links' => [],
'header_account' => 1,
'header_cur' => 1,
'header_lang' => 1,
'header_menu' => 1,
'footer_totop' => 1,
'footer_subscribe' => 1,
'footer_link_contact' => 1,
'footer_link_return' => 1,
'footer_link_sitemap' => 1,
'footer_link_man' => 1,
'footer_link_cert' => 1,
'footer_link_partners' => 1,
'footer_link_specials' => 1,
'footer_information_links' => [],
'footer_category_links' => [],
'mobile_information_links' => [],
'mobile_menu' => [
'title' => [],
'st_cats' => 1,
't_cats' => 1,
'icon' => 1,
'brands' => 1,
'blog' => 1,
'links' => 1,
'time' => 1,
'address' => 1,
'languages' => 1,
'currency' => 1,
'phones' => 1,
'email' => 1,
'telegram' => 1,
'viber' => 1,
'skype' => 1,
'whatsapp' => 1,
'messenger' => 1,
],
'megamenu' => [
'status' => 1,
'dtitle' => [],
'dcategories' => 1,
'limit' => 0,
'icon' => 1,
'page' => 1,
'view' => 1,
'sort' => 1,
],
'contact_address' => [],
'contact_telephone' => $this->config->get('config_telephone'),
'contact_open' => [],
'contact_map' => '',
'contact_email' => $this->config->get('config_email'),
'contact_skype' => '',
'contact_whatsapp' => $this->config->get('config_telephone'),
'contact_viber' => $this->config->get('config_telephone'),
'contact_telegram' => $this->config->get('config_telephone'),
'contact_messenger' => '',
'contact_paymants' => [],
'contact_socials' => [],
'contact_image' => '',
'man_logo' => 1,
'contact_view_map' => 1,
'contact_view_locations' => 1,
'contact_view_socials' => 1,
'contact_view_time' => 1,
'contact_view_phone' => 1,
'contact_view_address' => 1,
'contact_view_html' => [],
'category_desc_position' => 'bottom',
'category_desc_up' => '0',
'category_desc_in_page' => 1,
'category_view_subcats' => 1,
'category_subcat_products' => 1,
'category_product_desc' => 1,
'category_cat_image' => 1,
'category_page' => 1,
'category_view_sort_oder' => 1,
'category_view_quantity' => 1,
'category_show_more' => 1,
'category_show_type' => '',
'product_dop_tab' => 0,
'product_dop_tab_title' => [],
'product_dop_tab_text' => [],
'product_js_button' => '',
'product_model' => 1,
'product_blog_related' => 0,
'product_gallery' => 0,
'product_zoom' => 0,
'product_faq' => 1,
'product_advantage' => 0,
'product_advantages' => [],
'product_atributes' => 1,
'preload_images' => 1,
'socials' => [
0 => [
'icone' => 'fab fa-facebook-f',
'link' => '',
'title' => 'Facebook'
],
1 => [
'icone' => 'fab fa-twitter',
'link' => '',
'title' => 'Twitter'
],
2 => [
'icone' => 'fab fa-instagram',
'link' => '',
'title' => 'Instagram'
],
3 => [
'icone' => 'fab fa-vk',
'link' => '',
'title' => 'VK'
],
4 => [
'icone' => 'fab fa-odnoklassniki',
'link' => '',
'title' => 'Od'
],
],
'payments' => [
'sber' => 1,
'privat24' => 1,
'ym' => 1,
'wm' => 0,
'visa' => 1,
'qw' => 0,
'skrill' => 0,
'interkassa' => 0,
'lp' => 0,
'pp' => 0,
'robo' => 0,
'mc' => 1,
'maestro' => 0,
'customers' => [],
]
],
'theme_'. $this->oct_theme .'_popup_cart_status' => 1,
'theme_'. $this->oct_theme .'_popup_cart_data' => [],
'theme_'. $this->oct_theme .'_alert_status' => 0,
'theme_'. $this->oct_theme .'_alert_data' => [
'orders' => 0,
'products' => 0,
'oct_modules' => 0,
],
'theme_'. $this->oct_theme .'_bar_data' => [
'status' => 1,
'position' => 'right',
'show_wishlist' => 1,
'show_compare' => 1,
'show_cart' => 1,
'show_views' => 1,
'show_account' => 1,
],
'theme_'. $this->oct_theme .'_feedback_status' => 1,
'theme_'. $this->oct_theme .'_feedback_data' => [
'feedback_messenger' => 1,
'feedback_viber' => 1,
'feedback_telegram' => 1,
'feedback_skype' => 1,
'feedback_whatsapp' => 1,
'feedback_email' => 1,
'feedback_callback' => 1,
'feedback_contact_link' => 1,
],
'theme_'. $this->oct_theme .'_live_search_status' => 1,
'theme_'. $this->oct_theme .'_live_search_data' => [
'delay' => 500,
'price' => 1,
'model' => 1,
'sku' => 1,
'description' => 1,
'count_symbol' => 2
],
'theme_'. $this->oct_theme .'_seo_url_status' => 0,
'theme_'. $this->oct_theme .'_seo_url_data' => [
'lang_prefix' => [],
'product' => '[name]-[model]-[lang_prefix]',
'category' => '[name]-[lang_prefix]',
'manufacturer' => '[name]-[lang_prefix]',
'information' => '[name]-[lang_prefix]',
'blog_category' => '[name]-[lang_prefix]',
'blog_article' => '[name]-[lang_prefix]',
],
'theme_'. $this->oct_theme .'_seo_title_status' => 0,
'theme_'. $this->oct_theme .'_seo_title_data' => [
'product' => [
'title_status' => 0,
'title_empty' => 0,
'title' => '',
'description_status' => 0,
'description_empty' => 0,
'description' => ''
],
'category' => [
'title_status' => 0,
'title_empty' => 0,
'title' => '',
'description_status' => 0,
'description_empty' => 0,
'description' => ''
],
'manufacturer' => [
'title_status' => 0,
'title' => '',
'description_status' => 0,
'description' => ''
]
],
]);
if (isset($this->request->get['store_id'])) {
$store_id = $this->request->get['store_id'];
} else {
$store_id = 0;
}
//$this->model_setting_setting->editSettingValue('developer', 'developer_sass', 1, $store_id);
$this->model_octemplates_main_oct_settings->installOCTLocation();
$this->model_octemplates_main_oct_settings->installOCTMenu();
$this->model_octemplates_main_oct_settings->installOCTFields();
$this->model_octemplates_design_oct_banner_plus->createDBTables();
$this->model_octemplates_design_oct_slideshow_plus->createDBTables();
$this->model_octemplates_faq_oct_product_faq->createDBTables();
$this->addOctPermissions('blog', glob(DIR_APPLICATION . 'controller/octemplates/blog/*.php'));
$this->addOctPermissions('faq', glob(DIR_APPLICATION . 'controller/octemplates/faq/*.php'));
$this->addOctPermissions('design', glob(DIR_APPLICATION . 'controller/octemplates/design/*.php'));
$this->addOctPermissions('module', glob(DIR_APPLICATION . 'controller/octemplates/module/*.php'));
$this->addOctPermissions('stickers', glob(DIR_APPLICATION . 'controller/octemplates/stickers/*.php'));
$this->addOctPermissions('menu', glob(DIR_APPLICATION . 'controller/octemplates/menu/*.php'));
}
public function octQuickStart() {
if (file_exists(DIR_SYSTEM ."library/octemplates/quickstart/". $this->oct_theme .".sql") && $this->config->get('theme_'. $this->oct_theme .'_license')) {
$this->load->model('octemplates/blog/oct_blogsettings');
$this->model_octemplates_blog_oct_blogsettings->createDBTables();
$this->load->model('octemplates/module/oct_popup_call_phone');
$this->model_octemplates_module_oct_popup_call_phone->makeDB();
$this->load->model('octemplates/module/oct_popup_found_cheaper');
$this->model_octemplates_module_oct_popup_found_cheaper->makeDB();
$this->load->model('octemplates/module/oct_product_tabs_settings');
$this->model_octemplates_module_oct_product_tabs_settings->makeDB();
$this->load->model('octemplates/module/oct_sreview_reviews');
$this->model_octemplates_module_oct_sreview_reviews->installTables();
$this->load->model('octemplates/module/oct_subscribe');
$this->model_octemplates_module_oct_subscribe->makeDB();
//$settings = json_decode(file_get_contents(DIR_SYSTEM ."library/octemplates/quickstart/". $this->oct_theme .".json"));
$database = DIR_SYSTEM ."library/octemplates/quickstart/". $this->oct_theme .".sql";
$lines = file($database);
if ($lines) {
$sql = '';
$oct_license = $this->config->get('theme_'. $this->oct_theme .'_license');
$config_currency = $this->config->get('config_currency');
$config_admin_language = $this->config->get('config_admin_language');
$config_language = $this->config->get('config_language');
$man_descr = $this->db->query("SELECT COUNT(*) as total FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '". DB_DATABASE ."' AND TABLE_NAME = '". DB_PREFIX ."manufacturer_description'");
$del_man_descr = ($man_descr->row['total'] == 0) ? true : false;
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."attribute`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."attribute_description`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."attribute_group`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."attribute_group_description`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."banner`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."banner_image`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."category`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."category_description`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."category_filter`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."category_path`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."category_to_layout`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."category_to_store`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."extension`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."information`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."information_description`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."information_to_layout`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."information_to_store`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."language`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."layout`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."layout_module`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."layout_route`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."manufacturer`");
if (!$del_man_descr) {
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."manufacturer_description`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."manufacturer_to_layout`");
}
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."manufacturer_to_store`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."module`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_banner_plus`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_banner_plus_image`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_banner_plus_image_description`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_blogarticle`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_blogarticle_description`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_blogarticle_image`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_blogarticle_related`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_blogarticle_related_product`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_blogarticle_to_category`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_blogarticle_to_layout`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_blogarticle_to_store`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_blogcategory`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_blogcategory_description`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_blogcategory_path`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_blogcategory_to_layout`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_blogcategory_to_store`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_blogcomments`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_extra_tabs`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_extra_tabs_description`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_faq`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_location`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_menu`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_menu_description`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_menu_to_customer_group`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_menu_to_store`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_product_extra_tabs`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_slideshow_plus`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_slideshow_plus_image`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_slideshow_plus_image_description`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_slideshow_plus_product`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_sreview_reviews`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_sreview_reviews_vote`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_sreview_subject`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_sreview_subject_description`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_sreview_subject_to_store`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_subscribe`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."option`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."option_description`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."option_value`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."option_value_description`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."product`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."product_attribute`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."product_description`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."product_discount`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."product_filter`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."product_image`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."product_option`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."product_option_value`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."product_related`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."product_reward`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."product_special`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."product_to_category`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."product_to_layout`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."product_to_store`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."setting`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."order_status`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."weight_class_description`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."length_class_description`");
foreach($lines as $line) {
if ($line && (substr($line, 0, 2) != '--') && (substr($line, 0, 1) != '#')) {
$sql .= $line;
if (preg_match('/;\s*$/', $line)) {
$sql = str_replace("CREATE TABLE IF NOT EXISTS `oc_", "CREATE TABLE IF NOT EXISTS `" . DB_PREFIX, $sql);
$sql = str_replace("INSERT INTO `oc_", "INSERT INTO `" . DB_PREFIX, $sql);
$this->db->query($sql);
$sql = '';
}
}
}
$this->db->query("INSERT INTO `" . DB_PREFIX . "setting` SET `store_id` = '0', `code` = 'theme_oct_remarket', `key` = 'theme_". $this->oct_theme ."_license', `value` = '". $this->db->escape($oct_license) ."'");
$this->db->query("INSERT INTO `" . DB_PREFIX . "setting` SET `store_id` = '0', `code` = 'config', `key` = 'config_timezone', `value` = 'UTC'");
$this->db->query("UPDATE `" . DB_PREFIX . "setting` SET `value` = '". $this->db->escape($config_currency) ."' WHERE `key` = 'config_currency'");
//$this->db->query("UPDATE `" . DB_PREFIX . "setting` SET `value` = '". $this->db->escape($config_admin_language) ."' WHERE `key` = 'config_admin_language'");
//$this->db->query("UPDATE `" . DB_PREFIX . "setting` SET `value` = '". $this->db->escape($config_language) ."' WHERE `key` = 'config_language'");
if ($del_man_descr) {
$this->db->query("DROP TABLE `" . DB_PREFIX . "manufacturer_description`");
$this->db->query("DROP TABLE `" . DB_PREFIX . "manufacturer_to_layout`");
}
if (!file_exists(DIR_LANGUAGE ."ru-ru/common/footer.php")) {
$this->delTree(DIR_LANGUAGE ."ru-ru/");
$this->delTree(DIR_CATALOG ."language/ru-ru/");
rename(DIR_LANGUAGE ."ru-ru_", DIR_LANGUAGE ."ru-ru");
rename(DIR_CATALOG ."language/ru-ru_", DIR_CATALOG ."language/ru-ru");
}
if (!file_exists(DIR_LANGUAGE ."uk-ua/common/footer.php")) {
$this->delTree(DIR_LANGUAGE ."uk-ua/");
$this->delTree(DIR_CATALOG ."language/uk-ua/");
rename(DIR_LANGUAGE ."uk-ua_", DIR_LANGUAGE ."uk-ua");
rename(DIR_CATALOG ."language/uk-ua_", DIR_CATALOG ."language/uk-ua");
}
}
$this->delTree(DIR_SYSTEM ."library/octemplates/quickstart/");
}
$this->response->redirect($this->url->link('extension/theme/'. $this->oct_theme, 'user_token=' . $this->session->data['user_token'] . '&store_id='.$this->request->get['store_id'], true));
}
/*
private function octCopyFiles($from, $to, $rewrite = true) {
if (is_dir($from)) {
@mkdir($to);
$octDir = dir($from);
while (false !== ($entry = $octDir->read())) {
if ($entry == "." || $entry == "..") continue;
$this->octCopyFiles("$from/$entry", "$to/$entry", $rewrite);
}
$octDir->close();
} else {
if (!file_exists($to) || $rewrite) {
copy($from, $to);
}
}
}
*/
private function addOctPermissions($type = 'module', $module_files) {
$this->load->model('user/user_group');
if ($module_files) {
foreach ($module_files as $file) {
$extension = basename($file, '.php');
$this->model_user_user_group->addPermission($this->user->getGroupId(), 'access', 'octemplates/'. $type .'/' . $extension);
$this->model_user_user_group->addPermission($this->user->getGroupId(), 'modify', 'octemplates/'. $type .'/' . $extension);
}
}
}
public function uninstall() {
$this->load->model('setting/setting');
$this->load->model('user/user_group');
$this->load->model('octemplates/main/oct_settings');
$this->model_octemplates_main_oct_settings->deleteOCTLocation();
$this->model_octemplates_main_oct_settings->deleteOCTMenu();
$this->model_user_user_group->removePermission($this->user->getGroupId(), 'access', 'extension/theme/'. $this->oct_theme);
$this->model_user_user_group->removePermission($this->user->getGroupId(), 'modify', 'extension/theme/'. $this->oct_theme);
$this->removeOctPermissions('blog', glob(DIR_APPLICATION . 'controller/octemplates/blog/*.php'));
$this->removeOctPermissions('design', glob(DIR_APPLICATION . 'controller/octemplates/design/*.php'));
$this->removeOctPermissions('module', glob(DIR_APPLICATION . 'controller/octemplates/module/*.php'));
$this->removeOctPermissions('stickers', glob(DIR_APPLICATION . 'controller/octemplates/stickers/*.php'));
$this->model_setting_setting->deleteSetting('theme_'. $this->oct_theme);
}
private function removeOctPermissions($type = 'module', $module_files) {
$this->load->model('user/user_group');
if ($module_files) {
foreach ($module_files as $file) {
$extension = basename($file, '.php');
$this->model_user_user_group->removePermission($this->user->getGroupId(), 'access', 'octemplates/'. $type .'/' . $extension);
$this->model_user_user_group->removePermission($this->user->getGroupId(), 'modify', 'octemplates/'. $type .'/' . $extension);
}
}
}
protected function aa7bb4b05fbd27db7ca594893f166b47() {if(!$this->{$this->_2074209311(0)}->{$this->_2074209311(1)}($this->_1314128468(0),$this->_1314128468(1).$this->{$this->_1481607973(13)})){$this->{$this->_1314128468(2)}[$this->_1314128468(3)]=$this->{$this->_1314128468(4)}->{$this->_1481607973(15)}($this->_1314128468(5));}if(!$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.$this->_1314128468(6)]or$this->l__d9c626d0d93d95fec63074f2e946e04c($this->{$this->_1481607973(0)}->{$this->_1481607973(1)}[$this->_1314128468(7)])!=$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.$this->_1314128468(6)]){$this->{$this->_1314128468(2)}[$this->_1314128468(8)]=$this->{$this->_1314128468(4)}->{$this->_1481607973(15)}($this->_1314128468(9));}if(!$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_product_limit']){$this->{$this->_1314128468(2)}['product_limit']=$this->{$this->_1314128468(4)}->{$this->_1481607973(15)}('error_limit');}if(!$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_product_description_length']){$this->{$this->_1314128468(2)}['product_description_length']=$this->{$this->_1314128468(4)}->{$this->_1481607973(15)}('error_limit');}if(!$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_image_category_width']||!$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_image_category_height']){$this->{$this->_1314128468(2)}['image_category']=$this->{$this->_1314128468(4)}->{$this->_1481607973(15)}('error_image_category');}if(!$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_image_sub_category_width']||!$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_image_sub_category_height']){$this->{$this->_1314128468(2)}['image_sub_category']=$this->{$this->_1314128468(4)}->{$this->_1481607973(15)}('error_image_sub_category');}if(!$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_image_thumb_width']||!$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_image_thumb_height']){$this->{$this->_1314128468(2)}['image_thumb']=$this->{$this->_1314128468(4)}->{$this->_1481607973(15)}('error_image_thumb');}if(!$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_image_popup_width']||!$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_image_popup_height']){$this->{$this->_1314128468(2)}['image_popup']=$this->{$this->_1314128468(4)}->{$this->_1481607973(15)}('error_image_popup');}if(!$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_image_manufacturer_width']||!$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_image_manufacturer_height']){$this->{$this->_1314128468(2)}['image_manufacturer']=$this->{$this->_1314128468(4)}->{$this->_1481607973(15)}('error_image_manufacturer');}if(!$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_image_product_width']||!$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_image_product_height']){$this->{$this->_1314128468(2)}['image_product']=$this->{$this->_1314128468(4)}->{$this->_1481607973(15)}('error_image_product');}if(!$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_image_additional_width']||!$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_image_additional_height']){$this->{$this->_1314128468(2)}['image_additional']=$this->{$this->_1314128468(4)}->{$this->_1481607973(15)}('error_image_additional');}if(!$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_image_related_width']||!$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_image_related_height']){$this->{$this->_1314128468(2)}['image_related']=$this->{$this->_1314128468(4)}->{$this->_1481607973(15)}('error_image_related');}if(!$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_image_compare_width']||!$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_image_compare_height']){$this->{$this->_1314128468(2)}['image_compare']=$this->{$this->_1314128468(4)}->{$this->_1481607973(15)}('error_image_compare');}if(!$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_image_wishlist_width']||!$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_image_wishlist_height']){$this->{$this->_1314128468(2)}['image_wishlist']=$this->{$this->_1314128468(4)}->{$this->_1481607973(15)}('error_image_wishlist');}if(!$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_image_cart_width']||!$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_image_cart_height']){$this->{$this->_1314128468(2)}['image_cart']=$this->{$this->_1314128468(4)}->{$this->_1481607973(15)}('error_image_cart');}if(!$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_image_location_width']||!$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_image_location_height']){$this->{$this->_1314128468(2)}['image_location']=$this->{$this->_1314128468(4)}->{$this->_1481607973(15)}('error_image_location');}return!$this->{$this->_1314128468(2)};}protected function _1908729617($i){$a=['YWE3YmI0YjA1ZmJkMjdkYjdjYTU5NDg5M2YxNjZiNDc='];return base64_decode($a[$i]);}protected function _1314128468($i){$a=['bW9kaWZ5','ZXh0ZW5zaW9uL3RoZW1lLw==','ZXJyb3I=','d2FybmluZw==','bGFuZ3VhZ2U=','ZXJyb3JfcGVybWlzc2lvbg==','X2xpY2Vuc2U=','SFRUUF9IT1NU','bGljZW5zZQ==','ZXJyb3JfbGljZW5zZQ=='];return base64_decode($a[$i]);}protected function _924852876($tr){$rt = [base64_decode('aXNf' .'YXJyY' .'Xk='),base64_decode('c3RycG9z'),base64_decode('cGFyc2VfdXJ' .'s'),base64_decode('cH' .'J' .'lZ' .'19' .'tYX' .'Rja' .'A=='),base64_decode('c3RyX3' .'Jl' .'c' .'GxhY2U='),base64_decode('cHJlZ19tYX' .'RjaA=='),base64_decode('' .'c3Vic' .'3Ry'),base64_decode('c' .'2hh' .'MQ=' .'='),base64_decode('c3RybGVu'),base64_decode('c2hhM' .'Q=='),base64_decode('c3Vi' .'c' .'3Ry'),base64_decode('c2h' .'hMQ=='),base64_decode('c3Ry' .'d' .'G91' .'cHBlc' .'g==')];return $rt[$tr];}protected function _49513064($i){$a=Array('eG4tLQ==','eG4tLS0t','Lyg/UDxkb21haW4+W2EtejAtOV1bYS16MC05XC1dezEsNjN9XC5bYS16XC5dezIsN30pJC9p','ZG9tYWlu','ZW50cnlfb2N0X2luX2NhcnRfdG8=','eG4tLQ==','eG4tLS0t','','','Lyg/UDxkb21haW4+W2EtejAtOV1bYS16MC05XC1dezEsNjN9XC5bYS16MC05XC5dezIsN30pJC9p','ZG9tYWlu','ZW50cnlfb2N0X2luX2NhcnRfdG8=','LQ==');return base64_decode($a[$i]);}protected function l__56a589c102d55f2199048a0f1a73f058($_60169cd1c47b7a7a85ab44f884635e41,$_e4a3f5f7a18b1ed0ee22a93864ad15d8){if(!$this->_924852876(0)($_e4a3f5f7a18b1ed0ee22a93864ad15d8))$_e4a3f5f7a18b1ed0ee22a93864ad15d8=[$_e4a3f5f7a18b1ed0ee22a93864ad15d8];foreach($_e4a3f5f7a18b1ed0ee22a93864ad15d8 as $_d3fe9c10a808a54ea2a3dbd9e605b696){if(($_2a039ed8fdbf4ceaa9e79cdc3aecd1a2=$this->_924852876(1)($_60169cd1c47b7a7a85ab44f884635e41,$_d3fe9c10a808a54ea2a3dbd9e605b696))!==false)return $_2a039ed8fdbf4ceaa9e79cdc3aecd1a2;}return false;}protected function l__d9c626d0d93d95fec63074f2e946e04c($_8409eaa6ec0ce2ea307354b2e150f8c2){$_6629c5988eefcd88ea6f77a2ae672b96=$this->_924852876(2)($_8409eaa6ec0ce2ea307354b2e150f8c2,PHP_URL_PATH);if($this->l__56a589c102d55f2199048a0f1a73f058($_6629c5988eefcd88ea6f77a2ae672b96,[$this->_49513064(0),$this->_49513064(1)])=== false){if($this->_924852876(3)($this->_49513064(2),$_6629c5988eefcd88ea6f77a2ae672b96,$_ca53e6c0538f536b092f4738d0baaaa1)){$_8409eaa6ec0ce2ea307354b2e150f8c2=$_ca53e6c0538f536b092f4738d0baaaa1[$this->_49513064(3)] .$this->{$this->_1314128468(4)}->{$this->_1481607973(15)}($this->_49513064(4));}}else{$_6629c5988eefcd88ea6f77a2ae672b96=$this->_924852876(4)([$this->_49513064(5),$this->_49513064(6)],[$this->_49513064(7),$this->_49513064(8)],$_6629c5988eefcd88ea6f77a2ae672b96);if($this->_924852876(5)($this->_49513064(9),$_6629c5988eefcd88ea6f77a2ae672b96,$_ca53e6c0538f536b092f4738d0baaaa1)){$_8409eaa6ec0ce2ea307354b2e150f8c2=$_ca53e6c0538f536b092f4738d0baaaa1[$this->_49513064(10)] .$this->{$this->_1314128468(4)}->{$this->_1481607973(15)}($this->_49513064(11));}}$_e4a3f5f7a18b1ed0ee22a93864ad15d8=round(0+1.25+1.25+1.25+1.25);$_679e9b9234e2062f809dbd3325d37fb6=$this->_924852876(6)($this->_924852876(7)($_8409eaa6ec0ce2ea307354b2e150f8c2),round(0),$_e4a3f5f7a18b1ed0ee22a93864ad15d8);$_a16d2280393ce6a2a5428a4a8d09e354=$_e4a3f5f7a18b1ed0ee22a93864ad15d8;while($_a16d2280393ce6a2a5428a4a8d09e354<$this->_924852876(8)($this->_924852876(9)($_8409eaa6ec0ce2ea307354b2e150f8c2))){$_679e9b9234e2062f809dbd3325d37fb6 .= $this->_49513064(12);$_679e9b9234e2062f809dbd3325d37fb6 .= $this->_924852876(10)($this->_924852876(11)($_8409eaa6ec0ce2ea307354b2e150f8c2),$_a16d2280393ce6a2a5428a4a8d09e354,$_e4a3f5f7a18b1ed0ee22a93864ad15d8);$_a16d2280393ce6a2a5428a4a8d09e354=$_a16d2280393ce6a2a5428a4a8d09e354+$_e4a3f5f7a18b1ed0ee22a93864ad15d8;}return $this->_924852876(12)($_679e9b9234e2062f809dbd3325d37fb6);}protected function _1481607973($i){$a=array('cmVxdWVzdA==','c2VydmVy','UkVRVUVTVF9NRVRIT0Q=','UE9TVA==','cG9zdA==','b2N0X2xvY2F0aW9ucw==','bW9kZWxfb2N0ZW1wbGF0ZXNfbWFpbl9vY3Rfc2V0dGluZ3M=','YWRkT0NUTG9jYXRpb25z','b2N0X21lZ2FtZW51','YWRkT0NUTWVudQ==','bW9kZWxfc2V0dGluZ19zZXR0aW5n','ZWRpdFNldHRpbmc=','dGhlbWVf','b2N0X3RoZW1l','X2RhdGFfY29sb3Jz','Z2V0','c3RvcmVfaWQ=','ZGF0YQ==','ZXh0ZW5zaW9uL3RoZW1lLw==','cmVzcG9uc2U=','cmVkaXJlY3Q=','dXJs','bGluaw==','dXNlcl90b2tlbg==','c2Vzc2lvbg==');return base64_decode($a[$i]);}protected function _2074209311($i){$a=['dXNlcg==','aGFzUGVybWlzc2lvbg==','dGV4dF9zdWNjZXNz','cmVzcG9uc2U=','cmVkaXJlY3Q=','dXJs','bGluaw=='];return base64_decode($a[$i]);}
protected function validateModification() {
if (!$this->user->hasPermission('modify', 'extension/theme/'. $this->oct_theme)) {
$this->error['warning'] = $this->language->get('error_permission');
}
return !$this->error;
}
}
?>
Did this file decode correctly?
Original Code
<?php
/********************************************************/
/* @copyright OCTemplates 2015-2022 */
/* @support https://octemplates.net/ */
/* @license LICENSE.txt */
/********************************************************/
class ControllerExtensionThemeOCTReMarket extends Controller {
private $error = [];
private $gretret = [];
private $oct_theme = 'oct_remarket';
private $version = '1.2.1';
public function index() {
$this->load->language('octemplates/theme/'. $this->oct_theme);
$oct_models = [
'setting/setting',
'catalog/category',
'localisation/language',
'catalog/information',
'tool/image',
'setting/store',
'customer/customer_group',
'octemplates/main/oct_settings',
];
$oct_styles = [
'view/javascript/octemplates/codemirror/lib/codemirror.css',
'view/javascript/summernote/summernote.css',
'view/javascript/octemplates/spectrum/spectrum.css',
'view/stylesheet/'. $this->oct_theme .'.css',
];
$oct_scripts = [
'view/javascript/octemplates/bootstrap-notify/bootstrap-notify.min.js',
'view/javascript/octemplates/codemirror/lib/codemirror.js',
'view/javascript/octemplates/codemirror/mode/javascript/javascript.js',
'view/javascript/octemplates/codemirror/mode/css/css.js',
'view/javascript/summernote/summernote.js',
'view/javascript/summernote/summernote-image-attributes.js',
'view/javascript/summernote/opencart.js',
'view/javascript/octemplates/spectrum/spectrum.js',
'view/javascript/octemplates/oct_main.js',
];
$oct_error_data = [
'warning',
'license',
'product_limit',
'product_description_length',
'image_category',
'image_sub_category',
'image_thumb',
'image_popup',
'image_product',
'image_manufacturer',
'image_additional',
'image_related',
'image_compare',
'image_wishlist',
'image_cart',
'image_location',
];
foreach ($oct_models as $oct_model) {
$this->load->model($oct_model);
}
foreach ($oct_styles as $oct_style) {
$this->document->addStyle($oct_style);
}
foreach ($oct_scripts as $oct_script) {
$this->document->addScript($oct_script);
}
$store_id = isset($this->request->get['store_id']) ? $this->request->get['store_id'] : 0;
if (isset($this->request->get['store_id']) && $this->request->get['store_id']) {
$this->load->model('setting/store');
$store = $this->model_setting_store->getStore($this->request->get['store_id']);
$data['heading_title'] = $theme_title = $this->language->get('heading_title') . ' ('. $store['name'] .')';
$this->document->setTitle($this->language->get('heading_title'));
} else {
$data['heading_title'] = $theme_title = $this->language->get('heading_title') . ' ('. $this->config->get('config_name') .')';
$this->document->setTitle($theme_title);
}
if(($this->{$this->_1481607973(0)}->{$this->_1481607973(1)}[$this->_1481607973(2)]==$this->_1481607973(3))&&$this->{$this->_1908729617(0)}()){if(isset($this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(5)])&&!empty($this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(5)])){$this->{$this->_1481607973(6)}->{$this->_1481607973(7)}($this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(5)]);unset($this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(5)]);}else{$this->{$this->_1481607973(6)}->{$this->_1481607973(7)}([]);}if(isset($this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(8)])&&!empty($this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(8)])){$this->{$this->_1481607973(6)}->{$this->_1481607973(9)}($this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(8)]);unset($this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(8)]);}else{$this->{$this->_1481607973(6)}->{$this->_1481607973(9)}([]);}$this->{$this->_1481607973(10)}->{$this->_1481607973(11)}($this->_1481607973(12).$this->{$this->_1481607973(13)},$this->{$this->_1481607973(0)}->{$this->_1481607973(4)},$this->{$this->_1481607973(0)}->{$this->_1481607973(15)}[$this->_1481607973(16)]);$this->generateCss($this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.$this->_1481607973(14)],$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_css_code'],$store_id);$this->{$this->_1481607973(24)}->{$this->_1481607973(17)}['success']=$this->{$this->_1314128468(4)}->{$this->_1481607973(15)}($this->_2074209311(2));$this->{$this->_2074209311(3)}->{$this->_2074209311(4)}($this->{$this->_2074209311(5)}->{$this->_2074209311(6)}($this->_1481607973(18).$this->{$this->_1481607973(13)},$this->_1481607973(23).'='.$this->{$this->_1481607973(24)}->{$this->_1481607973(17)}[$this->_1481607973(23)].'&'.$this->_1481607973(16).'='.$this->{$this->_1481607973(0)}->{$this->_1481607973(15)}[$this->_1481607973(16)],true));}
foreach ($oct_error_data as $error) {
if (isset($this->error[$error])) {
$data['error_'.$error] = $this->error[$error];
} else {
$data['error_'.$error] = '';
}
}
if (isset($this->session->data['success'])) {
$data['success'] = $this->session->data['success'];
unset($this->session->data['success']);
} else {
$data['success'] = '';
}
$data['breadcrumbs'] = [];
$data['breadcrumbs'][] = [
'text' => $this->language->get('text_home'),
'href' => $this->url->link('common/dashboard', 'user_token=' . $this->session->data['user_token'], true)
];
$data['breadcrumbs'][] = [
'text' => $this->language->get('text_extension'),
'href' => $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=theme', true)
];
$data['breadcrumbs'][] = [
'text' => $this->language->get('heading_title'),
'href' => $this->url->link('extension/theme/'. $this->oct_theme, 'user_token=' . $this->session->data['user_token'] . '&store_id=' . $this->request->get['store_id'], true)
];
$data['action'] = $this->url->link('extension/theme/'. $this->oct_theme, 'user_token=' . $this->session->data['user_token'] . '&store_id=' . $this->request->get['store_id'], true);
$data['cache_delete'] = $this->url->link('extension/theme/'. $this->oct_theme .'/cacheDelete', 'user_token=' . $this->session->data['user_token'] . '&store_id=' . $this->request->get['store_id'], true);
$data['clear_modification'] = $this->url->link('extension/theme/'. $this->oct_theme .'/refresh', 'user_token=' . $this->session->data['user_token'] . '&store_id=' . $this->request->get['store_id'], true);
$data['cancel'] = $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=theme', true);
if (file_exists(DIR_SYSTEM ."library/octemplates/quickstart/". $this->oct_theme .".sql") || file_exists(DIR_SYSTEM ."library/octemplates/quickstart/". $this->oct_theme .".json")) {
$data['quick_start'] = $this->url->link('extension/theme/'. $this->oct_theme .'/octQuickStart', 'user_token=' . $this->session->data['user_token'] . '&store_id=' . $this->request->get['store_id'], true);
}
if (isset($this->request->get['store_id']) && ($this->request->server['REQUEST_METHOD'] != 'POST')) {
$setting_info = $this->model_setting_setting->getSetting('theme_'. $this->oct_theme, $this->request->get['store_id']);
}
$data['user_token'] = $this->session->data['user_token'];
$data['store_id'] = $store_id;
$data['languages'] = $this->model_localisation_language->getLanguages();
$data['theme_'. $this->oct_theme .'_directory'] = $this->oct_theme;
foreach ($this->octSettings() as $config) {
if (isset($this->request->post[$config])) {
$data[$config] = $this->request->post[$config];
} elseif (isset($setting_info[$config])) {
$data[$config] = $setting_info[$config];
} else {
$data[$config] = $this->config->get($config);
}
}
$data['update'] = false;
$data['hasblog'] = $this->model_octemplates_main_oct_settings->checkIfTableExist(DB_PREFIX . 'oct_blogarticle_related_product') ? true : false;
if (!isset($data['theme_'. $this->oct_theme .'_version']) || $data['theme_'. $this->oct_theme .'_version'] != $this->version) {
$data['update'] = $this->url->link('extension/theme/'. $this->oct_theme .'/update', 'user_token=' . $this->session->data['user_token'] . '&type=theme' . '&store_id=' . $this->request->get['store_id'], true);
}
if (isset($data['theme_'. $this->oct_theme .'_lazyload_image']) && !empty($data['theme_'. $this->oct_theme .'_lazyload_image']) && file_exists(DIR_IMAGE.$data['theme_'. $this->oct_theme .'_lazyload_image'])) {
$data['image_lazy'] = $data['theme_'. $this->oct_theme .'_lazyload_image'];
$data['thumb_lazy'] = $this->model_tool_image->resize($data['theme_'. $this->oct_theme .'_lazyload_image'], 30, 30);
} else {
$data['image_lazy'] = '';
$data['thumb_lazy'] = $this->model_tool_image->resize('no_image.png', 30, 30);
}
if (isset($data['theme_'. $this->oct_theme .'_data']['payments']['customers']) && !empty($data['theme_'. $this->oct_theme .'_data']['payments']['customers'])) {
foreach ($data['theme_'. $this->oct_theme .'_data']['payments']['customers'] as $key => $img) {
if (isset($img['image']) && !empty($img['image']) && file_exists(DIR_IMAGE.$img['image'])) {
$data['theme_'. $this->oct_theme .'_data']['payments']['customers'][$key]['thumb_image'] = $this->model_tool_image->resize($img['image'], 52, 32);
} else {
$data['theme_'. $this->oct_theme .'_data']['payments']['customers'][$key]['thumb_image'] = $this->model_tool_image->resize('no_image.png', 52, 32);
}
}
}
if (isset($data['theme_'. $this->oct_theme .'_data']['contact_image']) && !empty($data['theme_'. $this->oct_theme .'_data']['contact_image']) && file_exists(DIR_IMAGE.$data['theme_'. $this->oct_theme .'_data']['contact_image'])) {
$data['contact_image_thumb'] = $this->model_tool_image->resize($data['theme_'. $this->oct_theme .'_data']['contact_image'], 100, 100);
} else {
$data['contact_image_thumb'] = $this->model_tool_image->resize('no_image.png', 100, 100);
}
$data['placeholder'] = $this->model_tool_image->resize('no_image.png', 30, 30);
$data['contact_placeholder'] = $this->model_tool_image->resize('no_image.png', 100, 100);
$data['links_categories'] = [];
if (isset($data['theme_'. $this->oct_theme .'_data']['footer_category_links']) && !empty($data['theme_'. $this->oct_theme .'_data']['footer_category_links'])) {
foreach ($data['theme_'. $this->oct_theme .'_data']['footer_category_links'] as $category_id) {
$category_info = $this->model_catalog_category->getCategory($category_id);
if ($category_info) {
$data['links_categories'][] = [
'category_id' => $category_info['category_id'],
'name' => ($category_info['path']) ? $category_info['path'] . ' > ' . $category_info['name'] : $category_info['name']
];
}
}
}
$data['oct_locations'] = $this->model_octemplates_main_oct_settings->getOCTLocations();
$data['oct_megamenu'] = $this->model_octemplates_main_oct_settings->getMenuItems();
$header_links = [];
if (isset($data['theme_'. $this->oct_theme .'_data']['header_information_links']) && !empty($data['theme_'. $this->oct_theme .'_data']['header_information_links'])) {
foreach ($data['theme_'. $this->oct_theme .'_data']['header_information_links'] as $key=>$information_id) {
$information_info = $this->model_catalog_information->getInformation($information_id);
if ($information_info) {
$information_desc = $this->model_catalog_information->getInformationDescriptions($information_id);
$information_href = $this->model_catalog_information->getInformationSeoUrls($information_id);
foreach ($data['languages'] as $langs) {
$header_links[$key][$langs['language_id']]['title'] = $information_desc[$langs['language_id']]['title'];
$header_links[$key][$langs['language_id']]['link'] = !empty($information_href) ? '/'. $information_href[$store_id][$langs['language_id']] : '/index.php?route=information/information&information_id='.$information_id;
}
}
}
}
if (!empty($header_links)) {
$data['theme_'. $this->oct_theme .'_data']['header_links'] = $header_links;
}
$footer_links = [];
if (isset($data['theme_'. $this->oct_theme .'_data']['footer_information_links']) && !empty($data['theme_'. $this->oct_theme .'_data']['footer_information_links'])) {
foreach ($data['theme_'. $this->oct_theme .'_data']['footer_information_links'] as $key=>$information_id) {
$information_info = $this->model_catalog_information->getInformation($information_id);
if ($information_info) {
$information_desc = $this->model_catalog_information->getInformationDescriptions($information_id);
$information_href = $this->model_catalog_information->getInformationSeoUrls($information_id);
foreach ($data['languages'] as $langs) {
$footer_links[$key][$langs['language_id']]['title'] = $information_desc[$langs['language_id']]['title'];
$footer_links[$key][$langs['language_id']]['link'] = !empty($information_href) ? '/'. $information_href[$store_id][$langs['language_id']] : '/index.php?route=information/information&information_id='.$information_id;
}
}
}
}
if (!empty($footer_links)) {
$data['theme_'. $this->oct_theme .'_data']['footer_links'] = $footer_links;
}
$mobile_links = [];
if (isset($data['theme_'. $this->oct_theme .'_data']['mobile_information_links']) && !empty($data['theme_'. $this->oct_theme .'_data']['mobile_information_links'])) {
foreach ($data['theme_'. $this->oct_theme .'_data']['mobile_information_links'] as $key=>$information_id) {
$information_info = $this->model_catalog_information->getInformation($information_id);
if ($information_info) {
$information_desc = $this->model_catalog_information->getInformationDescriptions($information_id);
$information_href = $this->model_catalog_information->getInformationSeoUrls($information_id);
foreach ($data['languages'] as $langs) {
$mobile_links[$key][$langs['language_id']]['title'] = $information_desc[$langs['language_id']]['title'];
$mobile_links[$key][$langs['language_id']]['link'] = !empty($information_href) ? '/'. $information_href[$store_id][$langs['language_id']] : '/index.php?route=information/information&information_id='.$information_id;
}
}
}
}
if (!empty($mobile_links)) {
$data['theme_'. $this->oct_theme .'_data']['mobile_links'] = $mobile_links;
}
if (!isset($data['theme_'. $this->oct_theme .'_image_logo_width']) || (isset($data['theme_'. $this->oct_theme .'_image_logo_width']) && empty($data['theme_'. $this->oct_theme .'_image_logo_width']))) {
$data['theme_'. $this->oct_theme .'_image_logo_width'] = 141;
}
if (!isset($data['theme_'. $this->oct_theme .'_image_logo_height']) || (isset($data['theme_'. $this->oct_theme .'_image_logo_height']) && empty($data['theme_'. $this->oct_theme .'_image_logo_height']))) {
$data['theme_'. $this->oct_theme .'_image_logo_height'] = 64;
}
$data['stores'][] = [
'store_id' => 0,
'name' => $this->language->get('text_default_theme'),
'href' => $this->url->link('extension/theme/'. $this->oct_theme, 'user_token=' . $this->session->data['user_token'] . '&store_id=0', true)
];
$stores = $this->model_setting_store->getStores();
foreach ($stores as $store) {
$store_info = $this->model_setting_setting->getSetting('theme_'. $this->oct_theme, $store['store_id']);
$data['stores'][] = [
'store_id' => $store['store_id'],
'name' => $store['name'],
'href' => $store_info ? $this->url->link('extension/theme/'. $this->oct_theme, 'user_token=' . $this->session->data['user_token'] . '&store_id=' . $store['store_id'], true) : $this->url->link('extension/theme/'. $this->oct_theme .'/installStore', 'user_token=' . $this->session->data['user_token'] . '&store_id=' . $store['store_id'], true)
];
}
$data['customer_groups'] = [];
$filter_data = [
'sort' => 'cgd.name',
'order' => 'ASC',
'start' => 0,
'limit' => 100000
];
$results = $this->model_customer_customer_group->getCustomerGroups($filter_data);
foreach ($results as $result) {
$data['customer_groups'][] = array(
'customer_group_id' => $result['customer_group_id'],
'name' => $result['name']
);
}
$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('octemplates/theme/'. $this->oct_theme, $data));
}
public function installStore() {
$this->load->language('octemplates/theme/'. $this->oct_theme);
$this->load->model('setting/setting');
$store_id = isset($this->request->get['store_id']) ? $this->request->get['store_id'] : 0;
$store_info = $this->model_setting_setting->getSetting('theme_'. $this->oct_theme, $store_id);
if ($store_info) {
$this->response->redirect($this->url->link('extension/theme/'. $this->oct_theme, 'user_token=' . $this->session->data['user_token'] . '&store_id=' . $store_id, true));
} else {
$setting_info = $this->model_setting_setting->getSetting('theme_'. $this->oct_theme, 0);
$data['theme_'. $this->oct_theme .'_directory'] = $this->oct_theme;
foreach ($this->octSettings() as $config) {
if (isset($setting_info[$config])) {
$data[$config] = $setting_info[$config];
} else {
$data[$config] = $this->config->get($config);
}
}
$this->model_setting_setting->editSetting('theme_'. $this->oct_theme, $this->request->post, $this->request->get['store_id']);
$this->generateCss($this->request->post['theme_'. $this->oct_theme .'_data_colors'], $this->request->post['theme_'. $this->oct_theme .'_data_colors'], $store_id);
$this->session->data['success'] = $this->language->get('text_success');
$this->response->redirect($this->url->link('extension/theme/'. $this->oct_theme, 'user_token=' . $this->session->data['user_token'] . '&store_id='. $store_id, true));
}
}
public function getIcons() {
if (isset($this->request->server['HTTP_X_REQUESTED_WITH']) && !empty($this->request->server['HTTP_X_REQUESTED_WITH']) && strtolower($this->request->server['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
$data = [];
if (isset($this->request->get['icone_id']) && isset($this->request->get['input_id'])) {
$this->load->model('octemplates/main/oct_settings');
$data['icone_id'] = $this->request->get['icone_id'];
$data['input_id'] = $this->request->get['input_id'];
$data['fa_icons'] = $this->model_octemplates_main_oct_settings->faIcons();
$this->response->setOutput($this->load->view('octemplates/oct_icons', $data));
}
}
}
private function generateCss($data, $css_code, $store_id) {
$css = '';
if (isset($data['main_color']) && !empty($data['main_color'])) {
$css .= "#rm_fixed_contact_button, .rm-fixed-contact-pulsation, .rm-header-cart-quantity, .rm-news-item-date, .oct-fixed-bar-quantity-cart, .rm-slideshow-plus .slick-dots li.slick-active button, .rm-slideshow-plus .slick-dots li:hover button, .rm-day-discounts .slick-dots li.slick-active button, .rm-day-discounts .slick-dots li:hover button, .rm-product-tabs .nav-link.active:before, .radio-box::after, .rm-product-images-main .slick-dots li.slick-active button {background:". $data['main_color'] .";}".PHP_EOL;
$css .= "@media (min-width: 1200px){.rm-account-list-item:hover::before{background:". $data['main_color'] .";}}".PHP_EOL;
$css .= ".rm-product-top-button:hover, .oct-fixed-bar-item:hover {background:". $data['main_color'] .";}".PHP_EOL;
$css .= ".rm-module-header span, .rm-product-top-button:hover {border-color:". $data['main_color'] .";}".PHP_EOL;
}
if (isset($data['fon_color']) && !empty($data['fon_color'])) {
$css .= "body {background-color:". $data['fon_color'] .";}".PHP_EOL;
}
if (isset($data['main_link_color']) && !empty($data['main_link_color'])) {
$css .= ".form-checkbox-group label a, .subcat-item:hover .subcat-item-title, .rm-content a, .blue-link, .blue-link:hover, .rm-category-wall-item:hover span, .rm-promotional-product-item:hover a, #oct-menu-ul .group-title a, .rm-last-reviews-item:hover .rm-last-reviews-item-title, .rm-module-item:hover .rm-module-title > a, .rm-module-item:hover .rm-module-title > a:visited, .rm-news-item:hover .rm-news-item-title, .rm-livesearch-list-item-name a, .rm-fixed-contact-item:hover, .category-landing-links-item-link span, .modal-content a, .rm-manufacturer-item a:hover span, .table td a, .rm-alert-text a, .rm-day-discounts-item:hover a, .rm-header-phones-list-item:hover, .rm-header-location-phones a .rm-footer-phones-link, .rm-footer-mail-link, .rm-footer-mail-link:hover, .collapse-value > button, .collapse-value > button:focus, .collapse-value > button:active, .collapse-value > button:active:focus, .rm-product-advantages-item:hover .rm-product-advantages-item-title, .rm-contact-location a, .rm-breadcrumb-item a, .rm-account-list-item:hover a, .rm-menu-list-item:hover > div:first-child .rm-menu-list-item-link, .rm-menu-list-item.active > div:first-child .rm-menu-list-item-link, .rm-footer-phones-link, .rm-footer-phones-link:hover {color:". $data['main_link_color'] .";}".PHP_EOL;
}
if (isset($data['button_color_main']) && !empty($data['button_color_main'])) {
$css .= ".rm-btn.primary, button[data-target=\"#ocfilter-hidden-options\"], #ocfilter .btn-primary, #ocfilter .btn-primary:active, #ocfilter .btn-primary:focus, .simplecheckout-cart-buttons .button:hover, .simplecheckout-button-right .button:hover, #simplecheckout_button_login:hover, .pagination li.active span, .pagination li:hover a, #rm_livesearch_close, .simplecheckout-cart-buttons .button, .rm-header-location.active .rm-btn, #rm_mobile_menu_button, .rm-sidebar #rm_mobile_menu_toggle_button:before, .rm-btn.secondary:hover, .rm-btn.dark:hover {background-color:". $data['button_color_main'] .";}".PHP_EOL;
$css .= "@media (min-width: 1200px){.rm-btn.secondary:hover, .rm-btn.dark:hover, .rm-module-item:hover .rm-cart-btn {background:". $data['button_color_main'] .";}}".PHP_EOL;
}
if (isset($data['button_color_text']) && !empty($data['button_color_text'])) {
$css .= ".rm-btn.primary, .rm-btn.primary .rm-btn-text {color:". $data['button_color_text'] .";}".PHP_EOL;
}
if (isset($data['button_fon_dark']) && !empty($data['button_fon_dark'])) {
$css .= ".rm-btn.dark {background-color:". $data['button_fon_dark'] .";}".PHP_EOL;
}
if (isset($data['button_text_dark']) && !empty($data['button_text_dark'])) {
$css .= ".rm-btn.dark, .rm-btn.dark .rm-btn-text {color:". $data['button_text_dark'] .";}".PHP_EOL;
}
if (isset($data['button_fon_light']) && !empty($data['button_fon_light'])) {
$css .= ".rm-btn.secondary {background-color:". $data['button_fon_light'] .";}".PHP_EOL;
}
if (isset($data['button_text_light']) && !empty($data['button_text_light'])) {
$css .= ".rm-btn.secondary, .rm-btn.secondary .rm-btn-text {color:". $data['button_text_light'] .";}".PHP_EOL;
}
if (isset($data['top_fon_color']) && !empty($data['top_fon_color'])) {
$css .= "#top {background:". $data['top_fon_color'] .";}".PHP_EOL;
}
if (isset($data['top_link_color']) && !empty($data['top_link_color'])) {
$css .= ".top-nav-info-list a, .top-nav-account-links-item a, .top-nav-account-links-item button, .top-nav-account-links-item > span {color:". $data['top_link_color'] ."!important;}".PHP_EOL;
}
if (isset($data['top_link_color_hover']) && !empty($data['top_link_color_hover'])) {
$css .= ".top-nav-info-list a:hover, #top .top-nav-account-links-item button:focus, .top-nav-account-links-item:hover > a, .top-nav-account-links-item button:hover, .top-nav-account-links-item:hover form > button, .top-nav li:hover > a, .top-nav-account-links-item > span:hover {color:". $data['top_link_color_hover'] ." !important;}".PHP_EOL;
$css .= ".top-nav .rm-dropdown-box:hover .rm-dropdown-toggle::after {background:". $data['top_link_color_hover'] ." !important;}".PHP_EOL;
}
if (isset($data['footer_fon_color']) && !empty($data['footer_fon_color'])) {
$css .= ".rm-footer {background-color:". $data['footer_fon_color'] .";}".PHP_EOL;
}
if (isset($data['footer_text_color']) && !empty($data['footer_text_color'])) {
$css .= ".rm-footer-text, .rm-footer-credits {color:". $data['footer_text_color'] .";}".PHP_EOL;
}
if (isset($data['footer_link_color']) && !empty($data['footer_link_color'])) {
$css .= ".rm-footer-phones, .rm-footer-links-list a {color:". $data['footer_link_color'] .";}".PHP_EOL;
}
if (isset($data['footer_link_hover_color']) && !empty($data['footer_link_hover_color'])) {
$css .= ".rm-footer-phones a:hover, .rm-footer-links-list a:hover {color:". $data['footer_link_hover_color'] .";}".PHP_EOL;
}
if (isset($data['category_module_fon_color']) && !empty($data['category_module_fon_color'])) {
$css .= ".rm-column-categories-item {background:". $data['category_module_fon_color'] .";}".PHP_EOL;
}
if (isset($data['category_module_link_color']) && !empty($data['category_module_link_color'])) {
$css .= ".rm-column-categories-item {color:". $data['category_module_link_color'] .";}".PHP_EOL;
}
if (isset($data['category_module_link_hover_color']) && !empty($data['category_module_link_hover_color'])) {
$css .= ".rm-column-categories-item.active > span, .rm-column-categories-item .rm-categories-3 .active, .rm-column-categories-item a:hover {color:". $data['category_module_link_hover_color'] .";}".PHP_EOL;
}
if (isset($data['modal_fon_title_color']) && !empty($data['modal_fon_title_color'])) {
$css .= ".modal-header {background:". $data['modal_fon_title_color'] .";}".PHP_EOL;
}
if (isset($data['modal_text_title_color']) && !empty($data['modal_text_title_color'])) {
$css .= ".modal-title {color:". $data['modal_text_title_color'] .";}".PHP_EOL;
}
if (isset($data['modal_fon_icon_color']) && !empty($data['modal_fon_icon_color'])) {
$css .= ".modal-close-icon {background-color:". $data['modal_fon_icon_color'] .";}".PHP_EOL;
}
if (isset($data['mobile_fon_top_color']) && !empty($data['mobile_fon_top_color'])) {
$css .= "#rm_mobile_nav {background:". $data['mobile_fon_top_color'] .";}".PHP_EOL;
}
if (!isset($data['compare'])) {
$css .= ".oct-fixed-bar-item-compare, .rm-module-buttons-item.compare, .rm-product-top-button-compare, .rm-btn.compare, #rm_mobile_compare {display: none!important;}".PHP_EOL;
}
if (!isset($data['wishlist'])) {
$css .= ".oct-fixed-bar-item-wishlist, .rm-module-buttons-item.wishlist, .rm-product-top-button-wishlist, .rm-btn.wishlist, #rm_mobile_wishlist {display: none!important;}".PHP_EOL;
}
if (!empty($css_code)) {
$css .= html_entity_decode($css_code, ENT_QUOTES, 'UTF-8');
}
file_put_contents(DIR_CATALOG . 'view/theme/'. $this->oct_theme .'/stylesheet/dynamic_stylesheet_'. $store_id .'.css', $css);
}
public function cacheDelete() {
if ($this->validateModification()) {
$this->load->language('octemplates/theme/'. $this->oct_theme);
$maintenance = $this->config->get('config_maintenance');
$this->load->model('setting/setting');
$this->cache->delete('octemplates');
$this->model_setting_setting->editSettingValue('config', 'config_maintenance', true);
if (isset($this->request->get['store_id'])) {
$store_id = $this->request->get['store_id'];
} else {
$store_id = 0;
}
$setting_info = $this->model_setting_setting->getSetting('theme_'. $this->oct_theme, $store_id);
$oct_colors = isset($setting_info['theme_'. $this->oct_theme .'_data_colors']) && !empty($setting_info['theme_'. $this->oct_theme .'_data_colors']) ? $setting_info['theme_'. $this->oct_theme .'_data_colors'] : [];
$oct_css_code = isset($setting_info['theme_'. $this->oct_theme .'_css_code']) && !empty($setting_info['theme_'. $this->oct_theme .'_css_code']) ? $setting_info['theme_'. $this->oct_theme .'_css_code'] : '';
$this->generateCss($oct_colors, $oct_css_code, $store_id);
if (is_dir($this->request->server['DOCUMENT_ROOT'] . '/min/cache/')) {
$this->delTree($this->request->server['DOCUMENT_ROOT'] . '/min/cache/');
}
$this->delTree(DIR_CACHE);
if (!file_exists(DIR_CACHE)) {
mkdir(DIR_CACHE);
$addindexf = fopen(DIR_CACHE .'index.html', 'w');
fclose($addindexf);
}
$this->session->data['success'] = $this->language->get('text_success_cache');
// Maintance mode back to original settings
$this->model_setting_setting->editSettingValue('config', 'config_maintenance', $maintenance);
}
$this->response->redirect($this->url->link('extension/theme/'. $this->oct_theme, 'user_token=' . $this->session->data['user_token'] . '&store_id='.$this->request->get['store_id'], true));
}
private function delTree($dir) {
$files = array_diff(scandir($dir), ['.','..']);
foreach ($files as $file) {
(is_dir("$dir/$file")) ? $this->delTree("$dir/$file") : unlink("$dir/$file");
}
return rmdir($dir);
}
public function refresh($reload = true) {
$this->load->language('marketplace/modification');
$this->load->model('setting/modification');
if ($this->validateModification()) {
// Just before files are deleted, if config settings say maintenance mode is off then turn it on
$maintenance = $this->config->get('config_maintenance');
$this->load->model('setting/setting');
$this->model_setting_setting->editSettingValue('config', 'config_maintenance', true);
//Log
$log = [];
// Clear all modification files
$files = [];
// Make path into an array
$path = [DIR_MODIFICATION . '*'];
// While the path array is still populated keep looping through
while (count($path) != 0) {
$next = array_shift($path);
foreach (glob($next) as $file) {
// If directory add to path array
if (is_dir($file)) {
$path[] = $file . '/*';
}
// Add the file to the files to be deleted array
$files[] = $file;
}
}
// Reverse sort the file array
rsort($files);
// Clear all modification files
foreach ($files as $file) {
if ($file != DIR_MODIFICATION . 'index.html') {
// If file just delete
if (is_file($file)) {
unlink($file);
// If directory use the remove directory function
} elseif (is_dir($file)) {
rmdir($file);
}
}
}
// Begin
$xml = [];
// Load the default modification XML
$xml[] = file_get_contents(DIR_SYSTEM . 'modification.xml');
// This is purly for developers so they can run mods directly and have them run without upload after each change.
$files = glob(DIR_SYSTEM . '*.ocmod.xml');
if ($files) {
foreach ($files as $file) {
$xml[] = file_get_contents($file);
}
}
// Get the default modification file
$results = $this->model_setting_modification->getModifications();
foreach ($results as $result) {
if ($result['status']) {
$xml[] = $result['xml'];
}
}
$modification = [];
foreach ($xml as $xml) {
if (empty($xml)){
continue;
}
$dom = new DOMDocument('1.0', 'UTF-8');
$dom->preserveWhiteSpace = false;
$dom->loadXml($xml);
// Log
$log[] = 'MOD: ' . $dom->getElementsByTagName('name')->item(0)->textContent;
// Wipe the past modification store in the backup array
$recovery = [];
// Set the a recovery of the modification code in case we need to use it if an abort attribute is used.
if (isset($modification)) {
$recovery = $modification;
}
$files = $dom->getElementsByTagName('modification')->item(0)->getElementsByTagName('file');
foreach ($files as $file) {
$operations = $file->getElementsByTagName('operation');
$files = explode('|', $file->getAttribute('path'));
foreach ($files as $file) {
$path = '';
// Get the full path of the files that are going to be used for modification
if ((substr($file, 0, 7) == 'catalog')) {
$path = DIR_CATALOG . substr($file, 8);
}
if ((substr($file, 0, 5) == 'admin')) {
$path = DIR_APPLICATION . substr($file, 6);
}
if ((substr($file, 0, 6) == 'system')) {
$path = DIR_SYSTEM . substr($file, 7);
}
if ($path) {
$files = glob($path, GLOB_BRACE);
if ($files) {
foreach ($files as $file) {
// Get the key to be used for the modification cache filename.
if (substr($file, 0, strlen(DIR_CATALOG)) == DIR_CATALOG) {
$key = 'catalog/' . substr($file, strlen(DIR_CATALOG));
}
if (substr($file, 0, strlen(DIR_APPLICATION)) == DIR_APPLICATION) {
$key = 'admin/' . substr($file, strlen(DIR_APPLICATION));
}
if (substr($file, 0, strlen(DIR_SYSTEM)) == DIR_SYSTEM) {
$key = 'system/' . substr($file, strlen(DIR_SYSTEM));
}
// If file contents is not already in the modification array we need to load it.
if (!isset($modification[$key])) {
$content = file_get_contents($file);
$modification[$key] = preg_replace('~\r?\n~', "\n", $content);
$original[$key] = preg_replace('~\r?\n~', "\n", $content);
// Log
$log[] = PHP_EOL . 'FILE: ' . $key;
}
foreach ($operations as $operation) {
$error = $operation->getAttribute('error');
// Ignoreif
$ignoreif = $operation->getElementsByTagName('ignoreif')->item(0);
if ($ignoreif) {
if ($ignoreif->getAttribute('regex') != 'true') {
if (strpos($modification[$key], $ignoreif->textContent) !== false) {
continue;
}
} else {
if (preg_match($ignoreif->textContent, $modification[$key])) {
continue;
}
}
}
$status = false;
// Search and replace
if ($operation->getElementsByTagName('search')->item(0)->getAttribute('regex') != 'true') {
// Search
$search = $operation->getElementsByTagName('search')->item(0)->textContent;
$trim = $operation->getElementsByTagName('search')->item(0)->getAttribute('trim');
$index = $operation->getElementsByTagName('search')->item(0)->getAttribute('index');
// Trim line if no trim attribute is set or is set to true.
if (!$trim || $trim == 'true') {
$search = trim($search);
}
// Add
$add = $operation->getElementsByTagName('add')->item(0)->textContent;
$trim = $operation->getElementsByTagName('add')->item(0)->getAttribute('trim');
$position = $operation->getElementsByTagName('add')->item(0)->getAttribute('position');
$offset = $operation->getElementsByTagName('add')->item(0)->getAttribute('offset');
if ($offset == '') {
$offset = 0;
}
// Trim line if is set to true.
if ($trim == 'true') {
$add = trim($add);
}
// Log
$log[] = 'CODE: ' . $search;
// Check if using indexes
if ($index !== '') {
$indexes = explode(',', $index);
} else {
$indexes = [];
}
// Get all the matches
$i = 0;
$lines = explode("\n", $modification[$key]);
for ($line_id = 0; $line_id < count($lines); $line_id++) {
$line = $lines[$line_id];
// Status
$match = false;
// Check to see if the line matches the search code.
if (stripos($line, $search) !== false) {
// If indexes are not used then just set the found status to true.
if (!$indexes) {
$match = true;
} elseif (in_array($i, $indexes)) {
$match = true;
}
$i++;
}
// Now for replacing or adding to the matched elements
if ($match) {
switch ($position) {
default:
case 'replace':
$new_lines = explode("\n", $add);
if ($offset < 0) {
array_splice($lines, $line_id + $offset, abs($offset) + 1, [str_replace($search, $add, $line)]);
$line_id -= $offset;
} else {
array_splice($lines, $line_id, $offset + 1, [str_replace($search, $add, $line)]);
}
break;
case 'before':
$new_lines = explode("\n", $add);
array_splice($lines, $line_id - $offset, 0, $new_lines);
$line_id += count($new_lines);
break;
case 'after':
$new_lines = explode("\n", $add);
array_splice($lines, ($line_id + 1) + $offset, 0, $new_lines);
$line_id += count($new_lines);
break;
}
// Log
$log[] = 'LINE: ' . $line_id;
$status = true;
}
}
$modification[$key] = implode("\n", $lines);
} else {
$search = trim($operation->getElementsByTagName('search')->item(0)->textContent);
$limit = $operation->getElementsByTagName('search')->item(0)->getAttribute('limit');
$replace = trim($operation->getElementsByTagName('add')->item(0)->textContent);
// Limit
if (!$limit) {
$limit = -1;
}
// Log
$match = [];
preg_match_all($search, $modification[$key], $match, PREG_OFFSET_CAPTURE);
// Remove part of the the result if a limit is set.
if ($limit > 0) {
$match[0] = array_slice($match[0], 0, $limit);
}
if ($match[0]) {
$log[] = 'REGEX: ' . $search;
for ($i = 0; $i < count($match[0]); $i++) {
$log[] = 'LINE: ' . (substr_count(substr($modification[$key], 0, $match[0][$i][1]), "\n") + 1);
}
$status = true;
}
// Make the modification
$modification[$key] = preg_replace($search, $replace, $modification[$key], $limit);
}
if (!$status) {
// Abort applying this modification completely.
if ($error == 'abort') {
$modification = $recovery;
// Log
$log[] = 'NOT FOUND - ABORTING!';
break 5;
}
// Skip current operation or break
elseif ($error == 'skip') {
// Log
$log[] = 'NOT FOUND - OPERATION SKIPPED!';
continue;
}
// Break current operations
else {
// Log
$log[] = 'NOT FOUND - OPERATIONS ABORTED!';
break;
}
}
}
}
}
}
}
}
// Log
$log[] = '----------------------------------------------------------------';
}
// Log
$ocmod = new Log('ocmod.log');
$ocmod->write(implode("\n", $log));
// Write all modification files
foreach ($modification as $key => $value) {
// Only create a file if there are changes
if ($original[$key] != $value) {
$path = '';
$directories = explode('/', dirname($key));
foreach ($directories as $directory) {
$path = $path . '/' . $directory;
if (!is_dir(DIR_MODIFICATION . $path)) {
@mkdir(DIR_MODIFICATION . $path, 0777);
}
}
$handle = fopen(DIR_MODIFICATION . $key, 'w');
fwrite($handle, $value);
fclose($handle);
}
}
// Maintance mode back to original settings
$this->model_setting_setting->editSettingValue('config', 'config_maintenance', $maintenance);
// Do not return success message if refresh() was called with $data
$this->session->data['success'] = $this->language->get('text_success');
$handle = fopen(DIR_LOGS . 'ocmod.log', 'w+');
fclose($handle);
$url = '';
if (isset($this->request->get['store_id'])) {
$url .= '&store_id=' . $this->request->get['store_id'];
} else {
$url .= '&store_id=0';
}
if ($reload) {
$this->response->redirect($this->url->link('extension/theme/'. $this->oct_theme, 'user_token=' . $this->session->data['user_token'] . '&type=theme' . $url, true));
}
}
}
public function update() {
if (isset($this->request->get['store_id'])) {
$url = '&store_id=' . $this->request->get['store_id'];
$store_id = $this->request->get['store_id'];
} else {
$url = '&store_id=0';
$store_id = 0;
}
$this->load->model('setting/setting');
$this->load->model('setting/store');
$this->load->model('localisation/language');
$this->load->model('octemplates/main/oct_settings');
$stores = $this->model_setting_store->getStores();
if ($stores) {
$this->model_setting_setting->editSettingValue('theme_'. $this->oct_theme, 'theme_'. $this->oct_theme .'_version', $this->version, 0);
foreach ($stores as $store) {
$this->model_setting_setting->editSettingValue('theme_'. $this->oct_theme, 'theme_'. $this->oct_theme .'_version', $this->version, $store['store_id']);
}
} else {
$this->model_setting_setting->editSettingValue('theme_'. $this->oct_theme, 'theme_'. $this->oct_theme .'_version', $this->version, $store_id);
}
$oct_slideshow_plus_image = $this->model_octemplates_main_oct_settings->checkTypeColumn(DB_PREFIX . 'oct_slideshow_plus_image', 'image');
if ($oct_slideshow_plus_image && $oct_slideshow_plus_image == 'varchar') {
$this->load->model('octemplates/design/oct_slideshow_plus');
$this->model_octemplates_design_oct_slideshow_plus->updateTypeColumn();
$this->model_octemplates_design_oct_slideshow_plus->updateImages();
}
$this->refresh(false);
$this->cacheDelete();
$file = DIR_APPLICATION . 'view/stylesheet/bootstrap.css';
if (is_file($file) && is_file(DIR_APPLICATION . 'view/stylesheet/sass/_bootstrap.scss')) {
unlink($file);
}
$files = glob(DIR_CATALOG . 'view/theme/*/stylesheet/sass/_bootstrap.scss');
foreach ($files as $file) {
$file = substr($file, 0, -21) . '/bootstrap.css';
if (is_file($file)) {
file_put_contents($file, '');
unlink($file);
}
}
}
public function octSettings() {
return [
'theme_'. $this->oct_theme .'_status',
'theme_'. $this->oct_theme .'_version',
'theme_'. $this->oct_theme .'_license',
'theme_'. $this->oct_theme .'_scripts_in_footer',
'theme_'. $this->oct_theme .'_lazyload_desktop',
'theme_'. $this->oct_theme .'_lazyload_mobile',
'theme_'. $this->oct_theme .'_lazyload_tablet',
'theme_'. $this->oct_theme .'_lazyload_image',
'theme_'. $this->oct_theme .'_data_colors',
'theme_'. $this->oct_theme .'_css_code',
'theme_'. $this->oct_theme .'_js_code',
'theme_'. $this->oct_theme .'_webp',
'theme_'. $this->oct_theme .'_no_quantity_last',
'theme_'. $this->oct_theme .'_no_quantity_grayscale',
'theme_'. $this->oct_theme .'_sort_data',
'theme_'. $this->oct_theme .'_data',
'theme_'. $this->oct_theme .'_data_osucsess',
'theme_'. $this->oct_theme .'_data_atributes',
'theme_'. $this->oct_theme .'_data_cat_atr_limit',
'theme_'. $this->oct_theme .'_data_model',
'theme_'. $this->oct_theme .'_popup_cart_status',
'theme_'. $this->oct_theme .'_isPopup',
'theme_'. $this->oct_theme .'_data_pr_atr_limit',
'theme_'. $this->oct_theme .'_product_limit',
'theme_'. $this->oct_theme .'_product_description_length',
'theme_'. $this->oct_theme .'_image_logo_width',
'theme_'. $this->oct_theme .'_image_logo_height',
'theme_'. $this->oct_theme .'_image_category_width',
'theme_'. $this->oct_theme .'_image_category_height',
'theme_'. $this->oct_theme .'_image_sub_category_width',
'theme_'. $this->oct_theme .'_image_sub_category_height',
'theme_'. $this->oct_theme .'_image_thumb_width',
'theme_'. $this->oct_theme .'_image_thumb_height',
'theme_'. $this->oct_theme .'_image_popup_width',
'theme_'. $this->oct_theme .'_image_popup_height',
'theme_'. $this->oct_theme .'_image_product_width',
'theme_'. $this->oct_theme .'_image_product_height',
'theme_'. $this->oct_theme .'_image_manufacturer_width',
'theme_'. $this->oct_theme .'_image_manufacturer_height',
'theme_'. $this->oct_theme .'_image_additional_width',
'theme_'. $this->oct_theme .'_image_additional_height',
'theme_'. $this->oct_theme .'_image_related_width',
'theme_'. $this->oct_theme .'_image_related_height',
'theme_'. $this->oct_theme .'_image_compare_width',
'theme_'. $this->oct_theme .'_image_compare_height',
'theme_'. $this->oct_theme .'_image_wishlist_width',
'theme_'. $this->oct_theme .'_image_wishlist_height',
'theme_'. $this->oct_theme .'_image_cart_width',
'theme_'. $this->oct_theme .'_image_cart_height',
'theme_'. $this->oct_theme .'_image_location_width',
'theme_'. $this->oct_theme .'_image_location_height',
'theme_'. $this->oct_theme .'_alert_status',
'theme_'. $this->oct_theme .'_alert_data',
'theme_'. $this->oct_theme .'_bar_data',
'theme_'. $this->oct_theme .'_live_search_status',
'theme_'. $this->oct_theme .'_live_search_data',
'theme_'. $this->oct_theme .'_feedback_status',
'theme_'. $this->oct_theme .'_feedback_data',
'theme_'. $this->oct_theme .'_seo_title_status',
'theme_'. $this->oct_theme .'_seo_title_data',
'theme_'. $this->oct_theme .'_seo_url_status',
'theme_'. $this->oct_theme .'_seo_url_data',
];
}
public function install() {
$this->load->model('setting/setting');
$this->load->model('user/user_group');
$this->load->model('octemplates/main/oct_settings');
$this->load->model('octemplates/design/oct_banner_plus');
$this->load->model('octemplates/design/oct_slideshow_plus');
$this->load->model('octemplates/faq/oct_product_faq');
$this->model_user_user_group->addPermission($this->user->getGroupId(), 'access', 'extension/theme/'. $this->oct_theme);
$this->model_user_user_group->addPermission($this->user->getGroupId(), 'modify', 'extension/theme/'. $this->oct_theme);
$this->model_setting_setting->editSetting('theme_'. $this->oct_theme, [
'theme_'. $this->oct_theme .'_status' => 0,
'theme_'. $this->oct_theme .'_version' => $this->version,
'theme_'. $this->oct_theme .'_license' => '',
'theme_'. $this->oct_theme .'_directory' => $this->oct_theme,
'theme_'. $this->oct_theme .'_product_limit' => 24,
'theme_'. $this->oct_theme .'_product_description_length' => 250,
'theme_'. $this->oct_theme .'_image_sub_category_width' => 95,
'theme_'. $this->oct_theme .'_image_sub_category_height' => 95,
'theme_'. $this->oct_theme .'_image_logo_width' => 141,
'theme_'. $this->oct_theme .'_image_logo_height' => 64,
'theme_'. $this->oct_theme .'_image_category_width' => 80,
'theme_'. $this->oct_theme .'_image_category_height' => 80,
'theme_'. $this->oct_theme .'_image_manufacturer_width' => 90,
'theme_'. $this->oct_theme .'_image_manufacturer_height' => 80,
'theme_'. $this->oct_theme .'_image_thumb_width' => 700,
'theme_'. $this->oct_theme .'_image_thumb_height' => 700,
'theme_'. $this->oct_theme .'_image_popup_width' => 700,
'theme_'. $this->oct_theme .'_image_popup_height' => 700,
'theme_'. $this->oct_theme .'_image_product_width' => 228,
'theme_'. $this->oct_theme .'_image_product_height' => 228,
'theme_'. $this->oct_theme .'_image_additional_width' => 80,
'theme_'. $this->oct_theme .'_image_additional_height' => 80,
'theme_'. $this->oct_theme .'_image_related_width' => 228,
'theme_'. $this->oct_theme .'_image_related_height' => 228,
'theme_'. $this->oct_theme .'_image_compare_width' => 90,
'theme_'. $this->oct_theme .'_image_compare_height' => 90,
'theme_'. $this->oct_theme .'_image_wishlist_width' => 100,
'theme_'. $this->oct_theme .'_image_wishlist_height' => 100,
'theme_'. $this->oct_theme .'_image_cart_width' => 100,
'theme_'. $this->oct_theme .'_image_cart_height' => 100,
'theme_'. $this->oct_theme .'_image_location_width' => 360,
'theme_'. $this->oct_theme .'_image_location_height' => 320,
'theme_'. $this->oct_theme .'_scripts_in_footer' => 0,
'theme_'. $this->oct_theme .'_lazyload_desktop' => 1,
'theme_'. $this->oct_theme .'_lazyload_mobile' => 1,
'theme_'. $this->oct_theme .'_lazyload_tablet' => 1,
'theme_'. $this->oct_theme .'_data_pr_atr_limit' => 5,
'theme_'. $this->oct_theme .'_lazyload_image' => 'catalog/remarket/lazy-image.svg',
'theme_'. $this->oct_theme .'_css_code' => '',
'theme_'. $this->oct_theme .'_js_code' => '',
'theme_'. $this->oct_theme .'_webp' => 0,
'theme_'. $this->oct_theme .'_no_quantity_last' => 1,
'theme_'. $this->oct_theme .'_no_quantity_grayscale' => 1,
'theme_'. $this->oct_theme .'_data_atributes' => 0,
'theme_'. $this->oct_theme .'_data_cat_atr_limit' => 5,
'theme_'. $this->oct_theme .'_data_model' => 0,
'theme_'. $this->oct_theme .'_data_colors' => [
'main_color' => 'rgb(251, 145, 48)',
'main_link_color' => 'rgb(10, 120, 191)',
'fon_color' => 'rgb(249, 249, 252)',
'button_color_main' => 'rgb(251, 145, 48)',
'button_color_text' => 'rgb(255, 255, 255)',
'button_fon_dark' => 'rgb(101, 108, 125)',
'button_text_dark' => 'rgb(255, 255, 255)',
'button_fon_light' => 'rgb(233, 233, 233)',
'button_text_light' => 'rgb(39, 35, 35)',
'top_fon_color' => 'rgb(249, 249, 252)',
'top_link_color' => 'rgb(101, 108, 125)',
'top_link_color_hover' => 'rgb(10, 120, 191)',
'footer_fon_color' => 'rgb(255, 255, 255)',
'footer_text_color' => 'rgb(101, 108, 125)',
'footer_link_color' => 'rgb(101, 108, 125)',
'footer_link_hover_color' => 'rgb(10, 120, 191)',
'category_module_fon_color' => 'rgb(252, 252, 252)',
'category_module_link_color' => 'rgb(39, 35, 35)',
'category_module_link_hover_color' => 'rgb(10, 120, 191)',
'mobile_fon_top_color' => 'rgb(253, 253, 253)',
'modal_fon_title_color' => 'rgba(255, 255, 255, 0)',
'modal_text_title_color' => 'rgb(39, 35, 35)',
'modal_fon_icon_color' => 'rgb(119, 119, 119)',
'compare' => 1,
'wishlist' => 1,
],
'theme_'. $this->oct_theme .'_sort_data' => [
'deff_sort' => 'p.sort_order-ASC',
'sorts' => [
'p.sort_order-ASC',
'p.sort_order-DESC',
'pd.name-ASC',
'pd.name-DESC',
'p.price-ASC',
'p.price-DESC',
'p.model-ASC',
'p.model-DESC',
'p.quantity-ASC',
'p.quantity-DESC',
'p.viewed-ASC',
'p.viewed-DESC',
'p.date_added-ASC',
'p.date_added-DESC',
'rating-ASC',
'rating-DESC',
],
],
'theme_'. $this->oct_theme .'_data' => [
'minify' => 1,
'micro' => 1,
'open_graph' => 0,
'header_information_links' => [],
'header_account' => 1,
'header_cur' => 1,
'header_lang' => 1,
'header_menu' => 1,
'footer_totop' => 1,
'footer_subscribe' => 1,
'footer_link_contact' => 1,
'footer_link_return' => 1,
'footer_link_sitemap' => 1,
'footer_link_man' => 1,
'footer_link_cert' => 1,
'footer_link_partners' => 1,
'footer_link_specials' => 1,
'footer_information_links' => [],
'footer_category_links' => [],
'mobile_information_links' => [],
'mobile_menu' => [
'title' => [],
'st_cats' => 1,
't_cats' => 1,
'icon' => 1,
'brands' => 1,
'blog' => 1,
'links' => 1,
'time' => 1,
'address' => 1,
'languages' => 1,
'currency' => 1,
'phones' => 1,
'email' => 1,
'telegram' => 1,
'viber' => 1,
'skype' => 1,
'whatsapp' => 1,
'messenger' => 1,
],
'megamenu' => [
'status' => 1,
'dtitle' => [],
'dcategories' => 1,
'limit' => 0,
'icon' => 1,
'page' => 1,
'view' => 1,
'sort' => 1,
],
'contact_address' => [],
'contact_telephone' => $this->config->get('config_telephone'),
'contact_open' => [],
'contact_map' => '',
'contact_email' => $this->config->get('config_email'),
'contact_skype' => '',
'contact_whatsapp' => $this->config->get('config_telephone'),
'contact_viber' => $this->config->get('config_telephone'),
'contact_telegram' => $this->config->get('config_telephone'),
'contact_messenger' => '',
'contact_paymants' => [],
'contact_socials' => [],
'contact_image' => '',
'man_logo' => 1,
'contact_view_map' => 1,
'contact_view_locations' => 1,
'contact_view_socials' => 1,
'contact_view_time' => 1,
'contact_view_phone' => 1,
'contact_view_address' => 1,
'contact_view_html' => [],
'category_desc_position' => 'bottom',
'category_desc_up' => '0',
'category_desc_in_page' => 1,
'category_view_subcats' => 1,
'category_subcat_products' => 1,
'category_product_desc' => 1,
'category_cat_image' => 1,
'category_page' => 1,
'category_view_sort_oder' => 1,
'category_view_quantity' => 1,
'category_show_more' => 1,
'category_show_type' => '',
'product_dop_tab' => 0,
'product_dop_tab_title' => [],
'product_dop_tab_text' => [],
'product_js_button' => '',
'product_model' => 1,
'product_blog_related' => 0,
'product_gallery' => 0,
'product_zoom' => 0,
'product_faq' => 1,
'product_advantage' => 0,
'product_advantages' => [],
'product_atributes' => 1,
'preload_images' => 1,
'socials' => [
0 => [
'icone' => 'fab fa-facebook-f',
'link' => '',
'title' => 'Facebook'
],
1 => [
'icone' => 'fab fa-twitter',
'link' => '',
'title' => 'Twitter'
],
2 => [
'icone' => 'fab fa-instagram',
'link' => '',
'title' => 'Instagram'
],
3 => [
'icone' => 'fab fa-vk',
'link' => '',
'title' => 'VK'
],
4 => [
'icone' => 'fab fa-odnoklassniki',
'link' => '',
'title' => 'Od'
],
],
'payments' => [
'sber' => 1,
'privat24' => 1,
'ym' => 1,
'wm' => 0,
'visa' => 1,
'qw' => 0,
'skrill' => 0,
'interkassa' => 0,
'lp' => 0,
'pp' => 0,
'robo' => 0,
'mc' => 1,
'maestro' => 0,
'customers' => [],
]
],
'theme_'. $this->oct_theme .'_popup_cart_status' => 1,
'theme_'. $this->oct_theme .'_popup_cart_data' => [],
'theme_'. $this->oct_theme .'_alert_status' => 0,
'theme_'. $this->oct_theme .'_alert_data' => [
'orders' => 0,
'products' => 0,
'oct_modules' => 0,
],
'theme_'. $this->oct_theme .'_bar_data' => [
'status' => 1,
'position' => 'right',
'show_wishlist' => 1,
'show_compare' => 1,
'show_cart' => 1,
'show_views' => 1,
'show_account' => 1,
],
'theme_'. $this->oct_theme .'_feedback_status' => 1,
'theme_'. $this->oct_theme .'_feedback_data' => [
'feedback_messenger' => 1,
'feedback_viber' => 1,
'feedback_telegram' => 1,
'feedback_skype' => 1,
'feedback_whatsapp' => 1,
'feedback_email' => 1,
'feedback_callback' => 1,
'feedback_contact_link' => 1,
],
'theme_'. $this->oct_theme .'_live_search_status' => 1,
'theme_'. $this->oct_theme .'_live_search_data' => [
'delay' => 500,
'price' => 1,
'model' => 1,
'sku' => 1,
'description' => 1,
'count_symbol' => 2
],
'theme_'. $this->oct_theme .'_seo_url_status' => 0,
'theme_'. $this->oct_theme .'_seo_url_data' => [
'lang_prefix' => [],
'product' => '[name]-[model]-[lang_prefix]',
'category' => '[name]-[lang_prefix]',
'manufacturer' => '[name]-[lang_prefix]',
'information' => '[name]-[lang_prefix]',
'blog_category' => '[name]-[lang_prefix]',
'blog_article' => '[name]-[lang_prefix]',
],
'theme_'. $this->oct_theme .'_seo_title_status' => 0,
'theme_'. $this->oct_theme .'_seo_title_data' => [
'product' => [
'title_status' => 0,
'title_empty' => 0,
'title' => '',
'description_status' => 0,
'description_empty' => 0,
'description' => ''
],
'category' => [
'title_status' => 0,
'title_empty' => 0,
'title' => '',
'description_status' => 0,
'description_empty' => 0,
'description' => ''
],
'manufacturer' => [
'title_status' => 0,
'title' => '',
'description_status' => 0,
'description' => ''
]
],
]);
if (isset($this->request->get['store_id'])) {
$store_id = $this->request->get['store_id'];
} else {
$store_id = 0;
}
//$this->model_setting_setting->editSettingValue('developer', 'developer_sass', 1, $store_id);
$this->model_octemplates_main_oct_settings->installOCTLocation();
$this->model_octemplates_main_oct_settings->installOCTMenu();
$this->model_octemplates_main_oct_settings->installOCTFields();
$this->model_octemplates_design_oct_banner_plus->createDBTables();
$this->model_octemplates_design_oct_slideshow_plus->createDBTables();
$this->model_octemplates_faq_oct_product_faq->createDBTables();
$this->addOctPermissions('blog', glob(DIR_APPLICATION . 'controller/octemplates/blog/*.php'));
$this->addOctPermissions('faq', glob(DIR_APPLICATION . 'controller/octemplates/faq/*.php'));
$this->addOctPermissions('design', glob(DIR_APPLICATION . 'controller/octemplates/design/*.php'));
$this->addOctPermissions('module', glob(DIR_APPLICATION . 'controller/octemplates/module/*.php'));
$this->addOctPermissions('stickers', glob(DIR_APPLICATION . 'controller/octemplates/stickers/*.php'));
$this->addOctPermissions('menu', glob(DIR_APPLICATION . 'controller/octemplates/menu/*.php'));
}
public function octQuickStart() {
if (file_exists(DIR_SYSTEM ."library/octemplates/quickstart/". $this->oct_theme .".sql") && $this->config->get('theme_'. $this->oct_theme .'_license')) {
$this->load->model('octemplates/blog/oct_blogsettings');
$this->model_octemplates_blog_oct_blogsettings->createDBTables();
$this->load->model('octemplates/module/oct_popup_call_phone');
$this->model_octemplates_module_oct_popup_call_phone->makeDB();
$this->load->model('octemplates/module/oct_popup_found_cheaper');
$this->model_octemplates_module_oct_popup_found_cheaper->makeDB();
$this->load->model('octemplates/module/oct_product_tabs_settings');
$this->model_octemplates_module_oct_product_tabs_settings->makeDB();
$this->load->model('octemplates/module/oct_sreview_reviews');
$this->model_octemplates_module_oct_sreview_reviews->installTables();
$this->load->model('octemplates/module/oct_subscribe');
$this->model_octemplates_module_oct_subscribe->makeDB();
//$settings = json_decode(file_get_contents(DIR_SYSTEM ."library/octemplates/quickstart/". $this->oct_theme .".json"));
$database = DIR_SYSTEM ."library/octemplates/quickstart/". $this->oct_theme .".sql";
$lines = file($database);
if ($lines) {
$sql = '';
$oct_license = $this->config->get('theme_'. $this->oct_theme .'_license');
$config_currency = $this->config->get('config_currency');
$config_admin_language = $this->config->get('config_admin_language');
$config_language = $this->config->get('config_language');
$man_descr = $this->db->query("SELECT COUNT(*) as total FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '". DB_DATABASE ."' AND TABLE_NAME = '". DB_PREFIX ."manufacturer_description'");
$del_man_descr = ($man_descr->row['total'] == 0) ? true : false;
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."attribute`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."attribute_description`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."attribute_group`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."attribute_group_description`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."banner`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."banner_image`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."category`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."category_description`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."category_filter`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."category_path`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."category_to_layout`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."category_to_store`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."extension`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."information`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."information_description`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."information_to_layout`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."information_to_store`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."language`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."layout`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."layout_module`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."layout_route`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."manufacturer`");
if (!$del_man_descr) {
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."manufacturer_description`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."manufacturer_to_layout`");
}
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."manufacturer_to_store`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."module`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_banner_plus`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_banner_plus_image`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_banner_plus_image_description`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_blogarticle`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_blogarticle_description`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_blogarticle_image`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_blogarticle_related`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_blogarticle_related_product`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_blogarticle_to_category`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_blogarticle_to_layout`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_blogarticle_to_store`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_blogcategory`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_blogcategory_description`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_blogcategory_path`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_blogcategory_to_layout`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_blogcategory_to_store`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_blogcomments`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_extra_tabs`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_extra_tabs_description`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_faq`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_location`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_menu`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_menu_description`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_menu_to_customer_group`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_menu_to_store`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_product_extra_tabs`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_slideshow_plus`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_slideshow_plus_image`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_slideshow_plus_image_description`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_slideshow_plus_product`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_sreview_reviews`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_sreview_reviews_vote`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_sreview_subject`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_sreview_subject_description`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_sreview_subject_to_store`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."oct_subscribe`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."option`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."option_description`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."option_value`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."option_value_description`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."product`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."product_attribute`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."product_description`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."product_discount`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."product_filter`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."product_image`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."product_option`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."product_option_value`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."product_related`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."product_reward`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."product_special`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."product_to_category`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."product_to_layout`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."product_to_store`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."setting`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."order_status`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."weight_class_description`");
$this->db->query("TRUNCATE TABLE `". DB_PREFIX ."length_class_description`");
foreach($lines as $line) {
if ($line && (substr($line, 0, 2) != '--') && (substr($line, 0, 1) != '#')) {
$sql .= $line;
if (preg_match('/;\s*$/', $line)) {
$sql = str_replace("CREATE TABLE IF NOT EXISTS `oc_", "CREATE TABLE IF NOT EXISTS `" . DB_PREFIX, $sql);
$sql = str_replace("INSERT INTO `oc_", "INSERT INTO `" . DB_PREFIX, $sql);
$this->db->query($sql);
$sql = '';
}
}
}
$this->db->query("INSERT INTO `" . DB_PREFIX . "setting` SET `store_id` = '0', `code` = 'theme_oct_remarket', `key` = 'theme_". $this->oct_theme ."_license', `value` = '". $this->db->escape($oct_license) ."'");
$this->db->query("INSERT INTO `" . DB_PREFIX . "setting` SET `store_id` = '0', `code` = 'config', `key` = 'config_timezone', `value` = 'UTC'");
$this->db->query("UPDATE `" . DB_PREFIX . "setting` SET `value` = '". $this->db->escape($config_currency) ."' WHERE `key` = 'config_currency'");
//$this->db->query("UPDATE `" . DB_PREFIX . "setting` SET `value` = '". $this->db->escape($config_admin_language) ."' WHERE `key` = 'config_admin_language'");
//$this->db->query("UPDATE `" . DB_PREFIX . "setting` SET `value` = '". $this->db->escape($config_language) ."' WHERE `key` = 'config_language'");
if ($del_man_descr) {
$this->db->query("DROP TABLE `" . DB_PREFIX . "manufacturer_description`");
$this->db->query("DROP TABLE `" . DB_PREFIX . "manufacturer_to_layout`");
}
if (!file_exists(DIR_LANGUAGE ."ru-ru/common/footer.php")) {
$this->delTree(DIR_LANGUAGE ."ru-ru/");
$this->delTree(DIR_CATALOG ."language/ru-ru/");
rename(DIR_LANGUAGE ."ru-ru_", DIR_LANGUAGE ."ru-ru");
rename(DIR_CATALOG ."language/ru-ru_", DIR_CATALOG ."language/ru-ru");
}
if (!file_exists(DIR_LANGUAGE ."uk-ua/common/footer.php")) {
$this->delTree(DIR_LANGUAGE ."uk-ua/");
$this->delTree(DIR_CATALOG ."language/uk-ua/");
rename(DIR_LANGUAGE ."uk-ua_", DIR_LANGUAGE ."uk-ua");
rename(DIR_CATALOG ."language/uk-ua_", DIR_CATALOG ."language/uk-ua");
}
}
$this->delTree(DIR_SYSTEM ."library/octemplates/quickstart/");
}
$this->response->redirect($this->url->link('extension/theme/'. $this->oct_theme, 'user_token=' . $this->session->data['user_token'] . '&store_id='.$this->request->get['store_id'], true));
}
/*
private function octCopyFiles($from, $to, $rewrite = true) {
if (is_dir($from)) {
@mkdir($to);
$octDir = dir($from);
while (false !== ($entry = $octDir->read())) {
if ($entry == "." || $entry == "..") continue;
$this->octCopyFiles("$from/$entry", "$to/$entry", $rewrite);
}
$octDir->close();
} else {
if (!file_exists($to) || $rewrite) {
copy($from, $to);
}
}
}
*/
private function addOctPermissions($type = 'module', $module_files) {
$this->load->model('user/user_group');
if ($module_files) {
foreach ($module_files as $file) {
$extension = basename($file, '.php');
$this->model_user_user_group->addPermission($this->user->getGroupId(), 'access', 'octemplates/'. $type .'/' . $extension);
$this->model_user_user_group->addPermission($this->user->getGroupId(), 'modify', 'octemplates/'. $type .'/' . $extension);
}
}
}
public function uninstall() {
$this->load->model('setting/setting');
$this->load->model('user/user_group');
$this->load->model('octemplates/main/oct_settings');
$this->model_octemplates_main_oct_settings->deleteOCTLocation();
$this->model_octemplates_main_oct_settings->deleteOCTMenu();
$this->model_user_user_group->removePermission($this->user->getGroupId(), 'access', 'extension/theme/'. $this->oct_theme);
$this->model_user_user_group->removePermission($this->user->getGroupId(), 'modify', 'extension/theme/'. $this->oct_theme);
$this->removeOctPermissions('blog', glob(DIR_APPLICATION . 'controller/octemplates/blog/*.php'));
$this->removeOctPermissions('design', glob(DIR_APPLICATION . 'controller/octemplates/design/*.php'));
$this->removeOctPermissions('module', glob(DIR_APPLICATION . 'controller/octemplates/module/*.php'));
$this->removeOctPermissions('stickers', glob(DIR_APPLICATION . 'controller/octemplates/stickers/*.php'));
$this->model_setting_setting->deleteSetting('theme_'. $this->oct_theme);
}
private function removeOctPermissions($type = 'module', $module_files) {
$this->load->model('user/user_group');
if ($module_files) {
foreach ($module_files as $file) {
$extension = basename($file, '.php');
$this->model_user_user_group->removePermission($this->user->getGroupId(), 'access', 'octemplates/'. $type .'/' . $extension);
$this->model_user_user_group->removePermission($this->user->getGroupId(), 'modify', 'octemplates/'. $type .'/' . $extension);
}
}
}
protected function aa7bb4b05fbd27db7ca594893f166b47() {if(!$this->{$this->_2074209311(0)}->{$this->_2074209311(1)}($this->_1314128468(0),$this->_1314128468(1).$this->{$this->_1481607973(13)})){$this->{$this->_1314128468(2)}[$this->_1314128468(3)]=$this->{$this->_1314128468(4)}->{$this->_1481607973(15)}($this->_1314128468(5));}if(!$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.$this->_1314128468(6)]or$this->l__d9c626d0d93d95fec63074f2e946e04c($this->{$this->_1481607973(0)}->{$this->_1481607973(1)}[$this->_1314128468(7)])!=$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.$this->_1314128468(6)]){$this->{$this->_1314128468(2)}[$this->_1314128468(8)]=$this->{$this->_1314128468(4)}->{$this->_1481607973(15)}($this->_1314128468(9));}if(!$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_product_limit']){$this->{$this->_1314128468(2)}['product_limit']=$this->{$this->_1314128468(4)}->{$this->_1481607973(15)}('error_limit');}if(!$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_product_description_length']){$this->{$this->_1314128468(2)}['product_description_length']=$this->{$this->_1314128468(4)}->{$this->_1481607973(15)}('error_limit');}if(!$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_image_category_width']||!$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_image_category_height']){$this->{$this->_1314128468(2)}['image_category']=$this->{$this->_1314128468(4)}->{$this->_1481607973(15)}('error_image_category');}if(!$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_image_sub_category_width']||!$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_image_sub_category_height']){$this->{$this->_1314128468(2)}['image_sub_category']=$this->{$this->_1314128468(4)}->{$this->_1481607973(15)}('error_image_sub_category');}if(!$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_image_thumb_width']||!$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_image_thumb_height']){$this->{$this->_1314128468(2)}['image_thumb']=$this->{$this->_1314128468(4)}->{$this->_1481607973(15)}('error_image_thumb');}if(!$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_image_popup_width']||!$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_image_popup_height']){$this->{$this->_1314128468(2)}['image_popup']=$this->{$this->_1314128468(4)}->{$this->_1481607973(15)}('error_image_popup');}if(!$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_image_manufacturer_width']||!$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_image_manufacturer_height']){$this->{$this->_1314128468(2)}['image_manufacturer']=$this->{$this->_1314128468(4)}->{$this->_1481607973(15)}('error_image_manufacturer');}if(!$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_image_product_width']||!$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_image_product_height']){$this->{$this->_1314128468(2)}['image_product']=$this->{$this->_1314128468(4)}->{$this->_1481607973(15)}('error_image_product');}if(!$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_image_additional_width']||!$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_image_additional_height']){$this->{$this->_1314128468(2)}['image_additional']=$this->{$this->_1314128468(4)}->{$this->_1481607973(15)}('error_image_additional');}if(!$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_image_related_width']||!$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_image_related_height']){$this->{$this->_1314128468(2)}['image_related']=$this->{$this->_1314128468(4)}->{$this->_1481607973(15)}('error_image_related');}if(!$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_image_compare_width']||!$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_image_compare_height']){$this->{$this->_1314128468(2)}['image_compare']=$this->{$this->_1314128468(4)}->{$this->_1481607973(15)}('error_image_compare');}if(!$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_image_wishlist_width']||!$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_image_wishlist_height']){$this->{$this->_1314128468(2)}['image_wishlist']=$this->{$this->_1314128468(4)}->{$this->_1481607973(15)}('error_image_wishlist');}if(!$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_image_cart_width']||!$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_image_cart_height']){$this->{$this->_1314128468(2)}['image_cart']=$this->{$this->_1314128468(4)}->{$this->_1481607973(15)}('error_image_cart');}if(!$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_image_location_width']||!$this->{$this->_1481607973(0)}->{$this->_1481607973(4)}[$this->_1481607973(12).$this->{$this->_1481607973(13)}.'_image_location_height']){$this->{$this->_1314128468(2)}['image_location']=$this->{$this->_1314128468(4)}->{$this->_1481607973(15)}('error_image_location');}return!$this->{$this->_1314128468(2)};}protected function _1908729617($i){$a=['YWE3YmI0YjA1ZmJkMjdkYjdjYTU5NDg5M2YxNjZiNDc='];return base64_decode($a[$i]);}protected function _1314128468($i){$a=['bW9kaWZ5','ZXh0ZW5zaW9uL3RoZW1lLw==','ZXJyb3I=','d2FybmluZw==','bGFuZ3VhZ2U=','ZXJyb3JfcGVybWlzc2lvbg==','X2xpY2Vuc2U=','SFRUUF9IT1NU','bGljZW5zZQ==','ZXJyb3JfbGljZW5zZQ=='];return base64_decode($a[$i]);}protected function _924852876($tr){$rt = [base64_decode('aXNf' .'YXJyY' .'Xk='),base64_decode('c3RycG9z'),base64_decode('cGFyc2VfdXJ' .'s'),base64_decode('cH' .'J' .'lZ' .'19' .'tYX' .'Rja' .'A=='),base64_decode('c3RyX3' .'Jl' .'c' .'GxhY2U='),base64_decode('cHJlZ19tYX' .'RjaA=='),base64_decode('' .'c3Vic' .'3Ry'),base64_decode('c' .'2hh' .'MQ=' .'='),base64_decode('c3RybGVu'),base64_decode('c2hhM' .'Q=='),base64_decode('c3Vi' .'c' .'3Ry'),base64_decode('c2h' .'hMQ=='),base64_decode('c3Ry' .'d' .'G91' .'cHBlc' .'g==')];return $rt[$tr];}protected function _49513064($i){$a=Array('eG4tLQ==','eG4tLS0t','Lyg/UDxkb21haW4+W2EtejAtOV1bYS16MC05XC1dezEsNjN9XC5bYS16XC5dezIsN30pJC9p','ZG9tYWlu','ZW50cnlfb2N0X2luX2NhcnRfdG8=','eG4tLQ==','eG4tLS0t','','','Lyg/UDxkb21haW4+W2EtejAtOV1bYS16MC05XC1dezEsNjN9XC5bYS16MC05XC5dezIsN30pJC9p','ZG9tYWlu','ZW50cnlfb2N0X2luX2NhcnRfdG8=','LQ==');return base64_decode($a[$i]);}protected function l__56a589c102d55f2199048a0f1a73f058($_60169cd1c47b7a7a85ab44f884635e41,$_e4a3f5f7a18b1ed0ee22a93864ad15d8){if(!$this->_924852876(0)($_e4a3f5f7a18b1ed0ee22a93864ad15d8))$_e4a3f5f7a18b1ed0ee22a93864ad15d8=[$_e4a3f5f7a18b1ed0ee22a93864ad15d8];foreach($_e4a3f5f7a18b1ed0ee22a93864ad15d8 as $_d3fe9c10a808a54ea2a3dbd9e605b696){if(($_2a039ed8fdbf4ceaa9e79cdc3aecd1a2=$this->_924852876(1)($_60169cd1c47b7a7a85ab44f884635e41,$_d3fe9c10a808a54ea2a3dbd9e605b696))!==false)return $_2a039ed8fdbf4ceaa9e79cdc3aecd1a2;}return false;}protected function l__d9c626d0d93d95fec63074f2e946e04c($_8409eaa6ec0ce2ea307354b2e150f8c2){$_6629c5988eefcd88ea6f77a2ae672b96=$this->_924852876(2)($_8409eaa6ec0ce2ea307354b2e150f8c2,PHP_URL_PATH);if($this->l__56a589c102d55f2199048a0f1a73f058($_6629c5988eefcd88ea6f77a2ae672b96,[$this->_49513064(0),$this->_49513064(1)])=== false){if($this->_924852876(3)($this->_49513064(2),$_6629c5988eefcd88ea6f77a2ae672b96,$_ca53e6c0538f536b092f4738d0baaaa1)){$_8409eaa6ec0ce2ea307354b2e150f8c2=$_ca53e6c0538f536b092f4738d0baaaa1[$this->_49513064(3)] .$this->{$this->_1314128468(4)}->{$this->_1481607973(15)}($this->_49513064(4));}}else{$_6629c5988eefcd88ea6f77a2ae672b96=$this->_924852876(4)([$this->_49513064(5),$this->_49513064(6)],[$this->_49513064(7),$this->_49513064(8)],$_6629c5988eefcd88ea6f77a2ae672b96);if($this->_924852876(5)($this->_49513064(9),$_6629c5988eefcd88ea6f77a2ae672b96,$_ca53e6c0538f536b092f4738d0baaaa1)){$_8409eaa6ec0ce2ea307354b2e150f8c2=$_ca53e6c0538f536b092f4738d0baaaa1[$this->_49513064(10)] .$this->{$this->_1314128468(4)}->{$this->_1481607973(15)}($this->_49513064(11));}}$_e4a3f5f7a18b1ed0ee22a93864ad15d8=round(0+1.25+1.25+1.25+1.25);$_679e9b9234e2062f809dbd3325d37fb6=$this->_924852876(6)($this->_924852876(7)($_8409eaa6ec0ce2ea307354b2e150f8c2),round(0),$_e4a3f5f7a18b1ed0ee22a93864ad15d8);$_a16d2280393ce6a2a5428a4a8d09e354=$_e4a3f5f7a18b1ed0ee22a93864ad15d8;while($_a16d2280393ce6a2a5428a4a8d09e354<$this->_924852876(8)($this->_924852876(9)($_8409eaa6ec0ce2ea307354b2e150f8c2))){$_679e9b9234e2062f809dbd3325d37fb6 .= $this->_49513064(12);$_679e9b9234e2062f809dbd3325d37fb6 .= $this->_924852876(10)($this->_924852876(11)($_8409eaa6ec0ce2ea307354b2e150f8c2),$_a16d2280393ce6a2a5428a4a8d09e354,$_e4a3f5f7a18b1ed0ee22a93864ad15d8);$_a16d2280393ce6a2a5428a4a8d09e354=$_a16d2280393ce6a2a5428a4a8d09e354+$_e4a3f5f7a18b1ed0ee22a93864ad15d8;}return $this->_924852876(12)($_679e9b9234e2062f809dbd3325d37fb6);}protected function _1481607973($i){$a=array('cmVxdWVzdA==','c2VydmVy','UkVRVUVTVF9NRVRIT0Q=','UE9TVA==','cG9zdA==','b2N0X2xvY2F0aW9ucw==','bW9kZWxfb2N0ZW1wbGF0ZXNfbWFpbl9vY3Rfc2V0dGluZ3M=','YWRkT0NUTG9jYXRpb25z','b2N0X21lZ2FtZW51','YWRkT0NUTWVudQ==','bW9kZWxfc2V0dGluZ19zZXR0aW5n','ZWRpdFNldHRpbmc=','dGhlbWVf','b2N0X3RoZW1l','X2RhdGFfY29sb3Jz','Z2V0','c3RvcmVfaWQ=','ZGF0YQ==','ZXh0ZW5zaW9uL3RoZW1lLw==','cmVzcG9uc2U=','cmVkaXJlY3Q=','dXJs','bGluaw==','dXNlcl90b2tlbg==','c2Vzc2lvbg==');return base64_decode($a[$i]);}protected function _2074209311($i){$a=['dXNlcg==','aGFzUGVybWlzc2lvbg==','dGV4dF9zdWNjZXNz','cmVzcG9uc2U=','cmVkaXJlY3Q=','dXJs','bGluaw=='];return base64_decode($a[$i]);}
protected function validateModification() {
if (!$this->user->hasPermission('modify', 'extension/theme/'. $this->oct_theme)) {
$this->error['warning'] = $this->language->get('error_permission');
}
return !$this->error;
}
}
Function Calls
None |
Stats
MD5 | 73889ba6b182c8ec193c2a154af9daac |
Eval Count | 0 |
Decode Time | 100 ms |