/** * import products * @return boolean */ public function importProducts() { $this->cat = load_cat(); $insert_products_i18n = array(); $insert_categories = array(); $insert_product_variants = array(); $insert_product_variants_i18n = array(); $update_products_i18n = array(); $update_product_variants = array(); foreach ($this->xml->СписокНоменклатуры as $product) { // $searchedProduct = is_prod($product->ID, $this->prod); if (!isset($product->IDРодитель)) { continue; } // $is_product = is_prod((string) $product->ID, $this->prod); if (!(string) $product->IDWeb) { //product not found, should be inserted //preparing insert data for shop_products table $data = array(); $data['external_id'] = $product->ID . ""; $categ = is_cat($product->IDРодитель, $this->cat); if ($categ) { $categoryId = $categ['id']; $data['category_id'] = $categoryId; } else { $data['category_id'] = 0; $categoryId = 0; } // $data['category_id'] = 0; $data['active'] = false; $data['hit'] = false; $data['code'] = $product->Код . ''; $data['measure'] = $product->ЕдиницаИзмерения . ''; $data['barcode'] = $product->ШтрихКод . ''; $data['brand_id'] = 0; $data['created'] = time(); $data['updated'] = ''; $data['old_price'] = '0.00'; $data['views'] = 0; $data['hot'] = false; $data['action'] = false; $data['added_to_cart_count'] = 0; $data['enable_comments'] = true; if (in_array(translit_url($product->Наименование), $this->urls)) { $data['url'] = translit_url($product->Наименование) . '-' . $product->Ид; } else { $data['url'] = translit_url($product->Наименование); // $this->urls[] .= $data['url']; } //inserting prepared data to shop_products table $this->insert[] = $data; //preparing data for shop_products_i18n table $data = array(); $data['external_id'] = $product->ID . ""; $data['locale'] = $this->locale; $data['name'] = $product->Наименование . ""; $insert_products_i18n[] = $data; //preparing data for shop_products_categories $data = array(); if ($categoryId) { $data['external_id'] = $product->ID . ""; $data['category_id'] = $categoryId; $insert_categories[] = $data; } //preparing insert data for shop_product_variants $data = array(); $data['price'] = '0.00000'; $data['external_id'] = $product->ID . ""; $data['number'] = $product->Артикул . ""; $data['stock'] = 0; $data['position'] = 0; $mainCurrencyId = $this->ci->db->select('id')->where('main', 1)->get('shop_currencies')->row_array(); if (!empty($mainCurrencyId)) { $mainCurrencyId = $mainCurrencyId['id']; } $data['currency'] = $mainCurrencyId; $data['price_in_main'] = '0.00000'; $insert_product_variants[] = $data; //preparing insert data for shop_product_variants_i18n table $data = array(); $data['external_id'] = $product->ID . ""; $data['locale'] = $this->locale; $data['name'] = $product->Наименование . ""; $insert_product_variants_i18n[] = $data; } else { //product found and should be updated //preparing update data for shop_products table $data = array(); $data['code'] = $product->Код . ''; $data['measure'] = $product->ЕдиницаИзмерения . ''; $data['barcode'] = $product->ШтрихКод . ''; // if (in_array(translit_url((string) $product->Наименование), $this->urls)) { // $data['url'] = translit_url((string) $product->Наименование) . '-' . $product->Ид; // } else { // $data['url'] = translit_url((string) $product->Наименование); //// $this->urls[] .= $data['url']; // } if (isset($product->IDРодитель)) { $categ = is_cat($product->IDРодитель, $this->cat); if ($categ) { $categoryId = $categ['id']; $data['category_id'] = $categoryId; } else { $data['category_id'] = 0; } } $data['updated'] = time(); $data['id'] = $product->IDWeb . ''; $data['external_id'] = $product->ID . ""; $this->update[] = $data; //preparing data for shop_products_i18n table $data = array(); $data['name'] = $product->Наименование . ""; $data['id'] = $product->IDWeb . '' ? $product->IDWeb . '' : $is_product['id']; $update_products_i18n[] = $data; //preparing data for shop_products_categories if ($categoryId) { $data = array(); $data['product_id'] = $product->IDWeb . ''; $data['category_id'] = $categoryId; if ($this->ci->db->where($data)->get('shop_product_categories')->num_rows() == 0) { $data['external_id'] = $product->ID . ""; $insert_categories[] = $data; } } //preparing update data for shop_product_variants $data = array(); $data['number'] = $product->Артикул . ""; $data['external_id'] = $product->ID . ""; $data['product_id'] = $product->IDWeb . ''; $update_product_variants[] = $data; } } //update products $this->updateData($this->products_table, 'id'); //update products_i18n $this->update = $update_products_i18n; $this->updateData($this->products_table . "_i18n", 'id'); // //update products_variants $this->update = $update_product_variants; $this->updateData($this->product_variants_table, 'product_id'); // //insert products $this->insertData($this->products_table); // $inserted_products = load_product(); //prepare insert data foreach ($inserted_products as $id => $external_id) { foreach ($insert_products_i18n as $key => $product_i18n) { if ($product_i18n['external_id'] == $external_id) { $insert_products_i18n[$key]['id'] = $id; unset($insert_products_i18n[$key]['external_id']); } } foreach ($insert_categories as $key => $category) { if ($category['external_id'] == $external_id) { $insert_categories[$key]['product_id'] = $id; unset($insert_categories[$key]['external_id']); } } foreach ($insert_product_variants as $key => $variant) { if ($variant['external_id'] == $external_id) { $insert_product_variants[$key]['product_id'] = $id; } } } //insert products_i18n $this->insert = $insert_products_i18n; $this->insertData($this->products_table . '_i18n'); // // //insert products_categories $this->insert = $insert_categories; $this->insertData('shop_product_categories'); // // //insert producs variants $this->insert = $insert_product_variants; $this->insertData($this->product_variants_table); $inserted_product_variants = $this->ci->db->get('shop_product_variants')->result_array(); // // //prepare insert data foreach ($inserted_product_variants as $value) { foreach ($insert_product_variants_i18n as $key => $variant_i18n) { if ($variant_i18n['external_id'] == $value['external_id']) { $insert_product_variants_i18n[$key]['id'] = $value['id']; unset($insert_product_variants_i18n[$key]['external_id']); } } } // //insert products_variants_i18n $this->insert = $insert_product_variants_i18n; $this->insertData($this->product_variants_table . '_i18n'); }
/** * import categories * @param array $categories * @param type $parent */ public function importCategories($categories, $parent = null) { foreach ($categories as $category) { if ($category->ЭтоГруппа == 'true') { $searchedCat = is_cat($category->ID, $this->cat); if (!$searchedCat) { $this->insertCategory($data, $parent, $category, $searchedCat); } else { $this->updateCategory($data, $parent, $category, $searchedCat); } // if (isset($category->IDРодитель)) { // // //$parent_cat брати з масиву // $parentCat = is_cat($category->ID, $this->cat); // //$this->ci->db->select("id, url, full_path, full_path_ids")->where('external_id', $category->Ид . "")->get($this->categories_table)->row_array(); // $this->importCategories($category->IDРодитель, $parentCat); // } } } $this->insertData($this->categories_table); $inserted_categories = load_cat(); foreach ($inserted_categories as $value) { foreach ($this->insert_categories_i18n as $key => $category_i18n) { if ($category_i18n['external_id'] == $value['external_id']) { $this->insert_categories_i18n[$key]['id'] = $value['id']; unset($this->insert_categories_i18n[$key]['external_id']); } } foreach ($this->cat as $category) { if ($category['external_id'] == $value['external_id']) { $this->cat[$key]['id'] = $value['id']; } } } $this->insert = $this->insert_categories_i18n; $this->insertData('shop_category_i18n'); $this->updateData($this->categories_table, 'external_id'); $this->update = $this->update_categories_i18n; $this->updateData($this->categories_table . '_i18n', 'id'); }