From 6354a84a77e7f3f8b543a3fdc3ea5d06615f5169 Mon Sep 17 00:00:00 2001 From: Aleksandr Litvin Date: Mon, 18 May 2026 16:54:31 +0200 Subject: [PATCH 1/2] fix bug 39619 by changing obligatory status for new precondition based on mode --- .../classes/class.ilConditionHandlerGUI.php | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/components/ILIAS/Conditions/classes/class.ilConditionHandlerGUI.php b/components/ILIAS/Conditions/classes/class.ilConditionHandlerGUI.php index 335ba5cce035..4cee9f8728a0 100755 --- a/components/ILIAS/Conditions/classes/class.ilConditionHandlerGUI.php +++ b/components/ILIAS/Conditions/classes/class.ilConditionHandlerGUI.php @@ -1,7 +1,5 @@ setTriggerType($trigger->getType()); } $condition->setOperator($data['condition_configuration']['operator'][0]); - $condition->setObligatory((bool) ($data['condition_configuration']['obligatory'] ?? true)); + + $optional_conditions = ilConditionHandler::getPersistedOptionalConditionsOfTarget( + $this->getTargetRefId(), + $this->getTargetId(), + $this->getTargetType() + ); + + $is_all_mode = (count($optional_conditions) === 0); + + // set condition as obligatory or not based on mode + if ($is_all_mode) { + $condition->setObligatory(true); + } else { + $condition->setObligatory((bool) ($data['condition_configuration']['obligatory'] ?? false)); + } + $condition->setHiddenStatus(ilConditionHandler::lookupPersistedHiddenStatusByTarget($this->getTargetRefId())); $condition->setValue($this->extractValueOptionsFromInput($data)); $condition->enableAutomaticValidation($this->getAutomaticValidation()); From 88ccc23054e183531a8b2e903e86fb2405f1d742 Mon Sep 17 00:00:00 2001 From: Aleksandr Litvin Date: Thu, 21 May 2026 17:06:30 +0200 Subject: [PATCH 2/2] refactor obligatory status condition based on mode --- .../ILIAS/Conditions/classes/class.ilConditionHandlerGUI.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/ILIAS/Conditions/classes/class.ilConditionHandlerGUI.php b/components/ILIAS/Conditions/classes/class.ilConditionHandlerGUI.php index 4cee9f8728a0..1745f01aa55b 100755 --- a/components/ILIAS/Conditions/classes/class.ilConditionHandlerGUI.php +++ b/components/ILIAS/Conditions/classes/class.ilConditionHandlerGUI.php @@ -1328,7 +1328,7 @@ protected function saveConditionTrigger(): void if ($is_all_mode) { $condition->setObligatory(true); } else { - $condition->setObligatory((bool) ($data['condition_configuration']['obligatory'] ?? false)); + $condition->setObligatory(false); } $condition->setHiddenStatus(ilConditionHandler::lookupPersistedHiddenStatusByTarget($this->getTargetRefId()));