From 99bfac0b428a4bc6fe8bfd10a355dfd93f42ba5c Mon Sep 17 00:00:00 2001
From: Yassine Doghri <yassine@doghri.fr>
Date: Sat, 29 Jan 2022 16:42:34 +0000
Subject: [PATCH] feat(housekeeping): add clear_cache option to flush redis or
 files cache

---
 modules/Admin/Controllers/SettingsController.php | 4 ++++
 modules/Admin/Language/en/Settings.php           | 2 ++
 modules/Admin/Language/fr/Settings.php           | 2 ++
 themes/cp_admin/settings/general.php             | 1 +
 4 files changed, 9 insertions(+)

diff --git a/modules/Admin/Controllers/SettingsController.php b/modules/Admin/Controllers/SettingsController.php
index 90fc4d1049..58571176fb 100644
--- a/modules/Admin/Controllers/SettingsController.php
+++ b/modules/Admin/Controllers/SettingsController.php
@@ -283,6 +283,10 @@ class SettingsController extends BaseController
             }
         }
 
+        if ($this->request->getPost('clear_cache') === 'yes') {
+            cache()->clean();
+        }
+
         return redirect('settings-general')->with('message', lang('Settings.housekeeping.runSuccess'));
     }
 
diff --git a/modules/Admin/Language/en/Settings.php b/modules/Admin/Language/en/Settings.php
index ab02bc087d..a4ace0d792 100644
--- a/modules/Admin/Language/en/Settings.php
+++ b/modules/Admin/Language/en/Settings.php
@@ -35,6 +35,8 @@ return [
         'reset_counts_helper' => 'This option will recalculate and reset all data counts (number of followers, posts, comments, …).',
         'rewrite_media' => 'Rewrite media metadata',
         'rewrite_media_helper' => 'This option will delete all superfluous media files and recreate them (images, audio files, transcripts, chapters, …)',
+        'clear_cache' => 'Clear all cache',
+        'clear_cache_helper' => 'This option will flush redis cache or writable/cache files.',
         'run' => 'Run housekeeping',
         'runSuccess' => 'Housekeeping has been run successfully!',
     ],
diff --git a/modules/Admin/Language/fr/Settings.php b/modules/Admin/Language/fr/Settings.php
index e505df950c..98bf5b1591 100644
--- a/modules/Admin/Language/fr/Settings.php
+++ b/modules/Admin/Language/fr/Settings.php
@@ -35,6 +35,8 @@ return [
         'reset_counts_helper' => 'Cette option recalcul et réinitialise les compteurs de données (nombre d’abonné·e·s, de publications, de commentaires, …).',
         'rewrite_media' => 'Réécrire les métadonnées des fichiers média',
         'rewrite_media_helper' => 'Cette option supprimera tous les fichiers média superflus et les recréera (images, fichiers audio, transcripts, chapitrages, …)',
+        'clear_cache' => 'Supprimer tout le cache',
+        'clear_cache_helper' => 'Cette option supprimera l’intégralité du cache redis ou des fichiers cache du dossier writable/cache.',
         'run' => 'Faire le ménage',
         'runSuccess' => 'Le ménage a été effectué avec succès !',
     ],
diff --git a/themes/cp_admin/settings/general.php b/themes/cp_admin/settings/general.php
index 396008ceb5..b6d2b19df1 100644
--- a/themes/cp_admin/settings/general.php
+++ b/themes/cp_admin/settings/general.php
@@ -79,6 +79,7 @@
 
     <Forms.Toggler name="reset_counts" value="yes" size="small" checked="true" hint="<?= lang('Settings.housekeeping.reset_counts_helper') ?>"><?= lang('Settings.housekeeping.reset_counts') ?></Forms.Toggler>
     <Forms.Toggler name="rewrite_media" value="yes" size="small" checked="true" hint="<?= lang('Settings.housekeeping.rewrite_media_helper') ?>"><?= lang('Settings.housekeeping.rewrite_media') ?></Forms.Toggler>
+    <Forms.Toggler name="clear_cache" value="yes" size="small" checked="true" hint="<?= lang('Settings.housekeeping.clear_cache_helper') ?>"><?= lang('Settings.housekeeping.clear_cache') ?></Forms.Toggler>
 
     <Button variant="primary" type="submit" iconLeft="home-gear"><?= lang('Settings.housekeeping.run') ?></Button>
 
-- 
GitLab