%PDF- %PDF-
| Direktori : /www/varak.net/shop.varak.net/import/ |
| Current File : /www/varak.net/shop.varak.net/import/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()
{
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);
}
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;
$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']);
$zakazaneKateg = array("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($this->dostupnost[$id] == '-1') return; // nedostupne, nezpracovat
/*/ 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 knihz 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-'))
{
// 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;
$necoNesedi = False;
if (!$update)
{
$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;
}
*/
}