public static function update_article_icecat($product, $specs) { global $logger, $db, $b2b; $b2b->getImportedLangs = getImportedLangs(); $langs = array(ID_LANG); $specs = $specs["EN"]; // dump($product);exit; $id_product = $product['store_product_id']; // dump($specs);exit; // truncate res_attribute;truncate res_attribute_description;truncate res_attribute_group;truncate res_attribute_description if (false) { if (@count($specs['features']) > 0) { foreach ($langs as $id_lang) { $db->query("DELETE FROM " . _DB_PREFIX_ . "product_attribute WHERE product_id='{$id_product}' AND language_id=" . $id_lang); // $res = mysql_query($sql) or die(mysql_error() .$sql); } $db->query("DELETE FROM " . _DB_PREFIX_ . "product_attribute WHERE product_id='{$id_product}'"); foreach ($specs['features'] as $attribute_group => $attributes) { $attribute_group = current(explode("||", $attribute_group)); // ICECAT FIX $attribute_group = htmlentities($attribute_group); $attribute_group_id = $b2b->get_attribute_group_id($attribute_group); $attributes_tmp = array(); // dump($attributes); foreach ($attributes as $attribute => $attribute_value) { $attributes_tmp[current(explode("||", $attribute))] = $attribute_value; // ICECAT FIX } $attributes = $attributes_tmp; foreach ($attributes as $attribute => $attribute_value) { $attribute = addslashes(htmlentities($attribute)); $attribute_id = $b2b->get_attribute_id($attribute, $attribute_group_id); $attribute_value = addslashes(htmlentities($attribute_value)); foreach ($langs as $id_lang) { $db->query("INSERT INTO " . _DB_PREFIX_ . "product_attribute (attribute_id, product_id, language_id, text)\r\n\t\t \t\tVALUES ({$attribute_id} ,'{$id_product}', {$id_lang}, '{$attribute_value}')"); } } } } } //$specs['desc_sum_long'] .= "<br /><br />" . $specs['features_html'] ; if (true) { foreach ($langs as $id_lang) { // description = '".addslashes( $specs['desc_sum_long'] )."' //dump($specs);exit; if (@$specs['title'] != "") { $db->query("UPDATE " . _DB_PREFIX_ . "product_description SET\r\n \t \t\t\tname = '" . addslashes($specs['title']) . "',\r\n \t \t\t\tdescription = '" . addslashes($specs['desc_long']) . "'\r\n \t\t\t WHERE product_id = {$id_product} AND language_id = " . $id_lang); $logger->LogCron(" - ICECAT UPDATED desc ID={$product['store_product_id']} = {$product['sku']}"); } else { $logger->LogCron(" - ICECAT UPDATED NO DESC for ID={$product['store_product_id']} = {$product['sku']}"); } } if (@$specs['ean'] != "") { // $sql = "UPDATE "._DB_PREFIX_."product SET ean = '".$specs['ean']."' WHERE product_id = $id_product"; // $result = mysql_query($sql) or die(mysql_error() . $sql); } } // echo "s2";exit; // images if (true) { foreach ($db->query("SELECT * FROM " . _DB_PREFIX_ . "product_image WHERE product_id = {$id_product}") as $row) { $image = $row['image']; $b2b->remove_images($image); } $db->query("DELETE FROM " . _DB_PREFIX_ . "product_image WHERE product_id = {$id_product}"); $position = 0; $specs['images'] = array_reverse($specs['images']); foreach ($specs['images'] as $img) { $b2b->savePicture($img, $id_product, $specs['title'], $position); $position++; $logger->LogCron(" - ICECAT UPDATED IMG ID={$product['store_product_id']} = {$product['sku']} {$img}"); } } // dump($id_product);dump($specs);exit; }
public static function updateIceCatItems($products, $lang_dir) { global $b2b, $db, $logger; $s = ImpLib::gt(); $import_icecat = IceCat::getUpdatedIceCatItems(); $i = 0; $ttl = 0; // mysql_query('SET autocommit = 0') or die(mysql_error()); foreach ($products as $product) { if (@$import_icecat[$product['sku']]) { continue; } // uz je zpracovano $xmldir = implode('/', str_split((string) $product['store_product_id'])); $xmlOK = true; foreach (getImportedLangs() as $lang_dir => $id_lang) { $file = ICE_FEED_PATH . $lang_dir . "/" . $xmldir . "/" . $product['store_product_id'] . ".gz"; $logger->LogCron(" - processing {$file}"); if (!@filesize($file)) { @unlink($file); // for zero files $xmlOK = false; $logger->LogCron(" - {$product['sku']} incorrect size. skipped"); continue; } $gzdata = file_get_contents($file); $data = IceCat::gzdecode($gzdata); $logger->LogCron(" - {$product['sku']} product data loaded [lang={$lang_dir}]" . strlen($data)); list($article['id_icecat'][$lang_dir], $article['icecat_state'][$lang_dir], $article['icecat_specs'][$lang_dir]) = IceCat::getICEcatProductSpecsDetails($data); if ($article['icecat_state'] == "BAD XML FILE") { unlink($file); } $logger->LogCron(" - {$product['sku']} [{$lang_dir}] product data parsed."); } $logger->LogCron(" - {$product['sku']} product data parsed."); if (!$xmlOK) { $logger->LogCron(" - {$product['sku']} bad XML."); continue; } $logger->LogCron(" - {$product['sku']} to be continued ?"); $import_icecat_feature = ""; if ($xmlOK && $article['icecat_state'][$lang_dir] == "READY FOR IMPORT") { $i++; $logger->LogCron(" - {$product['sku']} updating... "); // dump($article);exit; $b2b->update_article_icecat($product, $article['icecat_specs'], @$import_icecat_feature); } else { $logger->LogCron(" - {$product['sku']} no." . print_R($article, true)); // $pu->DeactivateItem($product['store_product_id']); } $ttl++; // die("stopped"); foreach (getImportedLangs() as $lang_dir => $id_lang) { $db->query("INSERT INTO import_icecat (sku, ean_upc , part_number , icecat_state, date_add, shop_status,vendor_id, id_icecat, store_product_id, id_lang) VALUES (\r\n '{$product['sku']}','{$product['ean']}','{$product['supplier_sku']}','{$article['icecat_state'][$lang_dir]}', NOW(), 'UPDATED','{$product['manufacturer']}'\r\n ,'{$article['id_icecat'][$lang_dir]}', '" . $product['store_product_id'] . "', " . $id_lang . ")"); } // die("stopped"); $last = "ID=" . $product['store_product_id'] . " sku=" . $product['sku']; if ($i >= 20) { $db->query('COMMIT'); $logger->LogCron("ICECAT UPDATED: {$i}/{$ttl} items in " . ImpLib::grt($s) . "s (last => {$last})"); $logger->LogCron("ICECAT END | usage:" . ImpLib::convert(memory_get_usage(true)) . " peak: " . ImpLib::convert(memory_get_peak_usage(true))); $logger->LogCron("-------------------------------------------------------------------------------------"); exit; break; } // die("Stopped"); } if (@$last) { $logger->LogCron("ICECAT UPDATED: {$i}/{$ttl} items in " . ImpLib::grt($s) . "s (last => {$last})"); } else { $logger->LogCron("ICECAT UPDATED: 0/{$ttl} items"); } $db->query('COMMIT'); return $i; }
} } function getImportedLangs() { return array("EN" => 1); } // for icecat define("ICECAT_username", "nzbestdirectnz"); define("ICECAT_password", "axqk1393*1211"); require_once IMPORT_ABS_PATH . IMPORT_PATH . "/classes/IceCat.class.php"; define("ICE_FEED_PATH", IMPORT_ABS_PATH . "/ib2b-feeds/ice/"); @mkdir(ICE_FEED_PATH, 0775); define("CRON_MAX_ICECAT_LIFETIME_INFO", '2000'); define("UPDATE_ICECAT_LIMIT", '10'); //define("DOWNLOAD_LIMIT", '1500'); define("ICECAT_ITEM_STEP", '500'); define("MAX_ICECAT_IMAGE_WIDTH", 1000); define("UPDATE_IMAGES_ONLY_LANG", 1); define("ICECAT_UPDATE_IMAGES", true); define("ICECAT_UPDATE_RELATIONS", false); define("ICECAT_UPDATE_FEATURES", true); define("ICECAT_UPDATE_FEATURES_WITHOUT_VARIANTS", false); define("ICECAT_UPDATE_DESC", true); define("ICECAT_UPDATE_BRANDS", true); // function getImportedLangs() { return array("EN" => 1); } // for icecat $LANGS = getImportedLangs(); $lang_dir = @$LANGS[@$_REQUEST['lang']] != "" ? @$_REQUEST['lang'] : "EN"; // set first lang as default if lang not set define("DEFAULT_LANG_DIR", current($LANGS)); //define("ID_LANG", $LANGS[$lang_dir]); // current ID lang //echo "X";exit;
public function update_article_icecat($item, $specs) { global $db, $logger; if (!$item['store_product_id']) { return true; } foreach (getImportedLangs() as $lang_dir => $id_lang) { $icecat = $specs[$lang_dir]; if ($icecat['title'] == "") { return false; } if (ICECAT_UPDATE_DESC) { if (strlen($icecat['title']) > 5) { $icecat_desc_long = $icecat['desc_long'] != "" ? addslashes($icecat['desc_long']) : addslashes($icecat['desc_sum_long']); $icecat_desc_short = $icecat['desc_long'] != "" ? addslashes($icecat['desc_short']) : addslashes($icecat['desc_sum_short']); $db->query("UPDATE `" . _DB_PREFIX_ . "posts` SET\n \t\tpost_content='" . $icecat_desc_short . "' ,\n \t\tpost_title='" . addslashes($icecat['title']) . "',\n \t\tpost_excerpt='" . $icecat_desc_short . "'\n \t\tWHERE ID='{$item['store_product_id']}'"); $logger->LogCron(" - ICECAT UPDATED DESC {$lang_dir} ID={$item['store_product_id']}, {$item['sku']} => len=" . strlen($icecat_desc_long)); } } if (ICECAT_UPDATE_IMAGES) { if (count($icecat['images']) > 0) { // remove old images $db->query("DELETE FROM " . _DB_PREFIX_ . "posts WHERE post_parent='{$item['store_product_id']}' AND post_type='attachment' AND post_mime_type='image/jpeg'"); // samotny obr. v db $db->query("DELETE FROM " . _DB_PREFIX_ . "postmeta WHERE post_id='{$item['store_product_id']}' AND meta_key='_product_image_gallery'"); // , , , $db->query("DELETE FROM " . _DB_PREFIX_ . "postmeta WHERE post_id='{$item['store_product_id']}' AND meta_key='_thumbnail_id'"); // featured // id obrazku //$db->query("DELETE FROM "._DB_PREFIX_."postmeta WHERE post_id='{$item['store_product_id']}' AND meta_key='_wp_attachment_metadata'"); $position = 0; $img_ids = array(); foreach ($icecat['images'] as $img) { echo "ITEM_ID={$item['store_product_id']} img={$img}\n<br>\n"; $img_ids[] = $this->save_picture_woo($img, $item['store_product_id'], addslashes($icecat['title']), $position); $position++; $logger->LogCron(" - ICECAT UPDATED IMG {$lang_dir} ID={$item['store_product_id']}, {$item['sku']}. {$img}"); } $db->query("INSERT INTO " . _DB_PREFIX_ . "postmeta (post_id, meta_key, meta_value) VALUES ('{$item['store_product_id']}', '_product_image_gallery', '" . implode(",", $img_ids) . "')"); $logger->LogCron(" - ICECAT UPDATED IMG {$lang_dir} ID={$item['store_product_id']}, {$item['sku']}. {$img}"); } } } return true; //$item->status = $item->status == 1 ? "publish" : "draft"; //$db->query("UPDATE `"._DB_PREFIX_."posts` SET `post_status` = '{$item->status}', post_modified = NOW(), post_modified_gmt = NOW() WHERE ID={$item->store_product_id}"); if (false) { /**** IMPORTANT ****/ $this->updateMeta("_sku", $item->sku, $item->store_product_id); $this->updateMeta("_weight", $item->weight, $item->store_product_id); $this->updateMeta("_length", $item->length, $item->store_product_id); $this->updateMeta("_height", $item->height, $item->store_product_id); $this->updateMeta("_width", $item->width, $item->store_product_id); // $this->updateMeta("_product_attributes", "a:0:{}", $item->store_product_id); $this->updateMeta("_price", $item->price, $item->store_product_id); $this->updateMeta("_regular_price", $item->price, $item->store_product_id); $this->updateMeta("_sale_price", $item->price, $item->store_product_id); $this->updateMeta("_stock", "", $item->store_product_id); $this->updateMeta("_visibility", "visible", $item->store_product_id); $this->updateMeta("_stock_status", "instock", $item->store_product_id); $this->updateMeta("_weight", $item->weight, $item->store_product_id); $this->updateMeta("_length", $item->length, $item->store_product_id); $this->updateMeta("_height", $item->height, $item->store_product_id); $this->updateMeta("_width", $item->width, $item->store_product_id); } if (false) { $db->query("DELETE FROM " . _DB_PREFIX_ . "term_relationships WHERE object_id={$item->store_product_id}"); foreach ($item->category_ids as $c) { $db->query("INSERT INTO " . _DB_PREFIX_ . "term_relationships (object_id, term_taxonomy_id) VALUES ({$item->store_product_id}, {$c})"); $this->counts[$c] = $this->counts[$c] + 1; } } }