function importCategories($file, $blindMode) { $date = date('Y-m-d H:i:s'); $xml = new XMLReader(); $xml->open($file); $depth = array(); $parentId = null; $parents = array(); $depth = 0; $db = DbCore::getInstance(); $table = 'category'; $query = new DbQuery(); $query->select('id_category'); $query->from($table, 'p'); $query->where("p.is_root_category = 1"); $rootCategory = (int) $db->getValue($query); while ($xml->read()) { if ($xml->nodeType == XmlReader::ELEMENT && $xml->name == 'ctg:name') { $xml->read(); $name = $xml->value; } if ($xml->nodeType == XmlReader::ELEMENT && $xml->name == 'ctg:description') { $xml->read(); $description = $xml->value; } if ($xml->nodeType == XmlReader::ELEMENT && $xml->name == 'ctg:sequence') { $xml->read(); $sequence = $xml->value; } if ($xml->nodeType == XmlReader::ELEMENT && $xml->name == 'ctg:displayed') { $xml->read(); $displayed = $xml->value == 'true'; } if ($xml->nodeType == XmlReader::ELEMENT && $xml->name == 'ctg:id') { $xml->read(); $id = (int) $xml->value; } if ($xml->nodeType == XmlReader::ELEMENT && $xml->name == 'ctg:internetParams') { // hack - we insert category here $parent = $rootCategory; // root category if (isset($parents[$depth])) { $parent = $parents[$depth]; } if ($blindMode) { try { // hack - we can not save category unless it already exists $db->insert('category', array('id_category' => $id, 'id_parent' => $parent, 'date_add' => $date)); } catch (Exception $e) { } } else { try { $category = new Category(); $category->id = $id; $category->id_category = $id; $category->name = $name; $category->link_rewrite = createUrlSlug($name); $category->description = $description; $category->position = $sequence; $category->id_parent = $parent; $category->active = (int) $displayed; $category->doNotRegenerateNTree = true; $category->save(); $db->update('category_shop', array('position' => $sequence), "id_category = '" . $db->escape($id) . "'"); } catch (Exception $e) { echo $e->getMessage() . " {$id} {$parent}\n"; } } // debug //echo str_repeat('+', $depth) . ' ' . $id . " ($parent)\n"; } if ($xml->nodeType == XmlReader::ELEMENT && $xml->name == 'ctg:subCategories') { $depth++; if (!isset($parents[$depth])) { $parents[$depth] = $id; } } if ($xml->nodeType == XmlReader::END_ELEMENT && $xml->name == 'ctg:subCategories') { unset($parents[$depth]); $depth--; } } $xml->close(); if ($blindMode) { $db->update('category', array('date_add' => $date), "date_add = '0000-00-00 00:00:00'"); } }
$data['id_category_default'] = 1; // default $data['id_shop_default'] = 1; $data['id_tax_rules_group'] = 1; $data['on_sale'] = (int) $sale; $data['show_price'] = 1; $data['indexed'] = (int) $active; $data['cache_default_attribute'] = 1; $data['id_tax_rules_group'] = $taxId; addSlashesToArray($data); $langdata = array(); $langdata['id_shop'] = $shopId; $langdata['id_lang'] = $langId; $langdata['description'] = $description2; //$langdata['description_short'] = $description; $langdata['link_rewrite'] = createUrlSlug($name); $langdata['name'] = $name; $langdata['available_now'] = 'Skladem'; $langdata['available_later'] = $availability; $langdata['id_shop'] = $shopId; $langdata['id_product'] = $id; $langdata['meta_title'] = trim($producer . ' - ' . $name); addSlashesToArray($langdata); $shopdata = array(); $shopdata['price'] = $sellingPrice; $shopdata['id_shop'] = $shopId; $shopdata['on_sale'] = $sale; $shopdata['id_product'] = $id; $shopdata['active'] = $active; $shopdata['id_category_default'] = $categoryDefaultId; $shopdata['id_tax_rules_group'] = $taxId;