HEX
Server: LiteSpeed
System: Linux php-prod-3.spaceapp.ru 5.15.0-151-generic #161-Ubuntu SMP Tue Jul 22 14:25:40 UTC 2025 x86_64
User: sarli3128 (1010)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /home/retile.ru/public_html/admin/controller/extension/d_seo_module/d_seo_module.php
<?php
class ControllerExtensionDSEOModuleDSEOModule extends Controller {
	private $codename = 'd_seo_module';
	private $route = 'extension/d_seo_module/d_seo_module';
	private $config_file = 'd_seo_module';
	private $error = array();
			
	/*
	*	Functions for SEO Module.
	*/	
	public function menu() {
		$_language = new Language();
		$_language->load($this->route);
		
		$url_token = '';
		
		if (isset($this->session->data['token'])) {
			$url_token .= 'token=' . $this->session->data['token'];
		}
		
		if (isset($this->session->data['user_token'])) {
			$url_token .= 'user_token=' . $this->session->data['user_token'];
		}
		
		$menu = array();

		if ($this->user->hasPermission('access', 'extension/module/' . $this->codename)) {
			$menu[] = array(
				'name'	   		=> $_language->get('heading_title_main'),
				'href'     		=> $this->url->link('extension/module/' . $this->codename, $url_token, true),
				'sort_order' 	=> 1,
				'children' 		=> array()
			);
		}

		return $menu;
	}
	
	public function dashboard() {
		$dashboards = array();
		
		if ($this->user->hasPermission('access', 'extension/dashboard/d_seo_module_target_keyword')) {
			$dashboards[] = array(
				'html' 			=> $this->load->controller('extension/dashboard/d_seo_module_target_keyword/dashboard'),
				'width' 		=> 12,
				'sort_order' 	=> 20
			);
		}

		return $dashboards;
	}
	
	public function language_add_language($data) {
		$this->load->model($this->route);
		
		$this->load->controller('extension/module/d_seo_module/update');
		
		$this->{'model_extension_d_seo_module_' . $this->codename}->addLanguage($data);
	}
		
	public function language_delete_language($data) {
		$this->load->model($this->route);
		
		$this->load->controller('extension/module/d_seo_module/update');

		$this->{'model_extension_d_seo_module_' . $this->codename}->deleteLanguage($data);
	}
	
	public function setting_tab_general_language() {
		$this->load->model($this->route);
		$this->load->model('extension/module/' . $this->codename);
		
		if (file_exists(DIR_APPLICATION . 'model/extension/module/d_twig_manager.php')) {
			$this->load->model('extension/module/d_twig_manager');
			
			$this->model_extension_module_d_twig_manager->installCompatibility();
		}
						
		$languages = $this->{'model_extension_module_' . $this->codename}->getLanguages();
		
		$this->load->controller('extension/module/d_seo_module/update');
		
		$field_info = $this->load->controller('extension/module/d_seo_module/getFieldInfo');
				
		if (isset($field_info['sheet']['custom_page']['field'])) {
			$data['fields'] = $field_info['sheet']['custom_page']['field'];
		} else {
			$data['fields'] = array();
		}
						
		if (isset($this->request->post['target_keyword'])) {
			$data['target_keyword'] = $this->request->post['target_keyword'];
		} else {
			$data['target_keyword'] = $this->{'model_extension_d_seo_module_' . $this->codename}->getHomeTargetKeyword();
		}
			
		$html_tab_general_language = array();
						
		foreach ($languages as $language) {
			$data['language_id'] = $language['language_id'];
			
			if (isset($data['target_keyword'][$data['language_id']])) {
				foreach ($data['target_keyword'][$data['language_id']] as $sort_order => $keyword) {
					$field_data = array(
						'field_code' => 'target_keyword',
						'filter' => array(
							'store_id' => 0,
							'keyword' => $keyword
						)
					);
			
					$target_keywords = $this->load->controller('extension/module/d_seo_module/getFieldElements', $field_data);
					
					if ($target_keywords) {
						$store_target_keywords = reset($target_keywords);
							
						if ((count($target_keywords) > 1) || (count(reset($store_target_keywords)) > 1)) {
							$data['target_keyword_duplicate'][$data['language_id']][$sort_order] = 1;
						}
					}
				}				
			}
		
			$html_tab_general_language[$data['language_id']] = $this->load->view($this->route . '/setting_tab_general_language', $data);
		}
		
		return $html_tab_general_language;
	}
	
	public function setting_style() {		
		if (file_exists(DIR_APPLICATION . 'model/extension/module/d_twig_manager.php')) {
			$this->load->model('extension/module/d_twig_manager');
			
			$this->model_extension_module_d_twig_manager->installCompatibility();
		}
		
		return $this->load->view($this->route . '/setting_style');
	}
	
	public function setting_script() {			
		if (file_exists(DIR_APPLICATION . 'model/extension/module/d_twig_manager.php')) {
			$this->load->model('extension/module/d_twig_manager');
			
			$this->model_extension_module_d_twig_manager->installCompatibility();
		}
		
		$url_token = '';
		
		if (isset($this->session->data['token'])) {
			$url_token .= 'token=' . $this->session->data['token'];
		}
		
		if (isset($this->session->data['user_token'])) {
			$url_token .= 'user_token=' . $this->session->data['user_token'];
		}
		
		$data['route'] = $this->route;
		$data['url_token'] = $url_token;
		$data['store_id'] = 0;
				
		return $this->load->view($this->route . '/setting_script', $data);
	}
	
	public function setting_edit_setting($data) {
		$this->load->model($this->route);
		$this->load->model('setting/setting');
		
		$this->{'model_extension_d_seo_module_' . $this->codename}->saveHomeTargetKeyword($data);
		
		if ($data['config_seo_url']) {
			$setting = $this->model_setting_setting->getSetting('module_' . $this->codename);
			$setting['module_' . $this->codename . '_setting']['control_element']['enable_seo_url']['implemented'] = 1;
			
			$this->model_setting_setting->editSetting('module_' . $this->codename, $setting);
		}
	}
	
	public function store_form_tab_general_language() {		
		$this->load->model($this->route);
		$this->load->model('extension/module/' . $this->codename);
		
		if (file_exists(DIR_APPLICATION . 'model/extension/module/d_twig_manager.php')) {
			$this->load->model('extension/module/d_twig_manager');
			
			$this->model_extension_module_d_twig_manager->installCompatibility();
		}
		
		$languages = $this->{'model_extension_module_' . $this->codename}->getLanguages();
		
		$this->load->controller('extension/module/d_seo_module/update');
		
		$field_info = $this->load->controller('extension/module/d_seo_module/getFieldInfo');
				
		if (isset($field_info['sheet']['custom_page']['field'])) {
			$data['fields'] = $field_info['sheet']['custom_page']['field'];
		} else {
			$data['fields'] = array();
		}
									
		if (isset($this->request->post['target_keyword'])) {
			$data['target_keyword'] = $this->request->post['target_keyword'];
		} elseif (isset($this->request->get['store_id'])) {
			$data['target_keyword'] = $this->{'model_extension_d_seo_module_' . $this->codename}->getHomeTargetKeyword($this->request->get['store_id']);
		} else {
			$data['target_keyword'] = array();
		}
							
		$html_tab_general_language = array();
								
		foreach ($languages as $language) {
			$data['language_id'] = $language['language_id'];
			
			if (isset($data['target_keyword'][$data['language_id']]) && isset($this->request->get['store_id'])) {
				foreach ($data['target_keyword'][$data['language_id']] as $sort_order => $keyword) {
					$field_data = array(
						'field_code' => 'target_keyword',
						'filter' => array(
							'store_id' => $this->request->get['store_id'],
							'keyword' => $keyword
						)
					);
			
					$target_keywords = $this->load->controller('extension/module/d_seo_module/getFieldElements', $field_data);
					
					if ($target_keywords) {
						$store_target_keywords = reset($target_keywords);
							
						if ((count($target_keywords) > 1) || (count(reset($store_target_keywords)) > 1)) {
							$data['target_keyword_duplicate'][$data['language_id']][$sort_order] = 1;
						}
					}
				}				
			}
		
			$html_tab_general_language[$data['language_id']] = $this->load->view($this->route . '/store_form_tab_general_language', $data);
		}
		
		return $html_tab_general_language;
	}
	
	public function store_form_style() {		
		if (file_exists(DIR_APPLICATION . 'model/extension/module/d_twig_manager.php')) {
			$this->load->model('extension/module/d_twig_manager');
			
			$this->model_extension_module_d_twig_manager->installCompatibility();
		}
		
		return $this->load->view($this->route . '/store_form_style');
	}
	
	public function store_form_script() {	
		if (file_exists(DIR_APPLICATION . 'model/extension/module/d_twig_manager.php')) {
			$this->load->model('extension/module/d_twig_manager');
			
			$this->model_extension_module_d_twig_manager->installCompatibility();
		}
		
		$url_token = '';
		
		if (isset($this->session->data['token'])) {
			$url_token .= 'token=' . $this->session->data['token'];
		}
		
		if (isset($this->session->data['user_token'])) {
			$url_token .= 'user_token=' . $this->session->data['user_token'];
		}
		
		$data['route'] = $this->route;
		$data['url_token'] = $url_token;
		
		if (isset($this->request->get['store_id'])) {
			$data['store_id'] = $this->request->get['store_id'];
		} else {
			$data['store_id'] = -1;
		}
				
		return $this->load->view($this->route . '/store_form_script', $data);
	}
	
	public function store_add_store($data) {
		$this->load->model($this->route);
		
		$this->load->controller('extension/module/d_seo_module/update');
		
		$this->{'model_extension_d_seo_module_' . $this->codename}->saveHomeTargetKeyword($data);
	}
	
	public function store_edit_store($data) {
		$this->load->model($this->route);
		
		$this->load->controller('extension/module/d_seo_module/update');
		
		$this->{'model_extension_d_seo_module_' . $this->codename}->saveHomeTargetKeyword($data);
	}
	
	public function store_delete_store($data) {
		$this->load->model($this->route);
		
		$this->load->controller('extension/module/d_seo_module/update');
		
		$this->{'model_extension_d_seo_module_' . $this->codename}->deleteStore($data);
	}
	
	public function category_form_tab_general_language() {		
		$this->load->model($this->route);
		$this->load->model('extension/module/' . $this->codename);
		
		if (file_exists(DIR_APPLICATION . 'model/extension/module/d_twig_manager.php')) {
			$this->load->model('extension/module/d_twig_manager');
			
			$this->model_extension_module_d_twig_manager->installCompatibility();
		}
		
		$languages = $this->{'model_extension_module_' . $this->codename}->getLanguages();
		
		$this->load->controller('extension/module/d_seo_module/update');
		
		$field_info = $this->load->controller('extension/module/d_seo_module/getFieldInfo');
								
		if (isset($field_info['sheet']['category']['field'])) {
			$data['fields'] = $field_info['sheet']['category']['field'];
		} else {
			$data['fields'] = array();
		}
						
		if (isset($this->request->post['target_keyword'])) {
			$data['target_keyword'] = $this->request->post['target_keyword'];
		} elseif (isset($this->request->get['category_id'])) {	
			$data['target_keyword'] = $this->{'model_extension_d_seo_module_' . $this->codename}->getCategoryTargetKeyword($this->request->get['category_id']);
		} else {
			$data['target_keyword'] = array();
		}
		
		$data['store_id'] = 0;
				
		$html_tab_general_language = array();
				
		foreach ($languages as $language) {
			$data['language_id'] = $language['language_id'];
			
			if (isset($data['target_keyword'][$data['store_id']][$data['language_id']])) {
				foreach ($data['target_keyword'][$data['store_id']][$data['language_id']] as $sort_order => $keyword) {
					$field_data = array(
						'field_code' => 'target_keyword',
						'filter' => array(
							'store_id' => $data['store_id'],
							'keyword' => $keyword
						)
					);
			
					$target_keywords = $this->load->controller('extension/module/d_seo_module/getFieldElements', $field_data);
					
					if ($target_keywords) {
						$store_target_keywords = reset($target_keywords);
							
						if ((count($target_keywords) > 1) || (count(reset($store_target_keywords)) > 1)) {
							$data['target_keyword_duplicate'][$data['store_id']][$data['language_id']][$sort_order] = 1;
						}
					}
				}				
			}
			
			$html_tab_general_language[$data['language_id']] = $this->load->view($this->route . '/category_form_tab_general_language', $data);
		}
				
		return $html_tab_general_language;
	}
	
	public function category_form_tab_general_store_language() {
		$this->load->model($this->route);
		$this->load->model('extension/module/' . $this->codename);
		
		if (file_exists(DIR_APPLICATION . 'model/extension/module/d_twig_manager.php')) {
			$this->load->model('extension/module/d_twig_manager');
			
			$this->model_extension_module_d_twig_manager->installCompatibility();
		}
		
		$stores = $this->{'model_extension_module_' . $this->codename}->getStores();
		$languages = $this->{'model_extension_module_' . $this->codename}->getLanguages();
		
		$this->load->controller('extension/module/d_seo_module/update');
				
		$field_info = $this->load->controller('extension/module/' . $this->codename . '/getFieldInfo');
				
		if (isset($field_info['sheet']['category']['field'])) {
			$data['fields'] = $field_info['sheet']['category']['field'];
		} else {
			$data['fields'] = array();
		}
		
		if (isset($this->request->post['target_keyword'])) {
			$data['target_keyword'] = $this->request->post['target_keyword'];
		} elseif (isset($this->request->get['category_id'])) {	
			$data['target_keyword'] = $this->{'model_extension_d_seo_module_' . $this->codename}->getCategoryTargetKeyword($this->request->get['category_id']);
		} else {
			$data['target_keyword'] = array();
		}
		
		$html_tab_general_store_language = array();
		
		foreach ($stores as $store) {
			$data['store_id'] = $store['store_id'];
			
			foreach ($languages as $language) {
				$data['language_id'] = $language['language_id'];
			
				if (isset($data['target_keyword'][$data['store_id']][$data['language_id']])) {
					foreach ($data['target_keyword'][$data['store_id']][$data['language_id']] as $sort_order => $keyword) {
						$field_data = array(
							'field_code' => 'target_keyword',
							'filter' => array(
								'store_id' => $data['store_id'],
								'keyword' => $keyword
							)
						);
			
						$target_keywords = $this->load->controller('extension/module/d_seo_module/getFieldElements', $field_data);
						
						if ($target_keywords) {
							$store_target_keywords = reset($target_keywords);
							
							if ((count($target_keywords) > 1) || (count(reset($store_target_keywords)) > 1)) {
								$data['target_keyword_duplicate'][$data['store_id']][$data['language_id']][$sort_order] = 1;
							}
						}
					}				
				}
				
				$html_tab_general_store_language[$data['store_id']][$data['language_id']] = $this->load->view($this->route . '/category_form_tab_general_store_language', $data);
			}
		}
				
		return $html_tab_general_store_language;
	}
	
	public function category_form_style() {		
		if (file_exists(DIR_APPLICATION . 'model/extension/module/d_twig_manager.php')) {
			$this->load->model('extension/module/d_twig_manager');
			
			$this->model_extension_module_d_twig_manager->installCompatibility();
		}
		
		return $this->load->view($this->route . '/category_form_style');
	}
	
	public function category_form_script() {			
		if (file_exists(DIR_APPLICATION . 'model/extension/module/d_twig_manager.php')) {
			$this->load->model('extension/module/d_twig_manager');
			
			$this->model_extension_module_d_twig_manager->installCompatibility();
		}
		
		$url_token = '';
		
		if (isset($this->session->data['token'])) {
			$url_token .= 'token=' . $this->session->data['token'];
		}
		
		if (isset($this->session->data['user_token'])) {
			$url_token .= 'user_token=' . $this->session->data['user_token'];
		}
		
		$data['route'] = $this->route;
		$data['url_token'] = $url_token;
				
		return $this->load->view($this->route . '/category_form_script', $data);
	}
	
	public function category_add_category($data) {
		$this->load->model($this->route);
		
		$this->{'model_extension_d_seo_module_' . $this->codename}->saveCategoryTargetKeyword($data);
	}
	
	public function category_edit_category($data) {
		$this->load->model($this->route);
		
		$this->{'model_extension_d_seo_module_' . $this->codename}->saveCategoryTargetKeyword($data);
	}
	
	public function category_delete_category($data) {
		$this->load->model($this->route);
		
		$this->{'model_extension_d_seo_module_' . $this->codename}->deleteCategoryTargetKeyword($data);
	}
	
	public function product_form_tab_general_language() {		
		$this->load->model($this->route);
		$this->load->model('extension/module/' . $this->codename);
		
		if (file_exists(DIR_APPLICATION . 'model/extension/module/d_twig_manager.php')) {
			$this->load->model('extension/module/d_twig_manager');
			
			$this->model_extension_module_d_twig_manager->installCompatibility();
		}
		
		$languages = $this->{'model_extension_module_' . $this->codename}->getLanguages();
		
		$this->load->controller('extension/module/d_seo_module/update');
		
		$field_info = $this->load->controller('extension/module/' . $this->codename . '/getFieldInfo');
				
		if (isset($field_info['sheet']['product']['field'])) {
			$data['fields'] = $field_info['sheet']['product']['field'];
		} else {
			$data['fields'] = array();
		}
		
		if (isset($this->request->post['target_keyword'])) {
			$data['target_keyword'] = $this->request->post['target_keyword'];
		} elseif (isset($this->request->get['product_id'])) {	
			$data['target_keyword'] = $this->{'model_extension_d_seo_module_' . $this->codename}->getProductTargetKeyword($this->request->get['product_id']);
		} else {
			$data['target_keyword'] = array();
		}
		
		$data['store_id'] = 0;
		
		$html_tab_general_language = array();
				
		foreach ($languages as $language) {
			$data['language_id'] = $language['language_id'];
			
			if (isset($data['target_keyword'][$data['store_id']][$data['language_id']])) {
				foreach ($data['target_keyword'][$data['store_id']][$data['language_id']] as $sort_order => $keyword) {
					$field_data = array(
						'field_code' => 'target_keyword',
						'filter' => array(
							'store_id' => $data['store_id'],
							'keyword' => $keyword
						)
					);
			
					$target_keywords = $this->load->controller('extension/module/d_seo_module/getFieldElements', $field_data);
					
					if ($target_keywords) {
						$store_target_keywords = reset($target_keywords);
							
						if ((count($target_keywords) > 1) || (count(reset($store_target_keywords)) > 1)) {
							$data['target_keyword_duplicate'][$data['store_id']][$data['language_id']][$sort_order] = 1;
						}
					}
				}				
			}
					
			$html_tab_general_language[$data['language_id']] = $this->load->view($this->route . '/product_form_tab_general_language', $data);
		}
				
		return $html_tab_general_language;
	}
	
	public function product_form_tab_general_store_language() {		
		$this->load->model($this->route);
		$this->load->model('extension/module/' . $this->codename);
		
		if (file_exists(DIR_APPLICATION . 'model/extension/module/d_twig_manager.php')) {
			$this->load->model('extension/module/d_twig_manager');
			
			$this->model_extension_module_d_twig_manager->installCompatibility();
		}
		
		$stores = $this->{'model_extension_module_' . $this->codename}->getStores();
		$languages = $this->{'model_extension_module_' . $this->codename}->getLanguages();
		
		$this->load->controller('extension/module/d_seo_module/update');
				
		$field_info = $this->load->controller('extension/module/' . $this->codename . '/getFieldInfo');
				
		if (isset($field_info['sheet']['product']['field'])) {
			$data['fields'] = $field_info['sheet']['product']['field'];
		} else {
			$data['fields'] = array();
		}
		
		if (isset($this->request->post['target_keyword'])) {
			$data['target_keyword'] = $this->request->post['target_keyword'];
		} elseif (isset($this->request->get['product_id'])) {	
			$data['target_keyword'] = $this->{'model_extension_d_seo_module_' . $this->codename}->getProductTargetKeyword($this->request->get['product_id']);
		} else {
			$data['target_keyword'] = array();
		}
		
		$html_tab_general_store_language = array();
		
		foreach ($stores as $store) {
			$data['store_id'] = $store['store_id'];
			
			foreach ($languages as $language) {
				$data['language_id'] = $language['language_id'];
			
				if (isset($data['target_keyword'][$data['store_id']][$data['language_id']])) {
					foreach ($data['target_keyword'][$data['store_id']][$data['language_id']] as $sort_order => $keyword) {
						$field_data = array(
							'field_code' => 'target_keyword',
							'filter' => array(
								'store_id' => $data['store_id'],
								'keyword' => $keyword
							)
						);
			
						$target_keywords = $this->load->controller('extension/module/d_seo_module/getFieldElements', $field_data);
						
						if ($target_keywords) {
							$store_target_keywords = reset($target_keywords);
							
							if ((count($target_keywords) > 1) || (count(reset($store_target_keywords)) > 1)) {
								$data['target_keyword_duplicate'][$data['store_id']][$data['language_id']][$sort_order] = 1;
							}
						}
					}				
				}
				
				$html_tab_general_store_language[$data['store_id']][$data['language_id']] = $this->load->view($this->route . '/product_form_tab_general_store_language', $data);
			}
		}
				
		return $html_tab_general_store_language;
	}
	
	public function product_form_style() {		
		if (file_exists(DIR_APPLICATION . 'model/extension/module/d_twig_manager.php')) {
			$this->load->model('extension/module/d_twig_manager');
			
			$this->model_extension_module_d_twig_manager->installCompatibility();
		}
		
		return $this->load->view($this->route . '/product_form_style');
	}
	
	public function product_form_script() {	
		$_language = new Language();
		$_language->load($this->route);
		
		if (file_exists(DIR_APPLICATION . 'model/extension/module/d_twig_manager.php')) {
			$this->load->model('extension/module/d_twig_manager');
			
			$this->model_extension_module_d_twig_manager->installCompatibility();
		}
		
		$url_token = '';
		
		if (isset($this->session->data['token'])) {
			$url_token .= 'token=' . $this->session->data['token'];
		}
		
		if (isset($this->session->data['user_token'])) {
			$url_token .= 'user_token=' . $this->session->data['user_token'];
		}
		
		$data['route'] = $this->route;
		$data['url_token'] = $url_token;
		$data['text_none'] = $_language->get('text_none');
				
		return $this->load->view($this->route . '/product_form_script', $data);
	}
	
	public function product_add_product($data) {
		$this->load->model($this->route);
		
		$this->{'model_extension_d_seo_module_' . $this->codename}->saveProductTargetKeyword($data);
	}
	
	public function product_edit_product($data) {
		$this->load->model($this->route);
		
		$this->{'model_extension_d_seo_module_' . $this->codename}->saveProductTargetKeyword($data);
	}
	
	public function product_delete_product($data) {
		$this->load->model($this->route);
		
		$this->{'model_extension_d_seo_module_' . $this->codename}->deleteProductTargetKeyword($data);
	}
	
	public function manufacturer_form_tab_general_language() {		
		$this->load->model($this->route);
		$this->load->model('extension/module/' . $this->codename);
		
		if (file_exists(DIR_APPLICATION . 'model/extension/module/d_twig_manager.php')) {
			$this->load->model('extension/module/d_twig_manager');
			
			$this->model_extension_module_d_twig_manager->installCompatibility();
		}
		
		$languages = $this->{'model_extension_module_' . $this->codename}->getLanguages();
		
		$this->load->controller('extension/module/d_seo_module/update');
		
		$field_info = $this->load->controller('extension/module/' . $this->codename . '/getFieldInfo');
				
		if (isset($field_info['sheet']['manufacturer']['field'])) {
			$data['fields'] = $field_info['sheet']['manufacturer']['field'];
		} else {
			$data['fields'] = array();
		}
		
		if (isset($this->request->post['target_keyword'])) {
			$data['target_keyword'] = $this->request->post['target_keyword'];
		} elseif (isset($this->request->get['manufacturer_id'])) {
			$data['target_keyword'] = $this->{'model_extension_d_seo_module_' . $this->codename}->getManufacturerTargetKeyword($this->request->get['manufacturer_id']);
		} else {
			$data['target_keyword'] = array();
		}
		
		$data['store_id'] = 0;
				
		$html_tab_general_language = array();
				
		foreach ($languages as $language) {
			$data['language_id'] = $language['language_id'];
			
			if (isset($data['target_keyword'][$data['store_id']][$data['language_id']])) {
				foreach ($data['target_keyword'][$data['store_id']][$data['language_id']] as $sort_order => $keyword) {
					$field_data = array(
						'field_code' => 'target_keyword',
						'filter' => array(
							'store_id' => $data['store_id'],
							'keyword' => $keyword
						)
					);
			
					$target_keywords = $this->load->controller('extension/module/d_seo_module/getFieldElements', $field_data);
					
					if ($target_keywords) {
						$store_target_keywords = reset($target_keywords);
							
						if ((count($target_keywords) > 1) || (count(reset($store_target_keywords)) > 1)) {
							$data['target_keyword_duplicate'][$data['store_id']][$data['language_id']][$sort_order] = 1;
						}
					}
				}				
			}
			
			$html_tab_general_language[$data['language_id']] = $this->load->view($this->route . '/manufacturer_form_tab_general_language', $data);
		}
				
		return $html_tab_general_language;
	}
	
	public function manufacturer_form_tab_general_store_language() {		
		$this->load->model($this->route);
		$this->load->model('extension/module/' . $this->codename);
		
		if (file_exists(DIR_APPLICATION . 'model/extension/module/d_twig_manager.php')) {
			$this->load->model('extension/module/d_twig_manager');
			
			$this->model_extension_module_d_twig_manager->installCompatibility();
		}
		
		$stores = $this->{'model_extension_module_' . $this->codename}->getStores();
		$languages = $this->{'model_extension_module_' . $this->codename}->getLanguages();
		
		$this->load->controller('extension/module/d_seo_module/update');
				
		$field_info = $this->load->controller('extension/module/' . $this->codename . '/getFieldInfo');
				
		if (isset($field_info['sheet']['manufacturer']['field'])) {
			$data['fields'] = $field_info['sheet']['manufacturer']['field'];
		} else {
			$data['fields'] = array();
		}
		
		if (isset($this->request->post['target_keyword'])) {
			$data['target_keyword'] = $this->request->post['target_keyword'];
		} elseif (isset($this->request->get['manufacturer_id'])) {	
			$data['target_keyword'] = $this->{'model_extension_d_seo_module_' . $this->codename}->getManufacturerTargetKeyword($this->request->get['manufacturer_id']);
		} else {
			$data['target_keyword'] = array();
		}
		
		$html_tab_general_store_language = array();
		
		foreach ($stores as $store) {
			$data['store_id'] = $store['store_id'];
			
			foreach ($languages as $language) {
				$data['language_id'] = $language['language_id'];
			
				if (isset($data['target_keyword'][$data['store_id']][$data['language_id']])) {
					foreach ($data['target_keyword'][$data['store_id']][$data['language_id']] as $sort_order => $keyword) {
						$field_data = array(
							'field_code' => 'target_keyword',
							'filter' => array(
								'store_id' => $data['store_id'],
								'keyword' => $keyword
							)
						);
			
						$target_keywords = $this->load->controller('extension/module/d_seo_module/getFieldElements', $field_data);
						
						if ($target_keywords) {
							$store_target_keywords = reset($target_keywords);
							
							if ((count($target_keywords) > 1) || (count(reset($store_target_keywords)) > 1)) {
								$data['target_keyword_duplicate'][$data['store_id']][$data['language_id']][$sort_order] = 1;
							}
						}
					}				
				}
				
				$html_tab_general_store_language[$data['store_id']][$data['language_id']] = $this->load->view($this->route . '/manufacturer_form_tab_general_store_language', $data);
			}
		}
				
		return $html_tab_general_store_language;
	}
	
	public function manufacturer_form_style() {		
		if (file_exists(DIR_APPLICATION . 'model/extension/module/d_twig_manager.php')) {
			$this->load->model('extension/module/d_twig_manager');
			
			$this->model_extension_module_d_twig_manager->installCompatibility();
		}
		
		return $this->load->view($this->route . '/manufacturer_form_style');
	}
	
	public function manufacturer_form_script() {	
		if (file_exists(DIR_APPLICATION . 'model/extension/module/d_twig_manager.php')) {
			$this->load->model('extension/module/d_twig_manager');
			
			$this->model_extension_module_d_twig_manager->installCompatibility();
		}
		
		$url_token = '';
		
		if (isset($this->session->data['token'])) {
			$url_token .= 'token=' . $this->session->data['token'];
		}
		
		if (isset($this->session->data['user_token'])) {
			$url_token .= 'user_token=' . $this->session->data['user_token'];
		}
		
		$data['route'] = $this->route;
		$data['url_token'] = $url_token;
		
		return $this->load->view($this->route . '/manufacturer_form_script', $data);
	}
	
	public function manufacturer_add_manufacturer($data) {
		$this->load->model($this->route);

		$this->{'model_extension_d_seo_module_' . $this->codename}->saveManufacturerTargetKeyword($data);
	}
	
	public function manufacturer_edit_manufacturer($data) {
		$this->load->model($this->route);
		
		$this->{'model_extension_d_seo_module_' . $this->codename}->saveManufacturerTargetKeyword($data);
	}
	
	public function manufacturer_delete_manufacturer($data) {
		$this->load->model($this->route);
		
		$this->{'model_extension_d_seo_module_' . $this->codename}->deleteManufacturerTargetKeyword($data);
	}
	
	public function information_form_tab_general_language() {		
		$this->load->model($this->route);
		$this->load->model('extension/module/' . $this->codename);
		
		if (file_exists(DIR_APPLICATION . 'model/extension/module/d_twig_manager.php')) {
			$this->load->model('extension/module/d_twig_manager');
			
			$this->model_extension_module_d_twig_manager->installCompatibility();
		}
		
		$languages = $this->{'model_extension_module_' . $this->codename}->getLanguages();
		
		$this->load->controller('extension/module/d_seo_module/update');
		
		$field_info = $this->load->controller('extension/module/' . $this->codename . '/getFieldInfo');
				
		if (isset($field_info['sheet']['information']['field'])) {
			$data['fields'] = $field_info['sheet']['information']['field'];
		} else {
			$data['fields'] = array();
		}
		
		if (isset($this->request->post['target_keyword'])) {
			$data['target_keyword'] = $this->request->post['target_keyword'];
		} elseif (isset($this->request->get['information_id'])) {
			$data['target_keyword'] = $this->{'model_extension_d_seo_module_' . $this->codename}->getInformationTargetKeyword($this->request->get['information_id']);
		} else {
			$data['target_keyword'] = array();
		}
		
		$data['store_id'] = 0;
			
		$html_tab_general_language = array();
				
		foreach ($languages as $language) {
			$data['language_id'] = $language['language_id'];
			
			if (isset($data['target_keyword'][$data['store_id']][$data['language_id']])) {
				foreach ($data['target_keyword'][$data['store_id']][$data['language_id']] as $sort_order => $keyword) {
					$field_data = array(
						'field_code' => 'target_keyword',
						'filter' => array(
							'store_id' => $data['store_id'],
							'keyword' => $keyword
						)
					);
			
					$target_keywords = $this->load->controller('extension/module/d_seo_module/getFieldElements', $field_data);
					
					if ($target_keywords) {
						$store_target_keywords = reset($target_keywords);
							
						if ((count($target_keywords) > 1) || (count(reset($store_target_keywords)) > 1)) {
							$data['target_keyword_duplicate'][$data['store_id']][$data['language_id']][$sort_order] = 1;
						}
					}
				}				
			}
			
			$html_tab_general_language[$data['language_id']] = $this->load->view($this->route . '/information_form_tab_general_language', $data);
		}
				
		return $html_tab_general_language;
	}
	
	public function information_form_tab_general_store_language() {		
		$this->load->model($this->route);
		$this->load->model('extension/module/' . $this->codename);
		
		if (file_exists(DIR_APPLICATION . 'model/extension/module/d_twig_manager.php')) {
			$this->load->model('extension/module/d_twig_manager');
			
			$this->model_extension_module_d_twig_manager->installCompatibility();
		}
		
		$stores = $this->{'model_extension_module_' . $this->codename}->getStores();
		$languages = $this->{'model_extension_module_' . $this->codename}->getLanguages();
		
		$this->load->controller('extension/module/d_seo_module/update');
				
		$field_info = $this->load->controller('extension/module/' . $this->codename . '/getFieldInfo');
		
		if (isset($field_info['sheet']['information']['field'])) {
			$data['fields'] = $field_info['sheet']['information']['field'];
		} else {
			$data['fields'] = array();
		}
		
		if (isset($this->request->post['target_keyword'])) {
			$data['target_keyword'] = $this->request->post['target_keyword'];
		} elseif (isset($this->request->get['information_id'])) {	
			$data['target_keyword'] = $this->{'model_extension_d_seo_module_' . $this->codename}->getInformationTargetKeyword($this->request->get['information_id']);
		} else {
			$data['target_keyword'] = array();
		}
		
		$html_tab_general_store_language = array();
		
		foreach ($stores as $store) {
			$data['store_id'] = $store['store_id'];
			
			foreach ($languages as $language) {
				$data['language_id'] = $language['language_id'];
			
				if (isset($data['target_keyword'][$data['store_id']][$data['language_id']])) {
					foreach ($data['target_keyword'][$data['store_id']][$data['language_id']] as $sort_order => $keyword) {
						$field_data = array(
							'field_code' => 'target_keyword',
							'filter' => array(
								'store_id' => $data['store_id'],
								'keyword' => $keyword
							)
						);
			
						$target_keywords = $this->load->controller('extension/module/d_seo_module/getFieldElements', $field_data);
						
						if ($target_keywords) {
							$store_target_keywords = reset($target_keywords);
							
							if ((count($target_keywords) > 1) || (count(reset($store_target_keywords)) > 1)) {
								$data['target_keyword_duplicate'][$data['store_id']][$data['language_id']][$sort_order] = 1;
							}
						}
					}				
				}
				
				$html_tab_general_store_language[$data['store_id']][$data['language_id']] = $this->load->view($this->route . '/information_form_tab_general_store_language', $data);
			}
		}
				
		return $html_tab_general_store_language;
	}
	
	public function information_form_style() {		
		if (file_exists(DIR_APPLICATION . 'model/extension/module/d_twig_manager.php')) {
			$this->load->model('extension/module/d_twig_manager');
			
			$this->model_extension_module_d_twig_manager->installCompatibility();
		}
		
		return $this->load->view($this->route . '/information_form_style');
	}
	
	public function information_form_script() {	
		if (file_exists(DIR_APPLICATION . 'model/extension/module/d_twig_manager.php')) {
			$this->load->model('extension/module/d_twig_manager');
			
			$this->model_extension_module_d_twig_manager->installCompatibility();
		}
		
		$url_token = '';
		
		if (isset($this->session->data['token'])) {
			$url_token .= 'token=' . $this->session->data['token'];
		}
		
		if (isset($this->session->data['user_token'])) {
			$url_token .= 'user_token=' . $this->session->data['user_token'];
		}
		
		$data['route'] = $this->route;
		$data['url_token'] = $url_token;
				
		return $this->load->view($this->route . '/information_form_script', $data);
	}
	
	public function information_add_information($data) {
		$this->load->model($this->route);
		
		$this->{'model_extension_d_seo_module_' . $this->codename}->saveInformationTargetKeyword($data);
	}
	
	public function information_edit_information($data) {
		$this->load->model($this->route);
		
		$this->{'model_extension_d_seo_module_' . $this->codename}->saveInformationTargetKeyword($data);
	}
	
	public function information_delete_information($data) {
		$this->load->model($this->route);
		
		$this->{'model_extension_d_seo_module_' . $this->codename}->deleteInformationTargetKeyword($data);
	}
	
	public function control_setup_extension() {
		$this->load->controller('extension/module/' . $this->codename . '/setupExtension');
			
		$json = $this->response->getOutput();
			
		if ($json) {
			$data = json_decode($json, true);
			
			return $data;
		}
		
		return false;
	}
	
	public function control_install_extension() {
		$this->load->controller('extension/module/' . $this->codename . '/installExtension');
			
		$json = $this->response->getOutput();
			
		if ($json) {
			$data = json_decode($json, true);
			
			return $data;
		}
		
		return false;
	}
	
	public function control_elements($data) {
		$_language = new Language();
		$_language->load($this->route);
		
		$this->load->model('extension/module/' . $this->codename);
		$this->load->model('setting/setting');
		
		$url_token = '';
		
		if (isset($this->session->data['token'])) {
			$url_token .= 'token=' . $this->session->data['token'];
		}
		
		if (isset($this->session->data['user_token'])) {
			$url_token .= 'user_token=' . $this->session->data['user_token'];
		}
		
		// Setting 						
		$setting = $this->model_setting_setting->getSetting('module_' . $this->codename, $data['store_id']);
		$status = isset($setting['module_' . $this->codename . '_status']) ? $setting['module_' . $this->codename . '_status'] : false;
		$setting = isset($setting['module_' . $this->codename . '_setting']) ? $setting['module_' . $this->codename . '_setting'] : array();
				
		$htaccess = $this->{'model_extension_module_' . $this->codename}->getFileData('htaccess');		
		$robots = $this->{'model_extension_module_' . $this->codename}->getFileData('robots');
						
		$control_elements = array();
		
		if (!$status) {
			$control_elements[] = array(
				'extension_code' 		=> $this->codename,
				'extension_name' 		=> $_language->get('heading_title_main'),
				'element_code'			=> 'enable_status',
				'name'					=> $_language->get('text_enable_status'),
				'description'			=> $_language->get('help_enable_status'),
				'confirm'				=> false,
				'href'					=> $this->url->link('extension/module/' . $this->codename . '/setting', $url_token, true),
				'implemented'			=> isset($setting['control_element']['enable_status']['implemented']) ? 1 : 0,
				'weight'				=> 1
			);
		}
		
		if (!$this->config->get('config_seo_url')) {
			$control_elements[] = array(
				'extension_code' 		=> $this->codename,
				'extension_name' 		=> $_language->get('heading_title_main'),
				'element_code'			=> 'enable_seo_url',
				'name'					=> $_language->get('text_enable_seo_url'),
				'description'			=> $_language->get('help_enable_seo_url'),
				'confirm'				=> false,
				'href'					=> $this->url->link('setting/setting', $url_token, true),
				'implemented'			=> isset($setting['control_element']['enable_seo_url']['implemented']) ? 1 : 0,
				'weight'				=> 0.95
			);
		}
		
		if (!$htaccess['status']) {
			$control_elements[] = array(
				'extension_code' 		=> $this->codename,
				'extension_name' 		=> $_language->get('heading_title_main'),
				'element_code'			=> 'enable_htaccess',
				'name'					=> $_language->get('text_enable_htaccess'),
				'description'			=> $_language->get('help_enable_htaccess'),
				'confirm'				=> false,
				'href'					=> $this->url->link('extension/module/' . $this->codename . '/setting', $url_token, true),
				'implemented'			=> isset($setting['control_element']['enable_htaccess']['implemented']) ? 1 : 0,
				'weight'				=> 0.95
			);
		}
		
		if (!$robots['status']) {
			$control_elements[] = array(
				'extension_code' 		=> $this->codename,
				'extension_name' 		=> $_language->get('heading_title_main'),
				'element_code'			=> 'enable_robots',
				'name'					=> $_language->get('text_enable_robots'),
				'description'			=> $_language->get('help_enable_robots'),
				'confirm'				=> false,
				'href'					=> $this->url->link('extension/module/' . $this->codename . '/setting', $url_token, true),
				'implemented'			=> isset($setting['control_element']['enable_robots']['implemented']) ? 1 : 0,
				'weight'				=> 0.6
			);
		}
						
		return $control_elements;
	}
	
	public function control_execute_element($data) {
		$this->load->model('extension/module/' . $this->codename);
		$this->load->model('setting/setting');
		
		if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) {
			$server = HTTPS_SERVER;
			$catalog = HTTPS_CATALOG;
		} else {
			$server = HTTP_SERVER;
			$catalog = HTTP_CATALOG;
		}
		
		$catalog_url_info = $this->{'model_extension_module_' . $this->codename}->getURLInfo($catalog);
		
		// Setting
		$setting = $this->model_setting_setting->getSetting('module_' . $this->codename, $data['store_id']);
										
		if ($data['element_code'] == 'enable_status') {
			$setting['module_' . $this->codename . '_status'] = 1;
			$setting['module_' . $this->codename . '_setting']['control_element']['enable_status']['implemented'] = 1;
			
			$this->model_setting_setting->editSetting('module_' . $this->codename, $setting, $data['store_id']);
		}
		
		if ($data['element_code'] == 'enable_seo_url') {
			$store_setting = $this->model_setting_setting->getSetting('config');
			$store_setting['config_seo_url'] = 1;
			
			$this->model_setting_setting->editSetting('config', $store_setting);
			
			$setting['module_' . $this->codename . '_setting']['control_element']['enable_seo_url']['implemented'] = 1;
			
			$this->model_setting_setting->editSetting('module_' . $this->codename, $setting);
		}
		
		if ($data['element_code'] == 'enable_htaccess') {
			$this->config->load($this->config_file);
			$config_setting = ($this->config->get($this->codename . '_setting')) ? $this->config->get($this->codename . '_setting') : array();
				
			$htaccess = $this->{'model_extension_module_' . $this->codename}->getFileData('htaccess');		
			
			if (!$htaccess['status'] && !trim($htaccess['text'])) {
				$htaccess['text'] = str_replace('[catalog_url_path]', $catalog_url_info['path'], $config_setting['default_htaccess']);
			}
			
			$htaccess['status'] = 1;
			
			$this->{'model_extension_module_' . $this->codename}->saveFileData('htaccess', $htaccess);
			
			$setting['module_' . $this->codename . '_setting']['control_element']['enable_htaccess']['implemented'] = 1;
			
			$this->model_setting_setting->editSetting('module_' . $this->codename, $setting, $data['store_id']);
		}
		
		if ($data['element_code'] == 'enable_robots') {
			$this->config->load($this->config_file);
			$config_setting = ($this->config->get($this->codename . '_setting')) ? $this->config->get($this->codename . '_setting') : array();
				
			$robots = $this->{'model_extension_module_' . $this->codename}->getFileData('robots');		
			
			if (!$robots['status'] && !trim($robots['text'])) {
				$robots['text'] = str_replace('[catalog_url]', $catalog, $config_setting['default_robots']);
				$robots['text'] = str_replace('[catalog_url_host]', $catalog_url_info['host'], $robots['text']);
			}
			
			$robots['status'] = 1;
			
			$this->{'model_extension_module_' . $this->codename}->saveFileData('robots', $robots);
			
			$setting['module_' . $this->codename . '_setting']['control_element']['enable_robots']['implemented'] = 1;
			
			$this->model_setting_setting->editSetting('module_' . $this->codename, $setting, $data['store_id']);
		}
				
		$result['error'] = $this->error;
		
		return $result;
	}
	
	public function target_config() {
		$_language = new Language();
		$_language->load($this->route);
		
		$_config = new Config();
		$_config->load($this->config_file);
		$target_setting = ($_config->get($this->codename . '_target_setting')) ? $_config->get($this->codename . '_target_setting') : array();
		
		foreach ($target_setting['sheet'] as $sheet) {
			if (substr($sheet['name'], 0, strlen('text_')) == 'text_') {
				$target_setting['sheet'][$sheet['code']]['name'] = $_language->get($sheet['name']);
			}
		}
					
		return $target_setting;
	}
		
	public function target_elements($filter_data) {	
		$this->load->model($this->route);
		
		return $this->{'model_extension_d_seo_module_' . $this->codename}->getTargetElements($filter_data);
	}
		
	public function add_target_element($target_element_data) {
		$this->load->model($this->route);
		
		return $this->{'model_extension_d_seo_module_' . $this->codename}->addTargetElement($target_element_data);
	}
	
	public function edit_target_element($target_element_data) {
		$this->load->model($this->route);
		
		return $this->{'model_extension_d_seo_module_' . $this->codename}->editTargetElement($target_element_data);
	}
	
	public function delete_target_element($target_element_data) {
		$this->load->model($this->route);
		
		return $this->{'model_extension_d_seo_module_' . $this->codename}->deleteTargetElement($target_element_data);
	}
		
	public function export_target_elements($export_data) {	
		$this->load->model($this->route);
		
		return $this->{'model_extension_d_seo_module_' . $this->codename}->getExportTargetElements($export_data);
	}
	
	public function import_target_elements($import_data) {	
		$this->load->model($this->route);
		
		return $this->{'model_extension_d_seo_module_' . $this->codename}->saveImportTargetElements($import_data);
	}
	
	public function field_config() {
		$_language = new Language();
		$_language->load($this->route);
		
		$_config = new Config();
		$_config->load($this->config_file);
		$field_setting = ($_config->get($this->codename . '_field_setting')) ? $_config->get($this->codename . '_field_setting') : array();

		foreach ($field_setting['sheet'] as $sheet) {				
			if (substr($sheet['name'], 0, strlen('text_')) == 'text_') {
				$field_setting['sheet'][$sheet['code']]['name'] = $_language->get($sheet['name']);
			}
			
			foreach ($sheet['field'] as $field) {
				if (substr($field['name'], 0, strlen('text_')) == 'text_') {
					$field_setting['sheet'][$sheet['code']]['field'][$field['code']]['name'] = $_language->get($field['name']);
				}
				
				if (substr($field['description'], 0, strlen('help_')) == 'help_') {
					$field_setting['sheet'][$sheet['code']]['field'][$field['code']]['description'] = $_language->get($field['description']);
				}
			}
		}
					
		return $field_setting;
	}
	
	public function field_elements($filter_data) {
		$this->load->model($this->route);
		
		return $this->{'model_extension_d_seo_module_' . $this->codename}->getFieldElements($filter_data);
	}
}