· 6 years ago · Jul 18, 2019, 08:24 PM
1class Presta15Conn {
2
3 function __construct() { }
4
5 public function insert($products) {
6 global $db, $logger;
7 if (@count($products)>0) {
8 $s = ImpLib::gt();
9 foreach($products as $a) {
10 $db->query('SET autocommit = 0');
11 $id_article = $this->insert_article_base($a);
12 $db->query("INSERT imported (sku, manufacturer_sku, manufacturer, ean, shop_status, store_product_id, date_add, date_update, supplier)
13 VALUES ('{$a->sku}', '{$a->manufacturer_sku}', '{$a->manufacturer}','{$a->ean_upc}', 'IMPORTED', $id_article, NOW(), NOW(), '".$this->name."')");
14 $db->query('COMMIT');
15 }
16 $logger->LogCron(" - INSERT | SYNCED (".count($products)." items), last=".$a->sku. " (ID={$id_article}) (".ImpLib::grt($s)."s) ");
17 $logger->LogCron(" - MEMORY | Usage:" . ImpLib::convert(memory_get_usage(true)) ." Peak: " . ImpLib::convert(memory_get_peak_usage(true)));
18 }
19 }
20
21 public function update_pix($products) {
22 global $logger;
23 $s = ImpLib::gt();
24 list($from , $to)= explode("-", $_REQUEST['GENEX-pix?range']);
25 foreach($products as $a) {
26 if ( ($a->store_product_id >=$from) && ($a->store_product_id <= $to) ) {
27 $this->update_article_pix($a);
28// exit;
29 }
30 }
31 $logger->LogCron(" - Images UPDATED (".ImpLib::grt($s)."s) ");
32 }
33
34 public function update($products) {
35 global $logger, $db;
36 $s = ImpLib::gt();
37
38 /*if ($this->name=="LEDHOUSE") {
39 $this->feature_mapping = $this->getFeatureMapping($this->name);
40 foreach($products as $a) {
41 foreach ($this->feature_mapping as $m)
42 $db->query("DELETE FROM "._DB_PREFIX_."feature_product WHERE id_feature={$m['store_id']} AND id_product='{$a->store_product_id}'");
43 }
44 }
45
46 foreach ($db->query("SELECT * FROM "._DB_PREFIX_."feature_product") as $word)
47 $this->feature_product[$word['id_product']][$word['id_feature']] = $word['id_feature_value'];
48 */
49
50 $db->query('SET autocommit = 0');
51 $db->query("UPDATE imported SET processed = 0 WHERE supplier='{$this->name}'");
52 $db->query("UPDATE imported_attribute SET processed = 0 WHERE supplier='{$this->name}'");
53
54 foreach($products as $a) {
55 $this->update_article_base($a);
56// if (@$a->attributes) $this->update_article_attributes($a);
57 $db->query('UPDATE imported SET processed = 1, date_update = NOW() WHERE store_product_id=' . $a->store_product_id);
58 }
59 $logger->LogCron(" - UPDATE | SYNCED (".count($products)." items), last=".$a->sku. ", ID=".$a->store_product_id." (".ImpLib::grt($s)."s) ");
60 $s = ImpLib::gt();
61 $deitem = 0;
62 $deitems = "";
63
64 foreach ($db->query("SELECT * FROM imported WHERE processed = 0 AND supplier='".$this->name."'") as $product) {
65 $deitem++;
66 if (! (int) $product['store_product_id']> 0) { continue;}
67 $db->query("UPDATE "._DB_PREFIX_."product SET active = 0, quantity='-100' WHERE id_product={$product['store_product_id']}; ");
68 $db->query("UPDATE "._DB_PREFIX_."product_shop SET active = 0 WHERE id_product={$product['store_product_id']};");
69 // $db->query("UPDATE "._DB_PREFIX_."product_lang SET available_now = 'Skladem', available_later = 'Na cestě' WHERE id_product={$product['store_product_id']}; ");
70 $db->query("UPDATE "._DB_PREFIX_."stock_available SET quantity='-100' WHERE id_product={$product['store_product_id']}");
71 $deitems .= "{$product['sku']}, " ;
72 }
73
74 foreach ($db->query("SELECT id_product_attribute FROM " . IMPORT_PRODUCT_ATTRIBUTE_TABLE . " WHERE processed = 0 AND supplier='".$this->name."'") as $product)
75 $db->query("UPDATE "._DB_PREFIX_."stock_available SET quantity = 0 WHERE id_product_attribute = {$product['id_product_attribute']}");
76
77 $db->query('COMMIT');
78
79 if (@$this->unmapped>0) $logger->LogCron(" - UNMAPPED => ".@implode(",", @$this->unmapped));
80 if ($deitem>0)$logger->LogCron(" - DEACTIVATED $deitem items ($deitems), last={$product['sku']} (".ImpLib::grt($s)."s) ");
81 $logger->LogCron(" - MEMORY | Usage:" . ImpLib::convert(memory_get_usage(true)) ." Peak: " . ImpLib::convert(memory_get_peak_usage(true)));
82 $logger->LogCron("------------------------------------------------------------------");
83 $this->HTMLlog = "<h2>Aktualizováno ".@count($products)." položek</h2> ";
84 $this->HTMLlog .= "<h2>Deaktivováno $deitem položek (množství = -100)</h2>$deitems";
85 if (isset($this->unmapped))
86 $this->HTMLlog .= "<h2>Nenamapováno</h2> ". @implode(",", @$this->unmapped);
87 $this->HTMLlog .= "<hr>";
88
89 return true;
90 }
91
92 public function updateImages($products) {
93 global $logger, $db;
94 foreach($products as $a) {
95 $this->update_article_images($a);
96 }
97 return true;
98 }
99
100 public function insert_article_base($article) { //id_manufacturer,
101 global $db;
102 $db->query("INSERT INTO "._DB_PREFIX_."product
103 (id_supplier, ean13, id_category_default, id_tax_rules_group, wholesale_price, quantity, price, active, date_add, reference,
104 supplier_reference, weight, width, height, depth, additional_shipping_cost, online_only, upc, ecotax) VALUES
105 ( '{$article->id_supplier}','{$article->ean_upc}', '".end($article->category_ids)."', ".ID_TAX_RULES_GROUP.", {$article->wholesale_price},
106 '{$article->quantity}', '{$article->price}', '{$article->active}' , NOW(), '{$article->sku}',
107 '{$article->supplier_reference}',
108 '{$article->weight}', '{$article->width}','{$article->height}','{$article->depth}','{$article->shipping_fee_world}',
109 '{$article->online_only}', '{$article->UNSPSC}', '{$article->ecotax}')");
110 $art_id = mysql_insert_id();
111 if ($art_id!="") {
112 $article->title = addslashes($article->title);
113 $article->desc_long = addslashes($article->desc_long);
114 $article->desc_short = addslashes( $article->desc_short);
115 $meta_description = strip_tags(addslashes($article->desc_short));
116 $meta_description = str_replace("\n", "", $meta_description);
117 $meta_description = str_replace("\r", "", $meta_description);
118 foreach (getImportedLangs() as $id_lang)
119 $db->query("INSERT INTO "._DB_PREFIX_."product_lang
120 (id_product, id_lang, link_rewrite, name, description, description_short, meta_description, available_now,available_later ) VALUES
121 ('$art_id','$id_lang','".ImpLib::tourl($article->title)."','{$article->title}', '{$article->desc_long}', '{$article->desc_short}',
122 '$meta_description','{$article->available_now}','{$article->available_later}')");
123
124 $db->query("INSERT INTO "._DB_PREFIX_."stock_available ( id_product, id_product_attribute,id_shop,id_shop_group,quantity, depends_on_stock,out_of_stock)
125 VALUES($art_id,'0', '1', '".ID_SHOP_GROUP."', '{$article->quantity}', 0,'".PS_OUT_OF_STOCK."')");
126
127 $article->category_ids = array_unique($article->category_ids);
128 foreach ($article->category_ids as $cat) {
129 if ($cat > 2)
130 $db->query("INSERT INTO "._DB_PREFIX_."category_product (id_category, id_product, position) VALUES('$cat','".$art_id."','0')");
131 }
132
133 if ($article->manufacturer_sku)
134 $db->query("INSERT INTO "._DB_PREFIX_."product_supplier (id_supplier, id_product, product_supplier_reference)
135 VALUES ({$article->id_supplier}, $art_id, '{$article->manufacturer_sku}')");
136
137 $db->query("INSERT INTO "._DB_PREFIX_."product_shop
138 (wholesale_price, id_product, id_shop, id_category_default, price, date_add,date_upd, unity, cache_default_attribute, active, id_tax_rules_group, ecotax) VALUES
139 ('{$article->wholesale_price}', ".$art_id.",'1', '$cat','{$article->price}', NOW(), NOW(), '', 0, {$article->active}, ".ID_TAX_RULES_GROUP.", '{$article->ecotax}')");
140
141 // specific price
142 if (false) {
143 $sql = "SELECT * FROM "._DB_PREFIX_."specific_price_priority WHERE id_product=$art_id;";
144 $res = mysql_query($sql) or die(mysql_error() . $sql);
145 if (mysql_num_rows($res) == 0) {
146 $db->query("INSERT INTO "._DB_PREFIX_."specific_price_priority (id_specific_price_priority, id_product, priority) VALUES (1, $art_id, 'id_shop;id_currency;id_country;id_group');");
147 }
148 $db->query("DELETE FROM "._DB_PREFIX_."specific_price WHERE id_product=$art_id;");
149 foreach($article['dealers_prices'] as $id_group => $g_price) {
150 $db->query("INSERT INTO "._DB_PREFIX_."specific_price ( id_product, id_group, price, from_quantity, id_shop) VALUES
151 ($art_id, '$id_group', '$g_price', 1, 0);");
152
153 }
154 }
155
156 if (@$article->features ) {
157 foreach($article->features as $feature => $value) {
158 if ($value!="") {
159 $feature_id = $this->_feature_get_id(addslashes($feature));
160 $feature_id = $this->_feature_set($art_id, $feature_id, addslashes($value));
161 }
162 }
163 }
164
165 $cover = 1;
166 $position = 1;
167 if (isset($article->images))
168 if (count($article->images) > 0)
169 foreach($article->images as $attribute_reference => $img) {
170 $this->savePicture($img, $art_id, $article->title, $cover, $position, $attribute_reference);
171 $cover = 0;
172 $position++;
173 }
174 return $art_id;
175 }
176 }
177
178 public function update_article_images($article) {
179 global $db, $logger;
180
181 $images = $db->query("SELECT count(*) as cnt FROM "._DB_PREFIX_."image WHERE id_product='{$article->store_product_id}'")->fetchColumn();
182 if ($images < @count($article->images)) {
183 echo "$images < ".count($article->images)." ".print_R($article->images, true)."<br>";
184// die("stopped");
185 $db->query('COMMIT');
186 $db->query('SET autocommit = 0');
187 if ($images!=0) {
188 //$db->query("DELETE FROM "._DB_PREFIX_."image WHERE id_product='{$article->store_product_id}'");
189 $this->remove_product_images($article->store_product_id);
190 $logger->LogCron(" - IMGs REMOVED {$article->store_product_id}");
191 }
192 $cover = 1;
193 $position = 1;
194 if (isset($article->images))
195 foreach($article->images as $attribute_reference => $img) {
196 $img_id = $this->savePicture($img, $article->store_product_id, $article->title, $cover, $position, $attribute_reference);
197 $cover = 0;
198 $position++;
199 $logger->LogCron(" - IMG INSERTED img_id={$img_id}, {$article->store_product_id}, {$article->sku} => $img");
200 }
201 $db->query('COMMIT');
202 $db->query('SET autocommit = 0');
203 }
204 }
205
206
207 public function update_article_pix($article) {
208 global $db, $logger;
209 // IMAGES
210// if (false) {
211// $images = $db->query("SELECT count(*) as cnt FROM "._DB_PREFIX_."image WHERE id_product='{$article->store_product_id}'")->fetchColumn();
212// if ($images < @count($article->images)) {
213 if (true) {
214// echo "$images < ".count($article->images)." ".print_R($article->images, true)."<br>";
215// $db->query('COMMIT');
216 $db->query('SET autocommit = 0');
217// if ($images!=0) {
218 //$db->query("DELETE FROM "._DB_PREFIX_."image WHERE id_product='{$article->store_product_id}'");
219 $this->remove_product_images($article->store_product_id);
220 $logger->LogCron(" - IMGs REMOVED {$article->store_product_id}");
221// }
222 $cover = 1;
223 $position = 1;
224 if (isset($article->images))
225 foreach($article->images as $attribute_reference => $img) {
226 $img_id = $this->savePicture($img, $article->store_product_id, $article->title, $cover, $position, $attribute_reference);
227 $cover = 0;
228 $position++;
229 $logger->LogCron(" - IMG INSERTED img_id={$img_id}, {$article->store_product_id}, {$article->sku} => $img");
230 }
231 $db->query('COMMIT');
232 $db->query('SET autocommit = 0');
233 }
234// }
235 }
236
237 public function update_article_base($article) {
238 global $db, $logger;
239
240 // IMAGES
241 if (false) {
242 $images = $db->query("SELECT count(*) as cnt FROM "._DB_PREFIX_."image WHERE id_product='{$article->store_product_id}'")->fetchColumn();
243 if ($images < @count($article->images)) {
244 echo "$images < ".count($article->images)." ".print_R($article->images, true)."<br>";
245 $db->query('COMMIT');
246 $db->query('SET autocommit = 0');
247 if ($images!=0) {
248 //$db->query("DELETE FROM "._DB_PREFIX_."image WHERE id_product='{$article->store_product_id}'");
249 $this->remove_product_images($article->store_product_id);
250 $logger->LogCron(" - IMGs REMOVED {$article->store_product_id}");
251 }
252 $cover = 1;
253 $position = 1;
254 if (isset($article->images))
255 foreach($article->images as $attribute_reference => $img) {
256 $img_id = $this->savePicture($img, $article->store_product_id, $article->title, $cover, $position, $attribute_reference);
257 $cover = 0;
258 $position++;
259 $logger->LogCron(" - IMG INSERTED img_id={$img_id}, {$article->store_product_id}, {$article->sku} => $img");
260 }
261 $db->query('COMMIT');
262 $db->query('SET autocommit = 0');
263 }
264 }
265
266
267 if (false) {
268 if (@$article->features ) {
269 $db->query("DELETE FROM "._DB_PREFIX_."feature_product WHERE id_product='{$article->store_product_id}'");
270 foreach($article->features as $feature => $value) {
271 if ($value!="") {
272 $value = addslashes($value);
273 $feature = addslashes($feature);
274 $feature_id = $this->_feature_get_id($feature);
275 $feature_id = $this->_feature_set($article->store_product_id, $feature_id, $value);
276 }
277 }
278 }
279 }
280
281 // STOCK, SHOP, PRODUCT
282 if (true) { // id_supplier= '{$article->id_supplier}', id_tax_rules_group='".ID_TAX_RULES_GROUP."',
283
284
285 $wh = "";
286 $pr = "";
287 if ($this->import_settings["UPDATEWHOLESALEPRICE"] == "ANO") {
288 $wh = ", wholesale_price= '{$article->wholesale_price}'";
289 }
290
291 if ($this->import_settings["UPDATEPRICE"] == "ANO") {
292 $pr = ", price= '{$article->price}'";
293 }
294
295
296 // id_supplier= '{$article->id_supplier}', weight='{$article->weight}', depth='{$article->length}', width='{$article->width}', height='{$article->height}'
297 $db->query("UPDATE "._DB_PREFIX_."product SET
298 ean13='{$article->ean_upc}', active= '{$article->active}' , id_manufacturer= '{$article->id_manufacturer}'
299 $wh
300 $pr
301 WHERE id_product='{$article->store_product_id}'");
302
303
304 // wholesale_price= '{$article->wholesale_price}',id_tax_rules_group='".ID_TAX_RULES_GROUP."',
305 $db->query("UPDATE "._DB_PREFIX_."product_shop SET
306 active= '{$article->active}'
307 $wh
308 $pr
309 WHERE id_product='{$article->store_product_id}'");
310
311
312 if ($this->import_settings["UPDATEONLYSTOCK"] == "ANO") {
313 $db->query("UPDATE "._DB_PREFIX_."stock_available SET out_of_stock=".PS_OUT_OF_STOCK.", quantity={$article->quantity} WHERE id_product='{$article->store_product_id}'");
314
315 // check if there is an record in "._DB_PREFIX_."stock_available
316 $id_product_attribute = 0;
317 $id_stock_available = $db->query("SELECT id_stock_available FROM "._DB_PREFIX_."stock_available WHERE id_product = {$article->store_product_id} AND id_product_attribute = {$id_product_attribute} AND id_shop = " . ID_SHOP . " AND id_shop_group = " . ID_SHOP_GROUP)->fetchColumn();
318 if ($id_stock_available) {
319 $db->query("UPDATE "._DB_PREFIX_."stock_available SET quantity = {$article->quantity} WHERE id_stock_available = {$id_stock_available}");
320 } else {
321 $db->query("INSERT INTO "._DB_PREFIX_."stock_available SET id_product = {$article->store_product_id}, id_product_attribute = {$id_product_attribute}, id_shop = " . ID_SHOP . ", id_shop_group = " . ID_SHOP_GROUP . ", quantity = {$article->quantity}");
322 }
323 }
324
325 }
326
327 // SUPPLIER
328 if (false) {
329 //$db->query("DELETE FROM "._DB_PREFIX_."product_supplier WHERE id_product='{$article->store_product_id}'");
330 $db->query("UPDATE "._DB_PREFIX_."product_supplier SET id_supplier='{$article->id_supplier}' WHERE id_product='{$article->store_product_id}'");
331 }
332
333 // DESCRIPTION
334 if (true) {
335 // $this->DONTUPDATEDESC
336 if (!isset($this->DONTUPDATEDESC[$article->sku])){
337 $article->desc_short = addslashes($article->desc_short);
338 $article->desc_long = addslashes($article->desc_long);
339 $db->query("UPDATE "._DB_PREFIX_."product_lang SET description='{$article->desc_long}', name='{$article->title}', description_short='{$article->desc_short}' WHERE id_product='{$article->store_product_id}'");
340 } else {
341// echo "{$article->sku}";
342
343 }
344 }
345
346 // availability
347 if (false) {
348 $db->query("UPDATE "._DB_PREFIX_."product_lang SET available_later='{$article->available_later}', available_now='{$article->available_now}' WHERE id_product='{$article->store_product_id}'");
349 }
350
351 // CATEGORY PRODUCT
352 if (false) {
353
354 if (isset($article->category_ids)) {
355 $article->category_ids = array_unique($article->category_ids);
356 $first = true;
357 $db->query("DELETE FROM "._DB_PREFIX_."category_product WHERE id_category > 2 AND id_product = {$article->store_product_id}");
358 foreach ($article->category_ids as $cat) {
359 if ($cat > 2) {
360 $db->query("INSERT INTO "._DB_PREFIX_."category_product (id_category, id_product, position) VALUES('$cat','{$article->store_product_id}','0')");
361// if ($cat == 3004) {
362// echo "XXX id_category, id_product => VALUES('$cat','{$article->store_product_id}<br>";
363
364// }
365 if ($first) {
366 $db->query("UPDATE "._DB_PREFIX_."product SET id_category_default = '$cat' WHERE id_product = '{$article->store_product_id}'");
367 $db->query("UPDATE "._DB_PREFIX_."product_shop SET id_category_default = '$cat' WHERE id_product = '{$article->store_product_id}'");
368 $first = false;
369 }
370 }
371 }
372 }
373 }
374 }
375
376 public function update_article_attributes($product) {
377 global $db;
378
379 $f = current($product->attributes);
380 $id_attribute_group_1 = $f['id_attribute_group_1'];
381 if (@$f['id_attribute_group_2']!="") $id_attribute_group_2 = $f['id_attribute_group_2'];
382 if (@$f['id_attribute_group_3']!="") $id_attribute_group_3 = $f['id_attribute_group_3'];
383
384 $id_product = $product->store_product_id;
385
386 $id_product_attribute_default = null;
387
388 if (!@$product->attributes) return true;
389
390 if (@count($product->attributes)) foreach ($product->attributes as $attribute) {
391 // get product combination id from import_product_attribute table
392 $id_product_attribute = $db->query("SELECT id_product_attribute FROM " . IMPORT_PRODUCT_ATTRIBUTE_TABLE . " WHERE reference = '{$attribute['reference']}'")->fetchColumn();
393 // check if product combination really exists
394 if ($id_product_attribute and !$db->query("SELECT COUNT(0) FROM "._DB_PREFIX_."product_attribute pa JOIN "._DB_PREFIX_."product_attribute_shop pas USING (id_product_attribute) WHERE id_product_attribute = {$id_product_attribute} AND id_shop = " . ID_SHOP)->fetchColumn()) {
395 $db->query("DELETE FROM " . IMPORT_PRODUCT_ATTRIBUTE_TABLE . " WHERE reference = '{$attribute['reference']}'");
396 unset($id_product_attribute);
397 }
398
399 if ($id_product_attribute) {
400 // determine default for this product attribute
401 if (!$id_product_attribute_default) {
402 $default = 1;
403 } else {
404 $default = 0;
405 }
406
407 // update product combination
408 $db->query("UPDATE " . IMPORT_PRODUCT_ATTRIBUTE_TABLE . " SET processed = 1 WHERE reference = '{$attribute['reference']}'");
409 $db->query("UPDATE "._DB_PREFIX_."product_attribute SET price = {$attribute['price']}, quantity = 0, default_on = {$default}, reference = '{$attribute['reference']}' WHERE id_product_attribute = {$id_product_attribute}");
410 $db->query("UPDATE "._DB_PREFIX_."product_attribute_shop SET price = {$attribute['price']}, default_on = {$default} WHERE id_product_attribute = {$id_product_attribute} AND id_shop = " . ID_SHOP);
411 } else {
412 // determine default for this product attribute
413 if (!$id_product_attribute_default) {
414 $default = 1;
415 } else {
416 $default = 0;
417 }
418
419 // check if attribute values exists
420 // color
421 // echo "SELECT id_attribute FROM "._DB_PREFIX_."attribute NATURAL JOIN "._DB_PREFIX_."attribute_lang NATURAL JOIN "._DB_PREFIX_."attribute_shop WHERE id_attribute_group = {$id_attribute_group_color} AND name = '{$attribute['color']}' AND id_lang = " . ID_LANG . " AND id_shop = " . ID_SHOP;
422
423
424 if ($id_attribute_group_1 != "") {
425 $id_attribute_1 = $db->query("SELECT id_attribute FROM "._DB_PREFIX_."attribute NATURAL JOIN "._DB_PREFIX_."attribute_lang NATURAL JOIN "._DB_PREFIX_."attribute_shop WHERE id_attribute_group = {$id_attribute_group_1} AND name = '{$attribute['attribute_value_1']}' AND id_lang = " . ID_LANG . " AND id_shop = " . ID_SHOP)->fetchColumn();
426 if (!$id_attribute_1) {
427 // create new attribute value
428 $db->query("INSERT INTO "._DB_PREFIX_."attribute SET id_attribute_group = {$id_attribute_group_1}");
429 $id_attribute_1 = $db->getLastInsertId();
430 $db->query("INSERT INTO "._DB_PREFIX_."attribute_shop SET id_attribute = {$id_attribute_1}, id_shop = " . ID_SHOP);
431 $db->query("INSERT INTO "._DB_PREFIX_."attribute_lang SET id_attribute = {$id_attribute_1}, id_lang = " . ID_LANG . ", name = '{$attribute['attribute_value_1']}'");
432 }
433 }
434
435 if (@$id_attribute_group_2 != "") {
436 $id_attribute_2 = $db->query("SELECT id_attribute FROM "._DB_PREFIX_."attribute NATURAL JOIN "._DB_PREFIX_."attribute_lang NATURAL JOIN "._DB_PREFIX_."attribute_shop WHERE id_attribute_group = {$id_attribute_group_2} AND name = '{$attribute['attribute_value_2']}' AND id_lang = " . ID_LANG . " AND id_shop = " . ID_SHOP)->fetchColumn();
437 if (!$id_attribute_2) {
438 // create new attribute value
439 $db->query("INSERT INTO "._DB_PREFIX_."attribute SET id_attribute_group = {$id_attribute_group_2}");
440 $id_attribute_2 = $db->getLastInsertId();
441 $db->query("INSERT INTO "._DB_PREFIX_."attribute_shop SET id_attribute = {$id_attribute_2}, id_shop = " . ID_SHOP);
442 $db->query("INSERT INTO "._DB_PREFIX_."attribute_lang SET id_attribute = {$id_attribute_2}, id_lang = " . ID_LANG . ", name = '{$attribute['attribute_value_2']}'");
443 }
444 }
445
446 if (@$id_attribute_group_3 != "") {
447 $id_attribute_3 = $db->query("SELECT id_attribute FROM "._DB_PREFIX_."attribute NATURAL JOIN "._DB_PREFIX_."attribute_lang NATURAL JOIN "._DB_PREFIX_."attribute_shop WHERE id_attribute_group = {$id_attribute_group_3} AND name = '{$attribute['attribute_value_3']}' AND id_lang = " . ID_LANG . " AND id_shop = " . ID_SHOP)->fetchColumn();
448 if (!$id_attribute_3) {
449 // create new attribute value
450 $db->query("INSERT INTO "._DB_PREFIX_."attribute SET id_attribute_group = {$id_attribute_group_3}");
451 $id_attribute_3 = $db->getLastInsertId();
452 $db->query("INSERT INTO "._DB_PREFIX_."attribute_shop SET id_attribute = {$id_attribute_3}, id_shop = " . ID_SHOP);
453 $db->query("INSERT INTO "._DB_PREFIX_."attribute_lang SET id_attribute = {$id_attribute_3}, id_lang = " . ID_LANG . ", name = '{$attribute['attribute_value_2']}'");
454 }
455 }
456
457
458 // insert product combination
459 $db->query("INSERT INTO "._DB_PREFIX_."product_attribute SET id_product = {$id_product}, supplier_reference = '{$attribute['reference']}', reference = '{$attribute['reference']}', price = {$attribute['price']}, quantity = {$attribute['quantity']}, default_on = {$default}");
460 $id_product_attribute = $db->getLastInsertId();
461 $db->query("INSERT INTO "._DB_PREFIX_."product_attribute_shop SET id_product_attribute = {$id_product_attribute}, id_shop = " . ID_SHOP . ", price = {$attribute['price']}, default_on = {$default}");
462
463 // id_attribute_group_1
464 if ($id_attribute_group_1 != "")
465 $db->query("INSERT INTO "._DB_PREFIX_."product_attribute_combination SET id_attribute = {$id_attribute_1}, id_product_attribute = {$id_product_attribute}");
466
467 // id_attribute_group_2
468 if (@$id_attribute_group_2 != "")
469 $db->query("INSERT INTO "._DB_PREFIX_."product_attribute_combination SET id_attribute = {$id_attribute_2}, id_product_attribute = {$id_product_attribute}");
470
471 // id_attribute_group_3
472 if (@$id_attribute_group_3 != "")
473 $db->query("INSERT INTO "._DB_PREFIX_."product_attribute_combination SET id_attribute = {$id_attribute_3}, id_product_attribute = {$id_product_attribute}");
474
475
476 $db->query("INSERT INTO " . IMPORT_PRODUCT_ATTRIBUTE_TABLE . " SET id_product_attribute = {$id_product_attribute},supplier = '{$this->name}', reference = '{$attribute['reference']}', processed = 1");
477
478 $id_image = $db->query("SELECT id_image FROM imported_image WHERE sku='{$attribute['reference']}'")->fetchColumn();
479 //. echo "product_attribute_image $id_product_attribute}, id_image = {$id_image}<br>";
480 if ($id_image)
481 $db->query("INSERT INTO "._DB_PREFIX_."product_attribute_image SET id_product_attribute = {$id_product_attribute}, id_image = {$id_image}");
482
483
484 }
485
486 if (!$id_product_attribute_default) {
487 $id_product_attribute_default = $id_product_attribute;
488 }
489
490 // check if there is an record in "._DB_PREFIX_."stock_available
491 $id_stock_available = $db->query("SELECT id_stock_available FROM "._DB_PREFIX_."stock_available WHERE id_product = {$id_product} AND id_product_attribute = {$id_product_attribute} AND id_shop = " . ID_SHOP . " AND id_shop_group = " . ID_SHOP_GROUP)->fetchColumn();
492 if ($id_stock_available) {
493 $db->query("UPDATE "._DB_PREFIX_."stock_available SET quantity = {$attribute['quantity']} WHERE id_stock_available = {$id_stock_available}");
494 } else {
495 $db->query("INSERT INTO "._DB_PREFIX_."stock_available SET id_product = {$id_product}, id_product_attribute = {$id_product_attribute}, id_shop = " . ID_SHOP . ", id_shop_group = " . ID_SHOP_GROUP . ", quantity = {$attribute['quantity']}");
496 }
497 }
498 }
499
500 public function _get_ancestors($parent, $ancs) {
501 global $db;
502 if (!$parent) return 2;
503 foreach ($db->query("SELECT id_parent FROM "._DB_PREFIX_."category c WHERE id_category=$parent") as $row);
504 if ($row['id_parent']!="2") {
505 $ancs[] = $row['id_parent'];
506 return $this->_get_ancestors( $row['id_parent'], $ancs);
507 }
508 return $ancs;
509 }
510
511 public function get_category_ancestors($id_category) {
512 global $db;
513
514 foreach($db->query("SELECT id_parent FROM "._DB_PREFIX_."category c WHERE id_category=$id_category") as $row) {
515 if ($row['id_parent']!="1") {
516 $ancs[] = $row['id_parent'];
517 return $this->_get_ancestors( $row['id_parent'], $ancs);
518 }
519 }
520 return $row['id_parent'];
521 }
522
523 public function get_imported($supplier) {
524 global $db;
525 $arr = array();
526 foreach ($db->query("SELECT * FROM imported WHERE shop_status = 'IMPORTED' AND supplier='{$supplier}'") as $r)
527 $arr[$r['sku']] = $r['store_product_id'] ;
528 $arr = $this->checkImportedProducts($arr);
529 return $arr;
530 }
531
532 private function checkImportedProducts($imported) {
533 global $db, $logger;
534 $really_imported = $list = array();
535 foreach ($db->query("SELECT reference FROM "._DB_PREFIX_."product") as $sku) {
536 if (@$imported[$sku['reference']]) {
537 $really_imported[$sku['reference']] = $imported[$sku['reference']];
538 unset($imported[$sku['reference']]);
539 }
540 }
541 $db->query("SET autocommit = 0");
542 foreach ($imported as $sku=>$t) {
543 $db->query("DELETE FROM imported WHERE sku='{$sku}'");
544 $list[] = $sku;
545 }
546 if (count($list) > 0)
547 $logger->LogCron(" - REMOVED ".count($list)." items (".implode(",", $list).") from IMPORTED table. The items were manually removed.");
548 $db->query("COMMIT");
549 return $really_imported;
550 }
551
552 public function getDuplicatedStoreItems() {
553 $sql = "SELECT *, m.name as mname, count(*) AS cnt FROM "._DB_PREFIX_."product p JOIN "._DB_PREFIX_."manufacturer m ON p.id_manufacturer = m.id_manufacturer
554 GROUP BY p.reference HAVING cnt>1 ORDER BY id_product";
555 // select count(*) as cnt, reference from ps_product group by reference having cnt>1
556 $result = mysql_query($sql) or die(mysql_error());
557 $arr= array();
558 if (mysql_num_rows($result)>0) {
559 while($row=mysql_fetch_array($result)) {
560 $arr[$row['id_product']]['id_product'] = $row['id_product'];
561 $arr[$row['id_product']]['reference'] = $row['reference']; // sku
562 $arr[$row['id_product']]['ean'] = $row['ean13'];
563 $arr[$row['id_product']]['supplier_reference'] = $row['supplier_reference']; // product_id
564 $arr[$row['id_product']]['manufacturer'] = $row['mname']; // product_id
565 //break;
566 }
567 }
568 return $arr;
569 }
570
571 public function get_manufacturer_id($manu_name) {
572 global $db;
573 $manu_name = ($manu_name);
574 $row = $db->query("SELECT * FROM "._DB_PREFIX_."manufacturer WHERE name = '$manu_name'")->fetch();
575 if ($row['id_manufacturer']) {
576 return $row['id_manufacturer'];
577 } else {
578 $db->query("INSERT INTO "._DB_PREFIX_."manufacturer (name,active) VALUES ('$manu_name',0)");
579 $manu_id = mysql_insert_id();
580 $db->query("INSERT INTO "._DB_PREFIX_."manufacturer_shop (id_manufacturer,id_shop) VALUES ('$manu_id',1)");
581 return $manu_id;
582 }
583 }
584
585 public function get_supplier_id($manu_name) {
586 global $db;
587 $manu_name = addslashes($manu_name);
588 $row = $db->query("SELECT * FROM "._DB_PREFIX_."supplier WHERE name = '$manu_name'")->fetch();
589 echo $row['id_supplier'];
590
591 if ($row['id_supplier']) return $row['id_supplier'];
592 $db->query("INSERT INTO "._DB_PREFIX_."supplier (name,active) VALUES ('$manu_name',1)");
593 $manu_id = mysql_insert_id();
594 $db->query("INSERT INTO "._DB_PREFIX_."supplier_shop (id_supplier,id_shop) VALUES ('$manu_id',1)");
595 $db->query("INSERT INTO "._DB_PREFIX_."supplier_lang (id_supplier,id_lang) VALUES ('$manu_id',1)");
596 return $manu_id;
597 }
598
599 private function _feature_get_id($name) {
600 global $db;
601 $row = $db->query("SELECT id_feature FROM "._DB_PREFIX_."feature_lang WHERE name = '$name'")->fetch();
602 if (!@$row['id_feature']) {
603 $db->query("INSERT INTO `"._DB_PREFIX_."feature` (`id_feature`) VALUES (NULL);");
604 $id_feature = mysql_insert_id();
605 foreach (getImportedLangs() as $lang_dir => $id_lang)
606 $db->query("INSERT INTO "._DB_PREFIX_."feature_lang (id_feature, id_lang, name) VALUES ('$id_feature', '$id_lang', '$name')");
607 $db->query("INSERT INTO "._DB_PREFIX_."feature_shop (id_feature, id_shop) VALUES ('$id_feature', '1')");
608 return $id_feature;
609 }
610 return $row['id_feature'];
611
612 }
613
614 private function _feature_set($article_id, $feature_id, $value) {
615 global $db;
616 $row = $db->query("SELECT * FROM `"._DB_PREFIX_."feature_value` fv
617 JOIN "._DB_PREFIX_."feature_value_lang ON fv.id_feature_value = "._DB_PREFIX_."feature_value_lang.id_feature_value
618 WHERE fv.id_feature=$feature_id AND value = '$value'")->fetch();
619
620 if (!@$row['id_feature_value']) {
621 $db->query("INSERT INTO `"._DB_PREFIX_."feature_value` (`id_feature`) VALUES ('$feature_id');");
622 $id_feature_value = mysql_insert_id();
623 foreach (getImportedLangs() as $lang_dir => $id_lang)
624 $db->query("INSERT INTO "._DB_PREFIX_."feature_value_lang (id_feature_value, id_lang, value) VALUES ('$id_feature_value', '$id_lang', '$value')");
625 } else {
626 $id_feature_value = $row['id_feature_value'];
627 }
628
629 $db->query("INSERT INTO "._DB_PREFIX_."feature_product (id_feature_value, id_product, id_feature) VALUES ('$id_feature_value', '$article_id', '$feature_id')");
630 return $row['id_feature_value'];
631
632 }
633
634 public function savePicture($src_file, $products_id, $nazev, $cover, $position, $attribute_reference) {
635 global $db, $logger;
636 if (!isset($this->image_types)) {
637 $this->image_types = array();
638 foreach ($db->query("SELECT * FROM `"._DB_PREFIX_."image_type` WHERE `products` = 1") as $image_type) {
639 $this->image_types[] = array(
640 'width' => $image_type['width'],
641 'height' => $image_type['height'],
642 'name' => $image_type['name']
643 );
644 }
645 }
646 $src_file_temp = IMAGE_ABS_PATH . "temp$products_id.pix";
647 @file_put_contents($src_file_temp, @file_get_contents($src_file));
648 if (filesize($src_file_temp) < 300) {
649 $logger->LogCron(" - No Images for {$products_id} {$src_file} | filesize=".filesize($src_file_temp));
650 unlink($src_file_temp);
651 return false;
652 }
653 $type = @end(explode(".", $src_file));
654 if (strpos($type, "jpg")) imagejpeg(imagecreatefromjpeg($src_file_temp),$src_file_temp, 80);
655 if (strpos($type, "png")) imagejpeg(imagecreatefrompng($src_file_temp),$src_file_temp, 80);
656 if (strpos($type, "gif")) imagejpeg(imagecreatefromgif($src_file_temp),$src_file_temp, 80);
657 $db->query("INSERT INTO "._DB_PREFIX_."image (id_product,position,cover) VALUES ($products_id,'$position','$cover')");
658 $img_id = mysql_insert_id();
659 $db->query("INSERT INTO "._DB_PREFIX_."image_shop (id_image,id_shop, cover) VALUES ($img_id,'1', $cover)") ;
660 $image_dir = IMAGE_ABS_PATH . implode('/', str_split($img_id));
661 $image_prefix = $image_dir . '/' . $img_id;
662 @mkdir($image_dir, 0777, true);
663 if ($img_id!="") {
664 $db->query("INSERT INTO imported_image (id_image, sku) VALUES ($img_id, '$attribute_reference')") ;
665 foreach (getImportedLangs() as $lang_dir => $id_lang)
666 $db->query("INSERT INTO "._DB_PREFIX_."image_lang (id_image,id_lang,legend) VALUES($img_id,'$id_lang','".addslashes($nazev)."')");
667 copy($src_file_temp, $image_prefix.".jpg");
668 if(count($this->image_types))
669 foreach($this->image_types as $image_type)
670 @imageResize($src_file_temp, $image_prefix . '-' . $image_type['name'] . '.jpg', $image_type['width'], $image_type['height']);
671 }
672 unlink($src_file_temp);
673 return true;
674 }
675
676 public function set_manufacturer_for_product($id_article, $id_manufacturer) {
677 $sql = "UPDATE "._DB_PREFIX_."product SET id_manufacturer=$id_manufacturer WHERE id_product=$id_article";
678 mysql_query($sql) or die(mysql_error());
679 }
680
681 public function get_store_categories_simple() {
682 global $db;
683 foreach( $db->query("SELECT * FROM "._DB_PREFIX_."category c JOIN "._DB_PREFIX_."category_lang cd ON c.id_category=cd.id_category WHERE cd.id_lang='".ID_LANG."'") as $row) {
684 $before = $this->_get_category_name($row['id_parent']);
685 $arr[$row['id_category']] = $before == "" ? $row['name']:$before . " > " . $row['name'];
686 }
687 return $arr;
688 }
689
690 private function _get_category_name($id) {
691 global $db;
692 foreach( $db->query("SELECT * FROM "._DB_PREFIX_."category c JOIN "._DB_PREFIX_."category_lang cd
693 ON c.id_category=cd.id_category WHERE cd.id_lang='".ID_LANG."' AND c.id_category='$id'") as $row ) {
694 if ($row['id_parent']==0) {
695 return $row['name'];
696 } else{
697 return $this->_get_category_name($row['id_parent']) . " > ". $row['name'];
698 }
699 }
700 return @$row['name'];;
701 }
702
703 private function __get_store_categories($parent_id) {
704 global $db;
705 $arr=array();
706 foreach( $db->query("SELECT * FROM "._DB_PREFIX_."category c JOIN "._DB_PREFIX_."category_lang cl
707 ON c.id_category=cl.id_category WHERE cl.id_lang='".ID_LANG."' AND c.id_parent='$parent_id'") as $row) {
708 $arr[$row['id_category']]['category_id'] = $row['id_category'];
709 $arr[$row['id_category']]['name'] = $row['name'];
710 $arr[$row['id_category']]['parent'] = $row['id_parent'];
711 $arr[$row['id_category']]['children'] = $this->__get_store_categories($row['id_category']);
712 }
713 return $arr;
714 }
715
716 public function get_store_categories() {
717 global $db;
718 foreach( $db->query("SELECT * FROM "._DB_PREFIX_."category c JOIN "._DB_PREFIX_."category_lang cl
719 ON c.id_category=cl.id_category WHERE cl.id_lang='".ID_LANG."' AND c.id_parent=" . ID_CATEGORY_ROOT) as $row) {
720 $arr[$row['id_category']]['category_id'] = $row['id_category'];
721 $arr[$row['id_category']]['name'] = $row['name'];
722 $arr[$row['id_category']]['parent'] = $row['id_parent'];
723 $arr[$row['id_category']]['children'] = $this->__get_store_categories($row['id_category']);
724 }
725 return $arr;
726 }
727
728 public function createCategory($newcatname, $parent_id, $lvl) {
729 global $db, $imported_langs;
730 $lvl=3;
731 if ($parent_id==2) $lvl = 2;
732 $db->query("INSERT INTO "._DB_PREFIX_."category (id_parent, active, date_add, date_upd, level_depth) VALUES ($parent_id, 1, NOW(), NOW(), $lvl )");
733 $category_oc_id = mysql_insert_id();
734 $rewrite = ImpLib::tourl($newcatname);
735 foreach($imported_langs as $id_lang) {
736 $db->query("INSERT INTO "._DB_PREFIX_."category_lang (id_category, id_lang, name, link_rewrite ) VALUES ($category_oc_id,'$id_lang', '$newcatname', '$rewrite')");
737 }
738 $db->query("INSERT INTO "._DB_PREFIX_."category_group (id_category, id_group) VALUES ($category_oc_id,1),($category_oc_id,2),($category_oc_id,3)");
739 $db->query("INSERT INTO "._DB_PREFIX_."category_shop (id_category, id_shop) VALUES ($category_oc_id,1)");
740 // Category::regenerateEntireNtree();
741 // global $smarty;
742 // Tools::clearCache($smarty);
743 return $category_oc_id;
744 }
745
746 public function getCategory($catname, $id_parent) {
747 global $db;
748 foreach( $db->query("SELECT * FROM "._DB_PREFIX_."category_lang cl JOIN "._DB_PREFIX_."category c ON c.id_category=cl.id_category
749 WHERE cl.name='".$catname."' AND c.id_parent=".$id_parent) as $row) {
750 return $row['id_category'];
751 }
752 return false;
753 }
754
755 public function addImagesToCategories() {
756 global $db;
757 $cprel = array();
758 foreach ($db->query("SELECT * FROM "._DB_PREFIX_."category_product") as $cp) {
759 $cprel[$cp['id_category']][] = $cp['id_product'];
760 }
761 foreach($cprel as $cID => $products) {
762 $fotka_nalezena = false;
763 foreach ($products as $pID) {
764 //echo $cID . " => $pID<br>"; if ($cID==152) dump($products) ;
765 foreach($db->query("SELECT * FROM "._DB_PREFIX_."image WHERE id_product=$pID") as $imgID ) {
766 $fotka_nalezena = true;
767 $image = IMAGE_ABS_PATH . implode('/', str_split($imgID['id_image'])) . "/" . $imgID['id_image'] . ".jpg";
768 copy($image, IMPORT_ABS_PATH . "img/c/" . $cID . ".jpg");
769 break;
770 }
771 if ($fotka_nalezena) break;
772 }
773 }
774 echo "Images added.";
775 }
776
777 public function IceCat_GetStoreItemsForUpdate() {
778 global $db;
779 foreach ($db->query("SELECT pl.description as description, i.store_product_id, m.name as manufacturer, i.sku, p.ean13 as ean, ps.product_supplier_reference as supplier_sku FROM imported i
780 JOIN "._DB_PREFIX_."product_supplier ps ON ps.id_product = i.store_product_id
781 JOIN "._DB_PREFIX_."product p ON p.id_product = i.store_product_id
782 JOIN "._DB_PREFIX_."product_lang pl ON pl.id_product = i.store_product_id
783 JOIN "._DB_PREFIX_."manufacturer m ON p.id_manufacturer = m.id_manufacturer
784
785 ") as $row) {
786
787 $arr[$row['store_product_id']]['id_product'] = $row['store_product_id'];
788 $arr[$row['store_product_id']]['sku'] = $row['sku']; // sku
789 $arr[$row['store_product_id']]['ean'] = $row['ean'];
790 // $arr[$row['id_product']]['location'] = $row['location'];
791 $arr[$row['store_product_id']]['supplier_sku'] = $row['supplier_sku']; // product_id
792 $arr[$row['store_product_id']]['manufacturer'] = $row['manufacturer']; // product_id
793 $arr[$row['store_product_id']]['desc'] = $row['description']=="" ? true:false; // product_id
794 //break;
795 }
796 return $arr;
797 }
798
799 public function get_attr_id($attrib_group_id, $attrib_name) {
800 if (isset($this->cache_attr_id[$attrib_name])) return $this->cache_attr_id[$attrib_name];
801
802
803 $attrib_name = addslashes($attrib_name);
804 $sql = "SELECT * FROM `ps_attribute_lang` JOIN "._DB_PREFIX_."attribute ON "._DB_PREFIX_."attribute_lang.id_attribute = "._DB_PREFIX_."attribute.id_attribute WHERE id_lang='".ID_LANG."' AND id_attribute_group='$attrib_group_id' AND name='$attrib_name'";
805 $result = mysql_query($sql);
806 $row = mysql_fetch_array($result);
807 if ($row['id_attribute']=="") {
808 mysql_query("INSERT INTO "._DB_PREFIX_."attribute (id_attribute_group, color) VALUES('$attrib_group_id','#000000')") or die(mysql_error() . $sql );
809 $attr_id=mysql_insert_id();
810 mysql_query("INSERT INTO "._DB_PREFIX_."attribute_lang (id_attribute, id_lang, name) VALUES('$attr_id','".ID_LANG."','$attrib_name')") or die(mysql_error() . $sql);
811 $this->cache_attr_id[$attrib_name] = $attr_id;
812 return $attr_id;
813 } else {
814 $this->cache_attr_id[$attrib_name] = $row['id_attribute'];
815 return $row['id_attribute'];
816 }
817 }
818
819 public function get_attr_group_id($attrib_name) {
820 if (isset($this->cache_attr_group_id[$attrib_name])) return $this->cache_attr_group_id[$attrib_name];
821
822 $sql = "SELECT * FROM "._DB_PREFIX_."attribute_group_lang WHERE name = '$attrib_name' AND id_lang='".ID_LANG."'";
823 $rees = mysql_query($sql) or die(mysql_error());
824 if (mysql_num_rows($rees)>0) {
825 $row = mysql_fetch_array($rees);
826
827 $this->cache_attr_group_id[$attrib_name] = $row['id_attribute_group'];
828 return $row['id_attribute_group'];
829 } else {
830 $sql = "INSERT INTO "._DB_PREFIX_."attribute_group (is_color_group) VALUES (0)";
831 $res = mysql_query($sql);
832 $id_attribute_group = mysql_insert_id();
833 $sql = "INSERT INTO "._DB_PREFIX_."attribute_group_lang (name, public_name, id_lang, id_attribute_group) VALUES ('$attrib_name', '$attrib_name', '".ID_LANG."', $id_attribute_group)";
834 $res = mysql_query($sql);
835
836 $this->cache_attr_group_id[$attrib_name] = $id_attribute_group;
837 return $id_attribute_group;
838 }
839 }
840
841 public function removeAllProducts() {
842 global $db;
843 $db->query(" TRUNCATE `ps_category_product`;");
844 $db->query(" TRUNCATE `ps_product`;");
845 $db->query(" TRUNCATE `ps_product_shop`;");
846 $db->query(" TRUNCATE `ps_product_lang`;");
847 $db->query(" TRUNCATE `ps_stock_available`;");
848 $db->query(" TRUNCATE `ps_image`;");
849 $db->query(" TRUNCATE `ps_product_supplier`;");
850
851 $db->query(" TRUNCATE `ps_image_shop`;");
852 $db->query(" TRUNCATE `ps_image_lang`;");
853 $db->query(" TRUNCATE `imported`;");
854 $db->query(" TRUNCATE `imported_attribute`;");
855 $db->query(" TRUNCATE `imported_image`;");
856
857 $db->query(" TRUNCATE `ps_product_attribute`;");
858 $db->query(" TRUNCATE `ps_attribute`;");
859 $db->query(" TRUNCATE `ps_attribute_shop`;");
860 $db->query(" TRUNCATE `ps_attribute_lang`;");
861 $db->query(" TRUNCATE `ps_attribute_group`;");
862 $db->query(" TRUNCATE `ps_attribute_group_lang`;");
863 $db->query(" TRUNCATE `ps_attribute_group_shop`;");
864 $db->query(" TRUNCATE `ps_product_attribute_shop`;");
865 $db->query(" TRUNCATE `ps_product_attribute_combination`;");
866 $db->query(" TRUNCATE `ps_product_attribute_image`;");
867
868 ImpLib::rrmdir(IMPORT_ABS_PATH . "/img/p/1");
869 ImpLib::rrmdir(IMPORT_ABS_PATH . "/img/p/2");
870 ImpLib::rrmdir(IMPORT_ABS_PATH . "/img/p/3");
871 ImpLib::rrmdir(IMPORT_ABS_PATH . "/img/p/4");
872 ImpLib::rrmdir(IMPORT_ABS_PATH . "/img/p/5");
873 ImpLib::rrmdir(IMPORT_ABS_PATH . "/img/p/6");
874 ImpLib::rrmdir(IMPORT_ABS_PATH . "/img/p/7");
875 ImpLib::rrmdir(IMPORT_ABS_PATH . "/img/p/8");
876 ImpLib::rrmdir(IMPORT_ABS_PATH . "/img/p/9");
877
878 /*
879 truncate ps_feature_value;
880 truncate ps_feature;
881 truncate ps_feature_value_lang;
882 truncate ps_feature_lang;
883 truncate ps_feature_product;
884 truncate ps_feature_shop;
885 */
886
887 }
888
889 public function removeAllImportedItems() {
890 global $db , $logger;
891 foreach ($db->query("select * from imported where processed=0") as $row) {
892 if (!$db->query("SELECT id_product FROM "._DB_PREFIX_."product WHERE id_product={$row['store_product_id']}")->fetchColumn()) {
893 echo "{$row['store_product_id']} not exists <Br>";
894 $db->query("delete from imported where store_product_id={$row['store_product_id']}");
895 } else {
896
897 foreach ($db->query("SELECT id_image FROM "._DB_PREFIX_."image WHERE id_product = {$row['store_product_id']}") as $id_image) {
898 $id_image = $id_image['id_image'];
899 $this->remove_images($id_image);
900 $db->query("DELETE FROM "._DB_PREFIX_."image_lang WHERE id_image = $id_image");
901 $db->query("DELETE FROM "._DB_PREFIX_."image_shop WHERE id_image = $id_image");
902 $db->query("DELETE FROM "._DB_PREFIX_."image WHERE id_image = $id_image");
903 }
904 $id_product = $row['store_product_id'];
905
906 $db->query("DELETE FROM "._DB_PREFIX_."category_product WHERE id_product = $id_product");
907 $db->query("DELETE FROM "._DB_PREFIX_."product_shop WHERE id_product = $id_product");
908 $db->query("DELETE FROM "._DB_PREFIX_."product WHERE id_product = $id_product");
909 $db->query("DELETE FROM "._DB_PREFIX_."product_lang WHERE id_product = $id_product");
910 $db->query("DELETE FROM "._DB_PREFIX_."stock_available WHERE id_product = $id_product");
911 $db->query("DELETE FROM "._DB_PREFIX_."product_supplier WHERE id_product = $id_product");
912 $db->query("DELETE FROM "._DB_PREFIX_."feature_product WHERE id_product = $id_product");
913
914 $db->query("DELETE FROM imported WHERE store_product_id = $id_product");
915
916 //$db->query("DELETE FROM imported_image WHERE id_product = $id_product");
917 /*
918 $db->query(" TRUNCATE `"._DB_PREFIX_."product_attribute`;");
919 $db->query(" TRUNCATE `"._DB_PREFIX_."attribute`;");
920 $db->query(" TRUNCATE `"._DB_PREFIX_."attribute_shop`;");
921 $db->query(" TRUNCATE `"._DB_PREFIX_."attribute_lang`;");
922 $db->query(" TRUNCATE `"._DB_PREFIX_."attribute_group`;");
923 $db->query(" TRUNCATE `"._DB_PREFIX_."attribute_group_lang`;");
924 $db->query(" TRUNCATE `"._DB_PREFIX_."attribute_group_shop`;");
925 */
926 echo @$RR++ . ". {$row['store_product_id']} OK! removed <Br>";
927
928 $logger->LogCron("Removed => " . $row['store_product_id']);
929 }
930 }
931 }
932
933 public function remove_product_images($id_product) {
934 global $db;
935 foreach ($db->query("SELECT id_image FROM "._DB_PREFIX_."image WHERE id_product = {$id_product}") as $id_image) {
936 $id_image = $id_image['id_image'];
937 $this->remove_images($id_image);
938 $db->query("DELETE FROM "._DB_PREFIX_."image_lang WHERE id_image = $id_image");
939 $db->query("DELETE FROM "._DB_PREFIX_."image_shop WHERE id_image = $id_image");
940 $db->query("DELETE FROM "._DB_PREFIX_."image WHERE id_image = $id_image");
941 }
942 }
943
944
945 public function deactivateProductsInDeactiveCategories() {
946 global $db, $logger;
947 $rr = 0;
948 $db->query('SET autocommit = 0');
949 $deactivedProductCategories="";
950 foreach ($db->query("select * from "._DB_PREFIX_."category c JOIN "._DB_PREFIX_."category_product cp ON c.id_category=cp.id_category where c.active = 0 ") as $category) {
951 $rr++;
952 $deactivedProductCategories[] = $category['id_product'];
953 $db->query("UPDATE "._DB_PREFIX_."product SET active = 0 WHERE id_product={$category['id_product']}; ");
954 $db->query("UPDATE "._DB_PREFIX_."product_shop SET active = 0 WHERE id_product={$category['id_product']};");
955 }
956 $logger->LogCron(" - Deactivated Items In Deactivated Category = " .count($deactivedProductCategories) ." items => " . implode(",", $deactivedProductCategories)." ");
957 $db->query('commit');
958 }
959
960 public function deactivateProductsWithoutImage() {
961 global $db, $logger;
962 $db->query('SET autocommit = 0');
963 $deactivedProductImages= "";
964 foreach ($db->query("select * from "._DB_PREFIX_."product p where id_product not in( select id_product from "._DB_PREFIX_."image )") as $product) {
965 $db->query("UPDATE "._DB_PREFIX_."product SET active = 0 WHERE id_product={$product['id_product']}; ");
966 $db->query("UPDATE "._DB_PREFIX_."product_shop SET active = 0 WHERE id_product={$product['id_product']};");
967 $deactivedProductImages[] = $product['reference'];
968 }
969 $db->query('commit');
970 $logger->LogCron(" - Deactivated Items Without Image = " .count($deactivedProductImages) ." items => " . implode(",", $deactivedProductImages)." ");
971 }
972
973 public function remove_images($id_image) {
974 global $logger, $db;
975 if (!isset($this->image_types)) {
976 $this->image_types = array();
977 foreach ($db->query("SELECT * FROM `"._DB_PREFIX_."image_type` WHERE `products` = 1") as $image_type) {
978 $this->image_types[] = array(
979 'width' => $image_type['width'],
980 'height' => $image_type['height'],
981 'name' => $image_type['name']
982 );
983 }
984 }
985 if(count($this->image_types))
986 foreach($this->image_types as $image_type) {
987 $f = IMAGE_ABS_PATH . implode('/', str_split($id_image)) . '/' . $id_image . "-". $image_type['name'].".jpg";
988 @unlink($f);
989 $logger->LogCron(" REMOVED Image $f");
990 }
991 return true;
992 }
993
994
995 public function exportPrices() {
996 global $db,$logger;
997 $sss = "";
998 foreach($db->query("SELECT reference, price FROM "._DB_PREFIX_."product") as $rr) {
999 $sss.=$rr['reference'] . ":".round($rr['price'] * 1.21)."\n";
1000
1001 }
1002 file_put_contents(TXT_PRICES, $sss);
1003 $logger->LogCron(" " . TXT_PRICES . " updated.");
1004
1005 }
1006
1007 public function setDefaultCategories() {
1008 global $db;
1009 foreach($db->query("SELECT id_category, id_product FROM "._DB_PREFIX_."category_product") as $rr) {
1010 if (($rr['id_category'] != "96") && ($rr['id_category'] != "97"))
1011 $cnts[$rr['id_product']][]=$rr['id_category'];
1012 }
1013
1014 $db->query('SET autocommit = 0');
1015 foreach($cnts as $id_product => $id_categories) {
1016 $id_category = max($id_categories);
1017 $db->query("UPDATE "._DB_PREFIX_."product SET id_category_default = $id_category WHERE id_product=$id_product");
1018 $db->query("UPDATE "._DB_PREFIX_."product_shop SET id_category_default = $id_category WHERE id_product=$id_product");
1019 }
1020 $db->query('COMMIT');
1021
1022 die("Done.");
1023 }
1024
1025
1026 public function displayStoreCategoryMappingTool() {
1027 global $db;
1028 $StoreCategoryMapping = $this->getStoreCategoryMapping();
1029
1030 foreach($db->query("SELECT id_category_default, count(*) as cnt FROM "._DB_PREFIX_."product GROUP BY id_category_default") as $rr) {
1031 $cnts[$rr['id_category_default']]=$rr['cnt'];
1032 }
1033
1034 $store_categories_simple = $this->get_store_categories_simple();
1035 ?><table border="0" cellpadding="0" cellspacing="0" width="1200">
1036 <tr class='tableheader2' style="display: none;"><td colspan="3">Store Category Mapping Tool
1037 <div class="info1"><img src="<?php echo IMPORT_BASE_URL . IMPORT_PATH; ?>/assets/info.png" /></div>
1038 </td></tr>
1039 <tr class='tableheader'><td width='500'>Kategorie obchodu</td><td width='100'>Sleva kategorie</td></tr>
1040 <?php
1041 foreach($store_categories_simple as $store_categoryID => $store_category) {
1042 echo "<tr class='trmaincategory'><td class='maincategory'><h4>{$store_category} [$store_categoryID] (".(isset( $cnts[$store_categoryID]) ? $cnts[$store_categoryID] : 0)."x)</h4>
1043 </td><td> <input class='store_margin' type='text' store_id='{$store_categoryID}' value='".@$StoreCategoryMapping[$store_categoryID]."' size='2'>%
1044 </td></tr>";
1045 }
1046 ?></table>
1047 <script language="JavaScript">
1048 <!--
1049 /**************************************** MARGIN *************************************/
1050 $(".store_margin").change(function() {
1051 var margin = $(this).val();
1052 var store_id = $(this).attr("store_id");
1053 var this_selector = $(this);
1054 this_selector.hide(200);
1055 var data = { 'store_id': store_id,
1056 'margin': margin,
1057 'supplier': 'MAT',
1058 'to_do': "SAVE_STORE_CATEGORY_MARGIN" };
1059
1060 $.ajax({ type: 'post', cache: false, url: '<?php echo CATEGORY_MAPPING_URL_AJAX ?>', data: data, success: function(data){
1061 if (data=="ok") {
1062 this_selector.show(200);
1063 } else {
1064 alert("Problem - contact the administrator !!!");
1065 }
1066 }
1067 });
1068 })
1069 //-->
1070 </script>
1071 <?php
1072 }
1073
1074
1075
1076
1077
1078}
1079
1080/*
1081CREATE TABLE `imported_attribute` (
1082 `id_product_attribute` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
1083 `reference` varchar(255) COLLATE utf8_czech_ci DEFAULT NULL,
1084 `supplier` varchar(30) COLLATE utf8_czech_ci DEFAULT NULL,
1085 `processed` tinyint(1) DEFAULT '1',
1086 PRIMARY KEY (`id_product_attribute`),
1087 KEY `reference` (`reference`)
1088 ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;