shop.balmet.com

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

d_seo_module.php (37412B)


      1 <?php
      2 class ModelExtensionDSEOModuleManagerDSEOModule extends Model {
      3 	private $codename = 'd_seo_module';	
      4 	
      5 	/*
      6 	*	Return List Elements for Manager.
      7 	*/
      8 	public function getListElements($data) {		
      9 		$field_info = $this->load->controller('extension/module/d_seo_module/getFieldInfo');
     10 				
     11 		if ($data['sheet_code'] == 'category') {
     12 			$categories = array();
     13 			$implode = array();
     14 			$implode[] = "c.category_id";
     15 			$add = '';
     16 			
     17 			foreach ($data['fields'] as $field) {
     18 				if (isset($field_info['sheet'][$data['sheet_code']]['field'][$field['code']]['multi_store']) && isset($field_info['sheet'][$data['sheet_code']]['field'][$field['code']]['multi_store_status'])) {
     19 					if ($field['code'] == 'target_keyword') {
     20 						$implode[] = "CONCAT('[', GROUP_CONCAT(DISTINCT tk.keyword ORDER BY tk.sort_order SEPARATOR ']['), ']') as target_keyword";
     21 						
     22 						if ($data['store_id'] && $field_info['sheet'][$data['sheet_code']]['field'][$field['code']]['multi_store'] && $field_info['sheet'][$data['sheet_code']]['field'][$field['code']]['multi_store_status']) {
     23 							$target_keyword_store_id = $data['store_id'];
     24 						} else {
     25 							$target_keyword_store_id = 0;
     26 						}
     27 						
     28 						$add .= " LEFT JOIN " . DB_PREFIX . "d_target_keyword tk ON (tk.route = CONCAT('category_id=', c.category_id) AND tk.store_id = '" . (int)$target_keyword_store_id . "' AND tk.language_id = '" . (int)$data['language_id'] . "') LEFT JOIN " . DB_PREFIX . "d_target_keyword tk2 ON (tk2.route = CONCAT('category_id=', c.category_id) AND tk2.store_id = '" . (int)$target_keyword_store_id . "')";				
     29 					}
     30 				}
     31 			}		
     32 			
     33 			$sql = "SELECT " . implode(', ', $implode) . " FROM " . DB_PREFIX . "category c" . $add;
     34 						
     35 			$implode = array();
     36 			
     37 			foreach ($data['filter'] as $field_code => $filter) {
     38 				if (!empty($filter)) {
     39 					if ($field_code == 'target_keyword') {
     40 						$implode[] = "tk2.keyword LIKE '%" . $this->db->escape($filter) . "%'";
     41 					}
     42 				}
     43 			}
     44 			
     45 			if ($implode) {
     46 				$sql .= " WHERE " . implode(' AND ', $implode);
     47 			}
     48 
     49 			$sql .= " GROUP BY c.category_id";
     50 			
     51 			$query = $this->db->query($sql);
     52 						
     53 			foreach ($query->rows as $result) {
     54 				$categories[$result['category_id']] = $result;
     55 			}
     56 
     57 			return $categories;	
     58 		}
     59 		
     60 		if ($data['sheet_code'] == 'product') {
     61 			$products = array();
     62 			$implode = array();
     63 			$implode[] = "p.product_id";
     64 			$add = '';
     65 			
     66 			foreach ($data['fields'] as $field) {
     67 				if (isset($field_info['sheet'][$data['sheet_code']]['field'][$field['code']]['multi_store']) && isset($field_info['sheet'][$data['sheet_code']]['field'][$field['code']]['multi_store_status'])) {
     68 					if ($field['code'] == 'target_keyword') {
     69 						$implode[] = "CONCAT('[', GROUP_CONCAT(DISTINCT tk.keyword ORDER BY tk.sort_order SEPARATOR ']['), ']') as target_keyword";
     70 						
     71 						if ($data['store_id'] && $field_info['sheet'][$data['sheet_code']]['field'][$field['code']]['multi_store'] && $field_info['sheet'][$data['sheet_code']]['field'][$field['code']]['multi_store_status']) {
     72 							$target_keyword_store_id = $data['store_id'];
     73 						} else {
     74 							$target_keyword_store_id = 0;
     75 						}
     76 						
     77 						$add .= " LEFT JOIN " . DB_PREFIX . "d_target_keyword tk ON (tk.route = CONCAT('product_id=', p.product_id) AND tk.store_id = '" . (int)$target_keyword_store_id . "' AND tk.language_id = '" . (int)$data['language_id'] . "') LEFT JOIN " . DB_PREFIX . "d_target_keyword tk2 ON (tk2.route = CONCAT('product_id=', p.product_id) AND tk2.store_id = '" . (int)$target_keyword_store_id . "')";						
     78 					}
     79 				}
     80 			}		
     81 			
     82 			$sql = "SELECT " . implode(', ', $implode) . " FROM " . DB_PREFIX . "product p" . $add;
     83 						
     84 			$implode = array();
     85 			
     86 			foreach ($data['filter'] as $field_code => $filter) {
     87 				if (!empty($filter)) {
     88 					if ($field_code == 'target_keyword') {
     89 						$implode[] = "tk2.keyword LIKE '%" . $this->db->escape($filter) . "%'";
     90 					}
     91 				}
     92 			}
     93 			
     94 			if ($implode) {
     95 				$sql .= " WHERE " . implode(' AND ', $implode);
     96 			}
     97 
     98 			$sql .= " GROUP BY p.product_id";
     99 			
    100 			$query = $this->db->query($sql);
    101 						
    102 			foreach ($query->rows as $result) {
    103 				$products[$result['product_id']] = $result;
    104 			}
    105 
    106 			return $products;	
    107 		}
    108 		
    109 		if ($data['sheet_code'] == 'manufacturer') {
    110 			$manufacturers = array();
    111 			$implode = array();
    112 			$implode[] = "m.manufacturer_id";
    113 			
    114 			foreach ($data['fields'] as $field) {
    115 				if (isset($field_info['sheet'][$data['sheet_code']]['field'][$field['code']]['multi_store']) && isset($field_info['sheet'][$data['sheet_code']]['field'][$field['code']]['multi_store_status'])) {
    116 					if ($field['code'] == 'target_keyword') {
    117 						$implode[] = "CONCAT('[', GROUP_CONCAT(DISTINCT tk.keyword ORDER BY tk.sort_order SEPARATOR ']['), ']') as target_keyword";
    118 						
    119 						if ($data['store_id'] && $field_info['sheet'][$data['sheet_code']]['field'][$field['code']]['multi_store'] && $field_info['sheet'][$data['sheet_code']]['field'][$field['code']]['multi_store_status']) {
    120 							$target_keyword_store_id = $data['store_id'];
    121 						} else {
    122 							$target_keyword_store_id = 0;
    123 						}
    124 						
    125 						$add = "LEFT JOIN " . DB_PREFIX . "d_target_keyword tk ON (tk.route = CONCAT('manufacturer_id=', m.manufacturer_id) AND tk.store_id = '" . (int)$target_keyword_store_id . "' AND tk.language_id = '" . (int)$data['language_id'] . "') LEFT JOIN " . DB_PREFIX . "d_target_keyword tk2 ON (tk2.route = CONCAT('manufacturer_id=', m.manufacturer_id) AND tk2.store_id = '" . (int)$target_keyword_store_id . "')";						
    126 					}
    127 				}
    128 			}		
    129 			
    130 			$sql = "SELECT " . implode(', ', $implode) . " FROM " . DB_PREFIX . "manufacturer m " . $add;
    131 						
    132 			$implode = array();
    133 			
    134 			foreach ($data['filter'] as $field_code => $filter) {
    135 				if (!empty($filter)) {
    136 					if ($field_code == 'target_keyword') {
    137 						$implode[] = "tk2.keyword LIKE '%" . $this->db->escape($filter) . "%'";
    138 					}
    139 				}
    140 			}
    141 			
    142 			if ($implode) {
    143 				$sql .= " WHERE " . implode(' AND ', $implode);
    144 			}
    145 
    146 			$sql .= " GROUP BY m.manufacturer_id";
    147 			
    148 			$query = $this->db->query($sql);
    149 						
    150 			foreach ($query->rows as $result) {
    151 				$manufacturers[$result['manufacturer_id']] = $result;
    152 			}
    153 
    154 			return $manufacturers;	
    155 		}
    156 		
    157 		if ($data['sheet_code'] == 'information') {
    158 			$informations = array();
    159 			$implode = array();
    160 			$implode[] = "i.information_id";
    161 			$add = '';
    162 			
    163 			foreach ($data['fields'] as $field) {
    164 				if (isset($field_info['sheet'][$data['sheet_code']]['field'][$field['code']]['multi_store']) && isset($field_info['sheet'][$data['sheet_code']]['field'][$field['code']]['multi_store_status'])) {
    165 					if ($field['code'] == 'target_keyword') {
    166 						$implode[] = "CONCAT('[', GROUP_CONCAT(DISTINCT tk.keyword ORDER BY tk.sort_order SEPARATOR ']['), ']') as target_keyword";
    167 						
    168 						if ($data['store_id'] && $field_info['sheet'][$data['sheet_code']]['field'][$field['code']]['multi_store'] && $field_info['sheet'][$data['sheet_code']]['field'][$field['code']]['multi_store_status']) {
    169 							$target_keyword_store_id = $data['store_id'];
    170 						} else {
    171 							$target_keyword_store_id = 0;
    172 						}
    173 						
    174 						$add .= " LEFT JOIN " . DB_PREFIX . "d_target_keyword tk ON (tk.route = CONCAT('information_id=', i.information_id) AND tk.store_id = '" . (int)$target_keyword_store_id . "' AND tk.language_id = '" . (int)$data['language_id'] . "') LEFT JOIN " . DB_PREFIX . "d_target_keyword tk2 ON (tk2.route = CONCAT('information_id=', i.information_id) AND tk2.store_id = '" . (int)$target_keyword_store_id . "')";					
    175 					}
    176 				}
    177 			}		
    178 			
    179 			$sql = "SELECT " . implode(', ', $implode) . " FROM " . DB_PREFIX . "information i" . $add;
    180 						
    181 			$implode = array();
    182 			
    183 			foreach ($data['filter'] as $field_code => $filter) {
    184 				if (!empty($filter)) {
    185 					if ($field_code == 'target_keyword') {
    186 						$implode[] = "tk2.keyword LIKE '%" . $this->db->escape($filter) . "%'";
    187 					}
    188 				}
    189 			}
    190 			
    191 			if ($implode) {
    192 				$sql .= " WHERE " . implode(' AND ', $implode);
    193 			}
    194 
    195 			$sql .= " GROUP BY i.information_id";
    196 			
    197 			$query = $this->db->query($sql);
    198 						
    199 			foreach ($query->rows as $result) {
    200 				$informations[$result['information_id']] = $result;
    201 			}
    202 
    203 			return $informations;	
    204 		}
    205 	}
    206 	
    207 	/*
    208 	*	Edit Element Field for Manager.
    209 	*/
    210 	public function editElementField($element) {				
    211 		$field_info = $this->load->controller('extension/module/d_seo_module/getFieldInfo');
    212 				
    213 		if ($element['sheet_code'] == 'category') {
    214 			if (($element['field_code'] == 'target_keyword') && isset($field_info['sheet'][$element['sheet_code']]['field'][$element['field_code']]['multi_store']) && isset($field_info['sheet'][$element['sheet_code']]['field'][$element['field_code']]['multi_store_status'])) {
    215 				if ($element['store_id'] && $field_info['sheet'][$element['sheet_code']]['field'][$element['field_code']]['multi_store'] && $field_info['sheet'][$element['sheet_code']]['field'][$element['field_code']]['multi_store_status']) {
    216 					$target_keyword_store_id = $element['store_id'];	
    217 				} else {
    218 					$target_keyword_store_id = 0;
    219 				}
    220 					
    221 				$this->db->query("DELETE FROM " . DB_PREFIX . "d_target_keyword WHERE route = 'category_id=" . (int)$element['element_id'] . "' AND store_id = '" . (int)$target_keyword_store_id . "' AND language_id = '" . (int)$element['language_id'] . "'");
    222 				
    223 				if ($element['value']) {
    224 					preg_match_all('/\[[^]]+\]/', $element['value'], $keywords);
    225 				
    226 					$sort_order = 1;
    227 					$this->request->post['value'] = '';
    228 				
    229 					foreach ($keywords[0] as $keyword) {
    230 						$keyword = substr($keyword, 1, strlen($keyword) - 2);
    231 						
    232 						$this->db->query("INSERT INTO " . DB_PREFIX . "d_target_keyword SET route = 'category_id=" . (int)$element['element_id'] . "', store_id='" . (int)$target_keyword_store_id . "', language_id = '" . (int)$element['language_id'] . "', sort_order = '" . $sort_order . "', keyword = '" .  $this->db->escape($keyword) . "'");
    233 					
    234 						$sort_order++;
    235 						$this->request->post['value'] .= '[' . $keyword . ']';
    236 					}
    237 				}
    238 			}
    239 		}
    240 		
    241 		if ($element['sheet_code'] == 'product') {
    242 			if (($element['field_code'] == 'target_keyword') && isset($field_info['sheet'][$element['sheet_code']]['field'][$element['field_code']]['multi_store']) && isset($field_info['sheet'][$element['sheet_code']]['field'][$element['field_code']]['multi_store_status'])) {
    243 				if ($element['store_id'] && $field_info['sheet'][$element['sheet_code']]['field'][$element['field_code']]['multi_store'] && $field_info['sheet'][$element['sheet_code']]['field'][$element['field_code']]['multi_store_status']) {
    244 					$target_keyword_store_id = $element['store_id'];	
    245 				} else {
    246 					$target_keyword_store_id = 0;
    247 				}
    248 					
    249 				$this->db->query("DELETE FROM " . DB_PREFIX . "d_target_keyword WHERE route = 'product_id=" . (int)$element['element_id'] . "' AND store_id = '" . (int)$target_keyword_store_id . "' AND language_id = '" . (int)$element['language_id'] . "'");
    250 				
    251 				if ($element['value']) {				
    252 					preg_match_all('/\[[^]]+\]/', $element['value'], $keywords);
    253 				
    254 					$sort_order = 1;
    255 					$this->request->post['value'] = '';
    256 				
    257 					foreach ($keywords[0] as $keyword) {
    258 						$keyword = substr($keyword, 1, strlen($keyword) - 2);
    259 						
    260 						$this->db->query("INSERT INTO " . DB_PREFIX . "d_target_keyword SET route = 'product_id=" . (int)$element['element_id'] . "', 	store_id='" . (int)$target_keyword_store_id . "', language_id = '" . (int)$element['language_id'] . "', sort_order = '" . $sort_order . "', keyword = '" .  $this->db->escape($keyword) . "'");
    261 					
    262 						$sort_order++;
    263 						$this->request->post['value'] .= '[' . $keyword . ']';
    264 					}
    265 				}
    266 			}
    267 		}
    268 		
    269 		if ($element['sheet_code'] == 'manufacturer') {
    270 			if (($element['field_code'] == 'target_keyword') && isset($field_info['sheet'][$element['sheet_code']]['field'][$element['field_code']]['multi_store']) && isset($field_info['sheet'][$element['sheet_code']]['field'][$element['field_code']]['multi_store_status'])) {
    271 				if ($element['store_id'] && $field_info['sheet'][$element['sheet_code']]['field'][$element['field_code']]['multi_store'] && $field_info['sheet'][$element['sheet_code']]['field'][$element['field_code']]['multi_store_status']) {
    272 					$target_keyword_store_id = $element['store_id'];	
    273 				} else {
    274 					$target_keyword_store_id = 0;
    275 				}
    276 					
    277 				$this->db->query("DELETE FROM " . DB_PREFIX . "d_target_keyword WHERE route = 'manufacturer_id=" . (int)$element['element_id'] . "' AND store_id = '" . (int)$target_keyword_store_id . "' AND language_id = '" . (int)$element['language_id'] . "'");
    278 					
    279 				if ($element['value']) {
    280 					preg_match_all('/\[[^]]+\]/', $element['value'], $keywords);
    281 				
    282 					$sort_order = 1;
    283 					$this->request->post['value'] = '';
    284 				
    285 					foreach ($keywords[0] as $keyword) {
    286 						$keyword = substr($keyword, 1, strlen($keyword) - 2);
    287 						
    288 						$this->db->query("INSERT INTO " . DB_PREFIX . "d_target_keyword SET route = 'manufacturer_id=" . (int)$element['element_id'] . "', store_id='" . (int)$target_keyword_store_id . "', language_id = '" . (int)$element['language_id'] . "', sort_order = '" . $sort_order . "', keyword = '" .  $this->db->escape($keyword) . "'");
    289 					
    290 						$sort_order++;
    291 						$this->request->post['value'] .= '[' . $keyword . ']';
    292 					}
    293 				}
    294 			}
    295 		}
    296 		
    297 		if ($element['sheet_code'] == 'information') {
    298 			if (($element['field_code'] == 'target_keyword') && isset($field_info['sheet'][$element['sheet_code']]['field'][$element['field_code']]['multi_store']) && isset($field_info['sheet'][$element['sheet_code']]['field'][$element['field_code']]['multi_store_status'])) {
    299 				if ($element['store_id'] && $field_info['sheet'][$element['sheet_code']]['field'][$element['field_code']]['multi_store'] && $field_info['sheet'][$element['sheet_code']]['field'][$element['field_code']]['multi_store_status']) {
    300 					$target_keyword_store_id = $element['store_id'];	
    301 				} else {
    302 					$target_keyword_store_id = 0;
    303 				}
    304 					
    305 				$this->db->query("DELETE FROM " . DB_PREFIX . "d_target_keyword WHERE route = 'information_id=" . (int)$element['element_id'] . "' AND store_id = '" . (int)$target_keyword_store_id . "' AND language_id = '" . (int)$element['language_id'] . "'");
    306 				
    307 				if ($element['value']) {				
    308 					preg_match_all('/\[[^]]+\]/', $element['value'], $keywords);
    309 				
    310 					$sort_order = 1;
    311 					$this->request->post['value'] = '';
    312 				
    313 					foreach ($keywords[0] as $keyword) {
    314 						$keyword = substr($keyword, 1, strlen($keyword) - 2);
    315 						
    316 						$this->db->query("INSERT INTO " . DB_PREFIX . "d_target_keyword SET route = 'information_id=" . (int)$element['element_id'] . "', store_id='" . (int)$target_keyword_store_id . "', language_id = '" . (int)$element['language_id'] . "', sort_order = '" . $sort_order . "', keyword = '" .  $this->db->escape($keyword) . "'");
    317 					
    318 						$sort_order++;
    319 						$this->request->post['value'] .= '[' . $keyword . ']';
    320 					}
    321 				}
    322 			}
    323 		}
    324 	}
    325 	
    326 	/*
    327 	*	Return Export Elements for Manager.
    328 	*/
    329 	public function getExportElements($data) {		
    330 		$field_info = $this->load->controller('extension/module/d_seo_module/getFieldInfo');
    331 						
    332 		if ($data['sheet_code'] == 'category') {
    333 			$categories = array();
    334 			$implode = array();
    335 			$add = '';
    336 						
    337 			foreach ($data['fields'] as $field) {
    338 				if (isset($field_info['sheet'][$data['sheet_code']]['field'][$field['code']]['multi_store']) && isset($field_info['sheet'][$data['sheet_code']]['field'][$field['code']]['multi_store_status'])) {
    339 					if ($field['code'] == 'target_keyword') {
    340 						$implode[] = "CONCAT('[', GROUP_CONCAT(DISTINCT tk.keyword ORDER BY tk.sort_order SEPARATOR ']['), ']') as target_keyword";
    341 						
    342 						if ($data['store_id'] && $field_info['sheet'][$data['sheet_code']]['field'][$field['code']]['multi_store'] && $field_info['sheet'][$data['sheet_code']]['field'][$field['code']]['multi_store_status']) {
    343 							$target_keyword_store_id = $data['store_id'];
    344 						} else {
    345 							$target_keyword_store_id = 0;
    346 						}
    347 						
    348 						$add .= " LEFT JOIN " . DB_PREFIX . "d_target_keyword tk ON (tk.route = CONCAT('category_id=', c.category_id) AND tk.store_id = '" . (int)$target_keyword_store_id . "' AND tk.language_id = cd.language_id)";					
    349 					}
    350 				}
    351 			}
    352 						
    353 			if ($implode) {
    354 				$query = $this->db->query("SELECT c.category_id, cd.language_id, " . implode(', ', $implode) . " FROM " . DB_PREFIX . "category c LEFT JOIN " . DB_PREFIX . "category_description cd ON (cd.category_id = c.category_id)" . $add . " GROUP BY c.category_id, cd.language_id");
    355 				
    356 				foreach ($query->rows as $result) {
    357 					$categories[$result['category_id']]['category_id'] = $result['category_id'];
    358 				
    359 					foreach ($result as $field => $value) {
    360 						if (($field != 'category_id') && ($field != 'language_id')) {
    361 							$categories[$result['category_id']][$field][$result['language_id']] = $value;
    362 						}
    363 					}
    364 				}				
    365 			}
    366 
    367 			return $categories;	
    368 		}
    369 		
    370 		if ($data['sheet_code'] == 'product') {
    371 			$products = array();
    372 			$implode = array();
    373 			$add = '';
    374 			
    375 			foreach ($data['fields'] as $field) {
    376 				if (isset($field_info['sheet'][$data['sheet_code']]['field'][$field['code']]['multi_store']) && isset($field_info['sheet'][$data['sheet_code']]['field'][$field['code']]['multi_store_status'])) {
    377 					if ($field['code'] == 'target_keyword') {
    378 						$implode[] = "CONCAT('[', GROUP_CONCAT(DISTINCT tk.keyword ORDER BY tk.sort_order SEPARATOR ']['), ']') as target_keyword";
    379 						
    380 						if ($data['store_id'] && $field_info['sheet'][$data['sheet_code']]['field'][$field['code']]['multi_store'] && $field_info['sheet'][$data['sheet_code']]['field'][$field['code']]['multi_store_status']) {
    381 							$target_keyword_store_id = $data['store_id'];
    382 						} else {
    383 							$target_keyword_store_id = 0;
    384 						}
    385 						
    386 						$add .= " LEFT JOIN " . DB_PREFIX . "d_target_keyword tk ON (tk.route = CONCAT('product_id=', p.product_id) AND tk.store_id = '" . (int)$target_keyword_store_id . "' AND tk.language_id = pd.language_id)";
    387 					}
    388 				}
    389 			}
    390 			
    391 			if ($implode) {
    392 				$query = $this->db->query("SELECT p.product_id, pd.language_id, " . implode(', ', $implode) . " FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (pd.product_id = p.product_id)" . $add . " GROUP BY p.product_id, pd.language_id");
    393 				
    394 				foreach ($query->rows as $result) {
    395 					$products[$result['product_id']]['product_id'] = $result['product_id'];
    396 				
    397 					foreach ($result as $field => $value) {
    398 						if (($field != 'product_id') && ($field != 'language_id')) {
    399 							$products[$result['product_id']][$field][$result['language_id']] = $value;
    400 						}
    401 					}
    402 				}	
    403 			}
    404 
    405 			return $products;	
    406 		}
    407 		
    408 		if ($data['sheet_code'] == 'manufacturer') {
    409 			$manufacturers = array();
    410 			$implode = array();
    411 			$add = '';
    412 						
    413 			foreach ($data['fields'] as $field) {
    414 				if (isset($field_info['sheet'][$data['sheet_code']]['field'][$field['code']]['multi_store']) && isset($field_info['sheet'][$data['sheet_code']]['field'][$field['code']]['multi_store_status'])) {
    415 					if ($field['code'] == 'target_keyword') {
    416 						$implode[] = "CONCAT('[', GROUP_CONCAT(DISTINCT tk.keyword ORDER BY tk.sort_order SEPARATOR ']['), ']') as target_keyword";
    417 						
    418 						if ($data['store_id'] && $field_info['sheet'][$data['sheet_code']]['field'][$field['code']]['multi_store'] && $field_info['sheet'][$data['sheet_code']]['field'][$field['code']]['multi_store_status']) {
    419 							$target_keyword_store_id = $data['store_id'];
    420 						} else {
    421 							$target_keyword_store_id = 0;
    422 						}
    423 						
    424 						$add .= " LEFT JOIN " . DB_PREFIX . "d_target_keyword tk ON (tk.route = CONCAT('manufacturer_id=', m.manufacturer_id) AND tk.store_id = '" . (int)$target_keyword_store_id . "' AND tk.language_id = l.language_id)";
    425 					}
    426 				}
    427 			}
    428 			
    429 			if ($implode) {
    430 				$query = $this->db->query("SELECT m.manufacturer_id, l.language_id, " . implode(', ', $implode) . " FROM " . DB_PREFIX . "manufacturer m CROSS JOIN " . DB_PREFIX . "language l" . $add . " GROUP BY m.manufacturer_id, l.language_id");
    431 				
    432 				foreach ($query->rows as $result) {
    433 					$manufacturers[$result['manufacturer_id']]['manufacturer_id'] = $result['manufacturer_id'];
    434 				
    435 					foreach ($result as $field => $value) {
    436 						if (($field != 'manufacturer_id') && ($field != 'language_id')) {
    437 							$manufacturers[$result['manufacturer_id']][$field][$result['language_id']] = $value;
    438 						}
    439 					}
    440 				}
    441 			}
    442 						
    443 			return $manufacturers;	
    444 		}
    445 		
    446 		if ($data['sheet_code'] == 'information') {
    447 			$informations = array();
    448 			$implode = array();
    449 			$add = '';
    450 						
    451 			foreach ($data['fields'] as $field) {
    452 				if (isset($field_info['sheet'][$data['sheet_code']]['field'][$field['code']]['multi_store']) && isset($field_info['sheet'][$data['sheet_code']]['field'][$field['code']]['multi_store_status'])) {
    453 					if ($field['code'] == 'target_keyword') {
    454 						$implode[] = "CONCAT('[', GROUP_CONCAT(DISTINCT tk.keyword ORDER BY tk.sort_order SEPARATOR ']['), ']') as target_keyword";
    455 						
    456 						if ($data['store_id'] && $field_info['sheet'][$data['sheet_code']]['field'][$field['code']]['multi_store'] && $field_info['sheet'][$data['sheet_code']]['field'][$field['code']]['multi_store_status']) {
    457 							$target_keyword_store_id = $data['store_id'];
    458 						} else {
    459 							$target_keyword_store_id = 0;
    460 						}
    461 						
    462 						$add .= " LEFT JOIN " . DB_PREFIX . "d_target_keyword tk ON (tk.route = CONCAT('information_id=', i.information_id) AND tk.store_id = '" . (int)$target_keyword_store_id . "' AND tk.language_id = id.language_id)";
    463 					}
    464 				}
    465 			}
    466 			
    467 			if ($implode) {
    468 				$query = $this->db->query("SELECT i.information_id, id.language_id, " . implode(', ', $implode) . " FROM " . DB_PREFIX . "information i LEFT JOIN " . DB_PREFIX . "information_description id ON (id.information_id = i.information_id)" . $add . " GROUP BY i.information_id, id.language_id");
    469 				
    470 				foreach ($query->rows as $result) {
    471 					$informations[$result['information_id']]['information_id'] = $result['information_id'];
    472 				
    473 					foreach ($result as $field => $value) {
    474 						if (($field != 'information_id') && ($field != 'language_id')) {
    475 							$informations[$result['information_id']][$field][$result['language_id']] = $value;
    476 						}
    477 					}
    478 				}
    479 			}
    480 				
    481 			return $informations;	
    482 		}
    483 	}
    484 	
    485 	/*
    486 	*	Save Import Elements for Manager.
    487 	*/
    488 	public function saveImportElements($data) {		
    489 		$this->load->model('extension/module/' . $this->codename);
    490 		
    491 		$languages = $this->{'model_extension_module_' . $this->codename}->getLanguages();
    492 		
    493 		$field_info = $this->load->controller('extension/module/d_seo_module/getFieldInfo');
    494 						
    495 		if ($data['sheet_code'] == 'category') {
    496 			$categories = array();
    497 			$implode = array();
    498 			$add = '';
    499 			
    500 			foreach ($data['fields'] as $field) {
    501 				if (isset($field_info['sheet'][$data['sheet_code']]['field'][$field['code']]['multi_store']) && isset($field_info['sheet'][$data['sheet_code']]['field'][$field['code']]['multi_store_status'])) {
    502 					if ($field['code'] == 'target_keyword') {
    503 						$implode[] = "CONCAT('[', GROUP_CONCAT(DISTINCT tk.keyword ORDER BY tk.sort_order SEPARATOR ']['), ']') as target_keyword";
    504 						
    505 						if ($data['store_id'] && $field_info['sheet'][$data['sheet_code']]['field'][$field['code']]['multi_store'] && $field_info['sheet'][$data['sheet_code']]['field'][$field['code']]['multi_store_status']) {
    506 							$target_keyword_store_id = $data['store_id'];
    507 						} else {
    508 							$target_keyword_store_id = 0;
    509 						}
    510 						
    511 						$add .= " LEFT JOIN " . DB_PREFIX . "d_target_keyword tk ON (tk.route = CONCAT('category_id=', c.category_id) AND tk.store_id = '" . (int)$target_keyword_store_id . "' AND tk.language_id = cd.language_id)";				
    512 					}
    513 				}
    514 			}
    515 						
    516 			if ($implode) {
    517 				$query = $this->db->query("SELECT c.category_id, cd.language_id, " . implode(', ', $implode) . " FROM " . DB_PREFIX . "category c LEFT JOIN " . DB_PREFIX . "category_description cd ON (cd.category_id = c.category_id)" . $add . " GROUP BY c.category_id, cd.language_id");
    518 				
    519 				foreach ($query->rows as $result) {
    520 					$categories[$result['category_id']]['category_id'] = $result['category_id'];
    521 				
    522 					foreach ($result as $field => $value) {
    523 						if (($field != 'category_id') && ($field != 'language_id')) {
    524 							$categories[$result['category_id']][$field][$result['language_id']] = $value;
    525 						}
    526 					}
    527 				}				
    528 			}
    529 			
    530 			foreach ($data['elements'] as $element) {
    531 				if (isset($categories[$element['category_id']])) {
    532 					$category = $categories[$element['category_id']];
    533 					
    534 					foreach ($languages as $language) {
    535 						if (isset($element['target_keyword'][$language['language_id']])) {
    536 							if ((isset($category['target_keyword'][$language['language_id']]) && ($element['target_keyword'][$language['language_id']] != $category['target_keyword'][$language['language_id']])) || !isset($category['target_keyword'][$language['language_id']])) {
    537 								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']) {
    538 									$target_keyword_store_id = $data['store_id'];
    539 								} else {
    540 									$target_keyword_store_id = 0;
    541 								}
    542 								
    543 								$this->db->query("DELETE FROM " . DB_PREFIX . "d_target_keyword WHERE route = 'category_id=" . (int)$category['category_id'] . "' AND store_id = '" . (int)$target_keyword_store_id . "' AND language_id = '" . (int)$language['language_id'] . "'");	
    544 								
    545 								if ($element['target_keyword'][$language['language_id']]) {
    546 									preg_match_all('/\[[^]]+\]/', $element['target_keyword'][$language['language_id']], $keywords);
    547 									
    548 									$sort_order = 1;
    549 									
    550 									foreach ($keywords[0] as $keyword) {
    551 										$keyword = substr($keyword, 1, strlen($keyword) - 2);
    552 										
    553 										$this->db->query("INSERT INTO " . DB_PREFIX . "d_target_keyword SET route = 'category_id=" . (int)$category['category_id'] . "', store_id = '" . (int)$target_keyword_store_id . "', language_id = '" . (int)$language['language_id'] . "', sort_order = '" . $sort_order . "', keyword = '" .  $this->db->escape($keyword) . "'");
    554 										
    555 										$sort_order++;
    556 									}
    557 								}
    558 							}
    559 						}
    560 					}
    561 				}	
    562 			}
    563 		}
    564 		
    565 		if ($data['sheet_code'] == 'product') {
    566 			$products = array();
    567 			$implode = array();
    568 			$add = '';
    569 						
    570 			foreach ($data['fields'] as $field) {
    571 				if (isset($field_info['sheet'][$data['sheet_code']]['field'][$field['code']]['multi_store']) && isset($field_info['sheet'][$data['sheet_code']]['field'][$field['code']]['multi_store_status'])) {
    572 					if ($field['code'] == 'target_keyword') {
    573 						$implode[] = "CONCAT('[', GROUP_CONCAT(DISTINCT tk.keyword ORDER BY tk.sort_order SEPARATOR ']['), ']') as target_keyword";
    574 						
    575 						if ($data['store_id'] && $field_info['sheet'][$data['sheet_code']]['field'][$field['code']]['multi_store'] && $field_info['sheet'][$data['sheet_code']]['field'][$field['code']]['multi_store_status']) {
    576 							$target_keyword_store_id = $data['store_id'];
    577 						} else {
    578 							$target_keyword_store_id = 0;
    579 						}
    580 						
    581 						$add .= " LEFT JOIN " . DB_PREFIX . "d_target_keyword tk ON (tk.route = CONCAT('product_id=', p.product_id) AND tk.store_id = '" . (int)$target_keyword_store_id . "' AND tk.language_id = pd.language_id)";
    582 					}
    583 				}
    584 			}
    585 			
    586 			if ($implode) {
    587 				$query = $this->db->query("SELECT p.product_id, pd.language_id, " . implode(', ', $implode) . " FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (pd.product_id = p.product_id)" . $add . " GROUP BY p.product_id, pd.language_id");
    588 				
    589 				foreach ($query->rows as $result) {
    590 					$products[$result['product_id']]['product_id'] = $result['product_id'];
    591 				
    592 					foreach ($result as $field => $value) {
    593 						if (($field != 'product_id') && ($field != 'language_id')) {
    594 							$products[$result['product_id']][$field][$result['language_id']] = $value;
    595 						}
    596 					}
    597 				}	
    598 			}
    599 			
    600 			foreach ($data['elements'] as $element) {
    601 				if (isset($products[$element['product_id']])) {
    602 					$product = $products[$element['product_id']];
    603 					
    604 					foreach ($languages as $language) {
    605 						if (isset($element['target_keyword'][$language['language_id']])) {
    606 							if ((isset($product['target_keyword'][$language['language_id']]) && ($element['target_keyword'][$language['language_id']] != $product['target_keyword'][$language['language_id']])) || !isset($product['target_keyword'][$language['language_id']])) {
    607 								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']) {
    608 									$target_keyword_store_id = $data['store_id'];
    609 								} else {
    610 									$target_keyword_store_id = 0;
    611 								}
    612 								
    613 								$this->db->query("DELETE FROM " . DB_PREFIX . "d_target_keyword WHERE route = 'product_id=" . (int)$product['product_id'] . "' AND store_id = '" . (int)$target_keyword_store_id . "' AND language_id = '" . (int)$language['language_id'] . "'");	
    614 								
    615 								if ($element['target_keyword'][$language['language_id']]) {
    616 									preg_match_all('/\[[^]]+\]/', $element['target_keyword'][$language['language_id']], $keywords);
    617 									
    618 									$sort_order = 1;
    619 									
    620 									foreach ($keywords[0] as $keyword) {
    621 										$keyword = substr($keyword, 1, strlen($keyword) - 2);
    622 										
    623 										$this->db->query("INSERT INTO " . DB_PREFIX . "d_target_keyword SET route = 'product_id=" . (int)$product['product_id'] . "', store_id = '" . (int)$target_keyword_store_id . "', language_id = '" . (int)$language['language_id'] . "', sort_order = '" . $sort_order . "', keyword = '" .  $this->db->escape($keyword) . "'");
    624 										
    625 										$sort_order++;
    626 									}
    627 								}
    628 							}
    629 						}
    630 					}
    631 				}	
    632 			}
    633 		}
    634 		
    635 		if ($data['sheet_code'] == 'manufacturer') {
    636 			$manufacturers = array();
    637 			$implode = array();
    638 			$add = '';
    639 			
    640 			foreach ($data['fields'] as $field) {
    641 				if (isset($field_info['sheet'][$data['sheet_code']]['field'][$field['code']]['multi_store']) && isset($field_info['sheet'][$data['sheet_code']]['field'][$field['code']]['multi_store_status'])) {
    642 					if ($field['code'] == 'target_keyword') {
    643 						$implode[] = "CONCAT('[', GROUP_CONCAT(DISTINCT tk.keyword ORDER BY tk.sort_order SEPARATOR ']['), ']') as target_keyword";
    644 						
    645 						if ($data['store_id'] && $field_info['sheet'][$data['sheet_code']]['field'][$field['code']]['multi_store'] && $field_info['sheet'][$data['sheet_code']]['field'][$field['code']]['multi_store_status']) {
    646 							$target_keyword_store_id = $data['store_id'];
    647 						} else {
    648 							$target_keyword_store_id = 0;
    649 						}
    650 						
    651 						$add .= " LEFT JOIN " . DB_PREFIX . "d_target_keyword tk ON (tk.route = CONCAT('manufacturer_id=', m.manufacturer_id) AND tk.store_id = '" . (int)$target_keyword_store_id . "' AND tk.language_id = l.language_id)";
    652 					}
    653 				}
    654 			}
    655 			
    656 			if ($implode) {
    657 				$query = $this->db->query("SELECT m.manufacturer_id, l.language_id, " . implode(', ', $implode) . " FROM " . DB_PREFIX . "manufacturer m CROSS JOIN " . DB_PREFIX . "language l" . $add . " GROUP BY m.manufacturer_id, l.language_id");
    658 				
    659 				foreach ($query->rows as $result) {
    660 					$manufacturers[$result['manufacturer_id']]['manufacturer_id'] = $result['manufacturer_id'];
    661 				
    662 					foreach ($result as $field => $value) {
    663 						if (($field != 'manufacturer_id') && ($field != 'language_id')) {
    664 							$manufacturers[$result['manufacturer_id']][$field][$result['language_id']] = $value;
    665 						}
    666 					}
    667 				}
    668 			}
    669 			
    670 			foreach ($data['elements'] as $element) {
    671 				if (isset($manufacturers[$element['manufacturer_id']])) {
    672 					$manufacturer = $manufacturers[$element['manufacturer_id']];
    673 					
    674 					foreach ($languages as $language) {
    675 						if (isset($element['target_keyword'][$language['language_id']])) {
    676 							if ((isset($manufacturer['target_keyword'][$language['language_id']]) && ($element['target_keyword'][$language['language_id']] != $manufacturer['target_keyword'][$language['language_id']])) || !isset($manufacturer['target_keyword'][$language['language_id']])) {
    677 								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']) {
    678 									$target_keyword_store_id = $data['store_id'];
    679 								} else {
    680 									$target_keyword_store_id = 0;
    681 								}
    682 								
    683 								$this->db->query("DELETE FROM " . DB_PREFIX . "d_target_keyword WHERE route = 'manufacturer_id=" . (int)$manufacturer['manufacturer_id'] . "' AND store_id = '" . (int)$target_keyword_store_id . "' AND language_id = '" . (int)$language['language_id'] . "'");	
    684 								
    685 								if ($element['target_keyword'][$language['language_id']]) {
    686 									preg_match_all('/\[[^]]+\]/', $element['target_keyword'][$language['language_id']], $keywords);
    687 									
    688 									$sort_order = 1;
    689 									
    690 									foreach ($keywords[0] as $keyword) {
    691 										$keyword = substr($keyword, 1, strlen($keyword) - 2);
    692 										
    693 										$this->db->query("INSERT INTO " . DB_PREFIX . "d_target_keyword SET route = 'manufacturer_id=" . (int)$manufacturer['manufacturer_id'] . "', store_id = '" . (int)$target_keyword_store_id . "', language_id = '" . (int)$language['language_id'] . "', sort_order = '" . $sort_order . "', keyword = '" .  $this->db->escape($keyword) . "'");
    694 										
    695 										$sort_order++;
    696 									}
    697 								}
    698 							}
    699 						}
    700 					}
    701 				}	
    702 			}
    703 		}
    704 		
    705 		if ($data['sheet_code'] == 'information') {
    706 			$informations = array();
    707 			$implode = array();
    708 			$add = '';
    709 			
    710 			foreach ($data['fields'] as $field) {
    711 				if (isset($field_info['sheet'][$data['sheet_code']]['field'][$field['code']]['multi_store']) && isset($field_info['sheet'][$data['sheet_code']]['field'][$field['code']]['multi_store_status'])) {
    712 					if ($field['code'] == 'target_keyword') {
    713 						$implode[] = "CONCAT('[', GROUP_CONCAT(DISTINCT tk.keyword ORDER BY tk.sort_order SEPARATOR ']['), ']') as target_keyword";
    714 						
    715 						if ($data['store_id'] && $field_info['sheet'][$data['sheet_code']]['field'][$field['code']]['multi_store'] && $field_info['sheet'][$data['sheet_code']]['field'][$field['code']]['multi_store_status']) {
    716 							$target_keyword_store_id = $data['store_id'];
    717 						} else {
    718 							$target_keyword_store_id = 0;
    719 						}
    720 						
    721 						$add .= " LEFT JOIN " . DB_PREFIX . "d_target_keyword tk ON (tk.route = CONCAT('information_id=', i.information_id) AND tk.store_id = '" . (int)$target_keyword_store_id . "' AND tk.language_id = id.language_id)";
    722 					}
    723 				}
    724 			}
    725 			
    726 			if ($implode) {
    727 				$query = $this->db->query("SELECT i.information_id, id.language_id, " . implode(', ', $implode) . " FROM " . DB_PREFIX . "information i LEFT JOIN " . DB_PREFIX . "information_description id ON (id.information_id = i.information_id)" . $add . " GROUP BY i.information_id, id.language_id");
    728 				
    729 				foreach ($query->rows as $result) {
    730 					$informations[$result['information_id']]['information_id'] = $result['information_id'];
    731 				
    732 					foreach ($result as $field => $value) {
    733 						if (($field != 'information_id') && ($field != 'language_id')) {
    734 							$informations[$result['information_id']][$field][$result['language_id']] = $value;
    735 						}
    736 					}
    737 				}
    738 			}
    739 			
    740 			foreach ($data['elements'] as $element) {
    741 				if (isset($informations[$element['information_id']])) {
    742 					$information = $informations[$element['information_id']];
    743 					
    744 					foreach ($languages as $language) {
    745 						if (isset($element['target_keyword'][$language['language_id']])) {
    746 							if ((isset($information['target_keyword'][$language['language_id']]) && ($element['target_keyword'][$language['language_id']] != $information['target_keyword'][$language['language_id']])) || !isset($information['target_keyword'][$language['language_id']])) {
    747 								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']) {
    748 									$target_keyword_store_id = $data['store_id'];
    749 								} else {
    750 									$target_keyword_store_id = 0;
    751 								}
    752 								
    753 								$this->db->query("DELETE FROM " . DB_PREFIX . "d_target_keyword WHERE route = 'information_id=" . (int)$information['information_id'] . "' AND store_id = '" . (int)$target_keyword_store_id . "' AND language_id = '" . (int)$language['language_id'] . "'");	
    754 								
    755 								if ($element['target_keyword'][$language['language_id']]) {
    756 									preg_match_all('/\[[^]]+\]/', $element['target_keyword'][$language['language_id']], $keywords);
    757 									
    758 									$sort_order = 1;
    759 									
    760 									foreach ($keywords[0] as $keyword) {
    761 										$keyword = substr($keyword, 1, strlen($keyword) - 2);
    762 										
    763 										$this->db->query("INSERT INTO " . DB_PREFIX . "d_target_keyword SET route = 'information_id=" . (int)$information['information_id'] . "', store_id = '" . (int)$target_keyword_store_id . "', language_id = '" . (int)$language['language_id'] . "', sort_order = '" . $sort_order . "', keyword = '" .  $this->db->escape($keyword) . "'");
    764 										
    765 										$sort_order++;
    766 									}
    767 								}
    768 							}
    769 						}
    770 					}
    771 				}	
    772 			}
    773 		}
    774 	}
    775 }
    776 ?>