112 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			112 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace App\Console\Commands;
 | |
| 
 | |
| use Illuminate\Console\Command;
 | |
| use Illuminate\Support\Facades\DB;
 | |
| use Illuminate\Support\Facades\Storage;
 | |
| use Illuminate\Support\Str;
 | |
| use Carbon\Carbon;
 | |
| use Intervention\Image\Facades\Image;
 | |
| use ImageOptimizer;
 | |
| use App\Models\User;
 | |
| use App\Models\Artist;
 | |
| use App\Models\Artwork;
 | |
| use App\Models\Podcast;
 | |
| use App\Models\Episode;
 | |
| 
 | |
| class ImportMissingLegacyArtworkCommand extends Command
 | |
| {
 | |
|     /**
 | |
|      * The name and signature of the console command.
 | |
|      *
 | |
|      * @var string
 | |
|      */
 | |
|     protected $signature = 'naart:import-legacy-artwork {legacy_artwork_id}';
 | |
| 
 | |
|     /**
 | |
|      * The console command description.
 | |
|      *
 | |
|      * @var string
 | |
|      */
 | |
|     protected $description = 'Used to import a single legacy artwork item that was missed in the migration.';
 | |
| 
 | |
|     /**
 | |
|      * Execute the console command.
 | |
|      */
 | |
|     public function handle()
 | |
|     {
 | |
|         $legacyArtwork = DB::connection('legacy')->table('artworks')->where('id', $this->argument('legacy_artwork_id'))->first();
 | |
|         $legacyEpisode = DB::connection('legacy')->table('episodes')->where('id', $legacyArtwork->episode_id)->first();
 | |
|         dump($legacyEpisode);
 | |
|         dump($legacyArtwork);
 | |
|         $user = User::where('legacy_id', $legacyArtwork->user_id)->with('artists')->first();
 | |
|         $artist = $user->artists->first();
 | |
|         dump($artist);
 | |
|         $podcast = Podcast::find(1);
 | |
|         $episode = Episode::where('episode_number', $legacyEpisode->episode_number)->first();
 | |
|         dump($episode);
 | |
|         $date = Carbon::parse($legacyArtwork->created_at);
 | |
|         $basename = $date->format('Y')
 | |
|             . '/'
 | |
|             . $date->format('m')
 | |
|             . '/'
 | |
|             . Str::slug($artist->name)
 | |
|             . '_'
 | |
|             . Str::slug($legacyArtwork->title)
 | |
|             . '_'
 | |
|             . Str::random(8)
 | |
|             . '.jpg';
 | |
|         $thumbnailName = 'thumbnails/' . $basename;
 | |
|         $artworkName = 'artworks/' . $basename;
 | |
|         $artworkExists = Artwork::where('artist_id', $artist->id)
 | |
|             ->where('episode_id', $episode->id)
 | |
|             ->where('title', $legacyArtwork->title)
 | |
|             ->count();
 | |
|         $thumbnailExists = false;
 | |
|         $artExists = false;
 | |
|         dump($artworkExists);
 | |
|         dump([$thumbnailName, $artworkName]);
 | |
|         if (Storage::disk('static')->exists($thumbnailName)) {
 | |
|             $this->line('Thumbnail already exists.');
 | |
|             $thumbnailExists = true;
 | |
|         }
 | |
|         if (Storage::disk('static')->exists($artworkName)) {
 | |
|             $this->line('Artwork already exists.');
 | |
|             $artExists = true;
 | |
|         }
 | |
|         dump([$thumbnailExists, $artExists]);
 | |
|         if (!$artworkExists) {
 | |
|             $artwork = Artwork::factory()->state([
 | |
|                 'title' => $legacyArtwork->title,
 | |
|                 'artist_id' => $artist->id,
 | |
|                 'description' => null,
 | |
|                 'overlay_id' => null,
 | |
|                 'podcast_id' => $podcast->id,
 | |
|                 'episode_id' => $episode->id,
 | |
|                 'approved_by' => 4,
 | |
|                 'filename' => $basename,
 | |
|                 'legacy_filename' => $legacyArtwork->path . '/' . $legacyArtwork->filename,
 | |
|                 'legacy_id' => $legacyArtwork->id,
 | |
|                 'created_at' => $legacyArtwork->created_at,
 | |
|                 'updated_at' => $legacyArtwork->created_at,
 | |
|             ])->create();
 | |
|             $img = Image::make('/var/www/html/naartgen/podcastartgenerator/static' . $artwork->legacy_filename)
 | |
|                 ->resize(3000, null, function($constraint) {
 | |
|                     $constraint->aspectRatio();
 | |
|                 })
 | |
|                 ->encode('jpg', 100)
 | |
|                 ->save(Storage::disk('static')->path('/artworks') . '/' . $artwork->filename);
 | |
|             $thumbImg = Image::make('/var/www/html/naartgen/podcastartgenerator/static' . $artwork->legacy_filename)
 | |
|                 ->resize(512, null, function($constraint) {
 | |
|                     $constraint->aspectRatio();
 | |
|                 })
 | |
|                 ->encode('jpg', 100)
 | |
|                 ->save(Storage::disk('static')->path('/thumbnails') . '/' . $artwork->filename);
 | |
|             ImageOptimizer::optimize(Storage::disk('static')->path('/artworks/' . $artwork->filename));
 | |
|             ImageOptimizer::optimize(Storage::disk('static')->path('/thumbnails/' . $artwork->filename));
 | |
|             dump($artwork);
 | |
|         }
 | |
|     }
 | |
| }
 |