Browse Source

Purge les états des plugins inexistants

Si on supprime le répertoire d'un plugin, la mémoire de son état
(stockée dans plugins.states.json) sera aussi supprimée.

Cela permet de supprimer un plugin en effaçant simplement son
répertoire.
Christophe HENRY 5 years ago
parent
commit
602bdfb8e7
2 changed files with 16 additions and 0 deletions
  1. 12 0
      Plugin.class.php
  2. 4 0
      settings.php

+ 12 - 0
Plugin.class.php

@@ -40,6 +40,18 @@ class Plugin{
         $stateFile = dirname(__FILE__).Plugin::FOLDER.'/plugins.states.json';
         file_put_contents($stateFile,json_encode($states));
     }
+    public static function pruneStates() {
+        $statesBefore = self::getStates();
+        $statesAfter = array();
+        $error = false;
+        foreach($statesBefore as $file=>$state) {
+            if (file_exists($file))
+                $statesAfter[$file] = $state;
+            else
+                $error = true;
+        }
+        if ($error) self::setStates($statesAfter);
+    }
 
 
     private static function getObject($pluginFile){

+ 4 - 0
settings.php

@@ -23,6 +23,10 @@ $tpl->assign('articleDisplayHomeSort', $configurationManager->get('articleDispla
 $tpl->assign('articleDisplayFolderSort', $configurationManager->get('articleDisplayFolderSort'));
 $tpl->assign('articleDisplayContent', $configurationManager->get('articleDisplayContent'));
 $tpl->assign('articleView', $configurationManager->get('articleView'));
+
+//Suppression de l'état des plugins inexistants
+Plugin::pruneStates();
+
 //Récuperation des plugins
 $tpl->assign('plugins',Plugin::getAll());