Revision 1668 | Blame | Vergleich mit vorheriger | Letzte Änderung | Log anzeigen | RSS feed
<?phpnamespace 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/*requiredtrue: Wert muss vorhanden seinfalse: Wert muss nicht vorhanden seinstring: Ausdruck muss string ergeben*/if ( is_bool( $required ) ){if ( ( $required === true ) && ( !$col ) ){continue 2;}}else{if ( !@eval( $required ) ){continue 2;}}$buffer[] = $quote . $col . $quote;} // foreachfwrite( $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;}}