%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/waritko/import-prestashop/
Upload File :
Create Path :
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);
        }
    }
}

Zerion Mini Shell 1.0