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