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