%PDF- %PDF-
Direktori : /home/waritko/import/ |
Current File : //home/waritko/import/euromedia.php |
<?php /** * Created by PhpStorm. * User: waritko * Date: 20.2.16 * Time: 20:18 */ ini_set('memory_limit', '8192M'); function createIdentif($name) { $name = trim($name); //setlocale(LC_CTYPE, 'cs_CZ.UTF8'); $string = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $name); $string = str_replace(' ', '-', $string); $string = preg_replace('/\\s+/', '-', $string); $string = strtolower($string); while(strstr($string, '--')) $string = str_replace('--', '-', $string); $string = preg_replace('~[^-a-z0-9_]+~', '', $string); return $string; } function shortAnot($text) { $length = 200; $length = abs((int)$length); if(strlen($text) > $length) { $text = preg_replace("/^(.{1,$length})(\\s.*|$)/s", '\\1...', $text); } return($text); } function rovnitka() { echo "\n===========================================================================================================================================\n\n===========================================================================================================================================\n\n"; } $ignoredGenres = array( 5001, 5002, 5003, 5101, 5103, 5108, 5109, 5110, 5111, 5112, 5113, 5114, 5115, 5116, 5117, 5118, 5119, 5120, 5121, 5122, 5123, 5124); //include "dibi.min.php"; include "dibi.phar"; dibi::connect(array( 'driver' => 'mysql', 'host' => 'localhost', 'username' => 'monami_shop', 'password' => '1312Lucie', 'database' => 'monami_shop', 'charset' => 'utf8', 'profiler' => [ 'run' => TRUE, 'file' => 'log-' . time() . '.sql', ], )); $rows = array(); $genres = array(); $f = file('genres.csv'); foreach($f as $genre) { list($name, $euroid, $newid) = explode(";", $genre); $genres[$euroid] = explode("/", $newid); } //print_r($genres); //header("Content-Type: text/plain"); $catalog = simplexml_load_file("tituly.xml"); $i = 0; $tstamp = 0; foreach($catalog->titul as $book) { // echo "<pre>"; // print_r($book); $zanr = (string)($book->zanry->zanr['id']); if(in_array($zanr, $ignoredGenres)) continue; if(isset($book->parametry->predobjenavka) && !isset($book->parametry->novinka)) continue; $row = array( 'identif' => createIdentif($book->nazev), 'identif_nouni' => createIdentif($book->nazev), 'nazev' => (string)$book->nazev, 'isbn' => (string)$book->isbn, 'ean' => (string)$book->ean, 'id_pemic' => (string)$book->id, 'nakladatel' => (string)$book->nakladatel, 'edice' => (string)$book->znacka, 'dph' => (string)$book->dph, 'rabat' => (double)$book->rabat, 'wholesale' => sprintf("%0.2f", ((double)$book->{'dpc-aktualni'}) * (100 - ((double)$book->rabat)) / 100), 'cena' => ((double)$book->{'dpc-aktualni'})/(1 + ((double)$book->dph / 100)), 'cena_pohoda' => (string)$book->{'dpc-aktualni'}, 'vazba' => (string)$book->{'typ-produktu'}, 'stran' => (string)$book->{'pocet-stran'}, 'vydano' => (string)$book->{'datum-uvedeni'}, 'vyska' => (int)$book->rozmer1, 'sirka' => (int)$book->rozmer2, 'tloustka' => (int)$book->rozmer3, 'hmotnost' => (double)$book->hmotnost / 1000, 'genre' => $genres[$zanr], // 'id_ktg' => 1, 'obrazek' => (string)($book->obrazky->velky), 'zobraz' => 'Y', 'dostupnost' => 'S' ); if(isset($book->parametry->novinka)) { $row['datumNovinka'] = (string)($book->parametry->novinka['datum']); } if(trim($row['ean']) == '') continue; $txt = ''; foreach($book->zanry as $zanr) { $txt .= ($txt != '' ? "; " : "") . (string)$zanr->zanr; } $txt = trim($txt); $row['info'] = $txt; //$row['anotace'] = "Lorem ipsum dolor sit amet... " . $txt; // $row['id_ktg'] = $genres[$txt]; $txt = ''; foreach($book->autori as $autor) { $txt .= ($txt != '' ? "; " : "") . (string)$autor->autor; } $row['autor'] = $txt; //print_r($row); echo "</pre><br />"; //dibi::test("INSERT INTO [katalog_tmp_euromedia]", $row); //dibi::query("INSERT INTO [katalog_tmp_euromedia]", $row); //echo "<hr />\n"; //echo $row['identif'] . "\n"; //if($i++ > 50) break; if(((int)$book->timestamp) > $tstamp) $tstamp = (int)$book->timestamp; $rows[$row['id_pemic']] = $row; } unset($catalog); $anotations = simplexml_load_file("anotace.xml"); foreach($anotations->titul as $t) { $uid = (string)$t['id']; //echo $uid; $ean = (string)$t['ean']; $text = trim((string)$t); if(isset($rows[$uid])) $rows[$uid]['anotace'] = $text; //dibi::test("UPDATE [katalog_tmp_euromedia] SET [anotace]=%s where [ean]=%s", $text, $ean); //dibi::query("UPDATE [katalog_tmp_euromedia] SET [anotace]=%s where [ean]=%s", $text, $ean); //echo $ean . "\n"; } unset($anotations); $avail = simplexml_load_file("dostupnost.xml"); foreach($avail->titul as $t) { $uid = (string)$t['id']; $ean = (string)$t['id']; $text = trim((string)$t); //dibi::test("UPDATE [katalog_tmp_euromedia] SET [zobraz]=%s where [id_pemic]=%s", $text == '-1' ? 'N' : 'Y', $ean); //dibi::query("UPDATE [katalog_tmp_euromedia] SET [zobraz]=%s where [id_pemic]=%s", $text == '-1' ? 'N' : 'Y', $ean); //dibi::query("UPDATE [katalog] SET [zobraz]=%s where [id_pemic]=%s AND [source]='euromedia'", $text == '-1' ? 'N' : 'Y', $ean); //echo $ean . "\n"; if(isset($rows[$uid])) $rows[$uid]['dostupnost'] = $text; } $imported = 0; foreach($rows as $row) { if($row['dostupnost'] == '-1') continue; if(trim($row['vydano']) == '') continue; $pubtime = strtotime(isset($row['datumNovinka']) ? $row['datumNovinka'] : $row['vydano']); //if($pubtime < 1420070400) continue; // 2016-01-01 00:00:00 //echo "\n\n"; //echo $pubtime; break; $result = dibi::query('SELECT [id_product] FROM [ps_product] WHERE [import_id]=%s', 'euromedia-' . $row['id_pemic']); if(count($result)) continue; echo "===============IMPORTED================\n " . $imported++ . "\n===============IMPORTED================\n"; print_r($row); //continue; ob_start(); echo '<?xml version="1.0" encoding="UTF-8"?>'; //header("Content-Type: text/plain"); ob_start(); ?> <prestashop xmlns:xlink="http://www.w3.org/1999/xlink"> <product> <id_manufacturer>0</id_manufacturer> <id_supplier>0</id_supplier> <id_category_default>3</id_category_default> <new></new> <cache_default_attribute></cache_default_attribute> <id_default_image></id_default_image> <id_default_combination></id_default_combination> <id_tax_rules_group><?php echo $row['dph'] == '10' ? 5 : ($row['dph'] == '21' ? 4 : ($row['dph'] == '15' ? 3 : 2)); ?></id_tax_rules_group> <position_in_category></position_in_category> <type>simple</type> <id_shop_default>1</id_shop_default> <reference></reference> <supplier_reference></supplier_reference> <location></location> <width><?php echo $row['sirka']; ?></width> <height><?php echo $row['vyska']; ?></height> <depth><?php echo $row['tloustka']; ?></depth> <weight><?php echo $row['hmotnost']; ?></weight> <quantity_discount>0</quantity_discount> <ean13><?php echo $row['ean']; ?></ean13> <upc></upc> <cache_is_pack>0</cache_is_pack> <cache_has_attachments>0</cache_has_attachments> <is_virtual>0</is_virtual> <on_sale>0</on_sale> <online_only>0</online_only> <ecotax>0</ecotax> <minimal_quantity>1</minimal_quantity> <price><?php echo sprintf("%0.2f", $row['cena']); ?></price> <wholesale_price><?php echo $row['wholesale']; ?></wholesale_price> <unity>0</unity> <unit_price_ratio>0</unit_price_ratio> <additional_shipping_cost>0</additional_shipping_cost> <customizable>0</customizable> <text_fields>0</text_fields> <uploadable_files>0</uploadable_files> <active><?php echo (isset($row['datumNovinka']) && (strtotime($row['datumNovinka']) > (time() + 3600*24*10)) && ($row['datumNovinka'] != '0000-00-00')) ? '0' : '1'; ?></active> <redirect_type>404</redirect_type> <id_product_redirected>0</id_product_redirected> <available_for_order>1</available_for_order> <available_date><!-- treba pridat datum kdy bude dostupna --><?php if(isset($row['datumNovinka'])) echo $row['datumNovinka']; ?></available_date> <condition>new</condition> <show_price>1</show_price> <indexed>1</indexed> <visibility>both</visibility> <advanced_stock_management>0</advanced_stock_management> <date_add></date_add> <date_upd></date_upd> <pack_stock_type>3</pack_stock_type> <author><![CDATA[<?php echo $row['autor']; ?>]]></author> <import_id>euromedia-<?php echo $row['id_pemic']; ?></import_id> <publisher><![CDATA[<?php echo $row['nakladatel']; ?>]]></publisher> <pages><?php echo $row['stran']; ?></pages> <binding><![CDATA[<?php echo $row['vazba']; ?>]]></binding> <published><?php echo isset($row['datumNovinka']) ? $row['datumNovinka'] : $row['vydano']; ?></published> <image_link><![CDATA[<?php echo $row['obrazek']; ?>]]></image_link> <meta_description maxSize="255" format="isGenericName"> <language id="1"><?php echo $row['isbn']; ?></language> </meta_description> <meta_keywords> <language id="1"></language> </meta_keywords> <meta_title> <language id="1"><![CDATA[<?php echo $row['nazev']; ?>]]></language> </meta_title> <link_rewrite> <language id="1"><?php echo $row['identif']; ?></language> </link_rewrite> <name> <language id="1"><![CDATA[<?php echo $row['nazev']; ?>]]></language> </name> <description> <language id="1"><![CDATA[<?php echo $row['anotace']; ?>]]></language> </description> <description_short> <language id="1"><![CDATA[<?php echo shortAnot($row['anotace']); ?>]]></language> </description_short> <available_now> <language id="1">Zboží je skladem</language> </available_now> <available_later> <language id="1"><![CDATA[<?php echo $row['dostupnost'] == '1' ? 'Připravovaný DOTISK, NOVINKA' : 'Skladem u dodavatele'; ?>]]></language> </available_later> <associations> <categories nodeType="category" api="categories"> <category> <id>2</id> </category> <?php foreach($row['genre'] as $genre) { ?> <category> <id><?php echo $genre; ?></id> </category> <?php } ?> </categories> <!-- <images nodeType="image" api="images"> <image> <id></id> </image> </images> --> <images nodeType="image" api="images" /> <combinations nodeType="combination" api="combinations" /> <product_option_values nodeType="product_option_value" api="product_option_values" /> <!-- <product_features nodeType="product_feature" api="product_features"> <product_feature> <id required="true"></id> <id_feature_value xlink:href="https://shop.varak.net/api/product_feature_values/" required="true"></id_feature_value> </product_feature> </product_features> --> <product_features nodeType="product_feature" api="product_features" /> <tags nodeType="tag" api="tags" /> <stock_availables nodeType="stock_available" api="stock_availables" /> <accessories nodeType="product" api="products" /> <product_bundle nodeType="product" api="products" /> </associations> </product> </prestashop><?php $xmlData = ob_get_clean(); //echo $xmlData; echo "\n===========================================================================================================================================\n\n===========================================================================================================================================\n\n"; //die; // POST $ch = curl_init("https://5XT188LXZSCUBLWKXRWWW6CJTAL5TJBP@shop.varak.net/api/products/"); //set the url, number of POST vars, POST data curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_POSTFIELDS, $xmlData); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Type: text/xml', 'Content-Length: ' . strlen($xmlData)) ); //execute post $result = curl_exec($ch); //close connection curl_close($ch); //echo $result; $xmlObj = simplexml_load_string($result, null, LIBXML_NOCDATA); //rovnitka(); //print_r($xmlObj); //rovnitka(); $prestaId = (string) $xmlObj->product->id; $img = file_get_contents($row['obrazek']); $fname = "/tmp/" . uniqid() . ".jpg"; file_put_contents($fname, $img); //echo "/usr/bin/curl -X POST -F image=@$fname https://5XT188LXZSCUBLWKXRWWW6CJTAL5TJBP@shop.varak.net/api/images/products/$prestaId/"; exec("/usr/bin/curl -X POST -F image=@$fname https://5XT188LXZSCUBLWKXRWWW6CJTAL5TJBP@shop.varak.net/api/images/products/$prestaId/ 2>&1 "); unlink($fname); echo $row['autor'] . " - " . $row['nazev'] . "\n"; //if($imported++ > 2) break; } /*if($tstamp > 0) file_put_contents("update/timestamp", $tstamp); unset($catalog); $anotations = simplexml_load_file("update/anotace.xml"); foreach($anotations->titul as $t) { $ean = (string)$t['ean']; $text = trim((string)$t); //dibi::test("UPDATE [katalog_tmp_euromedia] SET [anotace]=%s where [ean]=%s", $text, $ean); dibi::query("UPDATE [katalog_tmp_euromedia] SET [anotace]=%s where [ean]=%s", $text, $ean); //echo $ean . "\n"; } unset($anotations); $avail = simplexml_load_file("update/dostupnost.xml"); foreach($avail->titul as $t) { $ean = (string)$t['id']; $text = trim((string)$t); //dibi::test("UPDATE [katalog_tmp_euromedia] SET [zobraz]=%s where [id_pemic]=%s", $text == '-1' ? 'N' : 'Y', $ean); dibi::query("UPDATE [katalog_tmp_euromedia] SET [zobraz]=%s where [id_pemic]=%s", $text == '-1' ? 'N' : 'Y', $ean); dibi::query("UPDATE [katalog] SET [zobraz]=%s where [id_pemic]=%s AND [source]='euromedia'", $text == '-1' ? 'N' : 'Y', $ean); //echo $ean . "\n"; }*/ echo $imported; ?>