From 8fa2a3f6bcf075113d376ecb0734b855c83601c0 Mon Sep 17 00:00:00 2001 From: Thierry Bugier Date: Thu, 12 Aug 2021 13:56:50 +0200 Subject: [PATCH] fix(targetticket,targetchange): current user may be automatically added to requesters when the 1st requester is not a GLPI account (an email address) then the current user was added to requesters This is not wanted, this behavior must occur when no requester is added, no matter they are account or emails Signed-off-by: Thierry Bugier --- inc/targetchange.class.php | 12 +++++++----- inc/targetticket.class.php | 12 +++++++----- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/inc/targetchange.class.php b/inc/targetchange.class.php index 8826adb28..e3a3e839d 100644 --- a/inc/targetchange.class.php +++ b/inc/targetchange.class.php @@ -759,12 +759,14 @@ public function save(PluginFormcreatorFormAnswer $formanswer) { if (count($this->requesters['_users_id_requester']) == 0) { $this->addActor('requester', $formanswer->fields['requester_id'], true); $requesters_id = $formanswer->fields['requester_id']; - } else if (count($this->requesters['_users_id_requester']) >= 1) { - if ($this->requesters['_users_id_requester'][0] == 0) { - $this->addActor('requester', $formanswer->fields['requester_id'], true); + } else { + $requesterAccounts = array_filter($this->requesters['_users_id_requester'], function($v) { + return ($v != 0); + }); + $requesters_id = array_shift($requesterAccounts); + if ($requesters_id === null) { + // No account for requesters, then fallback on the account used to fill the answers $requesters_id = $formanswer->fields['requester_id']; - } else { - $requesters_id = $this->requesters['_users_id_requester'][0]; } } diff --git a/inc/targetticket.class.php b/inc/targetticket.class.php index ca155d4bf..3a2eaded5 100644 --- a/inc/targetticket.class.php +++ b/inc/targetticket.class.php @@ -718,12 +718,14 @@ public function save(PluginFormcreatorFormAnswer $formanswer) { if (count($this->requesters['_users_id_requester']) == 0) { $this->addActor(PluginFormcreatorTarget_Actor::ACTOR_ROLE_REQUESTER, $formanswer->fields['requester_id'], true); $requesters_id = $formanswer->fields['requester_id']; - } else if (count($this->requesters['_users_id_requester']) >= 1) { - if ($this->requesters['_users_id_requester'][0] == 0) { - $this->addActor(PluginFormcreatorTarget_Actor::ACTOR_ROLE_REQUESTER, $formanswer->fields['requester_id'], true); + } else { + $requesterAccounts = array_filter($this->requesters['_users_id_requester'], function($v) { + return ($v != 0); + }); + $requesters_id = array_shift($requesterAccounts); + if ($requesters_id === null) { + // No account for requesters, then fallback on the account used to fill the answers $requesters_id = $formanswer->fields['requester_id']; - } else { - $requesters_id = $this->requesters['_users_id_requester'][0]; } // If only one requester, revert array of requesters into a scalar