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