From ac33ade7746640a1ec1c6e7fa7c84866e87fbe0b Mon Sep 17 00:00:00 2001
From: Thibault Dockx <thibault.dockx@fusiondirectory.org>
Date: Wed, 11 May 2022 11:12:26 +0100
Subject: [PATCH] :sparkles: Feat(Marco) - Adds the first commit

Adds the first configuration page of Macro.
---
 contrib/openldap/core-fd.schema      | 43 ++++++++++++++++++
 plugins/config/class_macroConfig.inc | 67 ++++++++++++++++++++++++++++
 2 files changed, 110 insertions(+)
 create mode 100644 plugins/config/class_macroConfig.inc

diff --git a/contrib/openldap/core-fd.schema b/contrib/openldap/core-fd.schema
index 792d5c80e..42beec3c2 100644
--- a/contrib/openldap/core-fd.schema
+++ b/contrib/openldap/core-fd.schema
@@ -92,6 +92,40 @@ attributetype ( 1.3.6.1.4.1.38414.62.11.4 NAME 'fdSubscriptionContractId'
 attributetype ( 1.3.6.1.4.1.38414.62.11.5 NAME 'fdSubscriptionName'
   DESC 'FusionDirectory - Subscription client name'
   SUP name )
+  
+#Macro Attributes
+
+attributetype ( 1.3.6.1.4.1.38414.90.1.1 NAME 'fdMacroRDN'
+  DESC 'FusionDirectory - Macro RDN'
+  EQUALITY caseExactIA5Match
+  SUBSTR caseExactIA5SubstringsMatch
+  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
+  SINGLE-VALUE)
+
+attributetype ( 1.3.6.1.4.1.38414.90.1.2 NAME 'fdMacroMail'
+  DESC 'FusionDirectory - Macro RDN'
+  EQUALITY octetStringMatch
+  SUBSTR caseIgnoreSubstringsMatch
+  SYNTAX 1.3.6.1.4.1.1466.115.121.1.40)
+  SINGLE-VALUE)
+
+attributetype ( 1.3.6.1.4.1.38414.90.1.3 NAME 'fdMacroInvitations'
+  DESC 'FusionDirectory - template mail field'
+  EQUALITY octetStringMatch
+  SUBSTR caseIgnoreSubstringsMatch
+  SYNTAX 1.3.6.1.4.1.1466.115.121.1.40)
+
+attributetype ( 1.3.6.1.4.1.38414.90.1.4 NAME 'fdMacroUserRecovery'
+  DESC 'FusionDirectory - template mail field'
+  EQUALITY octetStringMatch
+  SUBSTR caseIgnoreSubstringsMatch
+  SYNTAX 1.3.6.1.4.1.1466.115.121.1.40)
+
+attributetype ( 1.3.6.1.4.1.38414.90.1.5 NAME 'fdMacroUserReminder'
+  DESC 'FusionDirectory - template mail field'
+  EQUALITY octetStringMatch
+  SUBSTR caseIgnoreSubstringsMatch
+  SYNTAX 1.3.6.1.4.1.1466.115.121.1.40)
 
 # Classes
 
@@ -130,3 +164,12 @@ objectclass ( 1.3.6.1.4.1.38414.62.2.2 NAME 'fdSubscriptionInformation' SUP top
   DESC 'FusionDirectory - Information about current subscription'
   MUST ( cn )
   MAY ( uid $ fdSubscriptionStartDate $ fdSubscriptionEndDate $ fdSubscriptionType $ fdSubscriptionContractId $ fdSubscriptionName ))
+  
+# Classes Macros Related
+
+objectclass ( 1.3.6.1.4.1.38414.90.2.1 NAME 'fdMacroConf'
+  DESC 'FusionDirectory Macro Configuration'
+  SUP top AUXILIARY
+  MUST ( cn )
+  MAY ( fdMacroRDN $ fdMacroMail $ fdMacroInvitations $ fdMacroUserRecovery $ fdMacroUserReminder ) )
+
diff --git a/plugins/config/class_macroConfig.inc b/plugins/config/class_macroConfig.inc
new file mode 100644
index 000000000..69003a75c
--- /dev/null
+++ b/plugins/config/class_macroConfig.inc
@@ -0,0 +1,67 @@
+<?php
+/*
+  This code is part of FusionDirectory (http://www.fusiondirectory.org/)
+  Copyright (C) 2012-2022 FusionDirectory
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation; either version 2 of the License, or
+  (at your option) any later version.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with this program; if not, write to the Free Software
+  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+*/
+
+class macrosConfig extends multiPluginSection
+{
+  static function plInfo (): array
+  {
+    return [
+      'plShortName'     => _('macrosConfiguration'),
+      'plDescription'   => _('FusionDirectory macro configuration tool'),
+      'plObjectClass'   => ['fdMacrosConf'],
+      'plCategory'      => ['configuration'],
+      'plObjectType'    => ['smallConfig'],
+
+      'plProvidedAcls'  => parent::generatePlProvidedAcls(static::getAttributesInfo())
+    ];
+  }
+
+  static function getAttributesInfo (): array
+  {
+    return [
+      'macrosConf' => [
+        'name'  => _('Macros'),
+        'attrs' => [
+          new StringAttribute(
+            _('Macros RDN'), _('Branch in which Directory Base, Macro will be stored'),
+            'fdMacroRDN', TRUE,
+            'ou=macroConfig'
+          ),
+        ]
+      ],
+      'Macro' => [
+        'name'  => _('Linked Object'),
+        'attrs' => [
+          new SelectAttribute(
+            _('Primary affiliation'), _('eduPersonPrimaryAffiliation - Main status of the person'),
+            'mailTemplate', FALSE
+          ),
+          new SetAttribute(
+            new SelectAttribute(
+              _('Macro'), _('List Of Available Macro'),
+              'fdMacroMail', FALSE
+            )
+          ),
+        ]
+      ],
+    ];
+  }
+}
+
-- 
GitLab