From ec8ddb14e576e703d371083781d8a40723f47629 Mon Sep 17 00:00:00 2001
From: Thibault Dockx <thibault.dockx@fusiondirectory.org>
Date: Thu, 3 Nov 2022 21:19:36 +0000
Subject: [PATCH] :sparkles: Feat(Tasks) - Dashboard v0.5

Adding a boolean trigger within tasks allowing more
security in order to not trigger the tasks and subtasks.
---
 plugins/addons/tasks/class_tasks.inc         | 10 ++++++++++
 plugins/addons/tasks/class_tasksMail.inc     |  6 +++++-
 plugins/admin/tasks/class_tasksDashboard.inc |  1 -
 3 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/plugins/addons/tasks/class_tasks.inc b/plugins/addons/tasks/class_tasks.inc
index 11b96d29e..dd900c0ef 100644
--- a/plugins/addons/tasks/class_tasks.inc
+++ b/plugins/addons/tasks/class_tasks.inc
@@ -60,6 +60,15 @@ class tasks extends simplePlugin
         new HiddenAttribute('fdTasksCreationDate', TRUE, date("Y-m-d h:i:sa"), '', 'StartDate', 'Start Date And Time Of A Task'),
         ]
       ],
+      'subTasks' => [
+        'name' => _('Creation of Sub Tasks - Starting this task'),
+        'attrs' => [
+          new BooleanAttribute(
+            _('Activate SubTasks'), _('Trigger the creation of this task and related subtasks'),
+            'fdSubTasksActivation', FALSE
+          ),
+        ]
+            ],
     ];
   }
 
@@ -69,6 +78,7 @@ class tasks extends simplePlugin
     global $config;
     parent::__construct($dn, $object, $parent, $mainTab);
 
+    $this->attributesAccess['fdSubTasksActivation']->setInLdap(FALSE);
   }
 
 }
diff --git a/plugins/addons/tasks/class_tasksMail.inc b/plugins/addons/tasks/class_tasksMail.inc
index 3eef89891..a884b5572 100644
--- a/plugins/addons/tasks/class_tasksMail.inc
+++ b/plugins/addons/tasks/class_tasksMail.inc
@@ -141,7 +141,11 @@ class tasksMail extends simplePlugin
 
   function save (): array
   {
-    $this->generateSlaveTasks();
+    $execTasks = $this->parent->getBaseObject()->fdSubTasksActivation ?? NULL;
+
+    if ($execTasks) {
+      $this->generateSlaveTasks();
+    }
 
     $errors = parent::save();
     return $errors;
diff --git a/plugins/admin/tasks/class_tasksDashboard.inc b/plugins/admin/tasks/class_tasksDashboard.inc
index c20594916..45d497e63 100644
--- a/plugins/admin/tasks/class_tasksDashboard.inc
+++ b/plugins/admin/tasks/class_tasksDashboard.inc
@@ -97,7 +97,6 @@ class tasksDashboard extends management
   // This method is triggered during initiation of the dashboard, allowing proper icons status
   function setTasksActionStatus () : BOOL
   {
-    echo "setTasksActionStatus" .PHP_EOL;
     return  TRUE;
   }
 
-- 
GitLab