info('Vous allez regénérer toutes les miniatures des médias.'); /** @var \Illuminate\Database\Eloquent\Collection<\App\Models\Sujet> */ $subjects = Sujet::where('sujet_dam', true)->get(); $this->newLine(); $this->line('Liste des sujets disponibles'); $this->line('----------------------------'); $this->line('[0] Tous les sujets'); foreach ($subjects as $subject) { $this->line("[{$subject->codeSujet}] {$subject->libelle}"); } $sujetId = $this->askWithCompletion( 'Pour quel sujet de média souhaitez vous executer le traitement ?', $subjects->pluck('codeSujet')->toArray(), 0 ); if ($sujetId != 0 and !$subjects->pluck('codeSujet')->contains(\intval($sujetId))) { $this->error('Id de sujet incorrect'); return -1; } $sujetId = intval($sujetId); $mediaCollection = Media::onlyTrashed()->with('sujet.formats'); if ($sujetId !== 0) { $mediaCollection->where('sujet_id', $sujetId); } /** @var \Illuminate\Database\Eloquent\Collection<\App\Models\Media> */ $mediaCollection = $mediaCollection->get(); if (!$mediaCollection->count()) { $this->error('Aucun média n\'a été trouvé'); return -1; } $this->info($mediaCollection->count() . ' média(s) trouvé(s) - Début du traitement'); $bar = $this->output->createProgressBar($mediaCollection->count()); $bar->start(); /** @var \App\Models\Media $media */ foreach ($mediaCollection as $media) { try { // ---- Creation des vignettes de base $media->createThumbnail(); // ---- Creation des vignettes en lien avec le sujet du média $media->createSubjectThumbnails(); } catch (\ImagickException | \RuntimeException $e) { report($e); } $bar->advance(); } $bar->finish(); $this->newLine(); $this->info('Fin du traitement'); } }