From 54f711009c72302bc7f98403e7173e3ce1023f48 Mon Sep 17 00:00:00 2001 From: Thibault Dockx <thibault.dockx@fusiondirectory.org> Date: Tue, 24 Oct 2023 14:53:09 +0100 Subject: [PATCH] :sparkles: Feat(TASKS) - Members only Finally only takes new members if requested. --- .../configuration/tasks/class_tasksMail.inc | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/plugins/configuration/tasks/class_tasksMail.inc b/plugins/configuration/tasks/class_tasksMail.inc index 6a449725a..872cca03c 100644 --- a/plugins/configuration/tasks/class_tasksMail.inc +++ b/plugins/configuration/tasks/class_tasksMail.inc @@ -265,20 +265,30 @@ class tasksMail extends simplePlugin if ($newMemberOnly === TRUE) { $ldap->cd($config->current['BASE']); $filter = '(&(objectClass=fdTasksGranular)(fdTasksGranularMaster='.$this->dn.'))'; + $attrs = ['fdTasksGranularMail']; $ldap->search($filter, $attrs); + + // The while loop is important to get all info from ldap into the array. while ($info = $ldap->fetch()) { $subTasks[] = $info; } - foreach ($subTasks as $subTask) { - $membersEmailslist[] = $subTask['fdTasksGranularMail'][0]; + + if (!empty($subTasks)) { + // Recuperate members email from the ldap search. + foreach ($subTasks as $subTask) { + $membersEmailsList[] = $subTask['fdTasksGranularMail'][0]; + } + // Verify the emails differences and only keep those. + if (!empty($membersEmailsList)) { + $emails = array_diff($emails, $membersEmailsList); + } + // Simple re-index the array. + $emails = array_values($emails); } - // Correct list of emails in below variable. - print_r($membersEmailslist); } foreach ($emails as $email) { - // Here we create the object taskGranular $tabObject = objects::create('TasksGranular'); -- GitLab