$v) $result[] = json_encode($k).':'.json_encode($v); return '{' . join(',', $result) . '}'; } } } function extractNumber($str) { return intval(preg_replace('/[^0-9]*/','',trim($str))); } function extractPrice($str) { return floatval(str_replace(',','.',preg_replace('/[^0-9,.]*/', '', trim($str)))); } function import_price_file($file) { $line_sep = "\n"; $col_Sep = ";"; $data = file_get_contents($file); $lines = explode($line_sep, $data); $titles = array_shift($lines); $titles = explode($col_Sep, $titles); $dealers_from = 7; $dealers_ids = array(); $dealer_ids = array_slice($titles, $dealers_from); foreach ($dealer_ids as $idx => $did) { $dealers_ids[$idx] = extractNumber($did); } $DB = Core_Database::getInstance(); $DB -> exec("TRUNCATE TABLE catalog_dealer_prices"); $rownr = 0; $colnr = 0; $sqls = array(); foreach ($lines as $line) { $line = explode($col_Sep, $line); if (!empty($line) && !empty($line[0])) { $id = intval($line[0]); //$avr_1 = $this -> extractPrice($line[1], 2); //$avr_2 = $this -> extractPrice($line[2], 2); //$avr_3 = $this -> extractPrice($line[3], 2); $catalog_eur_no_vat = extractPrice($line[4], 2); $price_w_vat = extractPrice($line[2],2); $sale_price = extractPrice($line[4],2); $pr = $price_w_vat; $s_price = intval($sale_price * 100); $c_price = intval($pr * 100); if ($s_price != $c_price) { $sale = 1; } else { $sale = 0; } /* $pr = intval(($price_w_vat - ($price_w_vat*0.25))); if ($pr > 0) { $pr-=0.10; } */ $DB -> Exec("UPDATE catalog SET catalog_eur_no_vat = '".$catalog_eur_no_vat."', sale=".$sale.", sale_price='".$sale_price."', catalog_lvl_vat = '".$pr."' WHERE id = ".intval($id)); $dealer_price = array_slice($line, $dealers_from); foreach ($dealers_ids as $idx => $dealer_id) { $price = extractPrice($dealer_price[$idx]); $dealer_id = extractNumber($dealer_id); if ($price) { //$par = array('pid'=>$id, 'dealerid' => $dealer_id, 'price'=>$price); //$this -> db -> exec("INSERT INTO catalog_dealer_prices SET pid = &pid, //dealerid = &dealerid, price = &price", $par); $sqls[] = "(".intval($id).",".intval($dealer_id).",'".$price."')"; if (count($sqls) >= 500) { $DB->exec("REPLACE INTO catalog_dealer_prices(pid, dealerid, price) VALUES ".implode(',',$sqls)); $sqls = array(); } } } } } } function import_data_file($file) { $data = file_get_contents($file); $processed = 0; $skipped = 0; $stock_from = 21; $stock_to = 30; $keyValueMap = array ( 'id' => 0, 'title' => 1, 'brand'=> 2, 'model' => 4, 'model_name' => 3, 'season'=>5, 'catalog_eur_no_vat' => 6, 'catalog_lvl_vat' => 7, 'gt_code' => 8, 'producer_code' => 9, 'p_lt' => 10, 's_w' => 11, 'sr' => 12, 'r' => 13, 'rim' => 14, 'commercial' => 15, 'add_sp' => 16, 'ply_rate' => 17, 'li_si' => 18, 'compound' => 19, 'category' => 20, 'sale' => 31, ); $lines = explode("\n", $data); $DB = Core_Database::getInstance(); $C = Core_Config::getInstance(); $DB -> exec("DELETE FROM catalog WHERE locked = 0"); $DB -> exec("DELETE FROM catalog_categories"); if (!empty($lines)) { $first = array_shift($lines); $titles = explode(';', $first); /* Fetch stock titles */ $stock_titles = array_slice($titles, $stock_from, ($stock_to-$stock_from)+1); $st=array(); foreach ($stock_titles as $st_t) { $st_t = trim($st_t); if ($st_t) { $st[] = $st_t; } } $stock_titles = $st; $C -> set('stock_titles', $stock_titles); /* Search for categories by its name */ $categories = array(); $cat_ids = array(); foreach ($lines as $line) { $line = str_replace('"','',$line); $line = explode(';', $line); if (!empty($line[0])) { $categories['brand'][$line[$keyValueMap['brand']]] = $line[$keyValueMap['brand']]; $categories['category'][$line[$keyValueMap['category']]] = $line[$keyValueMap['category']]; $categories['season'][$line[$keyValueMap['season']]] = $line[$keyValueMap['season']]; } } foreach ($categories as $type => $vals) { foreach ($vals as $val) { $found = $DB -> Exec("SELECT id FROM catalog_categories WHERE type = '".$DB->Escape($type)."' AND val = '".$DB->Escape($val)."'"); if (!$DB -> count($found)) { $DB -> Exec("INSERT INTO catalog_categories SET type = '".$DB->Escape($type)."', val = '".$DB->Escape($val)."'"); $cat_id = $DB -> lastId(); $cat_ids[$type][$val] = $cat_id; } else { $r = $DB -> Fetch($found); $cat_ids[$type][$val] = $r['id']; } } } /* Process lines */ foreach ($lines as $line) { $line = str_replace('"','',$line); $line = explode(';', $line); if (!empty($line[0])) { $processed++; $pid = intval($line[$keyValueMap['id']]); $brand = $cat_ids['brand'][$line[$keyValueMap['brand']]]; if ($brand == '0') { continue; } $category = $cat_ids['category'][$line[$keyValueMap['category']]]; $season = $cat_ids['season'][$line[$keyValueMap['season']]]; $search_str = Tools_Text::numOnly($line[$keyValueMap['s_w']].$line[$keyValueMap['sr']].$line[$keyValueMap['rim']]); /* Fetch stocks */ $stock_sum = 0; $stocks = array_slice($line, $stock_from, $stock_to); $stock = array(); $DB -> exec("DELETE FROM catalog_stock WHERE pid = ".$pid); foreach ($stock_titles as $idx => $st_t) { if (isset($stocks[$idx])) { $val = intval($stocks[$idx]); if ($val) { $DB-> exec("INSERT IGNORE INTO catalog_stock SET pid = '".$pid."', idx = '".$idx."', val = '".$val."'"); } $stock_sum += $val; } } $img = str_replace(' ','',strtolower($line[$keyValueMap['model_name']])); $line[$keyValueMap['s_w']] = str_replace(',','.',$line[$keyValueMap['s_w']]); $line[$keyValueMap['sr']] = str_replace(',','.',$line[$keyValueMap['sr']]); $line[$keyValueMap['r']] = str_replace(',','.',$line[$keyValueMap['r']]); $line[$keyValueMap['rim']] = str_replace(',','.',$line[$keyValueMap['rim']]); $params = array ( 'id' => $pid, 'title' => trim($line[$keyValueMap['title']]), 'gt_code' => trim($line[$keyValueMap['gt_code']]), 'producer_code' => $line[$keyValueMap['producer_code']], 'brand' => $brand, 'category' => $category, 'season' => $season, 'p_lt' => $line[$keyValueMap['p_lt']], 's_w' => floatval($line[$keyValueMap['s_w']]), 'sr' => floatval($line[$keyValueMap['sr']]), 'r' => $line[$keyValueMap['r']], 'rim' => floatval($line[$keyValueMap['rim']]), 'commercial' => !empty($line[$keyValueMap['commercial']]) ?1:0, 'add_sp' => $line[$keyValueMap['add_sp']], 'ply_rate' => $line[$keyValueMap['ply_rate']], 'li_si' => $line[$keyValueMap['li_si']], 'compound' => $line[$keyValueMap['compound']], 'model' => $line[$keyValueMap['model']], 'model_name' => $line[$keyValueMap['model_name']], 'search_str' => $search_str, 'image_imported'=> $img, 'stock_sum' => $stock_sum, 'sale' => intval($line[$keyValueMap['sale']]) ); /* echo '
';
				var_dump($line[$keyValueMap['s_w']]);
				var_dump($params);
				echo '
'; echo '
'; */ $keys = "sale=".$params['sale'].",gt_code = '".$params['gt_code']."', title='".$DB->Escape($params['title'])."', producer_code='".$params['producer_code']."',category='".$params['category']."', brand = '".$params['brand']."', season = '".$params['season']."', p_lt = '".$params['p_lt']."', s_w = '".$params['s_w']."',sr = '".$params['sr']."', r='".$params['r']."', rim = '".$params['rim']."', commercial = '".$params['commercial']."', add_sp = '".$params['add_sp']."', ply_rate = '".$params['ply_rate']."', li_si = '".$params['li_si']."', compound = '".$params['compound']."', model = '".$DB->Escape($params['model'])."', model_name='".$DB->Escape($params['model_name'])."', search_str = '".$params['search_str']."', image_imported = '".$DB->Escape($params['image_imported'])."', stock_sum = '".$params['stock_sum']."'"; $sql = "INSERT IGNORE INTO catalog SET id = ".$pid.", ".$keys." ON DUPLICATE KEY UPDATE ".$keys; $r = $DB -> exec($sql, $params); $id = $DB -> lastId(); $DB -> Exec("UPDATE catalog SET stock_sum = (SELECT SUM(`val`) FROM catalog_stock WHERE pid = ".$id.") WHERE id = ".$id); } } $DB -> exec("DELETE FROM `catalog` WHERE (gt_code ='' AND title='') OR title='/' OR title = '0/ 00'"); $DB -> exec("DELETE FROM `catalog_categories` WHERE val = '0' OR val=''"); } }