Ejemplo n.º 1
0
 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;
 }
Ejemplo n.º 2
0
 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;
 }
Ejemplo n.º 3
0
    }
}
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;
Ejemplo n.º 4
0
 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;
         }
     }
 }