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/model/extension/d_seo_module/d_seo_module.php
<?php
class ModelExtensionDSEOModuleDSEOModule extends Model {
	private $codename = 'd_seo_module';
		
	/*
	*	Add Language.
	*/
	public function addLanguage($data) {
		$custom_page_exception_routes = $this->load->controller('extension/module/d_seo_module/getCustomPageExceptionRoutes');
		
		$add = '';
		
		if ($custom_page_exception_routes) {
			$add = " AND route NOT IN ('" . implode("', '", $custom_page_exception_routes) . "')";
		}
				
		$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "d_target_keyword WHERE language_id = '" . (int)$this->config->get('config_language_id') . "' AND (route LIKE 'category_id=%' OR route LIKE 'product_id=%' OR route LIKE 'manufacturer_id=%' OR route LIKE 'information_id=%' OR (route LIKE '%/%'" . $add . "))");
								
		foreach ($query->rows as $result) {
			$this->db->query("INSERT INTO " . DB_PREFIX . "d_target_keyword SET route = '" . $this->db->escape($result['route']) . "', store_id = '" . (int)$result['store_id'] . "', language_id = '" . (int)$data['language_id'] . "', sort_order = '" . (int)$result['sort_order'] . "', keyword = '" . $this->db->escape($result['keyword']) . "'");				
		}
	}
	
	/*
	*	Delete Language.
	*/
	public function deleteLanguage($data) {
		$custom_page_exception_routes = $this->load->controller('extension/module/d_seo_module/getCustomPageExceptionRoutes');
		
		$add = '';
		
		if ($custom_page_exception_routes) {
			$add = " AND route NOT IN ('" . implode("', '", $custom_page_exception_routes) . "')";
		}
		
		$this->db->query("DELETE FROM " . DB_PREFIX . "d_target_keyword WHERE language_id = '" . (int)$data['language_id'] . "' AND (route LIKE 'category_id=%' OR route LIKE 'product_id=%' OR route LIKE 'manufacturer_id=%' OR route LIKE 'information_id=%' OR (route LIKE '%/%'" . $add . "))");
	}
	
	/*
	*	Delete Store.
	*/
	public function deleteStore($data) {
		$custom_page_exception_routes = $this->load->controller('extension/module/d_seo_module/getCustomPageExceptionRoutes');
		
		$add = '';
		
		if ($custom_page_exception_routes) {
			$add = " AND route NOT IN ('" . implode("', '", $custom_page_exception_routes) . "')";
		}
		
		$this->db->query("DELETE FROM " . DB_PREFIX . "d_target_keyword WHERE store_id = '" . (int)$data['store_id'] . "' AND (route LIKE 'category_id=%' OR route LIKE 'product_id=%' OR route LIKE 'manufacturer_id=%' OR route LIKE 'information_id=%' OR (route LIKE '%/%'" . $add . "))");
	}
	
	/*
	*	Save Home Target Keyword.
	*/
	public function saveHomeTargetKeyword($data) {						
		$this->db->query("DELETE FROM " . DB_PREFIX . "d_target_keyword WHERE route = 'common/home' AND store_id = '" . (int)$data['store_id'] . "'");
		
		if (isset($data['target_keyword'])) {
			foreach ($data['target_keyword'] as $language_id => $keywords) {
				$sort_order = 1;
				
				foreach ($keywords as $keyword) {
					$this->db->query("INSERT INTO " . DB_PREFIX . "d_target_keyword SET route = 'common/home', store_id = '" . (int)$data['store_id'] . "', language_id = '" . (int)$language_id . "', sort_order = '" . $sort_order . "', keyword = '" .  $this->db->escape($keyword) . "'");
					
					$sort_order++;
				}
			}
		}
	}
		
	/*
	*	Save Category Target Keyword.
	*/
	public function saveCategoryTargetKeyword($data) {
		$this->db->query("DELETE FROM " . DB_PREFIX . "d_target_keyword WHERE route = 'category_id=" . (int)$data['category_id'] . "'");
						
		if (isset($data['target_keyword'])) {
			foreach ($data['target_keyword'] as $store_id => $language_target_keyword) {
				foreach ($language_target_keyword as $language_id => $keywords) {
					$sort_order = 1;
				
					foreach ($keywords as $keyword) {
						$this->db->query("INSERT INTO " . DB_PREFIX . "d_target_keyword SET route = 'category_id=" . (int)$data['category_id'] . "', store_id = '" . (int)$store_id . "', language_id = '" . (int)$language_id . "', sort_order = '" . $sort_order . "', keyword = '" .  $this->db->escape($keyword) . "'");
					
						$sort_order++;
					}
				}
			}
		}
	}
	
	/*
	*	Save Product Target Keyword.
	*/
	public function saveProductTargetKeyword($data) {
		$this->db->query("DELETE FROM " . DB_PREFIX . "d_target_keyword WHERE route = 'product_id=" . (int)$data['product_id'] . "'");
						
		if (isset($data['target_keyword'])) {
			foreach ($data['target_keyword'] as $store_id => $language_target_keyword) {
				foreach ($language_target_keyword as $language_id => $keywords) {
					$sort_order = 1;
				
					foreach ($keywords as $keyword) {
						$this->db->query("INSERT INTO " . DB_PREFIX . "d_target_keyword SET route = 'product_id=" . (int)$data['product_id'] . "', store_id = '" . (int)$store_id . "', language_id = '" . (int)$language_id . "', sort_order = '" . $sort_order . "', keyword = '" .  $this->db->escape($keyword) . "'");
					
						$sort_order++;
					}
				}
			}
		}
	}
	
	/*
	*	Save Manufacturer Target Keyword.
	*/
	public function saveManufacturerTargetKeyword($data) {
		$this->db->query("DELETE FROM " . DB_PREFIX . "d_target_keyword WHERE route = 'manufacturer_id=" . (int)$data['manufacturer_id'] . "'");
						
		if (isset($data['target_keyword'])) {
			foreach ($data['target_keyword'] as $store_id => $language_target_keyword) {
				foreach ($language_target_keyword as $language_id => $keywords) {
					$sort_order = 1;
				
					foreach ($keywords as $keyword) {
						$this->db->query("INSERT INTO " . DB_PREFIX . "d_target_keyword SET route = 'manufacturer_id=" . (int)$data['manufacturer_id'] . "', store_id = '" . (int)$store_id . "', language_id = '" . (int)$language_id . "', sort_order = '" . $sort_order . "', keyword = '" .  $this->db->escape($keyword) . "'");
					
						$sort_order++;
					}
				}
			}
		}
	}
	
	/*
	*	Save Information Target Keyword.
	*/
	public function saveInformationTargetKeyword($data) {
		$this->db->query("DELETE FROM " . DB_PREFIX . "d_target_keyword WHERE route = 'information_id=" . (int)$data['information_id'] . "'");
						
		if (isset($data['target_keyword'])) {
			foreach ($data['target_keyword'] as $store_id => $language_target_keyword) {
				foreach ($language_target_keyword as $language_id => $keywords) {
					$sort_order = 1;
				
					foreach ($keywords as $keyword) {
						$this->db->query("INSERT INTO " . DB_PREFIX . "d_target_keyword SET route = 'information_id=" . (int)$data['information_id'] . "', store_id = '" . (int)$store_id . "', language_id = '" . (int)$language_id . "', sort_order = '" . $sort_order . "', keyword = '" .  $this->db->escape($keyword) . "'");
					
						$sort_order++;
					}
				}
			}
		}
	}
	
	/*
	*	Delete Category Target Keyword.
	*/
	public function deleteCategoryTargetKeyword($data) {
		$this->db->query("DELETE FROM " . DB_PREFIX . "d_target_keyword WHERE route = 'category_id=" . (int)$data['category_id'] . "'");
	}
	
	/*
	*	Delete Product Target Keyword.
	*/
	public function deleteProductTargetKeyword($data) {
		$this->db->query("DELETE FROM " . DB_PREFIX . "d_target_keyword WHERE route = 'product_id=" . (int)$data['product_id'] . "'");
	}
	
	/*
	*	Delete Manufacturer Target Keyword.
	*/
	public function deleteManufacturerTargetKeyword($data) {
		$this->db->query("DELETE FROM " . DB_PREFIX . "d_target_keyword WHERE route = 'manufacturer_id=" . (int)$data['manufacturer_id'] . "'");
	}
	
	/*
	*	Delete Information Target Keyword.
	*/
	public function deleteInformationTargetKeyword($data) {
		$this->db->query("DELETE FROM " . DB_PREFIX . "d_target_keyword WHERE route = 'information_id=" . (int)$data['information_id'] . "'");
	}

	/*
	*	Return Home Target Keyword.
	*/
	public function getHomeTargetKeyword($store_id = 0) {
		$target_keyword = array();
		
		$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "d_target_keyword WHERE route = 'common/home' AND store_id = '" . (int)$store_id . "' ORDER BY sort_order");
		
		foreach($query->rows as $result) {
			$target_keyword[$result['language_id']][$result['sort_order']] = $result['keyword'];
		}
		
		return $target_keyword;
	}	
		
	/*
	*	Return Category Target Keyword.
	*/
	public function getCategoryTargetKeyword($category_id) {
		$target_keyword = array();
		
		$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "d_target_keyword WHERE route = 'category_id=" . (int)$category_id . "' ORDER BY sort_order");
		
		foreach($query->rows as $result) {
			$target_keyword[$result['store_id']][$result['language_id']][$result['sort_order']] = $result['keyword'];
		}
		
		return $target_keyword;
	}
	
	/*
	*	Return Product Target Keyword.
	*/
	public function getProductTargetKeyword($product_id) {
		$target_keyword = array();
		
		$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "d_target_keyword WHERE route = 'product_id=" . (int)$product_id . "' ORDER BY sort_order");
		
		foreach($query->rows as $result) {
			$target_keyword[$result['store_id']][$result['language_id']][$result['sort_order']] = $result['keyword'];
		}
		
		return $target_keyword;
	}
	
	/*
	*	Return Manufacturer Target Keyword.
	*/
	public function getManufacturerTargetKeyword($manufacturer_id) {
		$target_keyword = array();
		
		$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "d_target_keyword WHERE route = 'manufacturer_id=" . (int)$manufacturer_id . "' ORDER BY sort_order");
		
		foreach($query->rows as $result) {
			$target_keyword[$result['store_id']][$result['language_id']][$result['sort_order']] = $result['keyword'];
		}
		
		return $target_keyword;
	}
	
	/*
	*	Return Information Target Keyword.
	*/
	public function getInformationTargetKeyword($information_id) {
		$target_keyword = array();
		
		$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "d_target_keyword WHERE route = 'information_id=" . (int)$information_id . "' ORDER BY sort_order");
		
		foreach($query->rows as $result) {
			$target_keyword[$result['store_id']][$result['language_id']][$result['sort_order']] = $result['keyword'];
		}
		
		return $target_keyword;
	}
	
	/*
	*	Return Target Elements.
	*/	
	public function getTargetElements($data) {
		$this->load->model('extension/module/' . $this->codename);
		
		$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'];
		}
		
		$stores = $this->{'model_extension_module_' . $this->codename}->getStores();
		
		$field_info = $this->load->controller('extension/module/d_seo_module/getFieldInfo');
		$custom_page_exception_routes = $this->load->controller('extension/module/d_seo_module/getCustomPageExceptionRoutes');
		
		$target_elements = array();	
						
		if ($data['sheet_code'] == 'category') {
			if ($data['store_id'] && $field_info['sheet'][$data['sheet_code']]['field']['target_keyword']['multi_store'] && $field_info['sheet'][$data['sheet_code']]['field']['target_keyword']['multi_store_status']) {
				$target_keyword_store_id = $data['store_id'];
			} else {
				$target_keyword_store_id = 0;
			}
						
			$sql = "SELECT tk.route, tk.language_id, tk.sort_order, tk.keyword, c.category_id FROM " . DB_PREFIX . "d_target_keyword tk LEFT JOIN " . DB_PREFIX . "category c ON (CONCAT('category_id=', c.category_id) = tk.route) LEFT JOIN " . DB_PREFIX . "d_target_keyword tk2 ON (tk2.route = tk.route AND tk2.store_id = '" . (int)$target_keyword_store_id . "') WHERE tk.route LIKE 'category_id=%' AND tk.store_id = '" . (int)$target_keyword_store_id . "'";
			
			$implode = array();
			$implode_language = array();
						
			foreach ($data['filter'] as $field_code => $filter) {
				if (!empty($filter)) {
					if ($field_code == 'route') {
						$implode[] = "tk2.route = '" . $this->db->escape($filter) . "'";
					}
										
					if ($field_code == 'target_keyword') {
						foreach ($filter as $language_id => $value) {
							if (!empty($value)) {
								$implode_language[] = "(tk2.language_id = '" . (int)$language_id . "' AND tk2.keyword LIKE '%" . $this->db->escape($value) . "%')";
							}
						}
					}
				}
			}
			
			if ($implode_language) {
				$implode[] = '(' . implode(' OR ', $implode_language) . ')';
			}
			
			if ($implode) {
				$sql .= " AND " . implode(' AND ', $implode);
			}

			$sql .= " GROUP BY tk.route, tk.language_id, tk.sort_order";
			
			$query = $this->db->query($sql);
						
			foreach ($query->rows as $result) {
				$target_elements[$result['route']]['route'] = $result['route'];
				$target_elements[$result['route']]['target_keyword'][$result['language_id']][$result['sort_order']] = $result['keyword'];
					
				if ($result['category_id']) {
					$target_elements[$result['route']]['link'] = $this->url->link('catalog/category/edit', $url_token . '&category_id=' . $result['category_id'], true);
				}
			}
					
			return $target_elements;
		}
				
		if ($data['sheet_code'] == 'product') {
			if ($data['store_id'] && $field_info['sheet'][$data['sheet_code']]['field']['target_keyword']['multi_store'] && $field_info['sheet'][$data['sheet_code']]['field']['target_keyword']['multi_store_status']) {
				$target_keyword_store_id = $data['store_id'];
			} else {
				$target_keyword_store_id = 0;
			}
						
			$sql = "SELECT tk.route, tk.language_id, tk.sort_order, tk.keyword, p.product_id FROM " . DB_PREFIX . "d_target_keyword tk LEFT JOIN " . DB_PREFIX . "product p ON (CONCAT('product_id=', p.product_id) = tk.route) LEFT JOIN " . DB_PREFIX . "d_target_keyword tk2 ON (tk2.route = tk.route AND tk2.store_id = '" . (int)$target_keyword_store_id . "') WHERE tk.route LIKE 'product_id=%' AND tk.store_id = '" . (int)$target_keyword_store_id . "'";
			
			$implode = array();
			$implode_language = array();
						
			foreach ($data['filter'] as $field_code => $filter) {
				if (!empty($filter)) {
					if ($field_code == 'route') {
						$implode[] = "tk2.route = '" . $this->db->escape($filter) . "'";
					}
										
					if ($field_code == 'target_keyword') {
						foreach ($filter as $language_id => $value) {
							if (!empty($value)) {
								$implode_language[] = "(tk2.language_id = '" . (int)$language_id . "' AND tk2.keyword LIKE '%" . $this->db->escape($value) . "%')";
							}
						}
					}
				}
			}
			
			if ($implode_language) {
				$implode[] = '(' . implode(' OR ', $implode_language) . ')';
			}
			
			if ($implode) {
				$sql .= " AND " . implode(' AND ', $implode);
			}

			$sql .= " GROUP BY tk.route, tk.language_id, tk.sort_order";
			
			$query = $this->db->query($sql);
						
			foreach ($query->rows as $result) {
				$target_elements[$result['route']]['route'] = $result['route'];
				$target_elements[$result['route']]['target_keyword'][$result['language_id']][$result['sort_order']] = $result['keyword'];
					
				if ($result['product_id']) {
					$target_elements[$result['route']]['link'] = $this->url->link('catalog/product/edit', $url_token . '&product_id=' . $result['product_id'], true);
				}
			}
					
			return $target_elements;	
		}
		
		if ($data['sheet_code'] == 'manufacturer') {
			if ($data['store_id'] && $field_info['sheet'][$data['sheet_code']]['field']['target_keyword']['multi_store'] && $field_info['sheet'][$data['sheet_code']]['field']['target_keyword']['multi_store_status']) {
				$target_keyword_store_id = $data['store_id'];
			} else {
				$target_keyword_store_id = 0;
			}
						
			$sql = "SELECT tk.route, tk.language_id, tk.sort_order, tk.keyword, m.manufacturer_id FROM " . DB_PREFIX . "d_target_keyword tk LEFT JOIN " . DB_PREFIX . "manufacturer m ON (CONCAT('manufacturer_id=', m.manufacturer_id) = tk.route) LEFT JOIN " . DB_PREFIX . "d_target_keyword tk2 ON (tk2.route = tk.route AND tk2.store_id = '" . (int)$target_keyword_store_id . "') WHERE tk.route LIKE 'manufacturer_id=%' AND tk.store_id = '" . (int)$target_keyword_store_id . "'";
			
			$implode = array();
			$implode_language = array();
						
			foreach ($data['filter'] as $field_code => $filter) {
				if (!empty($filter)) {
					if ($field_code == 'route') {
						$implode[] = "tk2.route = '" . $this->db->escape($filter) . "'";
					}
										
					if ($field_code == 'target_keyword') {
						foreach ($filter as $language_id => $value) {
							if (!empty($value)) {
								$implode_language[] = "(tk2.language_id = '" . (int)$language_id . "' AND tk2.keyword LIKE '%" . $this->db->escape($value) . "%')";
							}
						}
					}
				}
			}
			
			if ($implode_language) {
				$implode[] = '(' . implode(' OR ', $implode_language) . ')';
			}
			
			if ($implode) {
				$sql .= " AND " . implode(' AND ', $implode);
			}

			$sql .= " GROUP BY tk.route, tk.language_id, tk.sort_order";
			
			$query = $this->db->query($sql);
						
			foreach ($query->rows as $result) {
				$target_elements[$result['route']]['route'] = $result['route'];
				$target_elements[$result['route']]['target_keyword'][$result['language_id']][$result['sort_order']] = $result['keyword'];
				
				if ($result['manufacturer_id']) {
					$target_elements[$result['route']]['link'] = $this->url->link('catalog/manufacturer/edit', $url_token . '&manufacturer_id=' . $result['manufacturer_id'], true);
				}
			}
					
			return $target_elements;	
		}
		
		if ($data['sheet_code'] == 'information') {
			if ($data['store_id'] && $field_info['sheet'][$data['sheet_code']]['field']['target_keyword']['multi_store'] && $field_info['sheet'][$data['sheet_code']]['field']['target_keyword']['multi_store_status']) {
				$target_keyword_store_id = $data['store_id'];
			} else {
				$target_keyword_store_id = 0;
			}
						
			$sql = "SELECT tk.route, tk.language_id, tk.sort_order, tk.keyword, i.information_id FROM " . DB_PREFIX . "d_target_keyword tk LEFT JOIN " . DB_PREFIX . "information i ON (CONCAT('information_id=', i.information_id) = tk.route) LEFT JOIN " . DB_PREFIX . "d_target_keyword tk2 ON (tk2.route = tk.route AND tk2.store_id = '" . (int)$target_keyword_store_id . "') WHERE tk.route LIKE 'information_id=%' AND tk.store_id = '" . (int)$target_keyword_store_id . "'";
			
			$implode = array();
			$implode_language = array();
						
			foreach ($data['filter'] as $field_code => $filter) {
				if (!empty($filter)) {
					if ($field_code == 'route') {
						$implode[] = "tk2.route = '" . $this->db->escape($filter) . "'";
					}
										
					if ($field_code == 'target_keyword') {
						foreach ($filter as $language_id => $value) {
							if (!empty($value)) {
								$implode_language[] = "(tk2.language_id = '" . (int)$language_id . "' AND tk2.keyword LIKE '%" . $this->db->escape($value) . "%')";
							}
						}
					}
				}
			}
			
			if ($implode_language) {
				$implode[] = '(' . implode(' OR ', $implode_language) . ')';
			}
			
			if ($implode) {
				$sql .= " AND " . implode(' AND ', $implode);
			}

			$sql .= " GROUP BY tk.route, tk.language_id, tk.sort_order";
			
			$query = $this->db->query($sql);
						
			foreach ($query->rows as $result) {
				$target_elements[$result['route']]['route'] = $result['route'];
				$target_elements[$result['route']]['target_keyword'][$result['language_id']][$result['sort_order']] = $result['keyword'];
				
				if ($result['information_id']) {
					$target_elements[$result['route']]['link'] = $this->url->link('catalog/information/edit', $url_token . '&information_id=' . $result['information_id'], true);
				}
			}
					
			return $target_elements;	
		}
		
		if ($data['sheet_code'] == 'custom_page') {			
			if ($data['store_id'] && $field_info['sheet'][$data['sheet_code']]['field']['target_keyword']['multi_store'] && $field_info['sheet'][$data['sheet_code']]['field']['target_keyword']['multi_store_status']) {
				$target_keyword_store_id = $data['store_id'];
			} else {
				$target_keyword_store_id = 0;
			}
			
			$sql = "SELECT tk.route, tk.language_id, tk.sort_order, tk.keyword FROM " . DB_PREFIX . "d_target_keyword tk LEFT JOIN " . DB_PREFIX . "d_target_keyword tk2 ON (tk2.route = tk.route AND tk2.store_id = '" . (int)$target_keyword_store_id . "') WHERE tk.route LIKE '%/%' AND tk.store_id = '" . (int)$target_keyword_store_id . "'";
			
			$implode = array();
			$implode_language = array();
						
			foreach ($data['filter'] as $field_code => $filter) {
				if (!empty($filter)) {
					if ($field_code == 'route') {
						$implode[] = "tk2.route = '" . $this->db->escape($filter) . "'";
					}
										
					if ($field_code == 'target_keyword') {
						foreach ($filter as $language_id => $value) {
							if (!empty($value)) {
								$implode_language[] = "(tk2.language_id = '" . (int)$language_id . "' AND tk2.keyword LIKE '%" . $this->db->escape($value) . "%')";
							}
						}
					}
				}
			}
			
			if ($implode_language) {
				$implode[] = '(' . implode(' OR ', $implode_language) . ')';
			}
			
			if ($implode) {
				$sql .= " AND " . implode(' AND ', $implode);
			}

			$sql .= " GROUP BY tk.route, tk.language_id, tk.sort_order";
			
			$query = $this->db->query($sql);
						
			foreach ($query->rows as $result) {
				if (!in_array($result['route'], $custom_page_exception_routes)) {
					$target_elements[$result['route']]['route'] = $result['route'];
					$target_elements[$result['route']]['target_keyword'][$result['language_id']][$result['sort_order']] = $result['keyword'];
				}
			}
									
			return $target_elements;
		}
	}
					
	/*
	*	Add Target Element.
	*/
	public function addTargetElement($data) {
		$field_info = $this->load->controller('extension/module/d_seo_module/getFieldInfo');
		$custom_page_exception_routes = $this->load->controller('extension/module/d_seo_module/getCustomPageExceptionRoutes');
		
		if (isset($data['route']) && isset($data['store_id']) && isset($data['target_keyword'])) {
			if ((strpos($data['route'], 'category_id') === 0) || (strpos($data['route'], 'product_id') === 0) || (strpos($data['route'], 'manufacturer_id') === 0) || (strpos($data['route'], 'information_id') === 0) || (preg_match('/[A-Za-z0-9]+\/[A-Za-z0-9]+/i', $data['route']) && !in_array($data['route'], $custom_page_exception_routes))) {	
				$target_keyword_store_id = 0;
				
				if (strpos($data['route'], 'category_id') === 0) {
					if (isset($field_info['sheet']['category']['field']['target_keyword']['multi_store']) && $field_info['sheet']['category']['field']['target_keyword']['multi_store'] && isset($field_info['sheet']['category']['field']['target_keyword']['multi_store_status']) && $field_info['sheet']['category']['field']['target_keyword']['multi_store_status']) {
						$target_keyword_store_id = $data['store_id'];
					} else {
						$target_keyword_store_id = 0;
					}
				}
				
				if (strpos($data['route'], 'product_id') === 0) {
					if (isset($field_info['sheet']['product']['field']['target_keyword']['multi_store']) && $field_info['sheet']['product']['field']['target_keyword']['multi_store'] && isset($field_info['sheet']['product']['field']['target_keyword']['multi_store_status']) && $field_info['sheet']['product']['field']['target_keyword']['multi_store_status']) {
						$target_keyword_store_id = $data['store_id'];
					} else {
						$target_keyword_store_id = 0;
					}
				}
				
				if (strpos($data['route'], 'manufacturer_id') === 0) {
					if (isset($field_info['sheet']['manufacturer']['field']['target_keyword']['multi_store']) && $field_info['sheet']['manufacturer']['field']['target_keyword']['multi_store'] && isset($field_info['sheet']['manufacturer']['field']['target_keyword']['multi_store_status']) && $field_info['sheet']['manufacturer']['field']['target_keyword']['multi_store_status']) {
						$target_keyword_store_id = $data['store_id'];
					} else {
						$target_keyword_store_id = 0;
					}
				}
				
				if (strpos($data['route'], 'information_id') === 0) {
					if (isset($field_info['sheet']['information']['field']['target_keyword']['multi_store']) && $field_info['sheet']['information']['field']['target_keyword']['multi_store'] && isset($field_info['sheet']['information']['field']['target_keyword']['multi_store_status']) && $field_info['sheet']['information']['field']['target_keyword']['multi_store_status']) {
						$target_keyword_store_id = $data['store_id'];
					} else {
						$target_keyword_store_id = 0;
					}
				}
				
				if (preg_match('/[A-Za-z0-9]+\/[A-Za-z0-9]+/i', $data['route'])) {
					if (isset($field_info['sheet']['custom_page']['field']['target_keyword']['multi_store']) && $field_info['sheet']['custom_page']['field']['target_keyword']['multi_store'] && isset($field_info['sheet']['custom_page']['field']['target_keyword']['multi_store_status']) && $field_info['sheet']['custom_page']['field']['target_keyword']['multi_store_status']) {
						$target_keyword_store_id = $data['store_id'];
					} else {
						$target_keyword_store_id = 0;
					}
				}
						
				foreach ($data['target_keyword'] as $language_id => $target_keyword) {
					preg_match_all('/\[[^]]+\]/', $target_keyword, $keywords);
				
					$sort_order = 1;
		
					foreach ($keywords[0] as $keyword) {
						$keyword = substr($keyword, 1, strlen($keyword) - 2);
						$this->db->query("INSERT INTO " . DB_PREFIX . "d_target_keyword SET route = '" . $this->db->escape($data['route']) . "', store_id = '" . (int)$target_keyword_store_id . "', language_id = '" . (int)$language_id . "', sort_order = '" . $sort_order . "', keyword = '" .  $this->db->escape($keyword) . "'");
					
						$sort_order++;
					}
				}
			}
		}
	}
	
	/*
	*	Edit Target Element.
	*/
	public function editTargetElement($data) {
		$field_info = $this->load->controller('extension/module/d_seo_module/getFieldInfo');
		$custom_page_exception_routes = $this->load->controller('extension/module/d_seo_module/getCustomPageExceptionRoutes');
		
		if (isset($data['route']) && isset($data['store_id']) && isset($data['language_id']) && isset($data['target_keyword'])) {
			if ((strpos($data['route'], 'category_id') === 0) || (strpos($data['route'], 'product_id') === 0) || (strpos($data['route'], 'manufacturer_id') === 0) || (strpos($data['route'], 'information_id') === 0) || (preg_match('/[A-Za-z0-9]+\/[A-Za-z0-9]+/i', $data['route']) && !in_array($data['route'], $custom_page_exception_routes))) {	
				$target_keyword_store_id = 0;
				
				if (strpos($data['route'], 'category_id') === 0) {
					if (isset($field_info['sheet']['category']['field']['target_keyword']['multi_store']) && $field_info['sheet']['category']['field']['target_keyword']['multi_store'] && isset($field_info['sheet']['category']['field']['target_keyword']['multi_store_status']) && $field_info['sheet']['category']['field']['target_keyword']['multi_store_status']) {
						$target_keyword_store_id = $data['store_id'];
					} else {
						$target_keyword_store_id = 0;
					}
				}
				
				if (strpos($data['route'], 'product_id') === 0) {
					if (isset($field_info['sheet']['product']['field']['target_keyword']['multi_store']) && $field_info['sheet']['product']['field']['target_keyword']['multi_store'] && isset($field_info['sheet']['product']['field']['target_keyword']['multi_store_status']) && $field_info['sheet']['product']['field']['target_keyword']['multi_store_status']) {
						$target_keyword_store_id = $data['store_id'];
					} else {
						$target_keyword_store_id = 0;
					}
				}
				
				if (strpos($data['route'], 'manufacturer_id') === 0) {
					if (isset($field_info['sheet']['manufacturer']['field']['target_keyword']['multi_store']) && $field_info['sheet']['manufacturer']['field']['target_keyword']['multi_store'] && isset($field_info['sheet']['manufacturer']['field']['target_keyword']['multi_store_status']) && $field_info['sheet']['manufacturer']['field']['target_keyword']['multi_store_status']) {
						$target_keyword_store_id = $data['store_id'];
					} else {
						$target_keyword_store_id = 0;
					}
				}
				
				if (strpos($data['route'], 'information_id') === 0) {
					if (isset($field_info['sheet']['information']['field']['target_keyword']['multi_store']) && $field_info['sheet']['information']['field']['target_keyword']['multi_store'] && isset($field_info['sheet']['information']['field']['target_keyword']['multi_store_status']) && $field_info['sheet']['information']['field']['target_keyword']['multi_store_status']) {
						$target_keyword_store_id = $data['store_id'];
					} else {
						$target_keyword_store_id = 0;
					}
				}
				
				if (preg_match('/[A-Za-z0-9]+\/[A-Za-z0-9]+/i', $data['route'])) {
					if (isset($field_info['sheet']['custom_page']['field']['target_keyword']['multi_store']) && $field_info['sheet']['custom_page']['field']['target_keyword']['multi_store'] && isset($field_info['sheet']['custom_page']['field']['target_keyword']['multi_store_status']) && $field_info['sheet']['custom_page']['field']['target_keyword']['multi_store_status']) {
						$target_keyword_store_id = $data['store_id'];
					} else {
						$target_keyword_store_id = 0;
					}
				}
		
				$this->db->query("DELETE FROM " . DB_PREFIX . "d_target_keyword WHERE route = '" . $this->db->escape($data['route']) . "' AND store_id = '" . (int)$target_keyword_store_id . "' AND language_id = '" . (int)$data['language_id'] . "'");
				
				if ($data['target_keyword']) {
					preg_match_all('/\[[^]]+\]/', $data['target_keyword'], $keywords);
				
					$sort_order = 1;
		
					foreach ($keywords[0] as $keyword) {
						$keyword = substr($keyword, 1, strlen($keyword) - 2);
						$this->db->query("INSERT INTO " . DB_PREFIX . "d_target_keyword SET route = '" . $this->db->escape($data['route']) . "', store_id = '" . (int)$target_keyword_store_id . "', language_id = '" . (int)$data['language_id'] . "', sort_order = '" . $sort_order . "', keyword = '" .  $this->db->escape($keyword) . "'");
					
						$sort_order++;
					}
				}
			}
		}
	}
	
	/*
	*	Delete Target Element.
	*/
	public function deleteTargetElement($data) {
		$field_info = $this->load->controller('extension/module/d_seo_module/getFieldInfo');
		$custom_page_exception_routes = $this->load->controller('extension/module/d_seo_module/getCustomPageExceptionRoutes');
		
		if (isset($data['route']) && isset($data['store_id'])) {
			if ((strpos($data['route'], 'category_id') === 0) || (strpos($data['route'], 'product_id') === 0) || (strpos($data['route'], 'manufacturer_id') === 0) || (strpos($data['route'], 'information_id') === 0) || (preg_match('/[A-Za-z0-9]+\/[A-Za-z0-9]+/i', $data['route']) && !in_array($data['route'], $custom_page_exception_routes))) {	
				$target_keyword_store_id = 0;
				
				if (strpos($data['route'], 'category_id') === 0) {
					if (isset($field_info['sheet']['category']['field']['target_keyword']['multi_store']) && $field_info['sheet']['category']['field']['target_keyword']['multi_store'] && isset($field_info['sheet']['category']['field']['target_keyword']['multi_store_status']) && $field_info['sheet']['category']['field']['target_keyword']['multi_store_status']) {
						$target_keyword_store_id = $data['store_id'];
					} else {
						$target_keyword_store_id = 0;
					}
				}
				
				if (strpos($data['route'], 'product_id') === 0) {
					if (isset($field_info['sheet']['product']['field']['target_keyword']['multi_store']) && $field_info['sheet']['product']['field']['target_keyword']['multi_store'] && isset($field_info['sheet']['product']['field']['target_keyword']['multi_store_status']) && $field_info['sheet']['product']['field']['target_keyword']['multi_store_status']) {
						$target_keyword_store_id = $data['store_id'];
					} else {
						$target_keyword_store_id = 0;
					}
				}
				
				if (strpos($data['route'], 'manufacturer_id') === 0) {
					if (isset($field_info['sheet']['manufacturer']['field']['target_keyword']['multi_store']) && $field_info['sheet']['manufacturer']['field']['target_keyword']['multi_store'] && isset($field_info['sheet']['manufacturer']['field']['target_keyword']['multi_store_status']) && $field_info['sheet']['manufacturer']['field']['target_keyword']['multi_store_status']) {
						$target_keyword_store_id = $data['store_id'];
					} else {
						$target_keyword_store_id = 0;
					}
				}
				
				if (strpos($data['route'], 'information_id') === 0) {
					if (isset($field_info['sheet']['information']['field']['target_keyword']['multi_store']) && $field_info['sheet']['information']['field']['target_keyword']['multi_store'] && isset($field_info['sheet']['information']['field']['target_keyword']['multi_store_status']) && $field_info['sheet']['information']['field']['target_keyword']['multi_store_status']) {
						$target_keyword_store_id = $data['store_id'];
					} else {
						$target_keyword_store_id = 0;
					}
				}
				
				if (preg_match('/[A-Za-z0-9]+\/[A-Za-z0-9]+/i', $data['route'])) {
					if (isset($field_info['sheet']['custom_page']['field']['target_keyword']['multi_store']) && $field_info['sheet']['custom_page']['field']['target_keyword']['multi_store'] && isset($field_info['sheet']['custom_page']['field']['target_keyword']['multi_store_status']) && $field_info['sheet']['custom_page']['field']['target_keyword']['multi_store_status']) {
						$target_keyword_store_id = $data['store_id'];
					} else {
						$target_keyword_store_id = 0;
					}
				}
				
				$this->db->query("DELETE FROM " . DB_PREFIX . "d_target_keyword WHERE route = '" . $this->db->escape($data['route']) . "' AND store_id = '" . (int)$target_keyword_store_id . "'");
			}
		}
	}
	
	/*
	*	Return Export Target Elements.
	*/
	public function getExportTargetElements($data) {	
		$field_info = $this->load->controller('extension/module/d_seo_module/getFieldInfo');
		$custom_page_exception_routes = $this->load->controller('extension/module/d_seo_module/getCustomPageExceptionRoutes');
		
		$target_elements = array();	
		
		if ($data['sheet_code'] == 'category') {
			if ($data['store_id'] && $field_info['sheet'][$data['sheet_code']]['field']['target_keyword']['multi_store'] && $field_info['sheet'][$data['sheet_code']]['field']['target_keyword']['multi_store_status']) {
				$target_keyword_store_id = $data['store_id'];
			} else {
				$target_keyword_store_id = 0;
			}
						
			$query = $this->db->query("SELECT route, language_id, CONCAT('[', GROUP_CONCAT(DISTINCT keyword ORDER BY sort_order SEPARATOR ']['), ']') as target_keyword FROM " . DB_PREFIX . "d_target_keyword WHERE route LIKE 'category_id=%' AND store_id = '" . (int)$target_keyword_store_id . "' GROUP BY route, language_id");	
							
			foreach ($query->rows as $result) {
				$target_elements[$result['route']]['route'] = $result['route'];
				$target_elements[$result['route']]['target_keyword'][$result['language_id']] = $result['target_keyword'];
			}
					
			return $target_elements;
		}
		
		if ($data['sheet_code'] == 'product') {
			if ($data['store_id'] && $field_info['sheet'][$data['sheet_code']]['field']['target_keyword']['multi_store'] && $field_info['sheet'][$data['sheet_code']]['field']['target_keyword']['multi_store_status']) {
				$target_keyword_store_id = $data['store_id'];
			} else {
				$target_keyword_store_id = 0;
			}
						
			$query = $this->db->query("SELECT route, language_id, CONCAT('[', GROUP_CONCAT(DISTINCT keyword ORDER BY sort_order SEPARATOR ']['), ']') as target_keyword FROM " . DB_PREFIX . "d_target_keyword WHERE route LIKE 'product_id=%' AND store_id = '" . (int)$target_keyword_store_id . "' GROUP BY route, language_id");
							
			foreach ($query->rows as $result) {
				$target_elements[$result['route']]['route'] = $result['route'];
				$target_elements[$result['route']]['target_keyword'][$result['language_id']] = $result['target_keyword'];
			}
					
			return $target_elements;	
		}
		
		if ($data['sheet_code'] == 'manufacturer') {
			if ($data['store_id'] && $field_info['sheet'][$data['sheet_code']]['field']['target_keyword']['multi_store'] && $field_info['sheet'][$data['sheet_code']]['field']['target_keyword']['multi_store_status']) {
				$target_keyword_store_id = $data['store_id'];
			} else {
				$target_keyword_store_id = 0;
			}
						
			$query = $this->db->query("SELECT route, language_id, CONCAT('[', GROUP_CONCAT(DISTINCT keyword ORDER BY sort_order SEPARATOR ']['), ']') as target_keyword FROM " . DB_PREFIX . "d_target_keyword WHERE route LIKE 'manufacturer_id=%' AND store_id = '" . (int)$target_keyword_store_id . "' GROUP BY route, language_id");	
							
			foreach ($query->rows as $result) {
				$target_elements[$result['route']]['route'] = $result['route'];
				$target_elements[$result['route']]['target_keyword'][$result['language_id']] = $result['target_keyword'];
			}
					
			return $target_elements;	
		}
		
		if ($data['sheet_code'] == 'information') {
			if ($data['store_id'] && $field_info['sheet'][$data['sheet_code']]['field']['target_keyword']['multi_store'] && $field_info['sheet'][$data['sheet_code']]['field']['target_keyword']['multi_store_status']) {
				$target_keyword_store_id = $data['store_id'];
			} else {
				$target_keyword_store_id = 0;
			}
						
			$query = $this->db->query("SELECT route, language_id, CONCAT('[', GROUP_CONCAT(DISTINCT keyword ORDER BY sort_order SEPARATOR ']['), ']') as target_keyword FROM " . DB_PREFIX . "d_target_keyword WHERE route LIKE 'information_id=%' AND store_id = '" . (int)$target_keyword_store_id . "' GROUP BY route, language_id");	
							
			foreach ($query->rows as $result) {
				$target_elements[$result['route']]['route'] = $result['route'];
				$target_elements[$result['route']]['target_keyword'][$result['language_id']] = $result['target_keyword'];
			}
					
			return $target_elements;	
		}
		
		if ($data['sheet_code'] == 'custom_page') {
			if ($data['store_id'] && $field_info['sheet'][$data['sheet_code']]['field']['target_keyword']['multi_store'] && $field_info['sheet'][$data['sheet_code']]['field']['target_keyword']['multi_store_status']) {
				$target_keyword_store_id = $data['store_id'];
			} else {
				$target_keyword_store_id = 0;
			}
			
			$query = $this->db->query("SELECT route, language_id, CONCAT('[', GROUP_CONCAT(DISTINCT keyword ORDER BY sort_order SEPARATOR ']['), ']') as target_keyword FROM " . DB_PREFIX . "d_target_keyword WHERE route LIKE '%/%' AND store_id = '" . (int)$target_keyword_store_id . "' GROUP BY route, language_id");
									
			foreach ($query->rows as $result) {
				if (!in_array($result['route'], $custom_page_exception_routes)) {
					$target_elements[$result['route']]['route'] = $result['route'];
					$target_elements[$result['route']]['target_keyword'][$result['language_id']] = $result['target_keyword'];
				}
			}
									
			return $target_elements;
		}
	}
	
	/*
	*	Save Import Target Elements.
	*/
	public function saveImportTargetElements($data) {		
		$this->load->model('extension/module/' . $this->codename);
		
		$languages = $this->{'model_extension_module_' . $this->codename}->getLanguages();
		
		$field_info = $this->load->controller('extension/module/d_seo_module/getFieldInfo');
		$custom_page_exception_routes = $this->load->controller('extension/module/d_seo_module/getCustomPageExceptionRoutes');
		
		$target_elements = array();	
		
		if ($data['store_id'] && $field_info['sheet']['category']['field']['target_keyword']['multi_store'] && $field_info['sheet']['category']['field']['target_keyword']['multi_store_status']) {
			$target_keyword_store_id = $data['store_id'];
		} else {
			$target_keyword_store_id = 0;
		}
						
		$query = $this->db->query("SELECT route, language_id, CONCAT('[', GROUP_CONCAT(DISTINCT keyword ORDER BY sort_order SEPARATOR ']['), ']') as target_keyword FROM " . DB_PREFIX . "d_target_keyword WHERE route LIKE 'category_id=%' AND store_id = '" . (int)$target_keyword_store_id . "' GROUP BY route, language_id");	
							
		foreach ($query->rows as $result) {
			$target_elements[$result['route']]['route'] = $result['route'];
			$target_elements[$result['route']]['target_keyword'][$result['language_id']] = $result['target_keyword'];
		}
				
		if ($data['store_id'] && $field_info['sheet']['product']['field']['target_keyword']['multi_store'] && $field_info['sheet']['product']['field']['target_keyword']['multi_store_status']) {
			$target_keyword_store_id = $data['store_id'];
		} else {
			$target_keyword_store_id = 0;
		}
						
		$query = $this->db->query("SELECT route, language_id, CONCAT('[', GROUP_CONCAT(DISTINCT keyword ORDER BY sort_order SEPARATOR ']['), ']') as target_keyword FROM " . DB_PREFIX . "d_target_keyword WHERE route LIKE 'product_id=%' AND store_id = '" . (int)$target_keyword_store_id . "' GROUP BY route, language_id");
							
		foreach ($query->rows as $result) {
			$target_elements[$result['route']]['route'] = $result['route'];
			$target_elements[$result['route']]['target_keyword'][$result['language_id']] = $result['target_keyword'];
		}
		
		if ($data['store_id'] && $field_info['sheet']['manufacturer']['field']['target_keyword']['multi_store'] && $field_info['sheet']['manufacturer']['field']['target_keyword']['multi_store_status']) {
			$target_keyword_store_id = $data['store_id'];
		} else {
			$target_keyword_store_id = 0;
		}
						
		$query = $this->db->query("SELECT route, language_id, CONCAT('[', GROUP_CONCAT(DISTINCT keyword ORDER BY sort_order SEPARATOR ']['), ']') as target_keyword FROM " . DB_PREFIX . "d_target_keyword WHERE route LIKE 'manufacturer_id=%' AND store_id = '" . (int)$target_keyword_store_id . "' GROUP BY route, language_id");	
							
		foreach ($query->rows as $result) {
			$target_elements[$result['route']]['route'] = $result['route'];
			$target_elements[$result['route']]['target_keyword'][$result['language_id']] = $result['target_keyword'];
		}
					
		if ($data['store_id'] && $field_info['sheet']['information']['field']['target_keyword']['multi_store'] && $field_info['sheet']['information']['field']['target_keyword']['multi_store_status']) {
			$target_keyword_store_id = $data['store_id'];
		} else {
			$target_keyword_store_id = 0;
		}
						
		$query = $this->db->query("SELECT route, language_id, CONCAT('[', GROUP_CONCAT(DISTINCT keyword ORDER BY sort_order SEPARATOR ']['), ']') as target_keyword FROM " . DB_PREFIX . "d_target_keyword WHERE route LIKE 'information_id=%' AND store_id = '" . (int)$target_keyword_store_id . "' GROUP BY route, language_id");	
							
		foreach ($query->rows as $result) {
			$target_elements[$result['route']]['route'] = $result['route'];
			$target_elements[$result['route']]['target_keyword'][$result['language_id']] = $result['target_keyword'];
		}
		
		if ($data['store_id'] && $field_info['sheet']['custom_page']['field']['target_keyword']['multi_store'] && $field_info['sheet']['custom_page']['field']['target_keyword']['multi_store_status']) {
			$target_keyword_store_id = $data['store_id'];
		} else {
			$target_keyword_store_id = 0;
		}
					
		$query = $this->db->query("SELECT route, language_id, CONCAT('[', GROUP_CONCAT(DISTINCT keyword ORDER BY sort_order SEPARATOR ']['), ']') as target_keyword FROM " . DB_PREFIX . "d_target_keyword WHERE route LIKE '%/%' AND store_id = '" . (int)$target_keyword_store_id . "' GROUP BY route, language_id");
									
		foreach ($query->rows as $result) {
			if (!in_array($result['route'], $custom_page_exception_routes)) {
				$target_elements[$result['route']]['route'] = $result['route'];
				$target_elements[$result['route']]['target_keyword'][$result['language_id']] = $result['target_keyword'];
			}
		}
		
		foreach ($data['target_elements'] as $target_element) {
			$sheet_code = '';
			
			if (strpos($target_element['route'], 'category_id') === 0) $sheet_code = 'category';			
			if (strpos($target_element['route'], 'product_id') === 0) $sheet_code = 'product';
			if (strpos($target_element['route'], 'manufacturer_id') === 0) $sheet_code = 'manufacturer';
			if (strpos($target_element['route'], 'information_id') === 0) $sheet_code = 'information';
			if (preg_match('/[A-Za-z0-9]+\/[A-Za-z0-9]+/i', $target_element['route']) && !($custom_page_exception_routes && in_array($target_element['route'], $custom_page_exception_routes))) $sheet_code = 'custom_page';
							
			if ($sheet_code) {
				foreach ($languages as $language) {
					if (isset($target_element['target_keyword'][$language['language_id']])) {
						if ((isset($target_elements[$target_element['route']]['target_keyword'][$language['language_id']]) && ($target_element['target_keyword'][$language['language_id']] != $target_elements[$target_element['route']]['target_keyword'][$language['language_id']])) || !isset($target_elements[$target_element['route']]['target_keyword'][$language['language_id']])) {
							if ($data['store_id'] && $field_info['sheet'][$sheet_code]['field']['target_keyword']['multi_store'] && $field_info['sheet'][$sheet_code]['field']['target_keyword']['multi_store_status']) {
								$target_keyword_store_id = $data['store_id'];
							} else {
								$target_keyword_store_id = 0;
							}
															
							$this->db->query("DELETE FROM " . DB_PREFIX . "d_target_keyword WHERE route = '" . $this->db->escape($target_element['route']) . "' AND store_id = '" . (int)$target_keyword_store_id . "' AND language_id = '" . (int)$language['language_id'] . "'");	
								
							if ($target_element['target_keyword'][$language['language_id']]) {
								preg_match_all('/\[[^]]+\]/', $target_element['target_keyword'][$language['language_id']], $keywords);
									
								$sort_order = 1;
									
								foreach ($keywords[0] as $keyword) {
									$keyword = substr($keyword, 1, strlen($keyword) - 2);
									
									$this->db->query("INSERT INTO " . DB_PREFIX . "d_target_keyword SET route = '" . $this->db->escape($target_element['route']) . "', store_id = '" . (int)$target_keyword_store_id . "', language_id = '" . (int)$language['language_id'] . "', sort_order = '" . $sort_order . "', keyword = '" .  $this->db->escape($keyword) . "'");
									
									$sort_order++;
								}
							}
						}
					}
				}	
			}
		}
	}
			
	/*
	*	Return Field Elements.
	*/
	public function getFieldElements($data) {				
		if ($data['field_code'] == 'target_keyword') {
			$this->load->model('extension/module/' . $this->codename);
		
			$stores = $this->{'model_extension_module_' . $this->codename}->getStores();
		
			$field_info = $this->load->controller('extension/module/d_seo_module/getFieldInfo');
			$custom_page_exception_routes = $this->load->controller('extension/module/d_seo_module/getCustomPageExceptionRoutes');
			
			$field_elements = array();
					
			$sql = "SELECT * FROM " . DB_PREFIX . "d_target_keyword";
			
			$implode = array();
				
			foreach ($data['filter'] as $filter_code => $filter) {
				if (!empty($filter)) {
					if ($filter_code == 'route') {
						if (strpos($filter, '%') !== false) {
							$implode[] = "route LIKE '" . $this->db->escape($filter) . "'";
						} else {
							$implode[] = "route = '" . $this->db->escape($filter) . "'";
						}
					}
													
					if ($filter_code == 'language_id' ) {
						$implode[] = "language_id = '" . (int)$filter . "'";
					}
						
					if ($filter_code == 'sort_order') {
						$implode[] = "sort_order = '" . (int)$filter . "'";
					}
						
					if ($filter_code == 'keyword') {
						$implode[] = "keyword = '" . $this->db->escape($filter) . "'";
					}
				}
			}
		
			if ($implode) {
				$sql .= " WHERE " . implode(' AND ', $implode);
			}
		
			$sql .= " ORDER BY sort_order";
				
			$query = $this->db->query($sql);
										
			foreach ($query->rows as $result) {
				if (strpos($result['route'], 'category_id') === 0) {
					if (isset($field_info['sheet']['category']['field']['target_keyword']['multi_store']) && $field_info['sheet']['category']['field']['target_keyword']['multi_store'] && isset($field_info['sheet']['category']['field']['target_keyword']['multi_store_status']) && $field_info['sheet']['category']['field']['target_keyword']['multi_store_status']) {
						if ((isset($data['filter']['store_id']) && ($result['store_id'] == $data['filter']['store_id'])) || !isset($data['filter']['store_id'])) {
							$field_elements[$result['route']][$result['store_id']][$result['language_id']][$result['sort_order']] = $result['keyword'];
						}
					} elseif ($result['store_id'] == 0) {
						foreach ($stores as $store) {
							if ((isset($data['filter']['store_id']) && ($store['store_id'] == $data['filter']['store_id'])) || !isset($data['filter']['store_id'])) {
								$field_elements[$result['route']][$store['store_id']][$result['language_id']][$result['sort_order']] = $result['keyword'];
							}
						}
					}
				}
					
				if (strpos($result['route'], 'product_id') === 0) {
					if (isset($field_info['sheet']['product']['field']['target_keyword']['multi_store']) && $field_info['sheet']['product']['field']['target_keyword']['multi_store'] && isset($field_info['sheet']['product']['field']['target_keyword']['multi_store_status']) && $field_info['sheet']['product']['field']['target_keyword']['multi_store_status']) {
						if ((isset($data['filter']['store_id']) && ($result['store_id'] == $data['filter']['store_id'])) || !isset($data['filter']['store_id'])) {
							$field_elements[$result['route']][$result['store_id']][$result['language_id']][$result['sort_order']] = $result['keyword'];
						}
					} elseif ($result['store_id'] == 0) {
						foreach ($stores as $store) {
							if ((isset($data['filter']['store_id']) && ($store['store_id'] == $data['filter']['store_id'])) || !isset($data['filter']['store_id'])) {
								$field_elements[$result['route']][$store['store_id']][$result['language_id']][$result['sort_order']] = $result['keyword'];
							}
						}
					}
				}
					
				if (strpos($result['route'], 'manufacturer_id') === 0) {
					if (isset($field_info['sheet']['manufacturer']['field']['target_keyword']['multi_store']) && $field_info['sheet']['manufacturer']['field']['target_keyword']['multi_store'] && isset($field_info['sheet']['manufacturer']['field']['target_keyword']['multi_store_status']) && $field_info['sheet']['manufacturer']['field']['target_keyword']['multi_store_status']) {
						if ((isset($data['filter']['store_id']) && ($result['store_id'] == $data['filter']['store_id'])) || !isset($data['filter']['store_id'])) {
							$field_elements[$result['route']][$result['store_id']][$result['language_id']][$result['sort_order']] = $result['keyword'];
						}
					} elseif ($result['store_id'] == 0) {
						foreach ($stores as $store) {
							if ((isset($data['filter']['store_id']) && ($store['store_id'] == $data['filter']['store_id'])) || !isset($data['filter']['store_id'])) {
								$field_elements[$result['route']][$store['store_id']][$result['language_id']][$result['sort_order']] = $result['keyword'];
							}
						}
					}
				}
					
				if (strpos($result['route'], 'information_id') === 0) {
					if (isset($field_info['sheet']['information']['field']['target_keyword']['multi_store']) && $field_info['sheet']['information']['field']['target_keyword']['multi_store'] && isset($field_info['sheet']['information']['field']['target_keyword']['multi_store_status']) && $field_info['sheet']['information']['field']['target_keyword']['multi_store_status']) {
						if ((isset($data['filter']['store_id']) && ($result['store_id'] == $data['filter']['store_id'])) || !isset($data['filter']['store_id'])) {
							$field_elements[$result['route']][$result['store_id']][$result['language_id']][$result['sort_order']] = $result['keyword'];
						}
					} elseif ($result['store_id'] == 0) {
						foreach ($stores as $store) {
							if ((isset($data['filter']['store_id']) && ($store['store_id'] == $data['filter']['store_id'])) || !isset($data['filter']['store_id'])) {
								$field_elements[$result['route']][$store['store_id']][$result['language_id']][$result['sort_order']] = $result['keyword'];
							}
						}
					}
				}
					
				if (preg_match('/[A-Za-z0-9]+\/[A-Za-z0-9]+/i', $result['route']) && !($custom_page_exception_routes && in_array($result['route'], $custom_page_exception_routes))) {
					if (isset($field_info['sheet']['custom_page']['field']['target_keyword']['multi_store']) && $field_info['sheet']['custom_page']['field']['target_keyword']['multi_store'] && isset($field_info['sheet']['custom_page']['field']['target_keyword']['multi_store_status']) && $field_info['sheet']['custom_page']['field']['target_keyword']['multi_store_status']) {
						if ((isset($data['filter']['store_id']) && ($result['store_id'] == $data['filter']['store_id'])) || !isset($data['filter']['store_id'])) {
							$field_elements[$result['route']][$result['store_id']][$result['language_id']][$result['sort_order']] = $result['keyword'];
						}
					} elseif ($result['store_id'] == 0) {
						foreach ($stores as $store) {
							if ((isset($data['filter']['store_id']) && ($store['store_id'] == $data['filter']['store_id'])) || !isset($data['filter']['store_id'])) {
								$field_elements[$result['route']][$store['store_id']][$result['language_id']][$result['sort_order']] = $result['keyword'];
							}
						}
					}
				}
			}
				
			return $field_elements;
		}
		
		if ($data['field_code'] == 'url_keyword') {
			$this->load->model('extension/module/' . $this->codename);
		
			$stores = $this->{'model_extension_module_' . $this->codename}->getStores();
			$languages = $this->{'model_extension_module_' . $this->codename}->getLanguages();
		
			$field_info = $this->load->controller('extension/module/d_seo_module/getFieldInfo');
			$custom_page_exception_routes = $this->load->controller('extension/module/d_seo_module/getCustomPageExceptionRoutes');
			
			if (!(isset($field_info['sheet']['category']['field']['url_keyword']['multi_store']) && $field_info['sheet']['category']['field']['url_keyword']['multi_store'] && isset($field_info['sheet']['product']['field']['url_keyword']['multi_store']) && $field_info['sheet']['product']['field']['url_keyword']['multi_store']) && isset($field_info['sheet']['manufacturer']['field']['url_keyword']['multi_store']) && $field_info['sheet']['manufacturer']['field']['url_keyword']['multi_store'] && isset($field_info['sheet']['information']['field']['url_keyword']['multi_store']) && $field_info['sheet']['information']['field']['url_keyword']['multi_store']) {
				if (VERSION >= '3.0.0.0') {
					$sql = "SELECT * FROM " . DB_PREFIX . "seo_url";
				} else {
					$sql = "SELECT * FROM " . DB_PREFIX . "url_alias";
				}
				
				$implode = array();
				
				foreach ($data['filter'] as $filter_code => $filter) {
					if (!empty($filter)) {
						if ($filter_code == 'route') {
							if (strpos($filter, '%') !== false) {
								$implode[] = "query LIKE '" . $this->db->escape($filter) . "'";
							} else {
								$implode[] = "query = '" . $this->db->escape($filter) . "'";
							}
						}
												
						if (VERSION >= '3.0.0.0') {						
							if ($filter_code == 'language_id' ) {
								$implode[] = "language_id = '" . (int)$filter . "'";
							}
						}
												
						if ($filter_code == 'keyword') {
							$implode[] = "keyword = '" . $this->db->escape($filter) . "'";
						}
					}
				}
		
				if ($implode) {
					$sql .= " WHERE " . implode(' AND ', $implode);
				}
							
				$query = $this->db->query($sql);
										
				foreach ($query->rows as $result) {
					if ((strpos($result['route'], 'category_id') === 0) || (strpos($result['route'], 'product_id') === 0) || (strpos($result['route'], 'manufacturer_id') === 0) || (strpos($result['route'], 'information_id') === 0) || (preg_match('/[A-Za-z0-9]+\/[A-Za-z0-9]+/i', $result['route']) && !($custom_page_exception_routes && in_array($result['route'], $custom_page_exception_routes)))) {	
						if (VERSION >= '3.0.0.0') {	
							if ((isset($data['filter']['store_id']) && ($result['store_id'] == $data['filter']['store_id'])) || !isset($data['filter']['store_id'])) {
								$field_elements[$result['route']][$result['store_id']][$result['language_id']] = $result['keyword'];
							}
						} else {
							foreach ($stores as $store) {
								foreach ($languages as $language) {
									if ((isset($data['filter']['store_id']) && ($store['store_id'] == $data['filter']['store_id'])) || !isset($data['filter']['store_id'])) {
										$field_elements[$result['route']][$store['store_id']][$language['language_id']] = $result['keyword'];
									}
								}
							}
						}
					}
				}				
				
				return $field_elements;
			}
		}
		
		if ($data['field_code'] == 'meta_data') {
			$this->load->model('extension/module/' . $this->codename);
			$this->load->model('setting/setting');
			
			$stores = $this->{'model_extension_module_' . $this->codename}->getStores();
			$languages = $this->{'model_extension_module_' . $this->codename}->getLanguages();
			
			$field_info = $this->load->controller('extension/module/d_seo_module/getFieldInfo');
			$custom_page_exception_routes = $this->load->controller('extension/module/d_seo_module_meta/getCustomPageExceptionRoutes');
			
			$field_elements = array();
			
			if (!(isset($field_info['sheet']['category']['field']['meta_title']['multi_store']) && $field_info['sheet']['category']['field']['meta_title']['multi_store'] && isset($field_info['sheet']['product']['field']['meta_title']['multi_store']) && $field_info['sheet']['product']['field']['meta_title']['multi_store'] && isset($field_info['sheet']['manufacturer']['field']['meta_title']['multi_store']) && $field_info['sheet']['manufacturer']['field']['meta_title']['multi_store'] && isset($field_info['sheet']['information']['field']['meta_title']['multi_store']) && $field_info['sheet']['information']['field']['meta_title']['multi_store'])) {
				if ((isset($data['filter']['route']) && (strpos($data['filter']['route'], 'category_id') === 0)) || !isset($data['filter']['route'])) {
					$sql = "SELECT * FROM " . DB_PREFIX . "category_description";
			
					$implode = array();
				
					foreach ($data['filter'] as $filter_code => $filter) {
						if (!empty($filter)) {
							if ($filter_code == 'route') {
								$route_arr = explode('category_id=', $filter);
			
								if (isset($route_arr[1]) && ($route_arr[1] != '%')) {
									$category_id = $route_arr[1];
									$implode[] = "category_id = '" . (int)$category_id . "'";
								}
							}
													
							if ($filter_code == 'language_id' ) {
								$implode[] = "language_id = '" . (int)$filter . "'";
							}
											
							if ($filter_code == 'name') {
								$implode[] = "name = '" . $this->db->escape($filter) . "'";
							}
										
							if ($filter_code == 'description') {
								$implode[] = "description = '" . $this->db->escape($filter) . "'";
							}
					
							if ($filter_code == 'meta_title') {
								$implode[] = "meta_title = '" . $this->db->escape($filter) . "'";
							}
					
							if ($filter_code == 'meta_description') {
								$implode[] = "meta_description = '" . $this->db->escape($filter) . "'";
							}
					
							if ($filter_code == 'meta_keyword') {
								$implode[] = "meta_keyword = '" . $this->db->escape($filter) . "'";
							}
						}
					}
					
					if ($implode) {
						$sql .= " WHERE " . implode(' AND ', $implode);
					}
						
					$query = $this->db->query($sql);
					
					foreach ($query->rows as $result) {
						$route = 'category_id=' . $result['category_id'];
				
						foreach ($stores as $store) {
							if ((isset($data['filter']['store_id']) && ($store['store_id'] == $data['filter']['store_id'])) || !isset($data['filter']['store_id'])) {
								$field_elements[$route][$store['store_id']][$result['language_id']]['name'] = $result['name'];
								$field_elements[$route][$store['store_id']][$result['language_id']]['description'] = $result['description'];
								$field_elements[$route][$store['store_id']][$result['language_id']]['meta_title'] = $result['meta_title'];
								$field_elements[$route][$store['store_id']][$result['language_id']]['meta_description'] = $result['meta_description'];
								$field_elements[$route][$store['store_id']][$result['language_id']]['meta_keyword'] = $result['meta_keyword'];
							}
						}			
					}
				}
			
				if ((isset($data['filter']['route']) && (strpos($data['filter']['route'], 'product_id') === 0)) || !isset($data['filter']['route'])) {
					$sql = "SELECT * FROM " . DB_PREFIX . "product_description";
			
					$implode = array();
								
					foreach ($data['filter'] as $filter_code => $filter) {
						if (!empty($filter)) {
							if ($filter_code == 'route') {
								$route_arr = explode('product_id=', $filter);
			
								if (isset($route_arr[1]) && ($route_arr[1] != '%')) {
									$product_id = $route_arr[1];
									$implode[] = "product_id = '" . (int)$product_id . "'";
								}
							}
													
							if ($filter_code == 'language_id' ) {
								$implode[] = "language_id = '" . (int)$filter . "'";
							}
											
							if ($filter_code == 'name') {
								$implode[] = "name = '" . $this->db->escape($filter) . "'";
							}
										
							if ($filter_code == 'description') {
								$implode[] = "description = '" . $this->db->escape($filter) . "'";
							}
					
							if ($filter_code == 'meta_title') {
								$implode[] = "meta_title = '" . $this->db->escape($filter) . "'";
							}
					
							if ($filter_code == 'meta_description') {
								$implode[] = "meta_description = '" . $this->db->escape($filter) . "'";
							}
					
							if ($filter_code == 'meta_keyword') {
								$implode[] = "meta_keyword = '" . $this->db->escape($filter) . "'";
							}
					
							if ($filter_code == 'tag') {
								$implode[] = "tag = '" . $this->db->escape($filter) . "'";
							}
						}
					}
					
					if ($implode) {
						$sql .= " WHERE " . implode(' AND ', $implode);
					}
						
					$query = $this->db->query($sql);
										
					foreach ($query->rows as $result) {
						$route = 'product_id=' . $result['product_id'];
							
						foreach ($stores as $store) {
							if ((isset($data['filter']['store_id']) && ($store['store_id'] == $data['filter']['store_id'])) || !isset($data['filter']['store_id'])) {
								$field_elements[$route][$store['store_id']][$result['language_id']]['name'] = $result['name'];
								$field_elements[$route][$store['store_id']][$result['language_id']]['description'] = $result['description'];
								$field_elements[$route][$store['store_id']][$result['language_id']]['meta_title'] = $result['meta_title'];
								$field_elements[$route][$store['store_id']][$result['language_id']]['meta_description'] = $result['meta_description'];
								$field_elements[$route][$store['store_id']][$result['language_id']]['meta_keyword'] = $result['meta_keyword'];
								$field_elements[$route][$store['store_id']][$result['language_id']]['tag'] = $result['tag'];
							}
						}
					}
				}
				
				if ((isset($data['filter']['route']) && (strpos($data['filter']['route'], 'manufacturer_id') === 0)) || !isset($data['filter']['route'])) {
					$sql = "SELECT * FROM " . DB_PREFIX . "manufacturer";
			
					$implode = array();
				
					foreach ($data['filter'] as $filter_code => $filter) {
						if (!empty($filter)) {
							if ($filter_code == 'route') {
								$route_arr = explode('manufacturer_id=', $filter);
			
								if (isset($route_arr[1]) && ($route_arr[1] != '%')) {
									$manufacturer_id = $route_arr[1];
									$implode[] = "manufacturer_id = '" . (int)$manufacturer_id . "'";
								}
							}
																								
							if ($filter_code == 'name') {
								$implode[] = "name = '" . $this->db->escape($filter) . "'";
							}
						}
					}
			
					if ($implode) {
						$sql .= " WHERE " . implode(' AND ', $implode);
					}
						
					$query = $this->db->query($sql);
										
					foreach ($query->rows as $result) {
						$route = 'manufacturer_id=' . $result['manufacturer_id'];
						
						foreach ($stores as $store) {
							foreach ($languages as $language) {						
								if ((isset($data['filter']['store_id']) && ($store['store_id'] == $data['filter']['store_id'])) || !isset($data['filter']['store_id'])) {
									$field_elements[$route][$store['store_id']][$language['language_id']]['name'] = $result['name'];
								}
							}
						}
					}
				}
		
				if ((isset($data['filter']['route']) && (strpos($data['filter']['route'], 'information_id') === 0)) || !isset($data['filter']['route'])) {
					$sql = "SELECT * FROM " . DB_PREFIX . "information_description";
			
					$implode = array();
				
					foreach ($data['filter'] as $filter_code => $filter) {
						if (!empty($filter)) {
							if ($filter_code == 'route') {
								$route_arr = explode('information_id=', $filter);
			
								if (isset($route_arr[1]) && ($route_arr[1] != '%')) {
									$information_id = $route_arr[1];
									$implode[] = "information_id = '" . (int)$information_id . "'";
								}
							}
													
							if ($filter_code == 'language_id' ) {
								$implode[] = "language_id = '" . (int)$filter . "'";
							}
											
							if ($filter_code == 'title') {
								$implode[] = "title = '" . $this->db->escape($filter) . "'";
							}
										
							if ($filter_code == 'description') {
								$implode[] = "description = '" . $this->db->escape($filter) . "'";
							}
					
							if ($filter_code == 'meta_title') {
								$implode[] = "meta_title = '" . $this->db->escape($filter) . "'";
							}
					
							if ($filter_code == 'meta_description') {
								$implode[] = "meta_description = '" . $this->db->escape($filter) . "'";
							}
					
							if ($filter_code == 'meta_keyword') {
								$implode[] = "meta_keyword = '" . $this->db->escape($filter) . "'";
							}
						}
					}
				
					if ($implode) {
						$sql .= " WHERE " . implode(' AND ', $implode);
					}
						
					$query = $this->db->query($sql);
										
					foreach ($query->rows as $result) {
						$route = 'information_id=' . $result['information_id'];
							
						foreach ($stores as $store) {
							if ((isset($data['filter']['store_id']) && ($store['store_id'] == $data['filter']['store_id'])) || !isset($data['filter']['store_id'])) {
								$field_elements[$route][$store['store_id']][$result['language_id']]['title'] = $result['title'];
								$field_elements[$route][$store['store_id']][$result['language_id']]['description'] = $result['description'];
								$field_elements[$route][$store['store_id']][$result['language_id']]['meta_title'] = $result['meta_title'];
								$field_elements[$route][$store['store_id']][$result['language_id']]['meta_description'] = $result['meta_description'];
								$field_elements[$route][$store['store_id']][$result['language_id']]['meta_keyword'] = $result['meta_keyword'];
							}
						}
					}	
				}
			
				if ((isset($data['filter']['route']) && ($data['filter']['route'] == 'common/home')) || !isset($data['filter']['route'])) {
					$route = 'common/home';
					
					foreach ($stores as $store) {
						if ((isset($data['filter']['store_id']) && ($store['store_id'] == $data['filter']['store_id'])) || !isset($data['filter']['store_id'])) {
							if ($store['store_id'] == 0) {
								$meta_title = $this->config->get('config_meta_title');
								$meta_description = $this->config->get('config_meta_description');
								$meta_keyword = $this->config->get('config_meta_keyword');
							} else {
								$store_info = $this->model_setting_setting->getSetting('config', $store['store_id']);
									
								$meta_title = isset($store_info['meta_title']) ? $store_info['meta_title'] : '';
								$meta_description = isset($store_info['meta_description']) ? $store_info['meta_description'] : '';
								$meta_keyword = isset($store_info['meta_keyword']) ? $store_info['meta_keyword'] : '';
							}
							
							if (((isset($data['filter']['meta_title']) && ($meta_title == $data['filter']['meta_title'])) || !isset($data['filter']['meta_title'])) && ((isset($data['filter']['meta_description']) && ($meta_description == $data['filter']['meta_description'])) || !isset($data['filter']['meta_description'])) && ((isset($data['filter']['meta_keyword']) && ($meta_keyword == $data['filter']['meta_keyword'])) || !isset($data['filter']['meta_keyword']))) {
								foreach ($languages as $language) {
									$field_elements[$route][$store['store_id']][$language['language_id']]['meta_title'] = $meta_title;
									$field_elements[$route][$store['store_id']][$language['language_id']]['meta_description'] = $meta_description;
									$field_elements[$route][$store['store_id']][$language['language_id']]['meta_keyword'] = $meta_keyword;
								}
							}
						}
					}
				}
			}
				
			return $field_elements;
		}		
		
		return false;
	}
}
?>