Example #1
0
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'");
    }
}
Example #2
0
 $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;