From 35edefe72547d274524d5619487c2b51edf5f914 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come.chilliet@fusiondirectory.org> Date: Thu, 3 Sep 2020 12:06:21 +0200 Subject: [PATCH] :ambulance: fix(management) Avoid calling update on NULL Management dialogs tend to close themselves from readPost method, so after calling readPost we need to check the dialog is still there before calling update. issue #6072 --- include/management/class_management.inc | 7 ++++++- include/management/class_templateDialog.inc | 4 ++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/include/management/class_management.inc b/include/management/class_management.inc index cf0273861..505d217a6 100644 --- a/include/management/class_management.inc +++ b/include/management/class_management.inc @@ -506,7 +506,12 @@ class management implements FusionDirectoryDialog } elseif (is_object($this->dialogObject)) { try { $this->dialogObject->readPost(); - $this->dialogObject->update(); + if (is_object($this->dialogObject)) { + /* Check again as readPost might close it */ + if (!$this->dialogObject->update()) { + $this->closeDialogs(); + } + } } catch (FusionDirectoryException $e) { $error = new FusionDirectoryError(htmlescape($e->getMessage()), 0, $e); $error->display(); diff --git a/include/management/class_templateDialog.inc b/include/management/class_templateDialog.inc index b3b6221a4..44ec9bb85 100644 --- a/include/management/class_templateDialog.inc +++ b/include/management/class_templateDialog.inc @@ -96,7 +96,7 @@ class templateDialog implements FusionDirectoryDialog public function update(): bool { - return TRUE; + return !$this->closed; } function setNextTarget ($target) @@ -131,6 +131,6 @@ class templateDialog implements FusionDirectoryDialog protected function handleCancel () { $this->management->remove_lock(); - $this->management->closeDialogs(); + $this->closed = TRUE; } } -- GitLab