%PDF- %PDF-
Direktori : /home/waritko/import-presta/ |
Current File : //home/waritko/import-presta/Euromedia.php |
<?php /** * Created by PhpStorm. * User: Ludek * Date: 10. 9. 2016 * Time: 13:40 */ class Euromedia extends Nakladatel { public $anotace = array(); public $dostupnost = array(); public $dostupnostEan = array(); public $zanryPrevod = array(); public $pocitadloKolikZpracuji; private $casoveRazitko = 0; public $published; public $nacetl; public $nacetlDostupnost; public $available_date; public $stareCasoveRazitko; public $f; public function __construct($timestamp) { // system("/bin/bash " . __DIR__ . "/import/euromedia.sh"); $this->stareCasoveRazitko = file_get_contents(__DIR__ . "/import/euromedia_timestamp"); echo "casove razitko - " . $this->stareCasoveRazitko . " \n"; $this->stareCasoveRazitko = (int)$this->stareCasoveRazitko; $tokens = array(); $this->nacetl = True; $this->nacetlDostupnost = True; // $tokens['titul.zip'] = file_get_contents("https://vo.knizniweb.cz/b2bGate?login=367443&password=mon*&synctype=T×tamp=".$stareCasoveRazitko); $tokens['titul.zip'] = file_get_contents("https://vo.knizniweb.cz/b2bGate?login=367443&password=mon*&synctype=T"); $tokens['anotace.zip'] = file_get_contents("https://vo.knizniweb.cz/b2bGate?login=367443&password=mon*&synctype=A"); $tokens['dostupnost.zip'] = file_get_contents("https://vo.knizniweb.cz/b2bGate?login=367443&password=mon*&synctype=D"); foreach ($tokens as $soubor => $token) { $url = "https://vo.knizniweb.cz/b2bGate?login=367443&password=mon*&token=".$token; if($this->downloadZipFile($url, $soubor)) echo "nacetl $soubor \n"; $path = "/tmp"; $path2 = "/data"; $zip = new ZipArchive; $res = $zip->open($soubor); if ($res === TRUE) { $zip->extractTo($path); $zip->extractTo($path2); $zip->close(); echo "povedlo se $soubor rozbalit do $path \n"; } else { echo "Nemohu otevrit soubor $soubor \n"; if ($soubor <> 'dostupnost.zip') $this->nacetl = false; else $this->nacetlDostupnost = false; } } } function zpracujData() { echo " Aktualizace Euromedia -+-+-+- \n"; if (!$this->nacetl) return; $this->nactiZanry(); $this->nactiAnotace(); $this->nactiDostupnost(); if (!$this->nacetl) return; $this->pocitadloKolikZpracuji = 1; $nazev = "/www/varak.net/shop.varak.net/import/vstupy/Euromedia_".date("Ymd").".txt"; $katalog = "/tmp/tituly.xml"; copy($katalog, $nazev); $nazev = "/www/varak.net/shop.varak.net/import/vstupy/Euromedia_d_".date("Ymd").".txt"; $katalog = "/tmp/dostupnost.xml"; copy($katalog, $nazev); $tituly = simplexml_load_file('/tmp/tituly.xml'); // $this->f = fopen("euromed.txt", "w"); foreach ($tituly->titul as $titul) { // $this->zapisRazitko($titul); $this->zpracujTitul($titul); // if ($this->pocitadloKolikZpracuji > 12000) // break; } echo " Zpracoval celkem " . (string)$this->pocitadloKolikZpracuji . " " . date('Y-m-d h:i:s') . " ---------- \n"; echo 'Nove casove razitko: ' . $this->casoveRazitko . " \n"; // fclose($this->f); // file_put_contents(__DIR__ . "/import/euromedia_timestamp", $this->casoveRazitko); } function zapisRazitko($titul) { $id = (string)$titul->id; $ean = (string)$titul->ean; $casoveRazitko = (int)$titul->timestamp; fwrite($this->f, "$ean;$id;$casoveRazitko \n"); } function zpracujTitul($titul) { $dataKnihyImport = array(); $id = (string)$titul->id; $ean = (string)$titul->ean; if (isset($titul->jazyky->jazyk)) // cizojazycne nezpracovavat return; $casoveRazitko = (int)$titul->timestamp; // if ($casoveRazitko < $this->stareCasoveRazitko) // return; $this->casoveRazitko = $casoveRazitko > $this->casoveRazitko ? $casoveRazitko : $this->casoveRazitko; // je v zakazanych kategoriich, nezpracovat $zanr = (string)($titul->zanry->zanr['id']); $typProduktu = (string)($titul->{'typ-produktu'}['id']); $zakazaneTypy = array("81"); $zakazaneKateg = array("4002","4003","4005","4006","4007","5001","5002","5003","5101","5103","5108","5109","5110","5111", "5112","5113","5114","5115","5116","5117","5118","5119","5120","5121","5122","5123","5124"); if(in_array($zanr, $zakazaneKateg)) return; if(in_array($typProduktu, $zakazaneTypy)) return; if($this->dostupnost[$id] == '-1') return; // nedostupne, nezpracovat if((string)($titul->obrazky->velky) == "") return; // bez obrazku, nezpracovat if((int)substr((string)($titul->{'datum-uvedeni'}),0,4) < 2012) return; // starsi nez 2012 neimportovat /*/ jednorazovka pro predobjednavky if(!isset($titul->parametry->predobjednavka)) return; if(isset($titul->parametry->predobjednavka)) { $datumPredpoklad = $titul->parametry->predobjednavka['predpokladane-naskladneni']; $dataKnihyImport['available_date'] = $datumPredpoklad; $textDostupnosti = 'Připravovaný Dotisk / NOVINKA'; } if (substr((string)$datumPredpoklad,0,4) <> 2016 and substr((string)$datumPredpoklad,0,4) <> 2017) return; if (substr((string)$datumPredpoklad,0,4) == 2016 and intval(substr((string)$datumPredpoklad,5,2)) < 8) return; // konec jednorazovky */ // if (intval($titul->id) < 258609) return; // neimportovat stare tituly - pred 2016 $procen = ((double)$titul->{'dpc-aktualni'})/(1 + ((double)$titul->dph / 100)); if ($procen < 50) return; // neimportovat levne knihy pod 50 Kc $knizka = null; $prestaId = $this->eanToId($ean); if(!$prestaId) { // Nova kniha $update = False; $knizka = new Kniha(false); } // else if(strstr($prestaId->importId, 'euromedia-')) else { // Update $update = True; // $knizka = new Kniha($prestaId->id); } // else return; // Nastav data knihy $nazev = trim((string)$titul->nazev); $dataKnihyImport['name'] = $nazev; $dataKnihyImport['meta_title'] = $nazev; $dataKnihyImport['price'] = $procen; $dph = $titul->dph; $kodDPH = $dph == '10' ? 5 : ($dph == '21' ? 1 : ($dph == '15' ? 2 : 3)); $dataKnihyImport['id_tax_rules_group'] = $kodDPH; $nakcen = sprintf("%0.2f", ((double)$titul->{'dpc-aktualni'}) * (100 - ((double)$titul->rabat)) / 100); $dataKnihyImport['wholesale_price'] = $nakcen; $dataKnihyImport['width'] = (int)$titul->rozmer2; $dataKnihyImport['height'] = (int)$titul->rozmer1; $dataKnihyImport['depth'] = (int)$titul->rozmer3; $dataKnihyImport['weight'] = (double)$titul->hmotnost / 1000; $dataKnihyImport['meta_description'] = trim((string)$titul->isbn); $dataKnihyImport['binding'] = trim((string)$titul->{'typ-produktu'}); $dataKnihyImport['pages'] = (int)$titul->{'pocet-stran'}; $dataKnihyImport['publisher'] = trim((string)$titul->nakladatel); $dataKnihyImport['ean'] = $ean; $dataKnihyImport['importId'] = "euromedia-" . (string)$titul->id; $dataKnihyImport['active'] = 1; $dataKnihyImport['published'] = (string)($titul->{'datum-uvedeni'}); $dataKnihyImport['image_link'] = (string)($titul->obrazky->velky); $dataKnihyImport['Kde_dostupne'] = "E"; // nacist a nastavit kategorii $nacteneZanry = array(); if (isset($titul->zanry->zanr)) { foreach($titul->zanry->zanr as $nactenyZanr) { $kodZanru = (string)$nactenyZanr['id']; $zanrMonami = $this->zanryPrevod[$kodZanru]; $zanryVRadku = explode("/", $zanrMonami); foreach($zanryVRadku as $z1) { if (! in_array($z1, $nacteneZanry)) $nacteneZanry[] = $z1; } // echo (string)$zanrMonami . " ; "; } $dataKnihyImport['genres'] = $nacteneZanry; } $txt = ''; foreach($titul->autori as $autor) { $txt .= ($txt != '' ? "; " : "") . (string)$autor->autor; } $dataKnihyImport['author'] = $txt; $anotace = ""; if(isset($this->anotace[$id])) { if (isset($titul->zanry->zanr)) $anotace = (string)$titul->zanry->zanr . " - " . $this->anotace[$id]; if ($txt <> "") $anotace = $this->anotace[$id] . " / " . $txt; } $dataKnihyImport['description'] = $anotace; // dostupnost, novinka, dotisk // $datumNovinka = '0000-00-00'; if(isset($titul->parametry->novinka)) { $datumVydani = (string)($titul->parametry->novinka['datum']); $dataKnihyImport['available_date'] = $datumVydani; $textDostupnosti = 'Novinka'; } else $textDostupnosti = 'Skladem u dodavatele'; // Neni dostupna, oznacit jako nedostupne if($this->dostupnost[$id] == '-1') $textDostupnosti = 'NEDOSTUPNÉ'; if($this->dostupnost[$id] == '1') { if (!isset($titul->parametry->predobjednavka)) $textDostupnosti = 'NEDOSTUPNÉ'; } if(isset($titul->parametry->predobjednavka)) { $datumPredpoklad = $titul->parametry->predobjednavka['predpokladane-naskladneni']; $dataKnihyImport['available_date'] = $datumPredpoklad; $textDostupnosti = 'Připravovaný Dotisk / NOVINKA'; } $dataKnihyImport['available_later'] = $textDostupnosti; if($textDostupnosti == 'NEDOSTUPNÉ') return; // nedostupne, nezpracovat $necoNesedi = False; if (!$update) { // if (intval($titul->id) > 258609) // { $knizka->nastavDataImportu($dataKnihyImport); $knizka->uloz(); // } } else // update zapisem polozek primo na SQL server { $dataKnihySQL = $this->nactiDataSQL($ean); if (!$dataKnihySQL) { echo "nemohu nacist data o knize ze serveru " . $ean . " \n"; $this->pocitadloKolikZpracuji++; return; } // print_r ($dataKnihySQL); $necoNesedi = $this->PorovnejAZapisPamametryKnihy($dataKnihyImport,$dataKnihySQL); } if (!$update or $necoNesedi) { $this->pocitadloKolikZpracuji++; echo (string)$this->pocitadloKolikZpracuji . " " . date('Y-m-d h:i:s') . " " . $nazev . " ----- " . $ean . " ----- \n"; } } function nactiAnotace() { $anotace = simplexml_load_file('/tmp/anotace.xml'); if ($anotace == False) $this->nacetl = False; foreach($anotace->titul as $titul) { $id = (string)$titul['id']; $text = trim((string)$titul); $this->anotace[$id] = $text; } } function nactiDostupnost() { $dostupnost = simplexml_load_file('/tmp/dostupnost.xml'); if ($dostupnost == False) $this->nacetlDostupnost = False; foreach($dostupnost->titul as $titul) { $id = (string)$titul['id']; $text = trim((string)$titul); $ean = (string)$titul['ean']; $this->dostupnost[$id] = $text; if ($ean <> "") $this->dostupnostEan[$ean] = $text; } } function nactiZanry() { $f = file(__DIR__ . '/genres.csv'); foreach($f as $zanr) { list($name, $euroid, $newid) = explode(";", $zanr); if ($name != "zanr") $this->zanryPrevod[$euroid] = $newid; } } function zpracujDostupnost() { if (!$this->nacetlDostupnost) return; $this->pocitadloKolikZpracuji = 0; $kdeDostupne = "E"; $this->nactiDostupnost(); $dnesniDatum = time(); $nula = 1; $updateData = array('active' => $nula); foreach ($this->dostupnostEan as $ean => $dostupnost) { $hodnotyDostupnosti = $this->zjistiDostupnost($ean); if (!$hodnotyDostupnosti) continue; // neni v eshopu $vydaniTimestamp = strtotime($this->published); $mesic = 30*24*60*60; // delka mesice v sekundach if ($dostupnost > 1) $textDostupnosti = 'Skladem u dodavatele'; else if ($dostupnost == 1 and $vydaniTimestamp + $mesic > $dnesniDatum) $textDostupnosti = ('Připravovaný Dotisk / NOVINKA'); else $textDostupnosti = 'NEDOSTUPNÉ'; if ($textDostupnosti <> trim($hodnotyDostupnosti->available_later) and ($kdeDostupne == $hodnotyDostupnosti->Kde_dostupne or $hodnotyDostupnosti->Kde_dostupne == "N" or $textDostupnosti <> 'NEDOSTUPNÉ')) { $this->pocitadloKolikZpracuji++; echo 'E ' . $this->pocitadloKolikZpracuji . "zapsat novou dostupnost pro: " . $ean . " - stavajici: $hodnotyDostupnosti->available_later nova: $textDostupnosti \n"; dibi::update("ps_product_lang", array('available_later' => $textDostupnosti, 'Kde_dostupne' => $kdeDostupne))->where("id_product = %i", $hodnotyDostupnosti->idKnihy)->execute(); } if ($textDostupnosti == 'NEDOSTUPNÉ') dibi::update("ps_product_shop", $updateData)->where("id_product = %i", $hodnotyDostupnosti->idKnihy)->execute(); } echo $this->pocitadloKolikZpracuji . " = celkovy pocet zapsanych zmen dostupnosti \n"; } /* function opravDPH() { $kodDPH = $this->ZjistiKodDPH($ean); if ($kodDPH == 3) { $dph = $titul->dph; $novyKodDPH = $dph == '10' ? 5 : ($dph == '21' ? 1 : ($dph == '15' ? 2 : 3)); $updateData = array('id_tax_rules_group' => $novyKodDPH); dibi::update("ps_product", $updateData)->where("id_product = %i", $this->idKnihy)->execute(); dibi::update("ps_product_shop", $updateData)->where("id_product = %i", $this->idKnihy)->execute(); } return; } */ }