From fc6257926b3221f47dff6412220cb1923a3ed99f Mon Sep 17 00:00:00 2001
From: Thibault Dockx <thibault.dockx@fusiondirectory.org>
Date: Thu, 23 Nov 2023 12:04:39 +0000
Subject: [PATCH] :sparkles: Feat(Tasks) - Adds BCC

Adds BCC
---
 contrib/openldap/core-fd.schema                 | 17 ++++++++++++++---
 .../configuration/tasks/class_tasksGranular.inc |  3 +++
 plugins/configuration/tasks/class_tasksMail.inc |  9 +++++++--
 3 files changed, 24 insertions(+), 5 deletions(-)

diff --git a/contrib/openldap/core-fd.schema b/contrib/openldap/core-fd.schema
index b64b48bef..c8429d3d4 100644
--- a/contrib/openldap/core-fd.schema
+++ b/contrib/openldap/core-fd.schema
@@ -182,6 +182,11 @@ attributetype ( 1.3.6.1.4.1.38414.62.1.18 NAME 'fdTasksEmailSender'
   EQUALITY caseExactMatch
   SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
 
+attributetype ( 1.3.6.1.4.1.38414.62.1.55 NAME 'fdTasksEmailBCC'
+  DESC 'Fusion Directory - Emails derived from DN'
+  EQUALITY caseExactMatch
+  SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
+
 attributetype ( 1.3.6.1.4.1.38414.62.1.19 NAME 'fdTasksMailType'
   DESC 'Fusion Directory - Type of Mail attribute required'
   EQUALITY caseExactMatch
@@ -222,6 +227,11 @@ attributetype ( 1.3.6.1.4.1.38414.62.1.25 NAME 'fdTasksGranularMailFrom'
   EQUALITY caseExactMatch
   SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
 
+attributetype ( 1.3.6.1.4.1.38414.62.1.56 NAME 'fdTasksGranularMailBCC'
+  DESC 'Fusion Directory - Emails sender if object mail'
+  EQUALITY caseExactMatch
+  SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
+
 attributetype ( 1.3.6.1.4.1.38414.62.1.26 NAME 'fdTasksGranularRef'
   DESC 'Fusion Directory - Reference towards a CN (E.g Mail Template)'
   EQUALITY caseExactMatch
@@ -471,13 +481,14 @@ objectclass (1.3.6.1.4.1.38414.62.2.6 NAME 'fdTasks'
 objectclass (1.3.6.1.4.1.38414.62.2.7 NAME 'fdTasksMail'
   DESC 'FusionDirectory - Tasks objects Mail'
   SUP top AUXILIARY
-  MUST ( fdTasksMailObject $ fdTasksEmailSender ) 
-  MAY ( fdTasksMailUsers $ fdTasksEmailsFromDN $ fdTasksMailType ) )
+  MUST ( fdTasksMailObject $ fdTasksEmailSender )
+  MAY ( fdTasksMailUsers $ fdTasksEmailsFromDN $ fdTasksMailType $ fdTasksEmailBCC ) )
 
 objectclass (1.3.6.1.4.1.38414.62.2.8 NAME 'fdTasksGranular'
   DESC 'FusionDirectory - Tasks granular objects'
   MUST ( fdTasksGranularMaster $ cn $ fdTasksGranularMail $ fdTasksGranularMailFrom $ 
-  fdTasksGranularRef $ fdTasksGranularType $ fdTasksGranularSchedule $ fdTasksGranularStatus ))
+  fdTasksGranularRef $ fdTasksGranularType $ fdTasksGranularSchedule $ fdTasksGranularStatus )
+  MAY (fdTasksGranularMailBCC))
 
 objectclass (1.3.6.1.4.1.38414.62.2.9 NAME 'fdTasksConf'
   DESC 'FusionDirectory - Tasks objects Configuration'
diff --git a/plugins/configuration/tasks/class_tasksGranular.inc b/plugins/configuration/tasks/class_tasksGranular.inc
index bd5e4285e..27de2a9e3 100644
--- a/plugins/configuration/tasks/class_tasksGranular.inc
+++ b/plugins/configuration/tasks/class_tasksGranular.inc
@@ -66,6 +66,9 @@ class tasksGranular extends simplePlugin
           new MailAttribute(
              _('Email'),
              _('Email address from which emails will be sent'), 'fdTasksGranularMailFrom', TRUE),
+          new MailAttribute(
+            _('Email'),
+            _('BCC Email address'), 'fdTasksGranularMailBCC', FALSE),
           new DateTimeAttribute(
            _('Schedule'), '',
            'fdTasksGranularSchedule', FALSE
diff --git a/plugins/configuration/tasks/class_tasksMail.inc b/plugins/configuration/tasks/class_tasksMail.inc
index cb8781118..ee4a548f4 100644
--- a/plugins/configuration/tasks/class_tasksMail.inc
+++ b/plugins/configuration/tasks/class_tasksMail.inc
@@ -58,11 +58,14 @@ class tasksMail extends simplePlugin
         ]
       ],
       'From Component' => [
-        'name' => _('Sender email address'),
+        'name' => _('Sender and BCC email address'),
         'attrs' => [
           new MailAttribute(
             _('Sender email address'),
             _('Email address from which mails will be sent'), 'fdTasksEmailSender', TRUE, 'to.be@chang.ed'),
+          new MailAttribute(
+            _('BCC email address'),
+            _('Email address to put in BCC'), 'fdTasksEmailBCC', FALSE, ''),
         ]
       ],
       'UserGroupSelection' => [
@@ -248,6 +251,7 @@ class tasksMail extends simplePlugin
     // Ref is supposed to be the mail object CN in this class
     $ref = $this->attributesAccess['fdTasksMailObject']->getValue();
     $from = $this->attributesAccess['fdTasksEmailSender']->getValue();
+    $bcc = $this->attributesAccess['fdTasksEmailBCC']->getValue();
 
     // Take the attribute from the other tabs - attribute cannot be null or unset by default
     $schedule = $this->parent->getBaseObject()->fdTasksScheduleDate ?? NULL;
@@ -307,7 +311,8 @@ class tasksMail extends simplePlugin
           "fdTasksGranularMail" => $email,
           "fdTasksGranularSchedule" => $schedule,
           "fdTasksGranularRef" => $ref,
-          "fdTasksGranularMailFrom" => $from
+          "fdTasksGranularMailFrom" => $from,
+          "fdTasksGranularMailBCC" => $bcc
         ];
 
         foreach ($values as $tab => $tabvalues) {
-- 
GitLab