From 52023004afdc95e23dea3f41f02d1cb13fad6640 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come.chilliet@fusiondirectory.org>
Date: Tue, 1 Sep 2020 12:14:47 +0200
Subject: [PATCH] :ambulance: fix(core) Fix obvious crashes from dialog
 refactor

issue #6072
---
 include/management/class_templateDialog.inc | 5 +++++
 include/simpleplugin/class_multiPlugin.inc  | 2 +-
 include/simpleplugin/class_simplePlugin.inc | 5 ++++-
 include/simpleplugin/class_simpleTabs.inc   | 2 +-
 setup/class_setupStepConfig.inc             | 7 ++++---
 5 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/include/management/class_templateDialog.inc b/include/management/class_templateDialog.inc
index 9bfc503c5..b3b6221a4 100644
--- a/include/management/class_templateDialog.inc
+++ b/include/management/class_templateDialog.inc
@@ -94,6 +94,11 @@ class templateDialog implements FusionDirectoryDialog
     }
   }
 
+  public function update(): bool
+  {
+    return TRUE;
+  }
+
   function setNextTarget ($target)
   {
     $this->target = $target;
diff --git a/include/simpleplugin/class_multiPlugin.inc b/include/simpleplugin/class_multiPlugin.inc
index a6cfbcb9c..42587b1f2 100644
--- a/include/simpleplugin/class_multiPlugin.inc
+++ b/include/simpleplugin/class_multiPlugin.inc
@@ -97,7 +97,7 @@ class multiPlugin extends simplePlugin
     }
   }
 
-  public function update (): boolean
+  public function update (): bool
   {
     foreach ($this->plugin as $plug) {
       $plug->update();
diff --git a/include/simpleplugin/class_simplePlugin.inc b/include/simpleplugin/class_simplePlugin.inc
index e72552b7e..99395cbca 100644
--- a/include/simpleplugin/class_simplePlugin.inc
+++ b/include/simpleplugin/class_simplePlugin.inc
@@ -27,7 +27,7 @@
 /*! \brief This class is made for easy plugin creation for editing LDAP attributes
  *
  */
-class simplePlugin implements SimpleTab, FusionDirectoryDialog
+class simplePlugin implements SimpleTab
 {
   /*! \brief This attribute store all information about attributes */
   public $attributesInfo;
@@ -1171,6 +1171,9 @@ class simplePlugin implements SimpleTab, FusionDirectoryDialog
         $this->is_account = TRUE;
       }
     }
+    if (is_object($this->dialog)) {
+      $this->dialog->readPost();
+    }
     if (isset($_POST[get_class($this).'_posted'])) {
       // If our form has been posted
       // A first pass that loads the post values
diff --git a/include/simpleplugin/class_simpleTabs.inc b/include/simpleplugin/class_simpleTabs.inc
index d6330eb0d..d005359bf 100644
--- a/include/simpleplugin/class_simpleTabs.inc
+++ b/include/simpleplugin/class_simpleTabs.inc
@@ -237,7 +237,7 @@ class simpleTabs implements FusionDirectoryDialog
 
   public function update (): bool
   {
-    if ($this->last != $this->current) {
+    if (($this->last != $this->current) && ($this->last != '')) {
       $this->by_object[$this->last]->update();
     }
 
diff --git a/setup/class_setupStepConfig.inc b/setup/class_setupStepConfig.inc
index db44f2020..9a0afa623 100644
--- a/setup/class_setupStepConfig.inc
+++ b/setup/class_setupStepConfig.inc
@@ -94,7 +94,7 @@ class setupStepConfig extends configInLdap
     return $tmp;
   }
 
-  function update ()
+  function update (): bool
   {
     global $config, $plist;
     parent::update();
@@ -108,13 +108,13 @@ class setupStepConfig extends configInLdap
         $ldap->create_missing_trees($config->current['BASE'], FALSE);
       } catch (FusionDirectoryError $error) {
         $error->display();
-        return;
+        return TRUE;
       }
       /* Save in LDAP */
       $errors = $this->save();
       if (!empty($errors)) {
         msg_dialog::displayChecks($errors);
-        return;
+        return TRUE;
       }
       /* Insert default config values, even for installed plugin */
       session::un_set('plist');
@@ -127,6 +127,7 @@ class setupStepConfig extends configInLdap
       $this->is_completed = TRUE;
       $this->parent->reBuildConfigStep(TRUE);
     }
+    return TRUE;
   }
 
   function is_active ()
-- 
GitLab