From 571169752a687574ca2daed3fe0cf2f18443f434 Mon Sep 17 00:00:00 2001
From: Thibault Dockx <thibault.dockx@fusiondirectory.org>
Date: Mon, 25 Mar 2024 16:17:00 +0000
Subject: [PATCH] :sparkles: feat(Tasks) - mail method more generic part 2

Making email retrieval more generic and static callable part 2
---
 .../configuration/tasks/class_tasksMail.inc   | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)

diff --git a/plugins/configuration/tasks/class_tasksMail.inc b/plugins/configuration/tasks/class_tasksMail.inc
index b8e71de32..3f8e3895f 100644
--- a/plugins/configuration/tasks/class_tasksMail.inc
+++ b/plugins/configuration/tasks/class_tasksMail.inc
@@ -134,9 +134,15 @@ class tasksMail extends simplePlugin
 
     // create a method which return the objectype and attribute names required
     $mailObject = $this->getMailObject($mailAttr);
+    // Get the members or groups selected
+    $attributeValue = $this->attributesAccess['fdTasksMailUsers']->getValue();
 
+    // Extract members from potential groups and dyn-groups.
+    $listOfDN = tasks::extractMembersFromGroups($attributeValue);
     // send the objectype and attrs name to the below method
-    $this->setEmailsFromSelectedDN($mailObject, $mailAttr);
+    $this->attributesAccess['fdTasksEmailsFromDN']->setValue(
+      array_values($this->getEmailsFromSelectedDN($mailObject, $mailAttr, $listOfDN))
+    );
 
     return TRUE;
   }
@@ -163,19 +169,14 @@ class tasksMail extends simplePlugin
   }
 
   /*
-  * Populate the fdTasksEmailsFromDN attribute with related mails addresses.
+  * Retrieve registered emails for each DN passed.
   */
-  public function setEmailsFromSelectedDN ($mailObject, $mailAttr): void
+  public static function getEmailsFromSelectedDN ($mailObject, $mailAttr, $listOfDN): array
   {
     global $config;
     $ldap     = $config->get_ldap_link();
     $mailList = [];
 
-    // Get the members or groups selected
-    $attributeValue = $this->attributesAccess['fdTasksMailUsers']->getValue();
-    // Extract members from potential groups and dyn-groups.
-    $listOfDN = tasks::extractMembersFromGroups($attributeValue);
-
     foreach ($listOfDN as $dn) {
       // Position ldap to the dn required (limit search).
       $ldap->cd($dn);
@@ -196,7 +197,7 @@ class tasksMail extends simplePlugin
         // A possible enhancement is to recall itself with another mailObject / attr
       }
     }
-    $this->attributesAccess['fdTasksEmailsFromDN']->setValue(array_values($mailList));
+    return $mailList;
   }
 
   function save (): array
-- 
GitLab