· 6 years ago · Jul 17, 2019, 07:04 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['GENEX-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
217 public function update_article_pix($article) {
218 global $db, $logger;
219 // IMAGES
220// if (false) {
221// $images = $db->query("SELECT count(*) as cnt FROM "._DB_PREFIX_."image WHERE id_product='{$article->store_product_id}'")->fetchColumn();
222// if ($images < @count($article->images)) {
223 if (true) {
224// echo "$images < ".count($article->images)." ".print_R($article->images, true)."<br>";
225// $db->query('COMMIT');
226 $db->query('SET autocommit = 0');
227// if ($images!=0) {
228 //$db->query("DELETE FROM "._DB_PREFIX_."image WHERE id_product='{$article->store_product_id}'");
229 $this->remove_product_images($article->store_product_id);
230 $logger->LogCron(" - IMGs REMOVED {$article->store_product_id}");
231// }
232 $cover = 1;
233 $position = 1;
234 if (isset($article->images))
235 foreach($article->images as $attribute_reference => $img) {
236 $img_id = $this->savePicture($img, $article->store_product_id, $article->title, $cover, $position, $attribute_reference);
237 $cover = 0;
238 $position++;
239 $logger->LogCron(" - IMG INSERTED img_id={$img_id}, {$article->store_product_id}, {$article->sku} => $img");
240 }
241 $db->query('COMMIT');
242 $db->query('SET autocommit = 0');
243 }
244// }
245 }
246
247 public function update_article_base($article) {
248 global $db, $logger;
249
250 // IMAGES
251 if (false) {
252 $images = $db->query("SELECT count(*) as cnt FROM "._DB_PREFIX_."image WHERE id_product='{$article->store_product_id}'")->fetchColumn();
253 if ($images < @count($article->images)) {
254 echo "$images < ".count($article->images)." ".print_R($article->images, true)."<br>";
255 $db->query('COMMIT');
256 $db->query('SET autocommit = 0');
257 if ($images!=0) {
258 //$db->query("DELETE FROM "._DB_PREFIX_."image WHERE id_product='{$article->store_product_id}'");
259 $this->remove_product_images($article->store_product_id);
260 $logger->LogCron(" - IMGs REMOVED {$article->store_product_id}");
261 }
262 $cover = 1;
263 $position = 1;
264 if (isset($article->images))
265 foreach($article->images as $attribute_reference => $img) {
266 $img_id = $this->savePicture($img, $article->store_product_id, $article->title, $cover, $position, $attribute_reference);
267 $cover = 0;
268 $position++;
269 $logger->LogCron(" - IMG INSERTED img_id={$img_id}, {$article->store_product_id}, {$article->sku} => $img");
270 }
271 $db->query('COMMIT');
272 $db->query('SET autocommit = 0');
273 }
274 }
275
276
277 if (false) {
278 if (@$article->features ) {
279 $db->query("DELETE FROM "._DB_PREFIX_."feature_product WHERE id_product='{$article->store_product_id}'");
280 foreach($article->features as $feature => $value) {
281 if ($value!="") {
282 $value = addslashes($value);
283 $feature = addslashes($feature);
284 $feature_id = $this->_feature_get_id($feature);
285 $feature_id = $this->_feature_set($article->store_product_id, $feature_id, $value);
286 }
287 }
288 }
289 }
290
291 // STOCK, SHOP, PRODUCT
292 if (true) { // id_supplier= '{$article->id_supplier}', id_tax_rules_group='".ID_TAX_RULES_GROUP."',
293
294
295 $wh = "";
296 $pr = "";
297 if ($this->import_settings["UPDATEWHOLESALEPRICE"] == "ANO") {
298 $wh = ", wholesale_price= '{$article->wholesale_price}'";
299 }
300
301 if ($this->import_settings["UPDATEPRICE"] == "ANO") {
302 $pr = ", price= '{$article->price}'";
303 }
304
305
306 // id_supplier= '{$article->id_supplier}', weight='{$article->weight}', depth='{$article->length}', width='{$article->width}', height='{$article->height}'
307 $db->query("UPDATE "._DB_PREFIX_."product SET
308 ean13='{$article->ean_upc}', active= '{$article->active}' , id_manufacturer= '{$article->id_manufacturer}'
309 $wh
310 $pr
311 WHERE id_product='{$article->store_product_id}'");
312
313
314 // wholesale_price= '{$article->wholesale_price}',id_tax_rules_group='".ID_TAX_RULES_GROUP."',
315 $db->query("UPDATE "._DB_PREFIX_."product_shop SET
316 active= '{$article->active}'
317 $wh
318 $pr
319 WHERE id_product='{$article->store_product_id}'");
320
321
322 if ($this->import_settings["UPDATEONLYSTOCK"] == "ANO") {
323 $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}'");
324
325 // check if there is an record in "._DB_PREFIX_."stock_available
326 $id_product_attribute = 0;
327 $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();
328 if ($id_stock_available) {
329 $db->query("UPDATE "._DB_PREFIX_."stock_available SET quantity = {$article->quantity} WHERE id_stock_available = {$id_stock_available}");
330 } else {
331 $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}");
332 }
333 }
334
335 }
336
337 // SUPPLIER
338 if (false) {
339 //$db->query("DELETE FROM "._DB_PREFIX_."product_supplier WHERE id_product='{$article->store_product_id}'");
340 $db->query("UPDATE "._DB_PREFIX_."product_supplier SET id_supplier='{$article->id_supplier}' WHERE id_product='{$article->store_product_id}'");
341 }
342
343 // DESCRIPTION
344 if (true) {
345 // $this->DONTUPDATEDESC
346 if (!isset($this->DONTUPDATEDESC[$article->sku])){
347 $article->desc_short = addslashes($article->desc_short);
348 $article->desc_long = addslashes($article->desc_long);
349 $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}'");
350 } else {
351// echo "{$article->sku}";
352
353 }
354 }
355
356 // availability
357 if (false) {
358 $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}'");
359 }
360
361 // CATEGORY PRODUCT
362 if (false) {
363
364 if (isset($article->category_ids)) {
365 $article->category_ids = array_unique($article->category_ids);
366 $first = true;
367 $db->query("DELETE FROM "._DB_PREFIX_."category_product WHERE id_category > 2 AND id_product = {$article->store_product_id}");
368 foreach ($article->category_ids as $cat) {
369 if ($cat > 2) {
370 $db->query("INSERT INTO "._DB_PREFIX_."category_product (id_category, id_product, position) VALUES('$cat','{$article->store_product_id}','0')");
371// if ($cat == 3004) {
372// echo "XXX id_category, id_product => VALUES('$cat','{$article->store_product_id}<br>";
373
374// }
375 if ($first) {
376 $db->query("UPDATE "._DB_PREFIX_."product SET id_category_default = '$cat' WHERE id_product = '{$article->store_product_id}'");
377 $db->query("UPDATE "._DB_PREFIX_."product_shop SET id_category_default = '$cat' WHERE id_product = '{$article->store_product_id}'");
378 $first = false;
379 }
380 }
381 }
382 }
383 }
384 }
385
386 public function update_article_attributes($product) {
387 global $db;
388
389 $f = current($product->attributes);
390 $id_attribute_group_1 = $f['id_attribute_group_1'];
391 if (@$f['id_attribute_group_2']!="") $id_attribute_group_2 = $f['id_attribute_group_2'];
392 if (@$f['id_attribute_group_3']!="") $id_attribute_group_3 = $f['id_attribute_group_3'];
393
394 $id_product = $product->store_product_id;
395
396 $id_product_attribute_default = null;
397
398 if (!@$product->attributes) return true;
399
400 if (@count($product->attributes)) foreach ($product->attributes as $attribute) {
401 // get product combination id from import_product_attribute table
402 $id_product_attribute = $db->query("SELECT id_product_attribute FROM " . IMPORT_PRODUCT_ATTRIBUTE_TABLE . " WHERE reference = '{$attribute['reference']}'")->fetchColumn();
403 // check if product combination really exists
404 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()) {
405 $db->query("DELETE FROM " . IMPORT_PRODUCT_ATTRIBUTE_TABLE . " WHERE reference = '{$attribute['reference']}'");
406 unset($id_product_attribute);
407 }
408
409 if ($id_product_attribute) {
410 // determine default for this product attribute
411 if (!$id_product_attribute_default) {
412 $default = 1;
413 } else {
414 $default = 0;
415 }
416
417 // update product combination
418 $db->query("UPDATE " . IMPORT_PRODUCT_ATTRIBUTE_TABLE . " SET processed = 1 WHERE reference = '{$attribute['reference']}'");
419 $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}");
420 $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);
421 } else {
422 // determine default for this product attribute
423 if (!$id_product_attribute_default) {
424 $default = 1;
425 } else {
426 $default = 0;
427 }
428
429 // check if attribute values exists
430 // color
431 // 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;
432
433
434 if ($id_attribute_group_1 != "") {
435 $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();
436 if (!$id_attribute_1) {
437 // create new attribute value
438 $db->query("INSERT INTO "._DB_PREFIX_."attribute SET id_attribute_group = {$id_attribute_group_1}");
439 $id_attribute_1 = $db->getLastInsertId();
440 $db->query("INSERT INTO "._DB_PREFIX_."attribute_shop SET id_attribute = {$id_attribute_1}, id_shop = " . ID_SHOP);
441 $db->query("INSERT INTO "._DB_PREFIX_."attribute_lang SET id_attribute = {$id_attribute_1}, id_lang = " . ID_LANG . ", name = '{$attribute['attribute_value_1']}'");
442 }
443 }
444
445 if (@$id_attribute_group_2 != "") {
446 $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();
447 if (!$id_attribute_2) {
448 // create new attribute value
449 $db->query("INSERT INTO "._DB_PREFIX_."attribute SET id_attribute_group = {$id_attribute_group_2}");
450 $id_attribute_2 = $db->getLastInsertId();
451 $db->query("INSERT INTO "._DB_PREFIX_."attribute_shop SET id_attribute = {$id_attribute_2}, id_shop = " . ID_SHOP);
452 $db->query("INSERT INTO "._DB_PREFIX_."attribute_lang SET id_attribute = {$id_attribute_2}, id_lang = " . ID_LANG . ", name = '{$attribute['attribute_value_2']}'");
453 }
454 }
455
456 if (@$id_attribute_group_3 != "") {
457 $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();
458 if (!$id_attribute_3) {
459 // create new attribute value
460 $db->query("INSERT INTO "._DB_PREFIX_."attribute SET id_attribute_group = {$id_attribute_group_3}");
461 $id_attribute_3 = $db->getLastInsertId();
462 $db->query("INSERT INTO "._DB_PREFIX_."attribute_shop SET id_attribute = {$id_attribute_3}, id_shop = " . ID_SHOP);
463 $db->query("INSERT INTO "._DB_PREFIX_."attribute_lang SET id_attribute = {$id_attribute_3}, id_lang = " . ID_LANG . ", name = '{$attribute['attribute_value_2']}'");
464 }
465 }
466
467
468 // insert product combination
469 $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}");
470 $id_product_attribute = $db->getLastInsertId();
471 $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}");
472
473 // id_attribute_group_1
474 if ($id_attribute_group_1 != "")
475 $db->query("INSERT INTO "._DB_PREFIX_."product_attribute_combination SET id_attribute = {$id_attribute_1}, id_product_attribute = {$id_product_attribute}");
476
477 // id_attribute_group_2
478 if (@$id_attribute_group_2 != "")
479 $db->query("INSERT INTO "._DB_PREFIX_."product_attribute_combination SET id_attribute = {$id_attribute_2}, id_product_attribute = {$id_product_attribute}");
480
481 // id_attribute_group_3
482 if (@$id_attribute_group_3 != "")
483 $db->query("INSERT INTO "._DB_PREFIX_."product_attribute_combination SET id_attribute = {$id_attribute_3}, id_product_attribute = {$id_product_attribute}");
484
485
486 $db->query("INSERT INTO " . IMPORT_PRODUCT_ATTRIBUTE_TABLE . " SET id_product_attribute = {$id_product_attribute},supplier = '{$this->name}', reference = '{$attribute['reference']}', processed = 1");
487
488 $id_image = $db->query("SELECT id_image FROM imported_image WHERE sku='{$attribute['reference']}'")->fetchColumn();
489 //. echo "product_attribute_image $id_product_attribute}, id_image = {$id_image}<br>";
490 if ($id_image)
491 $db->query("INSERT INTO "._DB_PREFIX_."product_attribute_image SET id_product_attribute = {$id_product_attribute}, id_image = {$id_image}");
492
493
494 }
495
496 if (!$id_product_attribute_default) {
497 $id_product_attribute_default = $id_product_attribute;
498 }
499
500 // check if there is an record in "._DB_PREFIX_."stock_available
501 $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();
502 if ($id_stock_available) {
503 $db->query("UPDATE "._DB_PREFIX_."stock_available SET quantity = {$attribute['quantity']} WHERE id_stock_available = {$id_stock_available}");
504 } else {
505 $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']}");
506 }
507 }
508 }
509
510 public function _get_ancestors($parent, $ancs) {
511 global $db;
512 if (!$parent) return 2;
513 foreach ($db->query("SELECT id_parent FROM "._DB_PREFIX_."category c WHERE id_category=$parent") as $row);
514 if ($row['id_parent']!="2") {
515 $ancs[] = $row['id_parent'];
516 return $this->_get_ancestors( $row['id_parent'], $ancs);
517 }
518 return $ancs;
519 }
520
521 public function get_category_ancestors($id_category) {
522 global $db;
523
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 = ($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 @file_put_contents($src_file_temp, @file_get_contents($src_file));
658 if (filesize($src_file_temp) < 300) {
659 $logger->LogCron(" - No Images for {$products_id} {$src_file} | filesize=".filesize($src_file_temp));
660 unlink($src_file_temp);
661 return false;
662 }
663 $type = @end(explode(".", $src_file));
664 if (strpos($type, "jpg")) imagejpeg(imagecreatefromjpeg($src_file_temp),$src_file_temp, 80);
665 if (strpos($type, "png")) imagejpeg(imagecreatefrompng($src_file_temp),$src_file_temp, 80);
666 if (strpos($type, "gif")) imagejpeg(imagecreatefromgif($src_file_temp),$src_file_temp, 80);
667 $db->query("INSERT INTO "._DB_PREFIX_."image (id_product,position,cover) VALUES ($products_id,'$position','$cover')");
668 $img_id = mysql_insert_id();
669 $db->query("INSERT INTO "._DB_PREFIX_."image_shop (id_image,id_shop, cover) VALUES ($img_id,'1', $cover)") ;
670 $image_dir = IMAGE_ABS_PATH . implode('/', str_split($img_id));
671 $image_prefix = $image_dir . '/' . $img_id;
672 @mkdir($image_dir, 0777, true);
673 if ($img_id!="") {
674 $db->query("INSERT INTO imported_image (id_image, sku) VALUES ($img_id, '$attribute_reference')") ;
675 foreach (getImportedLangs() as $lang_dir => $id_lang)
676 $db->query("INSERT INTO "._DB_PREFIX_."image_lang (id_image,id_lang,legend) VALUES($img_id,'$id_lang','".addslashes($nazev)."')");
677 copy($src_file_temp, $image_prefix.".jpg");
678 if(count($this->image_types))
679 foreach($this->image_types as $image_type)
680 @imageResize($src_file_temp, $image_prefix . '-' . $image_type['name'] . '.jpg', $image_type['width'], $image_type['height']);
681 }
682 unlink($src_file_temp);
683 return true;
684 }
685
686 public function set_manufacturer_for_product($id_article, $id_manufacturer) {
687 $sql = "UPDATE "._DB_PREFIX_."product SET id_manufacturer=$id_manufacturer WHERE id_product=$id_article";
688 mysql_query($sql) or die(mysql_error());
689 }
690
691 public function get_store_categories_simple() {
692 global $db;
693 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) {
694 $before = $this->_get_category_name($row['id_parent']);
695 $arr[$row['id_category']] = $before == "" ? $row['name']:$before . " > " . $row['name'];
696 }
697 return $arr;
698 }
699
700 private function _get_category_name($id) {
701 global $db;
702 foreach( $db->query("SELECT * FROM "._DB_PREFIX_."category c JOIN "._DB_PREFIX_."category_lang cd
703 ON c.id_category=cd.id_category WHERE cd.id_lang='".ID_LANG."' AND c.id_category='$id'") as $row ) {
704 if ($row['id_parent']==0) {
705 return $row['name'];
706 } else{
707 return $this->_get_category_name($row['id_parent']) . " > ". $row['name'];
708 }
709 }
710 return @$row['name'];;
711 }
712
713 private function __get_store_categories($parent_id) {
714 global $db;
715 $arr=array();
716 foreach( $db->query("SELECT * FROM "._DB_PREFIX_."category c JOIN "._DB_PREFIX_."category_lang cl
717 ON c.id_category=cl.id_category WHERE cl.id_lang='".ID_LANG."' AND c.id_parent='$parent_id'") as $row) {
718 $arr[$row['id_category']]['category_id'] = $row['id_category'];
719 $arr[$row['id_category']]['name'] = $row['name'];
720 $arr[$row['id_category']]['parent'] = $row['id_parent'];
721 $arr[$row['id_category']]['children'] = $this->__get_store_categories($row['id_category']);
722 }
723 return $arr;
724 }
725
726 public function get_store_categories() {
727 global $db;
728 foreach( $db->query("SELECT * FROM "._DB_PREFIX_."category c JOIN "._DB_PREFIX_."category_lang cl
729 ON c.id_category=cl.id_category WHERE cl.id_lang='".ID_LANG."' AND c.id_parent=" . ID_CATEGORY_ROOT) as $row) {
730 $arr[$row['id_category']]['category_id'] = $row['id_category'];
731 $arr[$row['id_category']]['name'] = $row['name'];
732 $arr[$row['id_category']]['parent'] = $row['id_parent'];
733 $arr[$row['id_category']]['children'] = $this->__get_store_categories($row['id_category']);
734 }
735 return $arr;
736 }
737
738 public function createCategory($newcatname, $parent_id, $lvl) {
739 global $db, $imported_langs;
740 $lvl=3;
741 if ($parent_id==2) $lvl = 2;
742 $db->query("INSERT INTO "._DB_PREFIX_."category (id_parent, active, date_add, date_upd, level_depth) VALUES ($parent_id, 1, NOW(), NOW(), $lvl )");
743 $category_oc_id = mysql_insert_id();
744 $rewrite = ImpLib::tourl($newcatname);
745 foreach($imported_langs as $id_lang) {
746 $db->query("INSERT INTO "._DB_PREFIX_."category_lang (id_category, id_lang, name, link_rewrite ) VALUES ($category_oc_id,'$id_lang', '$newcatname', '$rewrite')");
747 }
748 $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)");
749 $db->query("INSERT INTO "._DB_PREFIX_."category_shop (id_category, id_shop) VALUES ($category_oc_id,1)");
750 // Category::regenerateEntireNtree();
751 // global $smarty;
752 // Tools::clearCache($smarty);
753 return $category_oc_id;
754 }
755
756 public function getCategory($catname, $id_parent) {
757 global $db;
758 foreach( $db->query("SELECT * FROM "._DB_PREFIX_."category_lang cl JOIN "._DB_PREFIX_."category c ON c.id_category=cl.id_category
759 WHERE cl.name='".$catname."' AND c.id_parent=".$id_parent) as $row) {
760 return $row['id_category'];
761 }
762 return false;
763 }
764
765 public function addImagesToCategories() {
766 global $db;
767 $cprel = array();
768 foreach ($db->query("SELECT * FROM "._DB_PREFIX_."category_product") as $cp) {
769 $cprel[$cp['id_category']][] = $cp['id_product'];
770 }
771 foreach($cprel as $cID => $products) {
772 $fotka_nalezena = false;
773 foreach ($products as $pID) {
774 //echo $cID . " => $pID<br>"; if ($cID==152) dump($products) ;
775 foreach($db->query("SELECT * FROM "._DB_PREFIX_."image WHERE id_product=$pID") as $imgID ) {
776 $fotka_nalezena = true;
777 $image = IMAGE_ABS_PATH . implode('/', str_split($imgID['id_image'])) . "/" . $imgID['id_image'] . ".jpg";
778 copy($image, IMPORT_ABS_PATH . "img/c/" . $cID . ".jpg");
779 break;
780 }
781 if ($fotka_nalezena) break;
782 }
783 }
784 echo "Images added.";
785 }
786
787 public function IceCat_GetStoreItemsForUpdate() {
788 global $db;
789 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
790 JOIN "._DB_PREFIX_."product_supplier ps ON ps.id_product = i.store_product_id
791 JOIN "._DB_PREFIX_."product p ON p.id_product = i.store_product_id
792 JOIN "._DB_PREFIX_."product_lang pl ON pl.id_product = i.store_product_id
793 JOIN "._DB_PREFIX_."manufacturer m ON p.id_manufacturer = m.id_manufacturer
794
795 ") as $row) {
796
797 $arr[$row['store_product_id']]['id_product'] = $row['store_product_id'];
798 $arr[$row['store_product_id']]['sku'] = $row['sku']; // sku
799 $arr[$row['store_product_id']]['ean'] = $row['ean'];
800 // $arr[$row['id_product']]['location'] = $row['location'];
801 $arr[$row['store_product_id']]['supplier_sku'] = $row['supplier_sku']; // product_id
802 $arr[$row['store_product_id']]['manufacturer'] = $row['manufacturer']; // product_id
803 $arr[$row['store_product_id']]['desc'] = $row['description']=="" ? true:false; // product_id
804 //break;
805 }
806 return $arr;
807 }
808
809 public function get_attr_id($attrib_group_id, $attrib_name) {
810 if (isset($this->cache_attr_id[$attrib_name])) return $this->cache_attr_id[$attrib_name];
811
812
813 $attrib_name = addslashes($attrib_name);
814 $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'";
815 $result = mysql_query($sql);
816 $row = mysql_fetch_array($result);
817 if ($row['id_attribute']=="") {
818 mysql_query("INSERT INTO "._DB_PREFIX_."attribute (id_attribute_group, color) VALUES('$attrib_group_id','#000000')") or die(mysql_error() . $sql );
819 $attr_id=mysql_insert_id();
820 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);
821 $this->cache_attr_id[$attrib_name] = $attr_id;
822 return $attr_id;
823 } else {
824 $this->cache_attr_id[$attrib_name] = $row['id_attribute'];
825 return $row['id_attribute'];
826 }
827 }
828
829 public function get_attr_group_id($attrib_name) {
830 if (isset($this->cache_attr_group_id[$attrib_name])) return $this->cache_attr_group_id[$attrib_name];
831
832 $sql = "SELECT * FROM "._DB_PREFIX_."attribute_group_lang WHERE name = '$attrib_name' AND id_lang='".ID_LANG."'";
833 $rees = mysql_query($sql) or die(mysql_error());
834 if (mysql_num_rows($rees)>0) {
835 $row = mysql_fetch_array($rees);
836
837 $this->cache_attr_group_id[$attrib_name] = $row['id_attribute_group'];
838 return $row['id_attribute_group'];
839 } else {
840 $sql = "INSERT INTO "._DB_PREFIX_."attribute_group (is_color_group) VALUES (0)";
841 $res = mysql_query($sql);
842 $id_attribute_group = mysql_insert_id();
843 $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)";
844 $res = mysql_query($sql);
845
846 $this->cache_attr_group_id[$attrib_name] = $id_attribute_group;
847 return $id_attribute_group;
848 }
849 }
850
851 public function removeAllProducts() {
852 global $db;
853 $db->query(" TRUNCATE `ps_category_product`;");
854 $db->query(" TRUNCATE `ps_product`;");
855 $db->query(" TRUNCATE `ps_product_shop`;");
856 $db->query(" TRUNCATE `ps_product_lang`;");
857 $db->query(" TRUNCATE `ps_stock_available`;");
858 $db->query(" TRUNCATE `ps_image`;");
859 $db->query(" TRUNCATE `ps_product_supplier`;");
860
861 $db->query(" TRUNCATE `ps_image_shop`;");
862 $db->query(" TRUNCATE `ps_image_lang`;");
863 $db->query(" TRUNCATE `imported`;");
864 $db->query(" TRUNCATE `imported_attribute`;");
865 $db->query(" TRUNCATE `imported_image`;");
866
867 $db->query(" TRUNCATE `ps_product_attribute`;");
868 $db->query(" TRUNCATE `ps_attribute`;");
869 $db->query(" TRUNCATE `ps_attribute_shop`;");
870 $db->query(" TRUNCATE `ps_attribute_lang`;");
871 $db->query(" TRUNCATE `ps_attribute_group`;");
872 $db->query(" TRUNCATE `ps_attribute_group_lang`;");
873 $db->query(" TRUNCATE `ps_attribute_group_shop`;");
874 $db->query(" TRUNCATE `ps_product_attribute_shop`;");
875 $db->query(" TRUNCATE `ps_product_attribute_combination`;");
876 $db->query(" TRUNCATE `ps_product_attribute_image`;");
877
878 ImpLib::rrmdir(IMPORT_ABS_PATH . "/img/p/1");
879 ImpLib::rrmdir(IMPORT_ABS_PATH . "/img/p/2");
880 ImpLib::rrmdir(IMPORT_ABS_PATH . "/img/p/3");
881 ImpLib::rrmdir(IMPORT_ABS_PATH . "/img/p/4");
882 ImpLib::rrmdir(IMPORT_ABS_PATH . "/img/p/5");
883 ImpLib::rrmdir(IMPORT_ABS_PATH . "/img/p/6");
884 ImpLib::rrmdir(IMPORT_ABS_PATH . "/img/p/7");
885 ImpLib::rrmdir(IMPORT_ABS_PATH . "/img/p/8");
886 ImpLib::rrmdir(IMPORT_ABS_PATH . "/img/p/9");
887
888 /*
889 truncate ps_feature_value;
890 truncate ps_feature;
891 truncate ps_feature_value_lang;
892 truncate ps_feature_lang;
893 truncate ps_feature_product;
894 truncate ps_feature_shop;
895 */
896
897 }
898
899 public function removeAllImportedItems() {
900 global $db , $logger;
901 foreach ($db->query("select * from imported where processed=0") as $row) {
902 if (!$db->query("SELECT id_product FROM "._DB_PREFIX_."product WHERE id_product={$row['store_product_id']}")->fetchColumn()) {
903 echo "{$row['store_product_id']} not exists <Br>";
904 $db->query("delete from imported where store_product_id={$row['store_product_id']}");
905 } else {
906
907 foreach ($db->query("SELECT id_image FROM "._DB_PREFIX_."image WHERE id_product = {$row['store_product_id']}") as $id_image) {
908 $id_image = $id_image['id_image'];
909 $this->remove_images($id_image);
910 $db->query("DELETE FROM "._DB_PREFIX_."image_lang WHERE id_image = $id_image");
911 $db->query("DELETE FROM "._DB_PREFIX_."image_shop WHERE id_image = $id_image");
912 $db->query("DELETE FROM "._DB_PREFIX_."image WHERE id_image = $id_image");
913 }
914 $id_product = $row['store_product_id'];
915
916 $db->query("DELETE FROM "._DB_PREFIX_."category_product WHERE id_product = $id_product");
917 $db->query("DELETE FROM "._DB_PREFIX_."product_shop WHERE id_product = $id_product");
918 $db->query("DELETE FROM "._DB_PREFIX_."product WHERE id_product = $id_product");
919 $db->query("DELETE FROM "._DB_PREFIX_."product_lang WHERE id_product = $id_product");
920 $db->query("DELETE FROM "._DB_PREFIX_."stock_available WHERE id_product = $id_product");
921 $db->query("DELETE FROM "._DB_PREFIX_."product_supplier WHERE id_product = $id_product");
922 $db->query("DELETE FROM "._DB_PREFIX_."feature_product WHERE id_product = $id_product");
923
924 $db->query("DELETE FROM imported WHERE store_product_id = $id_product");
925
926 //$db->query("DELETE FROM imported_image WHERE id_product = $id_product");
927 /*
928 $db->query(" TRUNCATE `"._DB_PREFIX_."product_attribute`;");
929 $db->query(" TRUNCATE `"._DB_PREFIX_."attribute`;");
930 $db->query(" TRUNCATE `"._DB_PREFIX_."attribute_shop`;");
931 $db->query(" TRUNCATE `"._DB_PREFIX_."attribute_lang`;");
932 $db->query(" TRUNCATE `"._DB_PREFIX_."attribute_group`;");
933 $db->query(" TRUNCATE `"._DB_PREFIX_."attribute_group_lang`;");
934 $db->query(" TRUNCATE `"._DB_PREFIX_."attribute_group_shop`;");
935 */
936 echo @$RR++ . ". {$row['store_product_id']} OK! removed <Br>";
937
938 $logger->LogCron("Removed => " . $row['store_product_id']);
939 }
940 }
941 }
942
943 public function remove_product_images($id_product) {
944 global $db;
945 foreach ($db->query("SELECT id_image FROM "._DB_PREFIX_."image WHERE id_product = {$id_product}") as $id_image) {
946 $id_image = $id_image['id_image'];
947 $this->remove_images($id_image);
948 $db->query("DELETE FROM "._DB_PREFIX_."image_lang WHERE id_image = $id_image");
949 $db->query("DELETE FROM "._DB_PREFIX_."image_shop WHERE id_image = $id_image");
950 $db->query("DELETE FROM "._DB_PREFIX_."image WHERE id_image = $id_image");
951 }
952 }
953
954
955 public function deactivateProductsInDeactiveCategories() {
956 global $db, $logger;
957 $rr = 0;
958 $db->query('SET autocommit = 0');
959 $deactivedProductCategories="";
960 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) {
961 $rr++;
962 $deactivedProductCategories[] = $category['id_product'];
963 $db->query("UPDATE "._DB_PREFIX_."product SET active = 0 WHERE id_product={$category['id_product']}; ");
964 $db->query("UPDATE "._DB_PREFIX_."product_shop SET active = 0 WHERE id_product={$category['id_product']};");
965 }
966 $logger->LogCron(" - Deactivated Items In Deactivated Category = " .count($deactivedProductCategories) ." items => " . implode(",", $deactivedProductCategories)." ");
967 $db->query('commit');
968 }
969
970 public function deactivateProductsWithoutImage() {
971 global $db, $logger;
972 $db->query('SET autocommit = 0');
973 $deactivedProductImages= "";
974 foreach ($db->query("select * from "._DB_PREFIX_."product p where id_product not in( select id_product from "._DB_PREFIX_."image )") as $product) {
975 $db->query("UPDATE "._DB_PREFIX_."product SET active = 0 WHERE id_product={$product['id_product']}; ");
976 $db->query("UPDATE "._DB_PREFIX_."product_shop SET active = 0 WHERE id_product={$product['id_product']};");
977 $deactivedProductImages[] = $product['reference'];
978 }
979 $db->query('commit');
980 $logger->LogCron(" - Deactivated Items Without Image = " .count($deactivedProductImages) ." items => " . implode(",", $deactivedProductImages)." ");
981 }
982
983 public function remove_images($id_image) {
984 global $logger, $db;
985 if (!isset($this->image_types)) {
986 $this->image_types = array();
987 foreach ($db->query("SELECT * FROM `"._DB_PREFIX_."image_type` WHERE `products` = 1") as $image_type) {
988 $this->image_types[] = array(
989 'width' => $image_type['width'],
990 'height' => $image_type['height'],
991 'name' => $image_type['name']
992 );
993 }
994 }
995 if(count($this->image_types))
996 foreach($this->image_types as $image_type) {
997 $f = IMAGE_ABS_PATH . implode('/', str_split($id_image)) . '/' . $id_image . "-". $image_type['name'].".jpg";
998 @unlink($f);
999 $logger->LogCron(" REMOVED Image $f");
1000 }
1001 return true;
1002 }
1003
1004
1005 public function exportPrices() {
1006 global $db,$logger;
1007 $sss = "";
1008 foreach($db->query("SELECT reference, price FROM "._DB_PREFIX_."product") as $rr) {
1009 $sss.=$rr['reference'] . ":".round($rr['price'] * 1.21)."\n";
1010
1011 }
1012 file_put_contents(TXT_PRICES, $sss);
1013 $logger->LogCron(" " . TXT_PRICES . " updated.");
1014
1015 }
1016
1017 public function setDefaultCategories() {
1018 global $db;
1019 foreach($db->query("SELECT id_category, id_product FROM "._DB_PREFIX_."category_product") as $rr) {
1020 if (($rr['id_category'] != "96") && ($rr['id_category'] != "97"))
1021 $cnts[$rr['id_product']][]=$rr['id_category'];
1022 }
1023
1024 $db->query('SET autocommit = 0');
1025 foreach($cnts as $id_product => $id_categories) {
1026 $id_category = max($id_categories);
1027 $db->query("UPDATE "._DB_PREFIX_."product SET id_category_default = $id_category WHERE id_product=$id_product");
1028 $db->query("UPDATE "._DB_PREFIX_."product_shop SET id_category_default = $id_category WHERE id_product=$id_product");
1029 }
1030 $db->query('COMMIT');
1031
1032 die("Done.");
1033 }
1034
1035
1036 public function displayStoreCategoryMappingTool() {
1037 global $db;
1038 $StoreCategoryMapping = $this->getStoreCategoryMapping();
1039
1040 foreach($db->query("SELECT id_category_default, count(*) as cnt FROM "._DB_PREFIX_."product GROUP BY id_category_default") as $rr) {
1041 $cnts[$rr['id_category_default']]=$rr['cnt'];
1042 }
1043
1044 $store_categories_simple = $this->get_store_categories_simple();
1045 ?><table border="0" cellpadding="0" cellspacing="0" width="1200">
1046 <tr class='tableheader2' style="display: none;"><td colspan="3">Store Category Mapping Tool
1047 <div class="info1"><img src="<?php echo IMPORT_BASE_URL . IMPORT_PATH; ?>/assets/info.png" /></div>
1048 </td></tr>
1049 <tr class='tableheader'><td width='500'>Kategorie obchodu</td><td width='100'>Sleva kategorie</td></tr>
1050 <?php
1051 foreach($store_categories_simple as $store_categoryID => $store_category) {
1052 echo "<tr class='trmaincategory'><td class='maincategory'><h4>{$store_category} [$store_categoryID] (".(isset( $cnts[$store_categoryID]) ? $cnts[$store_categoryID] : 0)."x)</h4>
1053 </td><td> <input class='store_margin' type='text' store_id='{$store_categoryID}' value='".@$StoreCategoryMapping[$store_categoryID]."' size='2'>%
1054 </td></tr>";
1055 }
1056 ?></table>
1057 <script language="JavaScript">
1058 <!--
1059 /**************************************** MARGIN *************************************/
1060 $(".store_margin").change(function() {
1061 var margin = $(this).val();
1062 var store_id = $(this).attr("store_id");
1063 var this_selector = $(this);
1064 this_selector.hide(200);
1065 var data = { 'store_id': store_id,
1066 'margin': margin,
1067 'supplier': 'MAT',
1068 'to_do': "SAVE_STORE_CATEGORY_MARGIN" };
1069
1070 $.ajax({ type: 'post', cache: false, url: '<?php echo CATEGORY_MAPPING_URL_AJAX ?>', data: data, success: function(data){
1071 if (data=="ok") {
1072 this_selector.show(200);
1073 } else {
1074 alert("Problem - contact the administrator !!!");
1075 }
1076 }
1077 });
1078 })
1079 //-->
1080 </script>
1081 <?php
1082 }
1083
1084
1085
1086
1087
1088}
1089
1090/*
1091CREATE TABLE `imported_attribute` (
1092 `id_product_attribute` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
1093 `reference` varchar(255) COLLATE utf8_czech_ci DEFAULT NULL,
1094 `supplier` varchar(30) COLLATE utf8_czech_ci DEFAULT NULL,
1095 `processed` tinyint(1) DEFAULT '1',
1096 PRIMARY KEY (`id_product_attribute`),
1097 KEY `reference` (`reference`)
1098 ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
1099 *
1100 */