shop.balmet.com

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

d_seo_module.php (68422B)


      1 <?php
      2 class ModelExtensionDSEOModuleDSEOModule extends Model {
      3 	private $codename = 'd_seo_module';
      4 		
      5 	/*
      6 	*	Add Language.
      7 	*/
      8 	public function addLanguage($data) {
      9 		$custom_page_exception_routes = $this->load->controller('extension/module/d_seo_module/getCustomPageExceptionRoutes');
     10 		
     11 		$add = '';
     12 		
     13 		if ($custom_page_exception_routes) {
     14 			$add = " AND route NOT IN ('" . implode("', '", $custom_page_exception_routes) . "')";
     15 		}
     16 				
     17 		$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 . "))");
     18 								
     19 		foreach ($query->rows as $result) {
     20 			$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']) . "'");				
     21 		}
     22 	}
     23 	
     24 	/*
     25 	*	Delete Language.
     26 	*/
     27 	public function deleteLanguage($data) {
     28 		$custom_page_exception_routes = $this->load->controller('extension/module/d_seo_module/getCustomPageExceptionRoutes');
     29 		
     30 		$add = '';
     31 		
     32 		if ($custom_page_exception_routes) {
     33 			$add = " AND route NOT IN ('" . implode("', '", $custom_page_exception_routes) . "')";
     34 		}
     35 		
     36 		$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 . "))");
     37 	}
     38 	
     39 	/*
     40 	*	Delete Store.
     41 	*/
     42 	public function deleteStore($data) {
     43 		$custom_page_exception_routes = $this->load->controller('extension/module/d_seo_module/getCustomPageExceptionRoutes');
     44 		
     45 		$add = '';
     46 		
     47 		if ($custom_page_exception_routes) {
     48 			$add = " AND route NOT IN ('" . implode("', '", $custom_page_exception_routes) . "')";
     49 		}
     50 		
     51 		$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 . "))");
     52 	}
     53 	
     54 	/*
     55 	*	Save Home Target Keyword.
     56 	*/
     57 	public function saveHomeTargetKeyword($data) {						
     58 		$this->db->query("DELETE FROM " . DB_PREFIX . "d_target_keyword WHERE route = 'common/home' AND store_id = '" . (int)$data['store_id'] . "'");
     59 		
     60 		if (isset($data['target_keyword'])) {
     61 			foreach ($data['target_keyword'] as $language_id => $keywords) {
     62 				$sort_order = 1;
     63 				
     64 				foreach ($keywords as $keyword) {
     65 					$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) . "'");
     66 					
     67 					$sort_order++;
     68 				}
     69 			}
     70 		}
     71 	}
     72 		
     73 	/*
     74 	*	Save Category Target Keyword.
     75 	*/
     76 	public function saveCategoryTargetKeyword($data) {
     77 		$this->db->query("DELETE FROM " . DB_PREFIX . "d_target_keyword WHERE route = 'category_id=" . (int)$data['category_id'] . "'");
     78 						
     79 		if (isset($data['target_keyword'])) {
     80 			foreach ($data['target_keyword'] as $store_id => $language_target_keyword) {
     81 				foreach ($language_target_keyword as $language_id => $keywords) {
     82 					$sort_order = 1;
     83 				
     84 					foreach ($keywords as $keyword) {
     85 						$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) . "'");
     86 					
     87 						$sort_order++;
     88 					}
     89 				}
     90 			}
     91 		}
     92 	}
     93 	
     94 	/*
     95 	*	Save Product Target Keyword.
     96 	*/
     97 	public function saveProductTargetKeyword($data) {
     98 		$this->db->query("DELETE FROM " . DB_PREFIX . "d_target_keyword WHERE route = 'product_id=" . (int)$data['product_id'] . "'");
     99 						
    100 		if (isset($data['target_keyword'])) {
    101 			foreach ($data['target_keyword'] as $store_id => $language_target_keyword) {
    102 				foreach ($language_target_keyword as $language_id => $keywords) {
    103 					$sort_order = 1;
    104 				
    105 					foreach ($keywords as $keyword) {
    106 						$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) . "'");
    107 					
    108 						$sort_order++;
    109 					}
    110 				}
    111 			}
    112 		}
    113 	}
    114 	
    115 	/*
    116 	*	Save Manufacturer Target Keyword.
    117 	*/
    118 	public function saveManufacturerTargetKeyword($data) {
    119 		$this->db->query("DELETE FROM " . DB_PREFIX . "d_target_keyword WHERE route = 'manufacturer_id=" . (int)$data['manufacturer_id'] . "'");
    120 						
    121 		if (isset($data['target_keyword'])) {
    122 			foreach ($data['target_keyword'] as $store_id => $language_target_keyword) {
    123 				foreach ($language_target_keyword as $language_id => $keywords) {
    124 					$sort_order = 1;
    125 				
    126 					foreach ($keywords as $keyword) {
    127 						$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) . "'");
    128 					
    129 						$sort_order++;
    130 					}
    131 				}
    132 			}
    133 		}
    134 	}
    135 	
    136 	/*
    137 	*	Save Information Target Keyword.
    138 	*/
    139 	public function saveInformationTargetKeyword($data) {
    140 		$this->db->query("DELETE FROM " . DB_PREFIX . "d_target_keyword WHERE route = 'information_id=" . (int)$data['information_id'] . "'");
    141 						
    142 		if (isset($data['target_keyword'])) {
    143 			foreach ($data['target_keyword'] as $store_id => $language_target_keyword) {
    144 				foreach ($language_target_keyword as $language_id => $keywords) {
    145 					$sort_order = 1;
    146 				
    147 					foreach ($keywords as $keyword) {
    148 						$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) . "'");
    149 					
    150 						$sort_order++;
    151 					}
    152 				}
    153 			}
    154 		}
    155 	}
    156 	
    157 	/*
    158 	*	Delete Category Target Keyword.
    159 	*/
    160 	public function deleteCategoryTargetKeyword($data) {
    161 		$this->db->query("DELETE FROM " . DB_PREFIX . "d_target_keyword WHERE route = 'category_id=" . (int)$data['category_id'] . "'");
    162 	}
    163 	
    164 	/*
    165 	*	Delete Product Target Keyword.
    166 	*/
    167 	public function deleteProductTargetKeyword($data) {
    168 		$this->db->query("DELETE FROM " . DB_PREFIX . "d_target_keyword WHERE route = 'product_id=" . (int)$data['product_id'] . "'");
    169 	}
    170 	
    171 	/*
    172 	*	Delete Manufacturer Target Keyword.
    173 	*/
    174 	public function deleteManufacturerTargetKeyword($data) {
    175 		$this->db->query("DELETE FROM " . DB_PREFIX . "d_target_keyword WHERE route = 'manufacturer_id=" . (int)$data['manufacturer_id'] . "'");
    176 	}
    177 	
    178 	/*
    179 	*	Delete Information Target Keyword.
    180 	*/
    181 	public function deleteInformationTargetKeyword($data) {
    182 		$this->db->query("DELETE FROM " . DB_PREFIX . "d_target_keyword WHERE route = 'information_id=" . (int)$data['information_id'] . "'");
    183 	}
    184 
    185 	/*
    186 	*	Return Home Target Keyword.
    187 	*/
    188 	public function getHomeTargetKeyword($store_id = 0) {
    189 		$target_keyword = array();
    190 		
    191 		$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");
    192 		
    193 		foreach($query->rows as $result) {
    194 			$target_keyword[$result['language_id']][$result['sort_order']] = $result['keyword'];
    195 		}
    196 		
    197 		return $target_keyword;
    198 	}	
    199 		
    200 	/*
    201 	*	Return Category Target Keyword.
    202 	*/
    203 	public function getCategoryTargetKeyword($category_id) {
    204 		$target_keyword = array();
    205 		
    206 		$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "d_target_keyword WHERE route = 'category_id=" . (int)$category_id . "' ORDER BY sort_order");
    207 		
    208 		foreach($query->rows as $result) {
    209 			$target_keyword[$result['store_id']][$result['language_id']][$result['sort_order']] = $result['keyword'];
    210 		}
    211 		
    212 		return $target_keyword;
    213 	}
    214 	
    215 	/*
    216 	*	Return Product Target Keyword.
    217 	*/
    218 	public function getProductTargetKeyword($product_id) {
    219 		$target_keyword = array();
    220 		
    221 		$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "d_target_keyword WHERE route = 'product_id=" . (int)$product_id . "' ORDER BY sort_order");
    222 		
    223 		foreach($query->rows as $result) {
    224 			$target_keyword[$result['store_id']][$result['language_id']][$result['sort_order']] = $result['keyword'];
    225 		}
    226 		
    227 		return $target_keyword;
    228 	}
    229 	
    230 	/*
    231 	*	Return Manufacturer Target Keyword.
    232 	*/
    233 	public function getManufacturerTargetKeyword($manufacturer_id) {
    234 		$target_keyword = array();
    235 		
    236 		$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "d_target_keyword WHERE route = 'manufacturer_id=" . (int)$manufacturer_id . "' ORDER BY sort_order");
    237 		
    238 		foreach($query->rows as $result) {
    239 			$target_keyword[$result['store_id']][$result['language_id']][$result['sort_order']] = $result['keyword'];
    240 		}
    241 		
    242 		return $target_keyword;
    243 	}
    244 	
    245 	/*
    246 	*	Return Information Target Keyword.
    247 	*/
    248 	public function getInformationTargetKeyword($information_id) {
    249 		$target_keyword = array();
    250 		
    251 		$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "d_target_keyword WHERE route = 'information_id=" . (int)$information_id . "' ORDER BY sort_order");
    252 		
    253 		foreach($query->rows as $result) {
    254 			$target_keyword[$result['store_id']][$result['language_id']][$result['sort_order']] = $result['keyword'];
    255 		}
    256 		
    257 		return $target_keyword;
    258 	}
    259 	
    260 	/*
    261 	*	Return Target Elements.
    262 	*/	
    263 	public function getTargetElements($data) {
    264 		$this->load->model('extension/module/' . $this->codename);
    265 		
    266 		$url_token = '';
    267 		
    268 		if (isset($this->session->data['token'])) {
    269 			$url_token .=  'token=' . $this->session->data['token'];
    270 		}
    271 		
    272 		if (isset($this->session->data['user_token'])) {
    273 			$url_token .=  'user_token=' . $this->session->data['user_token'];
    274 		}
    275 		
    276 		$stores = $this->{'model_extension_module_' . $this->codename}->getStores();
    277 		
    278 		$field_info = $this->load->controller('extension/module/d_seo_module/getFieldInfo');
    279 		$custom_page_exception_routes = $this->load->controller('extension/module/d_seo_module/getCustomPageExceptionRoutes');
    280 		
    281 		$target_elements = array();	
    282 						
    283 		if ($data['sheet_code'] == 'category') {
    284 			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']) {
    285 				$target_keyword_store_id = $data['store_id'];
    286 			} else {
    287 				$target_keyword_store_id = 0;
    288 			}
    289 						
    290 			$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 . "'";
    291 			
    292 			$implode = array();
    293 			$implode_language = array();
    294 						
    295 			foreach ($data['filter'] as $field_code => $filter) {
    296 				if (!empty($filter)) {
    297 					if ($field_code == 'route') {
    298 						$implode[] = "tk2.route = '" . $this->db->escape($filter) . "'";
    299 					}
    300 										
    301 					if ($field_code == 'target_keyword') {
    302 						foreach ($filter as $language_id => $value) {
    303 							if (!empty($value)) {
    304 								$implode_language[] = "(tk2.language_id = '" . (int)$language_id . "' AND tk2.keyword LIKE '%" . $this->db->escape($value) . "%')";
    305 							}
    306 						}
    307 					}
    308 				}
    309 			}
    310 			
    311 			if ($implode_language) {
    312 				$implode[] = '(' . implode(' OR ', $implode_language) . ')';
    313 			}
    314 			
    315 			if ($implode) {
    316 				$sql .= " AND " . implode(' AND ', $implode);
    317 			}
    318 
    319 			$sql .= " GROUP BY tk.route, tk.language_id, tk.sort_order";
    320 			
    321 			$query = $this->db->query($sql);
    322 						
    323 			foreach ($query->rows as $result) {
    324 				$target_elements[$result['route']]['route'] = $result['route'];
    325 				$target_elements[$result['route']]['target_keyword'][$result['language_id']][$result['sort_order']] = $result['keyword'];
    326 					
    327 				if ($result['category_id']) {
    328 					$target_elements[$result['route']]['link'] = $this->url->link('catalog/category/edit', $url_token . '&category_id=' . $result['category_id'], true);
    329 				}
    330 			}
    331 					
    332 			return $target_elements;
    333 		}
    334 				
    335 		if ($data['sheet_code'] == 'product') {
    336 			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']) {
    337 				$target_keyword_store_id = $data['store_id'];
    338 			} else {
    339 				$target_keyword_store_id = 0;
    340 			}
    341 						
    342 			$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 . "'";
    343 			
    344 			$implode = array();
    345 			$implode_language = array();
    346 						
    347 			foreach ($data['filter'] as $field_code => $filter) {
    348 				if (!empty($filter)) {
    349 					if ($field_code == 'route') {
    350 						$implode[] = "tk2.route = '" . $this->db->escape($filter) . "'";
    351 					}
    352 										
    353 					if ($field_code == 'target_keyword') {
    354 						foreach ($filter as $language_id => $value) {
    355 							if (!empty($value)) {
    356 								$implode_language[] = "(tk2.language_id = '" . (int)$language_id . "' AND tk2.keyword LIKE '%" . $this->db->escape($value) . "%')";
    357 							}
    358 						}
    359 					}
    360 				}
    361 			}
    362 			
    363 			if ($implode_language) {
    364 				$implode[] = '(' . implode(' OR ', $implode_language) . ')';
    365 			}
    366 			
    367 			if ($implode) {
    368 				$sql .= " AND " . implode(' AND ', $implode);
    369 			}
    370 
    371 			$sql .= " GROUP BY tk.route, tk.language_id, tk.sort_order";
    372 			
    373 			$query = $this->db->query($sql);
    374 						
    375 			foreach ($query->rows as $result) {
    376 				$target_elements[$result['route']]['route'] = $result['route'];
    377 				$target_elements[$result['route']]['target_keyword'][$result['language_id']][$result['sort_order']] = $result['keyword'];
    378 					
    379 				if ($result['product_id']) {
    380 					$target_elements[$result['route']]['link'] = $this->url->link('catalog/product/edit', $url_token . '&product_id=' . $result['product_id'], true);
    381 				}
    382 			}
    383 					
    384 			return $target_elements;	
    385 		}
    386 		
    387 		if ($data['sheet_code'] == 'manufacturer') {
    388 			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']) {
    389 				$target_keyword_store_id = $data['store_id'];
    390 			} else {
    391 				$target_keyword_store_id = 0;
    392 			}
    393 						
    394 			$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 . "'";
    395 			
    396 			$implode = array();
    397 			$implode_language = array();
    398 						
    399 			foreach ($data['filter'] as $field_code => $filter) {
    400 				if (!empty($filter)) {
    401 					if ($field_code == 'route') {
    402 						$implode[] = "tk2.route = '" . $this->db->escape($filter) . "'";
    403 					}
    404 										
    405 					if ($field_code == 'target_keyword') {
    406 						foreach ($filter as $language_id => $value) {
    407 							if (!empty($value)) {
    408 								$implode_language[] = "(tk2.language_id = '" . (int)$language_id . "' AND tk2.keyword LIKE '%" . $this->db->escape($value) . "%')";
    409 							}
    410 						}
    411 					}
    412 				}
    413 			}
    414 			
    415 			if ($implode_language) {
    416 				$implode[] = '(' . implode(' OR ', $implode_language) . ')';
    417 			}
    418 			
    419 			if ($implode) {
    420 				$sql .= " AND " . implode(' AND ', $implode);
    421 			}
    422 
    423 			$sql .= " GROUP BY tk.route, tk.language_id, tk.sort_order";
    424 			
    425 			$query = $this->db->query($sql);
    426 						
    427 			foreach ($query->rows as $result) {
    428 				$target_elements[$result['route']]['route'] = $result['route'];
    429 				$target_elements[$result['route']]['target_keyword'][$result['language_id']][$result['sort_order']] = $result['keyword'];
    430 				
    431 				if ($result['manufacturer_id']) {
    432 					$target_elements[$result['route']]['link'] = $this->url->link('catalog/manufacturer/edit', $url_token . '&manufacturer_id=' . $result['manufacturer_id'], true);
    433 				}
    434 			}
    435 					
    436 			return $target_elements;	
    437 		}
    438 		
    439 		if ($data['sheet_code'] == 'information') {
    440 			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']) {
    441 				$target_keyword_store_id = $data['store_id'];
    442 			} else {
    443 				$target_keyword_store_id = 0;
    444 			}
    445 						
    446 			$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 . "'";
    447 			
    448 			$implode = array();
    449 			$implode_language = array();
    450 						
    451 			foreach ($data['filter'] as $field_code => $filter) {
    452 				if (!empty($filter)) {
    453 					if ($field_code == 'route') {
    454 						$implode[] = "tk2.route = '" . $this->db->escape($filter) . "'";
    455 					}
    456 										
    457 					if ($field_code == 'target_keyword') {
    458 						foreach ($filter as $language_id => $value) {
    459 							if (!empty($value)) {
    460 								$implode_language[] = "(tk2.language_id = '" . (int)$language_id . "' AND tk2.keyword LIKE '%" . $this->db->escape($value) . "%')";
    461 							}
    462 						}
    463 					}
    464 				}
    465 			}
    466 			
    467 			if ($implode_language) {
    468 				$implode[] = '(' . implode(' OR ', $implode_language) . ')';
    469 			}
    470 			
    471 			if ($implode) {
    472 				$sql .= " AND " . implode(' AND ', $implode);
    473 			}
    474 
    475 			$sql .= " GROUP BY tk.route, tk.language_id, tk.sort_order";
    476 			
    477 			$query = $this->db->query($sql);
    478 						
    479 			foreach ($query->rows as $result) {
    480 				$target_elements[$result['route']]['route'] = $result['route'];
    481 				$target_elements[$result['route']]['target_keyword'][$result['language_id']][$result['sort_order']] = $result['keyword'];
    482 				
    483 				if ($result['information_id']) {
    484 					$target_elements[$result['route']]['link'] = $this->url->link('catalog/information/edit', $url_token . '&information_id=' . $result['information_id'], true);
    485 				}
    486 			}
    487 					
    488 			return $target_elements;	
    489 		}
    490 		
    491 		if ($data['sheet_code'] == 'custom_page') {			
    492 			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']) {
    493 				$target_keyword_store_id = $data['store_id'];
    494 			} else {
    495 				$target_keyword_store_id = 0;
    496 			}
    497 			
    498 			$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 . "'";
    499 			
    500 			$implode = array();
    501 			$implode_language = array();
    502 						
    503 			foreach ($data['filter'] as $field_code => $filter) {
    504 				if (!empty($filter)) {
    505 					if ($field_code == 'route') {
    506 						$implode[] = "tk2.route = '" . $this->db->escape($filter) . "'";
    507 					}
    508 										
    509 					if ($field_code == 'target_keyword') {
    510 						foreach ($filter as $language_id => $value) {
    511 							if (!empty($value)) {
    512 								$implode_language[] = "(tk2.language_id = '" . (int)$language_id . "' AND tk2.keyword LIKE '%" . $this->db->escape($value) . "%')";
    513 							}
    514 						}
    515 					}
    516 				}
    517 			}
    518 			
    519 			if ($implode_language) {
    520 				$implode[] = '(' . implode(' OR ', $implode_language) . ')';
    521 			}
    522 			
    523 			if ($implode) {
    524 				$sql .= " AND " . implode(' AND ', $implode);
    525 			}
    526 
    527 			$sql .= " GROUP BY tk.route, tk.language_id, tk.sort_order";
    528 			
    529 			$query = $this->db->query($sql);
    530 						
    531 			foreach ($query->rows as $result) {
    532 				if (!in_array($result['route'], $custom_page_exception_routes)) {
    533 					$target_elements[$result['route']]['route'] = $result['route'];
    534 					$target_elements[$result['route']]['target_keyword'][$result['language_id']][$result['sort_order']] = $result['keyword'];
    535 				}
    536 			}
    537 									
    538 			return $target_elements;
    539 		}
    540 	}
    541 					
    542 	/*
    543 	*	Add Target Element.
    544 	*/
    545 	public function addTargetElement($data) {
    546 		$field_info = $this->load->controller('extension/module/d_seo_module/getFieldInfo');
    547 		$custom_page_exception_routes = $this->load->controller('extension/module/d_seo_module/getCustomPageExceptionRoutes');
    548 		
    549 		if (isset($data['route']) && isset($data['store_id']) && isset($data['target_keyword'])) {
    550 			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))) {	
    551 				$target_keyword_store_id = 0;
    552 				
    553 				if (strpos($data['route'], 'category_id') === 0) {
    554 					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']) {
    555 						$target_keyword_store_id = $data['store_id'];
    556 					} else {
    557 						$target_keyword_store_id = 0;
    558 					}
    559 				}
    560 				
    561 				if (strpos($data['route'], 'product_id') === 0) {
    562 					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']) {
    563 						$target_keyword_store_id = $data['store_id'];
    564 					} else {
    565 						$target_keyword_store_id = 0;
    566 					}
    567 				}
    568 				
    569 				if (strpos($data['route'], 'manufacturer_id') === 0) {
    570 					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']) {
    571 						$target_keyword_store_id = $data['store_id'];
    572 					} else {
    573 						$target_keyword_store_id = 0;
    574 					}
    575 				}
    576 				
    577 				if (strpos($data['route'], 'information_id') === 0) {
    578 					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']) {
    579 						$target_keyword_store_id = $data['store_id'];
    580 					} else {
    581 						$target_keyword_store_id = 0;
    582 					}
    583 				}
    584 				
    585 				if (preg_match('/[A-Za-z0-9]+\/[A-Za-z0-9]+/i', $data['route'])) {
    586 					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']) {
    587 						$target_keyword_store_id = $data['store_id'];
    588 					} else {
    589 						$target_keyword_store_id = 0;
    590 					}
    591 				}
    592 						
    593 				foreach ($data['target_keyword'] as $language_id => $target_keyword) {
    594 					preg_match_all('/\[[^]]+\]/', $target_keyword, $keywords);
    595 				
    596 					$sort_order = 1;
    597 		
    598 					foreach ($keywords[0] as $keyword) {
    599 						$keyword = substr($keyword, 1, strlen($keyword) - 2);
    600 						$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) . "'");
    601 					
    602 						$sort_order++;
    603 					}
    604 				}
    605 			}
    606 		}
    607 	}
    608 	
    609 	/*
    610 	*	Edit Target Element.
    611 	*/
    612 	public function editTargetElement($data) {
    613 		$field_info = $this->load->controller('extension/module/d_seo_module/getFieldInfo');
    614 		$custom_page_exception_routes = $this->load->controller('extension/module/d_seo_module/getCustomPageExceptionRoutes');
    615 		
    616 		if (isset($data['route']) && isset($data['store_id']) && isset($data['language_id']) && isset($data['target_keyword'])) {
    617 			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))) {	
    618 				$target_keyword_store_id = 0;
    619 				
    620 				if (strpos($data['route'], 'category_id') === 0) {
    621 					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']) {
    622 						$target_keyword_store_id = $data['store_id'];
    623 					} else {
    624 						$target_keyword_store_id = 0;
    625 					}
    626 				}
    627 				
    628 				if (strpos($data['route'], 'product_id') === 0) {
    629 					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']) {
    630 						$target_keyword_store_id = $data['store_id'];
    631 					} else {
    632 						$target_keyword_store_id = 0;
    633 					}
    634 				}
    635 				
    636 				if (strpos($data['route'], 'manufacturer_id') === 0) {
    637 					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']) {
    638 						$target_keyword_store_id = $data['store_id'];
    639 					} else {
    640 						$target_keyword_store_id = 0;
    641 					}
    642 				}
    643 				
    644 				if (strpos($data['route'], 'information_id') === 0) {
    645 					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']) {
    646 						$target_keyword_store_id = $data['store_id'];
    647 					} else {
    648 						$target_keyword_store_id = 0;
    649 					}
    650 				}
    651 				
    652 				if (preg_match('/[A-Za-z0-9]+\/[A-Za-z0-9]+/i', $data['route'])) {
    653 					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']) {
    654 						$target_keyword_store_id = $data['store_id'];
    655 					} else {
    656 						$target_keyword_store_id = 0;
    657 					}
    658 				}
    659 		
    660 				$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'] . "'");
    661 				
    662 				if ($data['target_keyword']) {
    663 					preg_match_all('/\[[^]]+\]/', $data['target_keyword'], $keywords);
    664 				
    665 					$sort_order = 1;
    666 		
    667 					foreach ($keywords[0] as $keyword) {
    668 						$keyword = substr($keyword, 1, strlen($keyword) - 2);
    669 						$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) . "'");
    670 					
    671 						$sort_order++;
    672 					}
    673 				}
    674 			}
    675 		}
    676 	}
    677 	
    678 	/*
    679 	*	Delete Target Element.
    680 	*/
    681 	public function deleteTargetElement($data) {
    682 		$field_info = $this->load->controller('extension/module/d_seo_module/getFieldInfo');
    683 		$custom_page_exception_routes = $this->load->controller('extension/module/d_seo_module/getCustomPageExceptionRoutes');
    684 		
    685 		if (isset($data['route']) && isset($data['store_id'])) {
    686 			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))) {	
    687 				$target_keyword_store_id = 0;
    688 				
    689 				if (strpos($data['route'], 'category_id') === 0) {
    690 					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']) {
    691 						$target_keyword_store_id = $data['store_id'];
    692 					} else {
    693 						$target_keyword_store_id = 0;
    694 					}
    695 				}
    696 				
    697 				if (strpos($data['route'], 'product_id') === 0) {
    698 					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']) {
    699 						$target_keyword_store_id = $data['store_id'];
    700 					} else {
    701 						$target_keyword_store_id = 0;
    702 					}
    703 				}
    704 				
    705 				if (strpos($data['route'], 'manufacturer_id') === 0) {
    706 					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']) {
    707 						$target_keyword_store_id = $data['store_id'];
    708 					} else {
    709 						$target_keyword_store_id = 0;
    710 					}
    711 				}
    712 				
    713 				if (strpos($data['route'], 'information_id') === 0) {
    714 					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']) {
    715 						$target_keyword_store_id = $data['store_id'];
    716 					} else {
    717 						$target_keyword_store_id = 0;
    718 					}
    719 				}
    720 				
    721 				if (preg_match('/[A-Za-z0-9]+\/[A-Za-z0-9]+/i', $data['route'])) {
    722 					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']) {
    723 						$target_keyword_store_id = $data['store_id'];
    724 					} else {
    725 						$target_keyword_store_id = 0;
    726 					}
    727 				}
    728 				
    729 				$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 . "'");
    730 			}
    731 		}
    732 	}
    733 	
    734 	/*
    735 	*	Return Export Target Elements.
    736 	*/
    737 	public function getExportTargetElements($data) {	
    738 		$field_info = $this->load->controller('extension/module/d_seo_module/getFieldInfo');
    739 		$custom_page_exception_routes = $this->load->controller('extension/module/d_seo_module/getCustomPageExceptionRoutes');
    740 		
    741 		$target_elements = array();	
    742 		
    743 		if ($data['sheet_code'] == 'category') {
    744 			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']) {
    745 				$target_keyword_store_id = $data['store_id'];
    746 			} else {
    747 				$target_keyword_store_id = 0;
    748 			}
    749 						
    750 			$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");	
    751 							
    752 			foreach ($query->rows as $result) {
    753 				$target_elements[$result['route']]['route'] = $result['route'];
    754 				$target_elements[$result['route']]['target_keyword'][$result['language_id']] = $result['target_keyword'];
    755 			}
    756 					
    757 			return $target_elements;
    758 		}
    759 		
    760 		if ($data['sheet_code'] == 'product') {
    761 			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']) {
    762 				$target_keyword_store_id = $data['store_id'];
    763 			} else {
    764 				$target_keyword_store_id = 0;
    765 			}
    766 						
    767 			$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");
    768 							
    769 			foreach ($query->rows as $result) {
    770 				$target_elements[$result['route']]['route'] = $result['route'];
    771 				$target_elements[$result['route']]['target_keyword'][$result['language_id']] = $result['target_keyword'];
    772 			}
    773 					
    774 			return $target_elements;	
    775 		}
    776 		
    777 		if ($data['sheet_code'] == 'manufacturer') {
    778 			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']) {
    779 				$target_keyword_store_id = $data['store_id'];
    780 			} else {
    781 				$target_keyword_store_id = 0;
    782 			}
    783 						
    784 			$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");	
    785 							
    786 			foreach ($query->rows as $result) {
    787 				$target_elements[$result['route']]['route'] = $result['route'];
    788 				$target_elements[$result['route']]['target_keyword'][$result['language_id']] = $result['target_keyword'];
    789 			}
    790 					
    791 			return $target_elements;	
    792 		}
    793 		
    794 		if ($data['sheet_code'] == 'information') {
    795 			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']) {
    796 				$target_keyword_store_id = $data['store_id'];
    797 			} else {
    798 				$target_keyword_store_id = 0;
    799 			}
    800 						
    801 			$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");	
    802 							
    803 			foreach ($query->rows as $result) {
    804 				$target_elements[$result['route']]['route'] = $result['route'];
    805 				$target_elements[$result['route']]['target_keyword'][$result['language_id']] = $result['target_keyword'];
    806 			}
    807 					
    808 			return $target_elements;	
    809 		}
    810 		
    811 		if ($data['sheet_code'] == 'custom_page') {
    812 			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']) {
    813 				$target_keyword_store_id = $data['store_id'];
    814 			} else {
    815 				$target_keyword_store_id = 0;
    816 			}
    817 			
    818 			$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");
    819 									
    820 			foreach ($query->rows as $result) {
    821 				if (!in_array($result['route'], $custom_page_exception_routes)) {
    822 					$target_elements[$result['route']]['route'] = $result['route'];
    823 					$target_elements[$result['route']]['target_keyword'][$result['language_id']] = $result['target_keyword'];
    824 				}
    825 			}
    826 									
    827 			return $target_elements;
    828 		}
    829 	}
    830 	
    831 	/*
    832 	*	Save Import Target Elements.
    833 	*/
    834 	public function saveImportTargetElements($data) {		
    835 		$this->load->model('extension/module/' . $this->codename);
    836 		
    837 		$languages = $this->{'model_extension_module_' . $this->codename}->getLanguages();
    838 		
    839 		$field_info = $this->load->controller('extension/module/d_seo_module/getFieldInfo');
    840 		$custom_page_exception_routes = $this->load->controller('extension/module/d_seo_module/getCustomPageExceptionRoutes');
    841 		
    842 		$target_elements = array();	
    843 		
    844 		if ($data['store_id'] && $field_info['sheet']['category']['field']['target_keyword']['multi_store'] && $field_info['sheet']['category']['field']['target_keyword']['multi_store_status']) {
    845 			$target_keyword_store_id = $data['store_id'];
    846 		} else {
    847 			$target_keyword_store_id = 0;
    848 		}
    849 						
    850 		$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");	
    851 							
    852 		foreach ($query->rows as $result) {
    853 			$target_elements[$result['route']]['route'] = $result['route'];
    854 			$target_elements[$result['route']]['target_keyword'][$result['language_id']] = $result['target_keyword'];
    855 		}
    856 				
    857 		if ($data['store_id'] && $field_info['sheet']['product']['field']['target_keyword']['multi_store'] && $field_info['sheet']['product']['field']['target_keyword']['multi_store_status']) {
    858 			$target_keyword_store_id = $data['store_id'];
    859 		} else {
    860 			$target_keyword_store_id = 0;
    861 		}
    862 						
    863 		$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");
    864 							
    865 		foreach ($query->rows as $result) {
    866 			$target_elements[$result['route']]['route'] = $result['route'];
    867 			$target_elements[$result['route']]['target_keyword'][$result['language_id']] = $result['target_keyword'];
    868 		}
    869 		
    870 		if ($data['store_id'] && $field_info['sheet']['manufacturer']['field']['target_keyword']['multi_store'] && $field_info['sheet']['manufacturer']['field']['target_keyword']['multi_store_status']) {
    871 			$target_keyword_store_id = $data['store_id'];
    872 		} else {
    873 			$target_keyword_store_id = 0;
    874 		}
    875 						
    876 		$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");	
    877 							
    878 		foreach ($query->rows as $result) {
    879 			$target_elements[$result['route']]['route'] = $result['route'];
    880 			$target_elements[$result['route']]['target_keyword'][$result['language_id']] = $result['target_keyword'];
    881 		}
    882 					
    883 		if ($data['store_id'] && $field_info['sheet']['information']['field']['target_keyword']['multi_store'] && $field_info['sheet']['information']['field']['target_keyword']['multi_store_status']) {
    884 			$target_keyword_store_id = $data['store_id'];
    885 		} else {
    886 			$target_keyword_store_id = 0;
    887 		}
    888 						
    889 		$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");	
    890 							
    891 		foreach ($query->rows as $result) {
    892 			$target_elements[$result['route']]['route'] = $result['route'];
    893 			$target_elements[$result['route']]['target_keyword'][$result['language_id']] = $result['target_keyword'];
    894 		}
    895 		
    896 		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']) {
    897 			$target_keyword_store_id = $data['store_id'];
    898 		} else {
    899 			$target_keyword_store_id = 0;
    900 		}
    901 					
    902 		$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");
    903 									
    904 		foreach ($query->rows as $result) {
    905 			if (!in_array($result['route'], $custom_page_exception_routes)) {
    906 				$target_elements[$result['route']]['route'] = $result['route'];
    907 				$target_elements[$result['route']]['target_keyword'][$result['language_id']] = $result['target_keyword'];
    908 			}
    909 		}
    910 		
    911 		foreach ($data['target_elements'] as $target_element) {
    912 			$sheet_code = '';
    913 			
    914 			if (strpos($target_element['route'], 'category_id') === 0) $sheet_code = 'category';			
    915 			if (strpos($target_element['route'], 'product_id') === 0) $sheet_code = 'product';
    916 			if (strpos($target_element['route'], 'manufacturer_id') === 0) $sheet_code = 'manufacturer';
    917 			if (strpos($target_element['route'], 'information_id') === 0) $sheet_code = 'information';
    918 			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';
    919 							
    920 			if ($sheet_code) {
    921 				foreach ($languages as $language) {
    922 					if (isset($target_element['target_keyword'][$language['language_id']])) {
    923 						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']])) {
    924 							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']) {
    925 								$target_keyword_store_id = $data['store_id'];
    926 							} else {
    927 								$target_keyword_store_id = 0;
    928 							}
    929 															
    930 							$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'] . "'");	
    931 								
    932 							if ($target_element['target_keyword'][$language['language_id']]) {
    933 								preg_match_all('/\[[^]]+\]/', $target_element['target_keyword'][$language['language_id']], $keywords);
    934 									
    935 								$sort_order = 1;
    936 									
    937 								foreach ($keywords[0] as $keyword) {
    938 									$keyword = substr($keyword, 1, strlen($keyword) - 2);
    939 									
    940 									$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) . "'");
    941 									
    942 									$sort_order++;
    943 								}
    944 							}
    945 						}
    946 					}
    947 				}	
    948 			}
    949 		}
    950 	}
    951 			
    952 	/*
    953 	*	Return Field Elements.
    954 	*/
    955 	public function getFieldElements($data) {				
    956 		if ($data['field_code'] == 'target_keyword') {
    957 			$this->load->model('extension/module/' . $this->codename);
    958 		
    959 			$stores = $this->{'model_extension_module_' . $this->codename}->getStores();
    960 		
    961 			$field_info = $this->load->controller('extension/module/d_seo_module/getFieldInfo');
    962 			$custom_page_exception_routes = $this->load->controller('extension/module/d_seo_module/getCustomPageExceptionRoutes');
    963 			
    964 			$field_elements = array();
    965 					
    966 			$sql = "SELECT * FROM " . DB_PREFIX . "d_target_keyword";
    967 			
    968 			$implode = array();
    969 				
    970 			foreach ($data['filter'] as $filter_code => $filter) {
    971 				if (!empty($filter)) {
    972 					if ($filter_code == 'route') {
    973 						if (strpos($filter, '%') !== false) {
    974 							$implode[] = "route LIKE '" . $this->db->escape($filter) . "'";
    975 						} else {
    976 							$implode[] = "route = '" . $this->db->escape($filter) . "'";
    977 						}
    978 					}
    979 													
    980 					if ($filter_code == 'language_id' ) {
    981 						$implode[] = "language_id = '" . (int)$filter . "'";
    982 					}
    983 						
    984 					if ($filter_code == 'sort_order') {
    985 						$implode[] = "sort_order = '" . (int)$filter . "'";
    986 					}
    987 						
    988 					if ($filter_code == 'keyword') {
    989 						$implode[] = "keyword = '" . $this->db->escape($filter) . "'";
    990 					}
    991 				}
    992 			}
    993 		
    994 			if ($implode) {
    995 				$sql .= " WHERE " . implode(' AND ', $implode);
    996 			}
    997 		
    998 			$sql .= " ORDER BY sort_order";
    999 				
   1000 			$query = $this->db->query($sql);
   1001 										
   1002 			foreach ($query->rows as $result) {
   1003 				if (strpos($result['route'], 'category_id') === 0) {
   1004 					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']) {
   1005 						if ((isset($data['filter']['store_id']) && ($result['store_id'] == $data['filter']['store_id'])) || !isset($data['filter']['store_id'])) {
   1006 							$field_elements[$result['route']][$result['store_id']][$result['language_id']][$result['sort_order']] = $result['keyword'];
   1007 						}
   1008 					} elseif ($result['store_id'] == 0) {
   1009 						foreach ($stores as $store) {
   1010 							if ((isset($data['filter']['store_id']) && ($store['store_id'] == $data['filter']['store_id'])) || !isset($data['filter']['store_id'])) {
   1011 								$field_elements[$result['route']][$store['store_id']][$result['language_id']][$result['sort_order']] = $result['keyword'];
   1012 							}
   1013 						}
   1014 					}
   1015 				}
   1016 					
   1017 				if (strpos($result['route'], 'product_id') === 0) {
   1018 					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']) {
   1019 						if ((isset($data['filter']['store_id']) && ($result['store_id'] == $data['filter']['store_id'])) || !isset($data['filter']['store_id'])) {
   1020 							$field_elements[$result['route']][$result['store_id']][$result['language_id']][$result['sort_order']] = $result['keyword'];
   1021 						}
   1022 					} elseif ($result['store_id'] == 0) {
   1023 						foreach ($stores as $store) {
   1024 							if ((isset($data['filter']['store_id']) && ($store['store_id'] == $data['filter']['store_id'])) || !isset($data['filter']['store_id'])) {
   1025 								$field_elements[$result['route']][$store['store_id']][$result['language_id']][$result['sort_order']] = $result['keyword'];
   1026 							}
   1027 						}
   1028 					}
   1029 				}
   1030 					
   1031 				if (strpos($result['route'], 'manufacturer_id') === 0) {
   1032 					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']) {
   1033 						if ((isset($data['filter']['store_id']) && ($result['store_id'] == $data['filter']['store_id'])) || !isset($data['filter']['store_id'])) {
   1034 							$field_elements[$result['route']][$result['store_id']][$result['language_id']][$result['sort_order']] = $result['keyword'];
   1035 						}
   1036 					} elseif ($result['store_id'] == 0) {
   1037 						foreach ($stores as $store) {
   1038 							if ((isset($data['filter']['store_id']) && ($store['store_id'] == $data['filter']['store_id'])) || !isset($data['filter']['store_id'])) {
   1039 								$field_elements[$result['route']][$store['store_id']][$result['language_id']][$result['sort_order']] = $result['keyword'];
   1040 							}
   1041 						}
   1042 					}
   1043 				}
   1044 					
   1045 				if (strpos($result['route'], 'information_id') === 0) {
   1046 					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']) {
   1047 						if ((isset($data['filter']['store_id']) && ($result['store_id'] == $data['filter']['store_id'])) || !isset($data['filter']['store_id'])) {
   1048 							$field_elements[$result['route']][$result['store_id']][$result['language_id']][$result['sort_order']] = $result['keyword'];
   1049 						}
   1050 					} elseif ($result['store_id'] == 0) {
   1051 						foreach ($stores as $store) {
   1052 							if ((isset($data['filter']['store_id']) && ($store['store_id'] == $data['filter']['store_id'])) || !isset($data['filter']['store_id'])) {
   1053 								$field_elements[$result['route']][$store['store_id']][$result['language_id']][$result['sort_order']] = $result['keyword'];
   1054 							}
   1055 						}
   1056 					}
   1057 				}
   1058 					
   1059 				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))) {
   1060 					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']) {
   1061 						if ((isset($data['filter']['store_id']) && ($result['store_id'] == $data['filter']['store_id'])) || !isset($data['filter']['store_id'])) {
   1062 							$field_elements[$result['route']][$result['store_id']][$result['language_id']][$result['sort_order']] = $result['keyword'];
   1063 						}
   1064 					} elseif ($result['store_id'] == 0) {
   1065 						foreach ($stores as $store) {
   1066 							if ((isset($data['filter']['store_id']) && ($store['store_id'] == $data['filter']['store_id'])) || !isset($data['filter']['store_id'])) {
   1067 								$field_elements[$result['route']][$store['store_id']][$result['language_id']][$result['sort_order']] = $result['keyword'];
   1068 							}
   1069 						}
   1070 					}
   1071 				}
   1072 			}
   1073 				
   1074 			return $field_elements;
   1075 		}
   1076 		
   1077 		if ($data['field_code'] == 'url_keyword') {
   1078 			$this->load->model('extension/module/' . $this->codename);
   1079 		
   1080 			$stores = $this->{'model_extension_module_' . $this->codename}->getStores();
   1081 			$languages = $this->{'model_extension_module_' . $this->codename}->getLanguages();
   1082 		
   1083 			$field_info = $this->load->controller('extension/module/d_seo_module/getFieldInfo');
   1084 			$custom_page_exception_routes = $this->load->controller('extension/module/d_seo_module/getCustomPageExceptionRoutes');
   1085 			
   1086 			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']) {
   1087 				if (VERSION >= '3.0.0.0') {
   1088 					$sql = "SELECT * FROM " . DB_PREFIX . "seo_url";
   1089 				} else {
   1090 					$sql = "SELECT * FROM " . DB_PREFIX . "url_alias";
   1091 				}
   1092 				
   1093 				$implode = array();
   1094 				
   1095 				foreach ($data['filter'] as $filter_code => $filter) {
   1096 					if (!empty($filter)) {
   1097 						if ($filter_code == 'route') {
   1098 							if (strpos($filter, '%') !== false) {
   1099 								$implode[] = "query LIKE '" . $this->db->escape($filter) . "'";
   1100 							} else {
   1101 								$implode[] = "query = '" . $this->db->escape($filter) . "'";
   1102 							}
   1103 						}
   1104 												
   1105 						if (VERSION >= '3.0.0.0') {						
   1106 							if ($filter_code == 'language_id' ) {
   1107 								$implode[] = "language_id = '" . (int)$filter . "'";
   1108 							}
   1109 						}
   1110 												
   1111 						if ($filter_code == 'keyword') {
   1112 							$implode[] = "keyword = '" . $this->db->escape($filter) . "'";
   1113 						}
   1114 					}
   1115 				}
   1116 		
   1117 				if ($implode) {
   1118 					$sql .= " WHERE " . implode(' AND ', $implode);
   1119 				}
   1120 							
   1121 				$query = $this->db->query($sql);
   1122 										
   1123 				foreach ($query->rows as $result) {
   1124 					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)))) {	
   1125 						if (VERSION >= '3.0.0.0') {	
   1126 							if ((isset($data['filter']['store_id']) && ($result['store_id'] == $data['filter']['store_id'])) || !isset($data['filter']['store_id'])) {
   1127 								$field_elements[$result['route']][$result['store_id']][$result['language_id']] = $result['keyword'];
   1128 							}
   1129 						} else {
   1130 							foreach ($stores as $store) {
   1131 								foreach ($languages as $language) {
   1132 									if ((isset($data['filter']['store_id']) && ($store['store_id'] == $data['filter']['store_id'])) || !isset($data['filter']['store_id'])) {
   1133 										$field_elements[$result['route']][$store['store_id']][$language['language_id']] = $result['keyword'];
   1134 									}
   1135 								}
   1136 							}
   1137 						}
   1138 					}
   1139 				}				
   1140 				
   1141 				return $field_elements;
   1142 			}
   1143 		}
   1144 		
   1145 		if ($data['field_code'] == 'meta_data') {
   1146 			$this->load->model('extension/module/' . $this->codename);
   1147 			$this->load->model('setting/setting');
   1148 			
   1149 			$stores = $this->{'model_extension_module_' . $this->codename}->getStores();
   1150 			$languages = $this->{'model_extension_module_' . $this->codename}->getLanguages();
   1151 			
   1152 			$field_info = $this->load->controller('extension/module/d_seo_module/getFieldInfo');
   1153 			$custom_page_exception_routes = $this->load->controller('extension/module/d_seo_module_meta/getCustomPageExceptionRoutes');
   1154 			
   1155 			$field_elements = array();
   1156 			
   1157 			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'])) {
   1158 				if ((isset($data['filter']['route']) && (strpos($data['filter']['route'], 'category_id') === 0)) || !isset($data['filter']['route'])) {
   1159 					$sql = "SELECT * FROM " . DB_PREFIX . "category_description";
   1160 			
   1161 					$implode = array();
   1162 				
   1163 					foreach ($data['filter'] as $filter_code => $filter) {
   1164 						if (!empty($filter)) {
   1165 							if ($filter_code == 'route') {
   1166 								$route_arr = explode('category_id=', $filter);
   1167 			
   1168 								if (isset($route_arr[1]) && ($route_arr[1] != '%')) {
   1169 									$category_id = $route_arr[1];
   1170 									$implode[] = "category_id = '" . (int)$category_id . "'";
   1171 								}
   1172 							}
   1173 													
   1174 							if ($filter_code == 'language_id' ) {
   1175 								$implode[] = "language_id = '" . (int)$filter . "'";
   1176 							}
   1177 											
   1178 							if ($filter_code == 'name') {
   1179 								$implode[] = "name = '" . $this->db->escape($filter) . "'";
   1180 							}
   1181 										
   1182 							if ($filter_code == 'description') {
   1183 								$implode[] = "description = '" . $this->db->escape($filter) . "'";
   1184 							}
   1185 					
   1186 							if ($filter_code == 'meta_title') {
   1187 								$implode[] = "meta_title = '" . $this->db->escape($filter) . "'";
   1188 							}
   1189 					
   1190 							if ($filter_code == 'meta_description') {
   1191 								$implode[] = "meta_description = '" . $this->db->escape($filter) . "'";
   1192 							}
   1193 					
   1194 							if ($filter_code == 'meta_keyword') {
   1195 								$implode[] = "meta_keyword = '" . $this->db->escape($filter) . "'";
   1196 							}
   1197 						}
   1198 					}
   1199 					
   1200 					if ($implode) {
   1201 						$sql .= " WHERE " . implode(' AND ', $implode);
   1202 					}
   1203 						
   1204 					$query = $this->db->query($sql);
   1205 					
   1206 					foreach ($query->rows as $result) {
   1207 						$route = 'category_id=' . $result['category_id'];
   1208 				
   1209 						foreach ($stores as $store) {
   1210 							if ((isset($data['filter']['store_id']) && ($store['store_id'] == $data['filter']['store_id'])) || !isset($data['filter']['store_id'])) {
   1211 								$field_elements[$route][$store['store_id']][$result['language_id']]['name'] = $result['name'];
   1212 								$field_elements[$route][$store['store_id']][$result['language_id']]['description'] = $result['description'];
   1213 								$field_elements[$route][$store['store_id']][$result['language_id']]['meta_title'] = $result['meta_title'];
   1214 								$field_elements[$route][$store['store_id']][$result['language_id']]['meta_description'] = $result['meta_description'];
   1215 								$field_elements[$route][$store['store_id']][$result['language_id']]['meta_keyword'] = $result['meta_keyword'];
   1216 							}
   1217 						}			
   1218 					}
   1219 				}
   1220 			
   1221 				if ((isset($data['filter']['route']) && (strpos($data['filter']['route'], 'product_id') === 0)) || !isset($data['filter']['route'])) {
   1222 					$sql = "SELECT * FROM " . DB_PREFIX . "product_description";
   1223 			
   1224 					$implode = array();
   1225 								
   1226 					foreach ($data['filter'] as $filter_code => $filter) {
   1227 						if (!empty($filter)) {
   1228 							if ($filter_code == 'route') {
   1229 								$route_arr = explode('product_id=', $filter);
   1230 			
   1231 								if (isset($route_arr[1]) && ($route_arr[1] != '%')) {
   1232 									$product_id = $route_arr[1];
   1233 									$implode[] = "product_id = '" . (int)$product_id . "'";
   1234 								}
   1235 							}
   1236 													
   1237 							if ($filter_code == 'language_id' ) {
   1238 								$implode[] = "language_id = '" . (int)$filter . "'";
   1239 							}
   1240 											
   1241 							if ($filter_code == 'name') {
   1242 								$implode[] = "name = '" . $this->db->escape($filter) . "'";
   1243 							}
   1244 										
   1245 							if ($filter_code == 'description') {
   1246 								$implode[] = "description = '" . $this->db->escape($filter) . "'";
   1247 							}
   1248 					
   1249 							if ($filter_code == 'meta_title') {
   1250 								$implode[] = "meta_title = '" . $this->db->escape($filter) . "'";
   1251 							}
   1252 					
   1253 							if ($filter_code == 'meta_description') {
   1254 								$implode[] = "meta_description = '" . $this->db->escape($filter) . "'";
   1255 							}
   1256 					
   1257 							if ($filter_code == 'meta_keyword') {
   1258 								$implode[] = "meta_keyword = '" . $this->db->escape($filter) . "'";
   1259 							}
   1260 					
   1261 							if ($filter_code == 'tag') {
   1262 								$implode[] = "tag = '" . $this->db->escape($filter) . "'";
   1263 							}
   1264 						}
   1265 					}
   1266 					
   1267 					if ($implode) {
   1268 						$sql .= " WHERE " . implode(' AND ', $implode);
   1269 					}
   1270 						
   1271 					$query = $this->db->query($sql);
   1272 										
   1273 					foreach ($query->rows as $result) {
   1274 						$route = 'product_id=' . $result['product_id'];
   1275 							
   1276 						foreach ($stores as $store) {
   1277 							if ((isset($data['filter']['store_id']) && ($store['store_id'] == $data['filter']['store_id'])) || !isset($data['filter']['store_id'])) {
   1278 								$field_elements[$route][$store['store_id']][$result['language_id']]['name'] = $result['name'];
   1279 								$field_elements[$route][$store['store_id']][$result['language_id']]['description'] = $result['description'];
   1280 								$field_elements[$route][$store['store_id']][$result['language_id']]['meta_title'] = $result['meta_title'];
   1281 								$field_elements[$route][$store['store_id']][$result['language_id']]['meta_description'] = $result['meta_description'];
   1282 								$field_elements[$route][$store['store_id']][$result['language_id']]['meta_keyword'] = $result['meta_keyword'];
   1283 								$field_elements[$route][$store['store_id']][$result['language_id']]['tag'] = $result['tag'];
   1284 							}
   1285 						}
   1286 					}
   1287 				}
   1288 				
   1289 				if ((isset($data['filter']['route']) && (strpos($data['filter']['route'], 'manufacturer_id') === 0)) || !isset($data['filter']['route'])) {
   1290 					$sql = "SELECT * FROM " . DB_PREFIX . "manufacturer";
   1291 			
   1292 					$implode = array();
   1293 				
   1294 					foreach ($data['filter'] as $filter_code => $filter) {
   1295 						if (!empty($filter)) {
   1296 							if ($filter_code == 'route') {
   1297 								$route_arr = explode('manufacturer_id=', $filter);
   1298 			
   1299 								if (isset($route_arr[1]) && ($route_arr[1] != '%')) {
   1300 									$manufacturer_id = $route_arr[1];
   1301 									$implode[] = "manufacturer_id = '" . (int)$manufacturer_id . "'";
   1302 								}
   1303 							}
   1304 																								
   1305 							if ($filter_code == 'name') {
   1306 								$implode[] = "name = '" . $this->db->escape($filter) . "'";
   1307 							}
   1308 						}
   1309 					}
   1310 			
   1311 					if ($implode) {
   1312 						$sql .= " WHERE " . implode(' AND ', $implode);
   1313 					}
   1314 						
   1315 					$query = $this->db->query($sql);
   1316 										
   1317 					foreach ($query->rows as $result) {
   1318 						$route = 'manufacturer_id=' . $result['manufacturer_id'];
   1319 						
   1320 						foreach ($stores as $store) {
   1321 							foreach ($languages as $language) {						
   1322 								if ((isset($data['filter']['store_id']) && ($store['store_id'] == $data['filter']['store_id'])) || !isset($data['filter']['store_id'])) {
   1323 									$field_elements[$route][$store['store_id']][$language['language_id']]['name'] = $result['name'];
   1324 								}
   1325 							}
   1326 						}
   1327 					}
   1328 				}
   1329 		
   1330 				if ((isset($data['filter']['route']) && (strpos($data['filter']['route'], 'information_id') === 0)) || !isset($data['filter']['route'])) {
   1331 					$sql = "SELECT * FROM " . DB_PREFIX . "information_description";
   1332 			
   1333 					$implode = array();
   1334 				
   1335 					foreach ($data['filter'] as $filter_code => $filter) {
   1336 						if (!empty($filter)) {
   1337 							if ($filter_code == 'route') {
   1338 								$route_arr = explode('information_id=', $filter);
   1339 			
   1340 								if (isset($route_arr[1]) && ($route_arr[1] != '%')) {
   1341 									$information_id = $route_arr[1];
   1342 									$implode[] = "information_id = '" . (int)$information_id . "'";
   1343 								}
   1344 							}
   1345 													
   1346 							if ($filter_code == 'language_id' ) {
   1347 								$implode[] = "language_id = '" . (int)$filter . "'";
   1348 							}
   1349 											
   1350 							if ($filter_code == 'title') {
   1351 								$implode[] = "title = '" . $this->db->escape($filter) . "'";
   1352 							}
   1353 										
   1354 							if ($filter_code == 'description') {
   1355 								$implode[] = "description = '" . $this->db->escape($filter) . "'";
   1356 							}
   1357 					
   1358 							if ($filter_code == 'meta_title') {
   1359 								$implode[] = "meta_title = '" . $this->db->escape($filter) . "'";
   1360 							}
   1361 					
   1362 							if ($filter_code == 'meta_description') {
   1363 								$implode[] = "meta_description = '" . $this->db->escape($filter) . "'";
   1364 							}
   1365 					
   1366 							if ($filter_code == 'meta_keyword') {
   1367 								$implode[] = "meta_keyword = '" . $this->db->escape($filter) . "'";
   1368 							}
   1369 						}
   1370 					}
   1371 				
   1372 					if ($implode) {
   1373 						$sql .= " WHERE " . implode(' AND ', $implode);
   1374 					}
   1375 						
   1376 					$query = $this->db->query($sql);
   1377 										
   1378 					foreach ($query->rows as $result) {
   1379 						$route = 'information_id=' . $result['information_id'];
   1380 							
   1381 						foreach ($stores as $store) {
   1382 							if ((isset($data['filter']['store_id']) && ($store['store_id'] == $data['filter']['store_id'])) || !isset($data['filter']['store_id'])) {
   1383 								$field_elements[$route][$store['store_id']][$result['language_id']]['title'] = $result['title'];
   1384 								$field_elements[$route][$store['store_id']][$result['language_id']]['description'] = $result['description'];
   1385 								$field_elements[$route][$store['store_id']][$result['language_id']]['meta_title'] = $result['meta_title'];
   1386 								$field_elements[$route][$store['store_id']][$result['language_id']]['meta_description'] = $result['meta_description'];
   1387 								$field_elements[$route][$store['store_id']][$result['language_id']]['meta_keyword'] = $result['meta_keyword'];
   1388 							}
   1389 						}
   1390 					}	
   1391 				}
   1392 			
   1393 				if ((isset($data['filter']['route']) && ($data['filter']['route'] == 'common/home')) || !isset($data['filter']['route'])) {
   1394 					$route = 'common/home';
   1395 					
   1396 					foreach ($stores as $store) {
   1397 						if ((isset($data['filter']['store_id']) && ($store['store_id'] == $data['filter']['store_id'])) || !isset($data['filter']['store_id'])) {
   1398 							if ($store['store_id'] == 0) {
   1399 								$meta_title = $this->config->get('config_meta_title');
   1400 								$meta_description = $this->config->get('config_meta_description');
   1401 								$meta_keyword = $this->config->get('config_meta_keyword');
   1402 							} else {
   1403 								$store_info = $this->model_setting_setting->getSetting('config', $store['store_id']);
   1404 									
   1405 								$meta_title = isset($store_info['meta_title']) ? $store_info['meta_title'] : '';
   1406 								$meta_description = isset($store_info['meta_description']) ? $store_info['meta_description'] : '';
   1407 								$meta_keyword = isset($store_info['meta_keyword']) ? $store_info['meta_keyword'] : '';
   1408 							}
   1409 							
   1410 							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']))) {
   1411 								foreach ($languages as $language) {
   1412 									$field_elements[$route][$store['store_id']][$language['language_id']]['meta_title'] = $meta_title;
   1413 									$field_elements[$route][$store['store_id']][$language['language_id']]['meta_description'] = $meta_description;
   1414 									$field_elements[$route][$store['store_id']][$language['language_id']]['meta_keyword'] = $meta_keyword;
   1415 								}
   1416 							}
   1417 						}
   1418 					}
   1419 				}
   1420 			}
   1421 				
   1422 			return $field_elements;
   1423 		}		
   1424 		
   1425 		return false;
   1426 	}
   1427 }
   1428 ?>