· 6 years ago · Jul 17, 2019, 06:04 AM
1<?php
2ini_set('display_errors', E_ALL); error_reporting(E_ALL);
3ini_set("memory_limit", "256M"); ini_set("max_execution_time", "1000");
4ini_set('default_socket_timeout', 300); //date_default_timezone_set('Europe/Prague');
5
6define("IMPORT_PLATFORM", "PRESTASHOP");
7define("IMPORT_PATH", "ib2b");
8define("FEED_MAX_HOURS_OLD", 24 * 30);
9define("ID_LANG", 1 );
10
11$iconf['AdminLang'] = "cz";
12
13$iconf['SettingsPerCategory'] = array(
14 "MarĹľe" => array("code" => "MARGIN", "default" => "", "class" => "SettingsPerCategory", "size" => 2),
15// "Shipping time" => array("code" => "SHIPPING_TIME", "default" => "", "class" => "SettingsPerCategory", "size" => 20),
16// "Margin profit factor" => array("code" => "MARGIN_PROFIT_FACTOR", "default" => "", "class" => "SettingsPerCategory", "size" => 1),
17// "Margin Wholesale" => array("code" => "MARGIN_WHOLESALE", "default" => "", "class" => "SettingsPerCategory", "size" => 2),
18// "Default height" => array("code" => "DEFAULT_HEIGHT", "default" => "", "class" => "SettingsPerCategory", "size" => 2),
19);
20
21$iconf['SettingsBoxes'] = array(
22// "Not synced products price" => array("code" => "NOTSYNCEDPRODUCTPRICE", "default" => ""),
23// "Don't update price for following SKU" => array("code" => "NOTSYNCEDPRODUCTPRICE", "default" => ""),
24// "Neaktualizovat nazev [Kód na řádek]" => array("code" => "DONTUPDATETITLE", "default" => ""),
25// "MarĹľe pro kategorie" => array("code" => "CATEGORYMARGIN", "default" => ""),
26 "Neaktualizovat popis [Kód na řádek]" => array("code" => "DONTUPDATEDESC", "default" => ""),
27 "Deaktivovat produkty [Kód na řádek]" => array("code" => "DEACTIVATESKU", "default" => ""),
28// "Rules for Generating Product Title" => array("code" => "NOTSYNCEDPRODUCTPRICE", "default" => ""),
29 // Settings::CustomFilter($a, $this->import_settings["GENERATE_DESC_RULES"]); => {MFG} {Model}
30// "Profit Margins per price ranges" => array("code" => "MARGINS_PER_PRICE_RANGES", "default" => "0"),
31// "Max. margin profit" => array("code" => "MAX_MARGIN_PROFIT", "default" => "0"),
32// "Discount per manufacturer" => array("code" => "DISCOUNT_PER_MANUFACTURER", "default" => "0"),
33// "Disable/Don't update following products" => "DISABLED_PRODUCTS",
34
35// "Náhrada textu v popisku" => array("code" => "DISCOUNT_PER_MANUFACTURER", "default" => "0"),
36// "NastavenĂ ceny dle rozsahu" => array("code" => "DISCOUNT_PER_MANUFACTURER", "default" => "0"),
37// "MarĹľe dle ceny produktu" => array("code" => "MARGINS_PER_PRICE_RANGES", "default" => "0"),
38 "Vypnout marĹľe pro tyto produkty" => array("code" => "DISABLEMARGINFORSKU", "default" => ""),
39 "Pevně definovaná cena" => array("code" => "FIXPRICE", "default" => ""),
40 "PevnÄ› definovane mnozstvi na sklade" => array("code" => "FIXQTY", "default" => ""),
41 "Aktualizace dostupnostĂ [ANO/NE]" => array("code" => "UPDATEONLYSTOCK", "default" => "ANO"),
42 "Aktualizace VOC [ANO/NE]" => array("code" => "UPDATEWHOLESALEPRICE", "default" => "ANO"),
43 "Aktualizace MOC [ANO/NE]" => array("code" => "UPDATEPRICE", "default" => "ANO"),
44 "Globálnà marže" => array("code" => "GLOBALMARGIN", "default" => "0"),
45);
46//$iconf['SettingsBoxes'] = array();
47
48$iconf['SettingsCategoryProducts'] = array(
49// "Exclude from Category Mapping" => array("code" => "EXCLUDE_FROM_CATEGORY_MAPPING", "icon" => "exclude.png", "help" => "It allows you to define for which items the update of Product <-> Category relation is skipped."),
50);
51
52register_shutdown_function('fatal_handler');
53//set_error_handler('my_error_handler');
54//error_fatal(E_ALL^E_NOTICE); // will die on any error except E_NOTICE
55function fatal_handler() {
56 global $logger;
57 $error = error_get_last();
58 //if( $error !== NULL) $logger->LogCron(" FATAL ERROR - {$error["type"]}, {$error["message"]}, {$error["file"]}, row: {$error["line"]}");
59}
60
61$str_to_remove = @$str_to_remove ? $str_to_remove : basename($_SERVER['SCRIPT_FILENAME']); //settings/ajax.php
62define("IMPORT_ABS_PATH", str_replace(IMPORT_PATH . "/" . $str_to_remove, "", @$_SERVER['SCRIPT_FILENAME']));
63define("IMPORT_BASE_URL", str_replace(IMPORT_PATH . "/" . $str_to_remove, "", 'http://' . @$_SERVER['HTTP_HOST'] . @$_SERVER['SCRIPT_NAME']));
64
65$arg = @$_SERVER['QUERY_STRING'];
66$VendorID = current(explode("-", $arg));
67
68
69include("assets/assets.php");
70include("classes/Settings.class.php");
71include("classes/ImpLib.class.php");
72
73define("CATEGORY_MAPPING_URL", IMPORT_BASE_URL . IMPORT_PATH . '/?'.$VendorID.'-conf');
74define("CATEGORY_MAPPING_URL_AJAX", IMPORT_BASE_URL . IMPORT_PATH . '/settings/ajax.php?'.$VendorID.'-conf');
75define("FEED_PATH",IMPORT_ABS_PATH . "/ib2b-feeds/" . $VendorID . "/");
76define("TXT_PRICES",IMPORT_ABS_PATH . "/txt/ceny-zbozi.txt");
77@mkdir(FEED_PATH, 0777, true);
78//ImpLib::rrmdir(FEED_PATH);rmdir(FEED_PATH); echo "X "; exit;
79@mkdir(IMPORT_ABS_PATH . IMPORT_PATH."/logs/");
80$logger = new KLogger ( IMPORT_ABS_PATH . IMPORT_PATH."/logs/".@date("Y-m-d").".txt" , KLogger::CRON );
81
82if ($arg == $VendorID) {
83 $do = "sync";
84}
85
86if (strpos($arg, "conf")) {
87 $AUTOMAP = strpos($arg, "automap") ? true:false;
88 // if (!$AUTOMAP) require(IMPORT_ABS_PATH . IMPORT_PATH."/assets/authorize.php");
89 $do = "conf";
90}
91
92if (strpos($arg, "images")) {
93 $do = "images";
94}
95
96if (strpos($arg, "pix")) {
97 $do = "pix";
98}
99
100if (IMPORT_PLATFORM == "PRESTASHOP") {
101 require(IMPORT_ABS_PATH . '/config/settings.inc.php');
102 require(IMPORT_ABS_PATH . IMPORT_PATH . "/classes/Presta15Conn.class.php");
103 define("ID_CATEGORY_ROOT", 2);
104 define("IMPORT_PRODUCT_ATTRIBUTE_TABLE", "imported_attribute");
105 function getImportedLangs() { return array("CZ" => 1 ); } // for icecat, createcat.
106 $imported_langs = getImportedLangs(); // presta15conn createcat.
107 define("ID_SHOP", 1 );
108 define("ID_SHOP_GROUP", 0 );
109 define("SUPPLIER_ID", '3' );
110 define("ID_TAX_RULES_GROUP", 1 );
111 define("PS_OUT_OF_STOCK", 2);
112 define("IMAGE_ABS_PATH",IMPORT_ABS_PATH . "img/p/");
113 define("DB_HOSTNAME", _DB_SERVER_);
114 define("DB_USERNAME", _DB_USER_);
115 define("DB_PASSWORD", _DB_PASSWD_);
116 define("DB_DATABASE", _DB_NAME_);
117}
118
119$dbc = @mysql_connect(DB_HOSTNAME, DB_USERNAME, DB_PASSWORD) or die('KO!');
120mysql_select_db(DB_DATABASE) or die('KO!');
121
122//$dbc = mysqli_connect(DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE) ;
123mysql_query('SET NAMES UTF8');
124mysql_query('SET COLLATION_CONNECTION=UTF8_GENERAL_CI'); // echo DB_DATABASE;
125$db = new My_Db($dbc);
126$db->setDb(DB_DATABASE);
127
128//$db->query("SET GLOBAL innodb_lock_wait_timeout = 5000;");
129//$db->query("SET innodb_lock_wait_timeout = 5000;");
130
131
132if (mysql_num_rows(mysql_query("SHOW TABLES LIKE 'imported'")) != 1) {
133 echo DB_HOSTNAME ."/". DB_DATABASE ."/".DB_USERNAME ."/". DB_PASSWORD . " | " ;
134 echo "<a target='_blank' href='/ib2b/assets/adminer.php?username=".DB_USERNAME."/".DB_PASSWORD."&db=".DB_DATABASE."&server=".DB_HOSTNAME."'>ADMINER</a><br><br>DB Tables installed.";
135 installSQL();
136}
137
138$logger->LogCron("$VendorID START {$_SERVER['SCRIPT_FILENAME']} (mem=".ini_get("memory_limit").", max_exec_time=".ini_get("max_execution_time")."s, DNS=".@gethostbyaddr($_SERVER['REMOTE_ADDR']).")");
139
140include(IMPORT_ABS_PATH . IMPORT_PATH . "/classes/Feed_{$VendorID}.class.php");
141$b2b = new $VendorID;
142$b2b->identificator = $VendorID;
143
144if (strpos($arg, "sdsd")) { // not used
145 require(IMPORT_ABS_PATH . "/". IMPORT_PATH."/assets/authorize.php");
146 exit;
147}
148
149$b2b->help = Settings::parseExtConf(file_get_contents(IMPORT_ABS_PATH . IMPORT_PATH . "/settings/lang_{$iconf['AdminLang']}.ini"), '', true);
150
151function _t($translate) {
152 global $b2b;
153 if (isset($b2b->help[$translate])) return $b2b->help[$translate];
154 return $translate;
155}
156
157
158function installSQL() {
159 global $db;
160 $db->query("
161 CREATE TABLE IF NOT EXISTS `import_settings` (
162 `id` int(11) NOT NULL AUTO_INCREMENT,
163 `supplier_id` varchar(50) NOT NULL,
164 `name` varchar(100) NOT NULL,
165 `value` longtext NOT NULL,
166 `supplier` varchar(100) NOT NULL,
167 PRIMARY KEY (`id`)
168 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
169 ");
170
171 $db->query("CREATE TABLE IF NOT EXISTS `import_category_settings` (
172 `feed_category_id` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
173 `store_category_id` int(11) DEFAULT NULL,
174 `margin` int(11) DEFAULT NULL,
175 `supplier_id` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL
176 ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
177 ") ;
178
179 $db->query("CREATE TABLE IF NOT EXISTS `imported` (
180 `id` int(11) NOT NULL AUTO_INCREMENT,
181 `sku` varchar(200) NOT NULL,
182 `manufacturer` varchar(200) NOT NULL,
183 `manufacturer_sku` varchar(200) NOT NULL,
184 `ean` varchar(20) NOT NULL,
185 `shop_status` varchar(20) NOT NULL,
186 `store_product_id` int(11) NOT NULL,
187 `supplier` varchar(30) NOT NULL,
188 `processed` tinyint(1) NOT NULL,
189 `date_add` datetime NOT NULL,
190 `date_update` datetime NOT NULL,
191 PRIMARY KEY (`id`),
192 UNIQUE `sku` (`sku`),
193 KEY `store_product_id` (`store_product_id`),
194 KEY `shop_status` (`shop_status`)
195 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=0 ;");
196
197 $db->query("CREATE TABLE `import_product_settings` (
198 `sku` varchar(50) NOT NULL,
199 `imported` int(11) NOT NULL,
200 `category_feed_id` varchar(50) NOT NULL,
201 `supplier` varchar(20) NOT NULL,
202 UNIQUE KEY `sku_category_feed_id` (`sku`,`category_feed_id`),
203 KEY `imported` (`imported`),
204 KEY `category_feed_id` (`category_feed_id`)
205 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
206 ") ;
207
208 $db->query("CREATE TABLE `imported_image` (
209 `id_image` int(10) unsigned NOT NULL,
210 `sku` varchar(100) NOT NULL) COMMENT='';") ;
211
212 $db->query("CREATE TABLE `imported_attribute` (
213 `id_product_attribute` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
214 `reference` varchar(255) COLLATE utf8_czech_ci DEFAULT NULL,
215 `supplier` varchar(255) COLLATE utf8_czech_ci DEFAULT NULL,
216 `processed` tinyint(1) DEFAULT '1',
217 PRIMARY KEY (`id_product_attribute`),
218 KEY `reference` (`reference`)
219 ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;");
220
221 $db->query("CREATE TABLE IF NOT EXISTS `import_icecat` (
222 `id` int(11) NOT NULL AUTO_INCREMENT,
223 `sku` varchar(30) NOT NULL,
224 `store_product_id` varchar(30) NOT NULL,
225 `part_number` varchar(30) NOT NULL,
226 `vendor_id` varchar(200) NOT NULL,
227 `ean_upc` varchar(30) NOT NULL,
228 `icecat_state` varchar(25) NOT NULL,
229 `price` int(11) NOT NULL,
230 `date_add` datetime NOT NULL,
231 `date_update` datetime NOT NULL,
232 `shop_status` varchar(30) NOT NULL,
233 `date_update_shop` datetime NOT NULL,
234 `id_icecat` int(11) NOT NULL,
235 `id_lang` int(11) NOT NULL,
236 `icecat_specs` text NOT NULL,
237 PRIMARY KEY (`id`,`part_number`),
238 KEY `sku` (`sku`),
239 KEY `part_number` (`part_number`),
240 KEY `date_update_shop` (`date_update_shop`),
241 KEY `store_product_id` (`store_product_id`),
242 KEY `date_update` (`date_update`)
243 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=0;");
244}