Subversion-Projekte lars-tiefland.laravel_shop

Revision

Revision 1668 | Blame | Vergleich mit vorheriger | Letzte Änderung | Log anzeigen | RSS feed

<?php

    namespace App\Console\Commands;

    use Illuminate\Console\Command;
    use App\Models\Item;
    use App\Models\PriceAgency;

    class dump extends Command
    {
        /**
         * The name and signature of the console command.
         *
         * @var string
         */
        protected $signature = 'command:dump';

        /**
         * The console command description.
         *
         * @var string
         */
        protected $description = 'Erstellt CSV-Dateien für Preisagenturen';

        /**
         * Execute the console command.
         *
         * @return int
         */
        public function handle(): int
        {
            $items = Item::with( 'price', 'medium.medium', "manufacturer" )->where( 'status', 0 )->get();
            $agencies = PriceAgency::where( 'shop_id', $GLOBALS["INI"]["shops_ID"] )->where( "status", "1" )->get();
            foreach ( $agencies as $agency )
            {
                $locked_manufacturers = json_decode( $agency->locked_manufacturers, true );
                $records = 0;
                $content = array();
                $prefix = "";
                $suffix = "";
                $this->info( $agency["name"] );
                if ( !$agency["config"] )
                {
                    $this->warn( "Agentur nicht komplett konfiguriert!" );
                    continue;
                }
                $configFile = storage_path( "config/" ) . $agency["config"];
                if ( !file_exists( $configFile ) )
                {
                    $this->error( "Konfigurationsdatei " . $configFile . " existiert nicht!" );
                    continue;
                }
                require $configFile;
                $fName = basename( parse_url( $agency["csv_url"], PHP_URL_PATH ) );
                $fName = storage_path( "preisagentur" ) . "/" . $fName;
                $f = fopen( $fName, "w" );
                if ( $prefix )
                {
                    fwrite( $f, $prefix . "\n" );
                }
                foreach ( $items as $item )
                {
                    $item->itemLink = "https://www." . env( 'shop' ) . "/" . $item->slug . ".html";
                    $item->path = getPath( $item->directory_id );
                    if ( !count( $item->path ) )
                    {
                        continue;
                    }
                    if ( isset( $from ) && $from )
                    {
                        $item->itemLink .= "?from=" . $from;
                    }
                    $item->herstellerName = "";
                    $item->hersteller_kurzbezeichnung = $item->name;
                    if ( $item->manufacturer )
                    {
                        if ( count( $locked_manufacturers ) && in_array( $item->manufacturer->id, $locked_manufacturers ) )
                        {
                            continue;
                        }
                        $item->herstellerName = $item->manufacturer->name;
                        $item->hersteller_kurzbezeichnung = $item->herstellerName . " " . $item->hersteller_kurzbezeichnung;
                    }
                    if ( !isset( $item->price[0] ) || $item->price[0]->preis < $agency->min_price )
                    {
                        continue;
                    }
                    $item->preis = number_format( $item->price[0]->preis, 2, ',', '.' );
                    $buffer = array();
                    $item->beschreibung_pagentur = $item->description;
                    $item->beschreibung_pagentur = str_replace( " & nbsp;", " ", $item->beschreibung_pagentur );
                    $item->beschreibung_pagentur = str_replace( " < p>", " ", $item->beschreibung_pagentur );
                    $item->beschreibung_pagentur = str_replace( " </p > ", " ", $item->beschreibung_pagentur );
                    $item->beschreibung_pagentur = str_replace( " < li>", "", $item->beschreibung_pagentur );
                    $item->beschreibung_pagentur = str_replace( " </li > ", ", ", $item->beschreibung_pagentur );
                    $item->beschreibung_pagentur = str_replace( " </td > \r\n", " </td > ", $item->beschreibung_pagentur );
                    $item->beschreibung_pagentur = str_replace( "</tr > \r\n", " </tr > ", $item->beschreibung_pagentur );
                    $item->beschreibung_pagentur = str_replace( "<tr > \r\n", " < tr>", $item->beschreibung_pagentur );
                    $item->beschreibung_pagentur = str_replace( " < td>\r\n", " < td>", $item->beschreibung_pagentur );
                    $item->beschreibung_pagentur = str_replace( " </td > \n", " </td > ", $item->beschreibung_pagentur );
                    $item->beschreibung_pagentur = str_replace( "</tr > \n", " </tr > ", $item->beschreibung_pagentur );
                    $item->beschreibung_pagentur = str_replace( "<tr > \n", " < tr>", $item->beschreibung_pagentur );
                    $item->beschreibung_pagentur = str_replace( " < td>\n", " < td>", $item->beschreibung_pagentur );
                    $item->beschreibung_pagentur = str_replace( " </td ></tr ><tr ><td > ", " / ", $item->beschreibung_pagentur );
                    $item->beschreibung_pagentur = str_replace( "</td ><td > ", " - ", $item->beschreibung_pagentur );
                    $item->beschreibung_pagentur = str_replace( "<td > ", "", $item->beschreibung_pagentur );
                    $item->beschreibung_pagentur = str_replace( " </td > ", ", ", $item->beschreibung_pagentur );
                    $item->beschreibung_pagentur = str_replace( '"', '', preg_replace( "/[\r\n\t" . $trenner . "]/", "", strip_tags( $item->beschreibung_pagentur ) ) );
                    $item->beschreibung_pagentur = rtrim( $item->beschreibung_pagentur, ", " );
                    //$item->beschreibung_pagentur = removeSpaces( $item->beschreibung_pagentur, true, true, false );
                    $item->beschreibung_pagentur = preg_replace( "/\s{2,}/", " ", $item->beschreibung_pagentur );
                    $item->kurzbeschreibung_pagentur = substr( $item->beschreibung_pagentur, 0, 200 );
                    $item->beschreibung_pagentur = substr( $item->beschreibung_pagentur, 0, 5000 );
                    foreach ( $content as $c )
                    {
                        list( $col, $required ) = $c;

                        // Inhalt ist vorhanden oder muss ausgewertet werden?
                        if ( isset( $item->$col ) )
                        {
                            $col = $item->$col;
                        }
                        elseif ( !stristr( $col, "return" ) )
                        {
                            $col = "";
                        }
                        else
                        {
                            $col = @eval( $col );
                        }

                        // Inhalt mit required vergleichen
                        /*
                        required
                        true: Wert muss vorhanden sein
                        false: Wert muss nicht vorhanden sein
                        string: Ausdruck muss string ergeben
                        */

                        if ( is_bool( $required ) )
                        {
                            if ( ( $required === true ) && ( !$col ) )
                            {
                                continue 2;
                            }
                        }
                        else
                        {
                            if ( !@eval( $required ) )
                            {
                                continue 2;
                            }
                        }

                        $buffer[] = $quote . $col . $quote;
                    } // foreach
                    fwrite( $f, implode( $trenner, $buffer ) . "\n" );
                    $records++;
                }
                if ( $suffix )
                {
                    fwrite( $f, $suffix . "\n" );
                }
                fclose( $f );
                $agency->records = $records;
                $agency->last_updated_at = date( "Y-m-d H:i:s" );
                $agency->save();
            }
            return Command::SUCCESS;
        }
    }