From 38899124ec27e94a8c798bc2db528f9f785eec20 Mon Sep 17 00:00:00 2001
From: Yassine Doghri <yassine@doghri.fr>
Date: Tue, 11 Jan 2022 10:51:10 +0000
Subject: [PATCH] fix: rewrite regenerate image function to use saveSizes
 method from Image entity

---
 app/Entities/Media/Image.php                  |  2 +-
 .../Admin/Controllers/SettingsController.php  | 24 ++++++++++++-------
 themes/cp_app/podcast/about.php               |  2 +-
 3 files changed, 17 insertions(+), 11 deletions(-)

diff --git a/app/Entities/Media/Image.php b/app/Entities/Media/Image.php
index fa137f67cc..b379b0382e 100644
--- a/app/Entities/Media/Image.php
+++ b/app/Entities/Media/Image.php
@@ -82,7 +82,7 @@ class Image extends BaseMedia
         $this->deleteSizes();
     }
 
-    private function saveSizes(): void
+    public function saveSizes(): void
     {
         // save derived sizes
         $imageService = service('image');
diff --git a/modules/Admin/Controllers/SettingsController.php b/modules/Admin/Controllers/SettingsController.php
index be84ea3d0d..7f91371bbf 100644
--- a/modules/Admin/Controllers/SettingsController.php
+++ b/modules/Admin/Controllers/SettingsController.php
@@ -110,7 +110,10 @@ class SettingsController extends BaseController
         $allPodcasts = (new PodcastModel())->findAll();
 
         foreach ($allPodcasts as $podcast) {
-            $podcastImages = glob(ROOTPATH . "public/media/podcasts/{$podcast->handle}/*_*");
+            $podcastImages = glob(
+                ROOTPATH . 'public/' . config('App')->mediaRoot . "/podcasts/{$podcast->handle}/*_*{jpg,png,webp}",
+                GLOB_BRACE
+            );
 
             if ($podcastImages) {
                 foreach ($podcastImages as $podcastImage) {
@@ -119,19 +122,22 @@ class SettingsController extends BaseController
                     }
                 }
             }
-            $podcast->setCover($podcast->cover);
-            if ($podcast->banner_path !== null) {
-                $podcast->setBanner($podcast->banner);
+            $podcast->cover->saveSizes();
+            if ($podcast->banner_id !== null) {
+                $podcast->banner->saveSizes();
             }
 
             foreach ($podcast->episodes as $episode) {
-                if ($episode->cover_path !== null) {
-                    $episode->setCover($episode->cover);
+                if ($episode->cover_id !== null) {
+                    $episode->cover->saveSizes();
                 }
             }
         }
 
-        $personsImages = glob(ROOTPATH . 'public/media/persons/*_*');
+        $personsImages = glob(
+            ROOTPATH . 'public/' . config('App')->mediaRoot . '/persons/*_*{jpg,png,webp}',
+            GLOB_BRACE
+        );
         if ($personsImages) {
             foreach ($personsImages as $personsImage) {
                 if (is_file($personsImage)) {
@@ -142,8 +148,8 @@ class SettingsController extends BaseController
 
         $persons = (new PersonModel())->findAll();
         foreach ($persons as $person) {
-            if ($person->avatar_path !== null) {
-                $person->setAvatar($person->avatar);
+            if ($person->avatar_id !== null) {
+                $person->avatar->saveSizes();
             }
         }
 
diff --git a/themes/cp_app/podcast/about.php b/themes/cp_app/podcast/about.php
index 50a27c33b9..3ea8d70eab 100644
--- a/themes/cp_app/podcast/about.php
+++ b/themes/cp_app/podcast/about.php
@@ -40,7 +40,7 @@
             <?= location_link($podcast->location, 'text-xs font-semibold p-2') ?>
         <?php endif; ?>
     </div>
-    <div class="mt-4">
+    <div class="mt-6">
         <h2 class="text-xs font-bold tracking-wider text-gray-600 uppercase border-b-2 border-subtle font-display"><?= lang('Podcast.stats.title') ?></h2>
         <div class="flex flex-col text-sm">
             <?php foreach ($stats as $key => $value): ?>
-- 
GitLab