%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); } } }