%PDF- %PDF-
| Direktori : /home/waritko/import-prestashop/ |
| Current File : //home/waritko/import-prestashop/Kosmas.php |
<?php
/**
* Created by PhpStorm.
* User: Ludek
* Date: 11. 10. 2016
* Time: 8:46
*/
class Kosmas extends Nakladatel
{
public $zanryPrevod = array();
public $pocitadlo;
public $pocitadloKolikZpracuji;
public $typProduktu = array(
"BA"=>"kniha, vazba není určena","BB"=>"kniha, šitá vazba","BC"=>"kniha, brožovaná vazba","BD"=>"kniha, vázaná vazba",
"BE"=>"kniha, kroužková vazba","BF"=>"kniha, lístková vazba","BO"=>"kniha, sešitová vazba","AB"=>"NE - magnetofonová kazeta",
"AC"=>"CD","AI"=>"DVD","AE"=>"NE - LP, SP","CA"=>"mapa","DB"=>"NE - CD-ROM","PC"=>"kalendář","PD"=>"NE - hrací karty",
"VJ"=>"NE - VHS kazeta","ZE"=>"NE - hry"); // pole vazeb knih a typu produktu
public function __construct($timestamp)
{
// Nacti veci z Kosmasu a rozbal je
}
function zpracujData()
{
$this->nactiZanry();
$this->pocitadloKolikZpracuji = 0;
$this->pocitadlo = 0;
if (file_exists('import/kosmas.xml'))
$tituly = simplexml_load_file('import/kosmas.xml');
else
echo " chybi soubor ";
foreach ($tituly->Product as $titul)
{
$this->pocitadlo = $this->pocitadlo + 1;
// echo " Zpracuj Titul " . (string)$this->pocitadlo . " " . (string)$titul->Title->TitleText . "\n";
$this->zpracujTitul($titul);
$this->pocitadloKolikZpracuji = $this->pocitadloKolikZpracuji + 1;
echo " Zpracoval " . (string)$this->pocitadloKolikZpracuji . " " . date('Y-m-d h:i:s') . " " . (string)$titul->Title->TitleText . " ---------- \n";
// if ($this->pocitadlo > 10)
// break;
}
}
function zpracujTitul($titul)
{
$ean = "";
$isbn = "";
foreach($titul->ProductIdentifier as $identifikace)
{
if((string)$identifikace->ProductIDType == "01")
$id = (string)$identifikace->IDValue;
if((string)$identifikace->ProductIDType == "02")
$isbn = (string)$identifikace->IDValue;
if((string)$identifikace->ProductIDType == "03")
$ean = (string)$identifikace->IDValue;
}
if ($ean == "")
return; // neimportovat, nema ean
// vazba, vylouceni zakazanych druhu, muze byt i vice vazeb u jednoho zbozi
if(isset($titul->ContainedItem))
foreach ($titul->ContainedItem->ProductForm as $formy)
{
$forma = (string)$titul->ContainedItem->ProductForm;
if ($forma <> "")
$vazba=$this->typProduktu[$forma];
else
$vazba = "";
if (substr($vazba,0,2)=="NE") // zakazane typy produktu
return;
}
else
{
$forma = (string)$titul->ProductForm;
if ($forma <> "")
$vazba=$this->typProduktu[$forma];
else
$vazba = "";
if (substr($vazba,0,2)=="NE") // zakazane typy produktu
return;
}
$jazyk = (string)$titul->Language->LanguageCode;
if ($jazyk <> "cze" and $jazyk <> "eng") // zpracovat pouze CZE a eng
return;
$stavVydani = (string)$titul->PublishingStatus;
if ($stavVydani == "08") // nezpracovat tituly, ktere nei mozne objednat
return;
$dostupnost = (string)$titul->SupplyDetail->ProductAvailability;
if ($dostupnost == "40") // nezpracovavat nedostupne tituly
return;
$datumVydani = (string)($titul->PublicationDate);
$rok = intval(substr($datumVydani,0,4));
if ($rok > 2012 or $rok < 2009) // pokud datum vydani pred 2013 nezpracovat
return;
// nacist a nastavit kategorii
$nacteneZanry = array();
foreach($titul->Subject->SubjectCode as $nactenyZanr)
{
$kodZanru = (string)$nactenyZanr;
if ($kodZanru == "397")
return; // neimportovat zanr 397
$zanrMonami = $this->zanryPrevod[$kodZanru];
$zanryVRadku = explode("/", $zanrMonami);
foreach($zanryVRadku as $z1)
{
if (! in_array($z1, $nacteneZanry))
$nacteneZanry[] = $z1;
}
// echo (string)$zanrMonami . " ; ";
}
$knizka = null;
$prestaId = $this->eanToId($ean);
/*
if(!$prestaId)
{
// Nova kniha
$knizka = new Kniha(false);
}
else if(strstr($prestaId->importId, 'KOS'))
{
// Update
$knizka = new Kniha($prestaId->id);
}
else return;
*/
if(!$prestaId)
{
// Nova kniha
$knizka = new Kniha(false);
}
else
{
// Update
$knizka = new Kniha($prestaId->id);
}
// Nastav data knihy
$knizka->nastavKategorii($nacteneZanry);
// $nazev = iconv('CP1250', 'utf-8', (string)$titul->Title->TitleText);
$nazev = (string)$titul->Title->TitleText;
$knizka->nastavNazev($nazev);
$txt = '';
foreach($titul->Contributor as $autor)
{
if((string)$autor->ContributorRole == "A01")
$txt .= ($txt != '' ? "; " : "") . (string)$autor->PersonName;
}
// $txt = iconv('CP1250', 'utf-8', $txt);
$knizka->nastavAutor($txt);
$knizka->nastavStran((string)$titul->NumberOfPages);
$datumVydani = substr($datumVydani,0,4) . "-" . substr($datumVydani,4,2) . "-" . substr($datumVydani,6,2);
$knizka->nastavKdyVydano($datumVydani);
$knizka->nastavImportId((string)$titul->id);
$knizka->nastavISBN($isbn);
// $vazba = iconv('CP1250', 'utf-8', $vazba);
$knizka->nastavVazbu($vazba);
$nakladatel = (string)$titul->Publisher->Publishername;
// $nakladatel = iconv('CP1250', 'utf-8', $nakladatel);
$knizka->nastavNakladatel($nakladatel);
$knizka->nastavEAN((string)$ean);
$anotace = (string)$titul->OtherText->Text;
// $anotace = iconv('CP1250', 'utf-8', $anotace);
$knizka->nastavAnotaci($anotace);
$prodejniCena = intval((string)$titul->SupplyDetail->Price->TaxableAmount1);
$knizka->nastavCenu($prodejniCena);
$knizka->nastavDph((string)$titul->SupplyDetail->Price->TaxRatePercent1);
$nakcen = sprintf("%0.2f", $prodejniCena/1.3);
$knizka->nastavNakupniCenu($nakcen);
$knizka->nastavImportId($id);
// dostupnost, novinka, dotisk
if ($dostupnost == "21" or $dostupnost == "22")
$knizka->nastavDostupnostPozdeji('Skladem u dodavatele');
elseif ($dostupnost == "33")
$knizka->nastavDostupnostPozdeji('Dotisk - Novinka');
else
$knizka->nastavDostupnostPozdeji('NEDOSTUPNÉ');
$aktivni = True;
$knizka->nastavJeliAktivni($aktivni);
$knizka->nastavDostupnost($datumVydani);
if(isset($titul->Reissue))
{
$datumPredpoklad = (string)$titul->Reissue->ReissueDate;
$datumPredpoklad = substr($datumPredpoklad,0,4) . "-" . substr($datumPredpoklad,4,2) . "-" . substr($datumPredpoklad,6,2);
$knizka->nastavDostupnost($datumPredpoklad);
$knizka->nastavDostupnostPozdeji('Připravovaný Dotisk');
}
$url = "";
foreach($titul->MediaFile as $obrazek)
{
if((string)$obrazek->MediaFileTypeCode == "04")
$url = (string)$obrazek->MediaFileLink;
}
$knizka->nastavURLObrazku($url);
// Uloz knizku
$knizka->uloz();
}
function nactiZanry()
{
if (($handle = fopen('genreskos.csv', 'r')) !== FALSE)
{
while (($radek = fgetcsv($handle, 0, ";")) !== FALSE)
{
$this->zanryPrevod[(string)$radek[0]] = (string)$radek[1];
}
fclose($handle);
}
}
}