diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 36e7b4b32edecaf9bb385eb032523b24ad18052b..7290edaf3ddd2ab495c9bbe2e2c0249c68d8881b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -76,6 +76,7 @@ create_phpstan_rapport: - git clone --depth 1 https://gitlab.fusiondirectory.org/fusiondirectory/dev-tools.git ../dev-tools - composer global require phpstan/phpstan=0.12.94 - cp ../dev-tools/phpstan/fusiondirectory/1.4-dev/*.neon . + - composer global require phpstan/phpstan=0.12.94 - /root/.composer/vendor/bin/phpstan analyse -c phpstan.neon # fusiondirectory-update-locale @@ -131,3 +132,4 @@ trigger-plugins: trigger: project: fusiondirectory/fd-plugins branch: $CI_COMMIT_REF_NAME + diff --git a/contrib/openldap/core-fd.schema b/contrib/openldap/core-fd.schema index 792d5c80ecca3dce8648eb97f8211db41a26632a..5fbdc63bf3ca70c808784cc568e657028e0b1335 100644 --- a/contrib/openldap/core-fd.schema +++ b/contrib/openldap/core-fd.schema @@ -92,8 +92,243 @@ 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 -# Classes +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) + +### Mail Template Related Attributes ### + +attributetype ( 1.3.6.1.4.1.38414.88.1.1 NAME 'fdMailTemplateBody' + 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.88.1.2 NAME 'fdMailTemplateRDN' + DESC 'FusionDirectory - template Mail 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.88.1.3 NAME 'fdMTPasswordRecoveryMailSubject' + 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.88.1.4 NAME 'fdMTPasswordRecoveryMailBody' + 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.88.1.5 NAME 'fdMTPasswordRecoveryMail2Subject' + 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.88.1.6 NAME 'fdMTPasswordRecoveryMail2Body' + 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.88.1.8 NAME 'fdMailTemplateSignature' + 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.88.1.9 NAME 'fdMailTemplateAttachment' + 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.88.1.10 NAME 'fdMailTemplateReadReceipt' + 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.88.1.11 NAME 'fdMailTemplateSubject' + DESC 'FusionDirectory - template mail field' + EQUALITY octetStringMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.40) + +# Attributes for mail template user reminder + +attributetype ( 1.3.6.1.4.1.38414.88.1.12 NAME 'fdMTUserReminderForwardAlert' + DESC 'FusionDirectory - Forward alerts to manager' + EQUALITY booleanMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 + SINGLE-VALUE ) + +attributetype ( 1.3.6.1.4.1.38414.88.1.13 NAME 'fdMTUserReminderForwardConfirmation' + DESC 'FusionDirectory - Forward postpone confirmations to manager' + EQUALITY booleanMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 + SINGLE-VALUE ) + +attributetype ( 1.3.6.1.4.1.38414.88.1.14 NAME 'fdMTUserReminderAlertSubject' + DESC 'Fusion Directory - User reminder alert email subject' + EQUALITY caseExactMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 + SINGLE-VALUE ) + +attributetype ( 1.3.6.1.4.1.38414.88.1.15 NAME 'fdMTUserReminderAlertBody' + DESC 'Fusion Directory - User reminder alert email body' + EQUALITY caseExactMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 + SINGLE-VALUE ) + +attributetype ( 1.3.6.1.4.1.38414.88.1.16 NAME 'fdMTUserReminderConfirmationSubject' + DESC 'Fusion Directory - User reminder confirmation email subject' + EQUALITY caseExactMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 + SINGLE-VALUE ) + +attributetype ( 1.3.6.1.4.1.38414.88.1.17 NAME 'fdMTUserReminderConfirmationBody' + DESC 'Fusion Directory - User reminder confirmation email body' + EQUALITY caseExactMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 + SINGLE-VALUE ) + +attributetype ( 1.3.6.1.4.1.38414.88.1.18 NAME 'fdMTUserReminderForwardPpolicyAlert' + DESC 'FusionDirectory - Forward ppolicy alerts to manager' + EQUALITY booleanMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 + SINGLE-VALUE ) + +attributetype ( 1.3.6.1.4.1.38414.88.1.19 NAME 'fdMTUserReminderPpolicyAlertSubject' + DESC 'Fusion Directory - User reminder ppolicy alert email subject' + EQUALITY caseExactMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 + SINGLE-VALUE ) + +attributetype ( 1.3.6.1.4.1.38414.88.1.20 NAME 'fdMTUserReminderPpolicyAlertBody' + DESC 'Fusion Directory - User reminder ppolicy alert email body' + EQUALITY caseExactMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 + SINGLE-VALUE ) + +attributetype ( 1.3.6.1.4.1.38414.88.1.21 NAME 'fdMTUserReminderExpirationSubject' + DESC 'Fusion Directory - User reminder expired email subject' + EQUALITY caseExactMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 + SINGLE-VALUE ) + +attributetype ( 1.3.6.1.4.1.38414.88.1.22 NAME 'fdMTUserReminderExpirationBody' + DESC 'Fusion Directory - User reminder expired email body' + EQUALITY caseExactMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 + SINGLE-VALUE ) + +attributetype ( 1.3.6.1.4.1.38414.88.1.23 NAME 'fdMTUserReminderForwardExpiration' + DESC 'FusionDirectory - User reminder, forward expiration emails to manager' + EQUALITY booleanMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 + SINGLE-VALUE ) + +# Attributes for mail template invitations + +attributetype ( 1.3.6.1.4.1.38414.88.1.24 NAME 'fdMTInvitationEmailSubject' + DESC 'FusionDirectory - Email Subject - Invitations' + EQUALITY caseExactMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 + SINGLE-VALUE ) + +attributetype ( 1.3.6.1.4.1.38414.88.1.25 NAME 'fdMTInvitationEmailContent' + DESC 'FusionDirectory - Email Content - Invitation' + EQUALITY caseExactMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 + SINGLE-VALUE ) + +attributetype ( 1.3.6.1.4.1.38414.88.1.26 NAME 'fdMTInvitationReplyTo' + DESC 'FusionDirectory - Email Address - Whom to Reply to invitations' + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 + SINGLE-VALUE ) + +##### Tasks Attributes ##### + +attributetype ( 1.3.6.1.4.1.38414.89.1.1 NAME 'fdTasksMailObject' + DESC 'Fusion Directory - Tasks for mail template objects' + EQUALITY caseExactMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 + SINGLE-VALUE ) + +attributetype ( 1.3.6.1.4.1.38414.89.1.2 NAME 'fdTasksScheduleDate' + DESC 'Scheduling of the Task - required processed date' + EQUALITY caseExactIA5Match + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) + +attributetype ( 1.3.6.1.4.1.38414.89.1.3 NAME 'fdTasksMailUsers' + DESC 'Fusion Directory - Tasks Mail Users Recipient' + EQUALITY caseExactMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.3.6.1.4.1.38414.89.1.4 NAME 'fdTasksStatus' + DESC 'Fusion Directory - Task Status' + EQUALITY caseExactMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.3.6.1.4.1.38414.89.1.5 NAME 'fdTasksEndDate' + DESC 'Fusion Directory - Task End Date' + EQUALITY caseExactMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.3.6.1.4.1.38414.89.1.6 NAME 'fdTasksCreationDate' + DESC 'Fusion Directory - Task Start Date' + EQUALITY caseExactMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.3.6.1.4.1.38414.89.1.7 NAME 'fdTasksEmailsFromDN' + 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.89.1.8 NAME 'fdTasksEmailSender' + DESC 'Fusion Directory - Emails derived from DN' + EQUALITY caseExactMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +##### Classes ##### objectclass ( 1.3.6.1.4.1.10098.1.2.1.19.4 NAME 'gosaDepartment' SUP top AUXILIARY DESC 'GOsa - Class to mark Departments for GOsa' @@ -130,3 +365,60 @@ 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 ) ) + +### Mail Template Related Object Class ### + +objectclass (1.3.6.1.4.1.38414.88.2.1 NAME 'fdMailTemplate' + DESC 'FusionDirectory - template mail object' + MUST ( cn $ fdMailTemplateBody $ fdMailTemplateSubject ) + MAY ( fdMailTemplateSignature $ fdMailTemplateReadReceipt $ fdMailTemplateAttachment ) ) + +objectclass (1.3.6.1.4.1.38414.88.2.2 NAME 'fdMailTemplateUserRecovery' + DESC 'FusionDirectory - template mail object Recovery' + SUP top AUXILIARY + MUST ( cn ) + MAY ( fdMTPasswordRecoveryMailSubject $ fdMTPasswordRecoveryMailBody $ fdMTPasswordRecoveryMail2Subject $ fdMTPasswordRecoveryMail2Body) ) + +objectclass ( 1.3.6.1.4.1.38414.88.2.3 NAME 'fdMailTemplateConf' + DESC 'FusionDirectory Mail Template Configuration' + SUP top AUXILIARY + MUST ( cn ) + MAY ( fdMailTemplateRDN ) ) + +objectclass ( 1.3.6.1.4.1.38414.88.2.4 NAME 'fdMailTemplateUserReminder' + DESC 'FusionDirectory mail template user-reminder' + SUP top AUXILIARY + MUST ( cn $ fdMTUserReminderForwardConfirmation $ fdMTUserReminderForwardAlert) + MAY ( + fdMTUserReminderConfirmationSubject $ fdMTUserReminderConfirmationBody $ + fdMTUserReminderAlertSubject $ fdMTUserReminderAlertBody $ + fdMTUserReminderPpolicyAlertSubject $ fdMTUserReminderPpolicyAlertBody $ + fdMTUserReminderForwardPpolicyAlert $ fdMTUserReminderExpirationSubject $ + fdMTUserReminderExpirationBody $ fdMTUserReminderForwardExpiration) ) + +objectclass ( 1.3.6.1.4.1.38414.88.2.5 NAME 'fdMailTemplateInvitations' + DESC 'FusionDirectory mail template Invitations' + SUP top AUXILIARY + MUST ( cn $ fdMTInvitationEmailSubject $ fdMTInvitationEmailContent) + MAY ( fdMTInvitationReplyTo ) ) + +### Tasks Related Object Class ### + +objectclass (1.3.6.1.4.1.38414.89.2.1 NAME 'fdTasks' + DESC 'FusionDirectory - Tasks objects' + MUST ( cn $ fdTasksStatus $ fdTasksCreationDate ) + MAY ( fdTasksScheduleDate $ fdTasksEndDate) ) + +objectclass (1.3.6.1.4.1.38414.89.2.2 NAME 'fdTasksMail' + DESC 'FusionDirectory - Tasks objects Mail' + SUP top AUXILIARY + MUST ( fdTasksMailObject $ fdTasksEmailSender ) + MAY ( fdTasksMailUsers $ fdTasksEmailsFromDN ) ) diff --git a/plugins/addons/mailtemplate/class_mailTemplate.inc b/plugins/addons/mailtemplate/class_mailTemplate.inc new file mode 100644 index 0000000000000000000000000000000000000000..7010fddf40c6c70d4e67da8b3ba1aaddde4fed1e --- /dev/null +++ b/plugins/addons/mailtemplate/class_mailTemplate.inc @@ -0,0 +1,88 @@ +<?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 mailTemplate extends simplePlugin +{ + var $displayHeader = FALSE; + + public static function plInfo (): array + { + return [ + 'plShortName' => _('Mail Template'), + 'plDescription' => _('Mail Tempmlate'), + 'plObjectClass' => ['fdMailTemplate'], + 'plFilter' => '(objectClass=fdMailTemplate)', + 'plObjectType' => ['mailTemplate' => [ + 'name' => _('Mail Template'), + 'ou' => get_ou('mailTemplateRDN'), + 'icon' => 'geticon.php?context=applications&icon=dsa&size=16', + ]], + 'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo()) + ]; + } + + static function getAttributesInfo (): array + { + global $config; + return [ + // Attributes are grouped by section + 'mailTemplate' => [ + 'name' => _('Mail Object'), + 'attrs' => [ + new StringAttribute( + _('Mail Template Name'), _('Mail Template Name'), + 'cn', TRUE + ), + new StringAttribute( + _('Mail Subject'), _('Mail Subject'), + 'fdMailTemplateSubject', TRUE + ), + new TextAreaAttribute( + _('Mail Template Body'), _('Text to be sent to recipient'), + 'fdMailTemplateBody', TRUE + ), + new TextAreaAttribute( + _('Mail Signature'), _('Mail Signature'), + 'fdMailTemplateSignature', FALSE + ), + new FileDownloadAttribute( + _('Attachment'), _('Import a file for this e-mail'), + 'fdMailTemplateAttachment', FALSE, '', TRUE + ), + new BooleanAttribute( + _('Read Receipt'), + _('Read Receipt'), + 'fdMailTemplateReadReceipt', FALSE + ), + ] + ], + ]; + } + + + function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE) + { + global $config; + parent::__construct($dn, $object, $parent, $mainTab); + + } + +} diff --git a/plugins/addons/mailtemplate/class_mailTemplateInvitations.inc b/plugins/addons/mailtemplate/class_mailTemplateInvitations.inc new file mode 100644 index 0000000000000000000000000000000000000000..f33c3fac7f2398d5c25a08288152ce771f32b39e --- /dev/null +++ b/plugins/addons/mailtemplate/class_mailTemplateInvitations.inc @@ -0,0 +1,72 @@ +<?php +/* + This code is part of FusionDirectory (http://www.fusiondirectory.org) + + Copyright (C) 2018-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 mailTemplateInvitations extends simplePlugin +{ + protected $displayHeader = TRUE; + + static function plInfo (): array + { + return [ + 'plShortName' => _('Mail Template Invitations'), + 'plDescription' => _('Mail Template Invitations'), + 'plIcon' => 'geticon.php?context=applications&icon=supann&size=48', + 'plSmallIcon' => 'geticon.php?context=applications&icon=supann-status&size=16', + 'plPriority' => 33, + 'plObjectClass' => ['fdMailTemplateInvitations'], + 'plFilter' => '(objectClass=fdMailTemplateInvitations)', + 'plObjectType' => ['mailTemplate'], + 'plConflicts' => ['mailTemplateUserReminder', 'mailTemplateUserRecovery'], + 'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo()) + ]; + } + + static function getAttributesInfo (): array + { + return [ + 'main' => [ + 'name' => _('Invitation'), + 'attrs' => [ + new StringAttribute( + _('Email subject'), _('Subject of the email sent for this invitation'), + 'fdMTInvitationEmailSubject', TRUE + ), + new TextAreaAttribute( + _('Email content'), _('Content of the email sent for this invitation'), + 'fdMTInvitationEmailContent', TRUE, + 'A default Email here - was previously fetched by default configuration - %token%' + ), + new StringAttribute( + _('Reply to'), _('Email address set as "Reply to" in the sent emails'), + 'fdMTInvitationReplyTo', FALSE + ), + ] + ], + ]; + } + + function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE) + { + global $config; + parent::__construct($dn, $object, $parent, $mainTab); + } + +} diff --git a/plugins/addons/mailtemplate/class_mailTemplateUserRecovery.inc b/plugins/addons/mailtemplate/class_mailTemplateUserRecovery.inc new file mode 100644 index 0000000000000000000000000000000000000000..efa76ec0f88ea23495bbdf15afb7c288da427c59 --- /dev/null +++ b/plugins/addons/mailtemplate/class_mailTemplateUserRecovery.inc @@ -0,0 +1,111 @@ +<?php +/* + This code is part of FusionDirectory (http://www.fusiondirectory.org) + + Copyright (C) 2018-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 mailTemplateUserRecovery extends simplePlugin +{ + protected $displayHeader = TRUE; + + static function plInfo (): array + { + return [ + 'plShortName' => _('Mail Template User Recovery'), + 'plDescription' => _('Mail Template User Recovery'), + 'plIcon' => 'geticon.php?context=applications&icon=supann&size=48', + 'plSmallIcon' => 'geticon.php?context=applications&icon=supann-status&size=16', + 'plPriority' => 31, + 'plObjectClass' => ['fdMailTemplateUserRecovery'], + 'plFilter' => '(objectClass=fdMailTemplateUserRecovery)', + 'plObjectType' => ['mailTemplate'], + 'plConflicts' => ['mailTemplateUserReminder', 'mailTemplateInvitations'], + 'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo()) + ]; + } + + static function getAttributesInfo (): array + { + return [ + 'first_email' => [ + 'name' => _('First email'), + 'attrs' => [ + new StringAttribute( + _('Subject'), + _('Subject of the first email'), + 'fdMTPasswordRecoveryMailSubject', + TRUE, + _("[FusionDirectory] Password recovery link") + ), + new TextAreaAttribute( + _('Body'), + _('Body of the first email, sent when the user ask for a new password. Use %login% for the login and %link% for the recovery link.'), + 'fdMTPasswordRecoveryMailBody', + TRUE, + _("Hello,\n\nHere is your information: \n - Login : %login%\n - Link : %link%\n\nThis link is only valid for 10 minutes.") + ) + ] + ], + 'second_email' => [ + 'name' => _('Second email'), + 'attrs' => [ + new StringAttribute( + _('Subject'), + _('Subject of the second email'), + 'fdMTPasswordRecoveryMail2Subject', + TRUE, + _("[FusionDirectory] Password recovery successful") + ), + new TextAreaAttribute( + _('Body'), + _('Body of the second email, sent to confirm the password has been changed. Use %login% for the user login.'), + 'fdMTPasswordRecoveryMail2Body', + TRUE, + _("Hello,\n\nYour password has been changed.\nYour login is still %login%.") + ) + ] + ] + ]; + } + + function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE) + { + global $config; + parent::__construct($dn, $object, $parent, $mainTab); + } + + protected function shouldSave (): bool + { + global $config; + + $ldap = $config->get_ldap_link(); + $ldap->cd($config->current['BASE']); + $ldap->search('(&(objectClass=fdMailTemplateUserRecovery))', ['cn','fdMTPasswordRecoveryMailSubject']); + while ($attrs = $ldap->fetch()) { + if (isset($this->attrs['fdMTPasswordRecoveryMailSubject'])) { + $error = new FusionDirectoryError(htmlescape(sprintf(_('User Recovery Mail Template Is Already Existing!')))); + $error->display(); + + return FALSE; + } + } + + return TRUE; + } + +} diff --git a/plugins/addons/mailtemplate/class_mailTemplateUserReminder.inc b/plugins/addons/mailtemplate/class_mailTemplateUserReminder.inc new file mode 100644 index 0000000000000000000000000000000000000000..455d9bc7bf3b6f77a5e475f1d2ae1aae05f31874 --- /dev/null +++ b/plugins/addons/mailtemplate/class_mailTemplateUserReminder.inc @@ -0,0 +1,173 @@ +<?php + +/* + This code is part of FusionDirectory (http://www.fusiondirectory.org) + + Copyright (C) 2018-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 mailTemplateUserReminder extends simplePlugin +{ + protected $displayHeader = TRUE; + + static function plInfo (): array + { + return [ + 'plShortName' => _('Mail Template User Reminder'), + 'plDescription' => _('Mail Template User Reminder'), + 'plIcon' => 'geticon.php?context=applications&icon=supann&size=48', + 'plSmallIcon' => 'geticon.php?context=applications&icon=supann-status&size=16', + 'plPriority' => 32, + 'plObjectClass' => ['fdMailTemplateUserReminder'], + 'plFilter' => '(objectClass=fdMailTemplateUserReminder)', + 'plObjectType' => ['mailTemplate'], + 'plConflicts' => ['mailTemplateUserRecovery', 'mailTemplateInvitations'], + 'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo()) + ]; + } + + static function getAttributesInfo (): array + { + return [ + 'emailppolicy' => [ + 'name' => _('Ppolicy email settings'), + 'attrs' => [ + new BooleanAttribute( + _('Forward alerts to the manager'), _('Forward ppolicy alerts to the manager'), + 'fdMTUserReminderForwardPpolicyAlert', FALSE, + TRUE + ), + new StringAttribute( + _('Subject'), _('Subject of the ppolicy alert email'), + 'fdMTUserReminderPpolicyAlertSubject', FALSE, + _('[FusionDirectory] Your password is about to expire') + ), + new TextAreaAttribute( + _('Body (%s are cn and login)'), + _('Body of the ppolicy alert email, sent when the user password is about to expire.'), + 'fdMTUserReminderPpolicyAlertBody', FALSE, + _('Dear %sn%,'."\n". + 'your password for account %login% is about to expire, please change your password: '."\n". + 'https://'.$_SERVER['SERVER_NAME']. + (($_SERVER['SERVER_PORT'] != '80') ? ':'.$_SERVER['SERVER_PORT'] : ''). + (empty($_SERVER['REQUEST_URI']) ? $_SERVER['PATH_INFO'] : $_SERVER['REQUEST_URI']). + "\n") + ) + ] + ], + 'alert_mail_reminder' => [ + 'name' => _('Alert email settings'), + 'attrs' => [ + new BooleanAttribute( + _('Forward alerts to the manager'), _('Forward alerts to the manager'), + 'fdMTUserReminderForwardAlert', TRUE, + TRUE + ), + new StringAttribute( + _('Subject'), _('Subject of the alert email'), + 'fdMTUserReminderAlertSubject', FALSE, + _('[FusionDirectory] Your account is about to expire') + ), + new TextAreaAttribute( + _('Body'), + _('Body of the alert email, sent when the user is about to expire.'), + 'fdMTUserReminderAlertBody', FALSE, + _('Dear %sn%,'."\n". + 'your account %login% is about to expire, please use this link to avoid this: '."\n". + 'https://'.$_SERVER['SERVER_NAME']. + (($_SERVER['SERVER_PORT'] != '80') ? ':'.$_SERVER['SERVER_PORT'] : ''). + (empty($_SERVER['REQUEST_URI']) ? $_SERVER['PATH_INFO'] : $_SERVER['REQUEST_URI']). + '/expired_postpone.php?uid=%login%&token=%token%'."\n") + ) + ] + ], + 'alert_mail_confirmation' => [ + 'name' => _('Confirmation email settings'), + 'attrs' => [ + new BooleanAttribute( + _('Forward confirmation to the manager'), _('Forward account extension confirmation to the manager'), + 'fdMTUserReminderForwardConfirmation', TRUE, + TRUE + ), + new StringAttribute( + _('Subject'), _('Subject of the confirmation email'), + 'fdMTUserReminderConfirmationSubject', FALSE, + _('[FusionDirectory] Your account expiration has been postponed') + ), + new TextAreaAttribute( + _('Body'), + _('Body of the confirmation email, sent when the user has postponed expiration.'), + 'fdMTUserReminderConfirmationBody', FALSE, + _('Dear %sn%,'."\n".' your account %login% expiration has been successfully postponed.'."\n") + ), + ] + ], + 'alert_mail_expiration' => [ + 'name' => _('Expiration email settings'), + 'attrs' => [ + new BooleanAttribute( + _('Forward to the manager'), _('Forward account expiration to the manager'), + 'fdMTUserReminderForwardExpiration', TRUE, + TRUE + ), + new StringAttribute( + _('Subject'), _('Subject of the expiration email'), + 'fdMTUserReminderExpirationSubject', FALSE, + _('[FusionDirectory] Your account has expired') + ), + new TextAreaAttribute( + _('Body (%s are cn and login)'), + _('Body of the expiration email, sent when the user has expired.'), + 'fdMTUserReminderExpirationBody', FALSE, + _('Dear %sn%,'."\n".' your account %login% has expired.'."\n") + ), + ] + ], + ]; + } + + function __construct (string $dn = NULL, $object = NULL, $parent = NULL, bool $mainTab = FALSE, array $attributesInfo = NULL) + { + parent::__construct($dn, $object, $parent, $mainTab, $attributesInfo); + + if (!class_available('ppolicy')) { + $this->attributesAccess['fdMTUserReminderForwardPpolicyAlert']->setDisabled(TRUE); + $this->attributesAccess['fdMTUserReminderPpolicyAlertSubject']->setDisabled(TRUE); + $this->attributesAccess['fdMTUserReminderPpolicyAlertBody']->setDisabled(TRUE); + } + } + + protected function shouldSave (): bool + { + global $config; + + $ldap = $config->get_ldap_link(); + $ldap->cd($config->current['BASE']); + $ldap->search('(&(objectClass=fdMailTemplateUserReminder))', ['cn','fdMTUserReminderAlertSubject']); + while ($attrs = $ldap->fetch()) { + if (isset($this->attrs['fdMTUserReminderAlertSubject'])) { + $error = new FusionDirectoryError(htmlescape(sprintf(_('User Reminder Mail Template Is Already Existing!')))); + $error->display(); + + return FALSE; + } + } + + return TRUE; + } +} + diff --git a/plugins/addons/tasks/class_tasks.inc b/plugins/addons/tasks/class_tasks.inc new file mode 100644 index 0000000000000000000000000000000000000000..4c3d4849e0af0509388db7ecc4a875843fc75964 --- /dev/null +++ b/plugins/addons/tasks/class_tasks.inc @@ -0,0 +1,73 @@ +<?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 tasks extends simplePlugin +{ + protected $displayHeader = FALSE; + + static function plInfo (): array + { + return [ + 'plShortName' => _('Tasks'), + 'plDescription' => _('Tasks'), + 'plObjectClass' => ['fdTasks'], + 'plFilter' => '(objectClass=fdTasks)', + 'plPriority' => 41, + 'plObjectType' => ['tasks' => [ + 'name' => _('Tasks'), + 'ou' => get_ou('tasksRDN'), + 'icon' => 'geticon.php?context=applications&icon=dsa&size=16', + ]], + 'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo()) + ]; + } + + static function getAttributesInfo (): array + { + return [ + // Attributes are grouped by section + 'tasks' => [ + 'name' => _('Tasks Generic'), + 'attrs' => [ + new StringAttribute( + _('Task Name'), _('Name for this task'), + 'cn', TRUE + ), + new DateTimeAttribute( + _('Schedule'), '', + 'fdTasksScheduleDate', FALSE + ), + new HiddenAttribute('fdTasksStatus', TRUE, '1', '', 'Status', 'Status of the task'), + new HiddenAttribute('fdTasksCreationDate', TRUE, date("Y-m-d h:i:sa"), '', 'StartDate', 'Start Date And Time Of A Task'), + ] + ], + ]; + } + + + function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE) + { + global $config; + parent::__construct($dn, $object, $parent, $mainTab); + + } + +} diff --git a/plugins/addons/tasks/class_tasksMail.inc b/plugins/addons/tasks/class_tasksMail.inc new file mode 100644 index 0000000000000000000000000000000000000000..8c05d032ed6d94e2eb2084824afc28291af37c8e --- /dev/null +++ b/plugins/addons/tasks/class_tasksMail.inc @@ -0,0 +1,144 @@ +<?php +/* + This code is part of FusionDirectory (http://www.fusiondirectory.org) + + Copyright (C) 2018-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 tasksMail extends simplePlugin +{ + protected $displayHeader = TRUE; + + static function plInfo (): array + { + return [ + 'plShortName' => _('Tasks Mail'), + 'plDescription' => _('Tasks Mail Object'), + 'plIcon' => 'geticon.php?context=applications&icon=supann&size=48', + 'plSmallIcon' => 'geticon.php?context=applications&icon=supann-status&size=16', + 'plPriority' => 42, + 'plObjectClass' => ['fdTasksMail'], + 'plFilter' => '(objectClass=fdTasksMail)', + 'plObjectType' => ['tasks'], + 'plConflicts' => [''], + 'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo()), + 'plForeignKeys' => [ + 'fdTasksMailUsers' => [ + ['user','dn','fdTasksMailUsers=%oldvalue%','*'] + ] + ], + ]; + } + + static function getAttributesInfo (): array + { + return [ + // Attributes are grouped by section + 'taskMail' => [ + 'name' => _('Task Mail Object'), + 'attrs' => [ + new SelectAttribute( + _('Mail Template'), _('Mail Template Object Selection'), + 'fdTasksMailObject', FALSE + ), + new HiddenArrayAttribute('fdTasksEmailsFromDN', FALSE, ''), + ] + ], + 'From Component' => [ + 'name' => _('Sender Address'), + 'attrs' => [ + new MailAttribute( + _('Sender email address'), + _('Email address from which mails will be sent'), 'fdTasksEmailSender', TRUE, 'to.be@chang.ed'), + ] + ], + 'UserGroupSelection' => [ + 'name' => _('Recipients Users and/or Groups'), + 'attrs' => [ + new UsersGroupsRolesAttribute( + _('Members'), _('Users or groups to assign to this task.'), + 'fdTasksMailUsers', TRUE + ), + ], + ] + ]; + } + + function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE) + { + global $config; + parent::__construct($dn, $object, $parent, $mainTab); + + //Search within LDAP and retrieve all mail objects for current base. + $ldap = $config->get_ldap_link(); + $ldap->cd($config->current['BASE']); + $ldap->search('(&(objectClass=fdMailTemplate))', ['cn']); + $tmpSearch = []; + while ($attrs = $ldap->fetch()) { + $tmpSearch[$attrs['cn'][0]] = $attrs['cn'][0]; + } + asort($tmpSearch); + $this->attributesAccess['fdTasksMailObject']->setChoices(array_keys($tmpSearch), array_values($tmpSearch)); + + } + + /* + * Must return bool to be compliant with the interface + * Allows attributes values based on others to be updated before save. + */ + public function update (): bool + { + parent::update(); + $this->setEmailsFromSelectedDN(); + + return TRUE; + } + + /* + * Populate the fdTasksEmailsFromDN attribute with related mails addresses. + */ + public function setEmailsFromSelectedDN () : void + { + global $config; + + $ldap = $config->get_ldap_link(); + $attributeValue = $this->attributesAccess['fdTasksMailUsers']->getValue(); + + if ($attributeValue && !empty($attributeValue)) { + + $mailList = []; + + foreach ($this->attributesAccess['fdTasksMailUsers']->getValue() as $dn) { + + $ldap->cd($dn); + $filter = "(objectClass=gosaMailAccount)"; + $attrs = ["mail"]; + + $ldap->search($filter, $attrs); + $info = $ldap->fetch(); + + // To be developped properly to take Supann and other Mail attributes into consideration. + if (!empty($info["mail"][0]) && isset($info["mail"][0])) { + $mailList[] = $info["mail"][0]; + } + } + $this->attributesAccess['fdTasksEmailsFromDN']->setValue(array_values($mailList)); + print_r($mailList); + } + } + +} diff --git a/plugins/admin/mailtemplate/class_mailTemplateManagement.inc b/plugins/admin/mailtemplate/class_mailTemplateManagement.inc new file mode 100644 index 0000000000000000000000000000000000000000..f211ee33e68752f8e80ee13fe67b105787ee904d --- /dev/null +++ b/plugins/admin/mailtemplate/class_mailTemplateManagement.inc @@ -0,0 +1,159 @@ +<?php + +/* + This code is part of FusionDirectory (http://www.fusiondirectory.org/) + Copyright (C) 2011-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 mailTemplateManagement extends management +{ + + public static $columns = [ + ['ObjectTypeColumn', []], + ['LinkColumn', ['attributes' => 'cn', 'label' => 'Template Name']], + ['ActionsColumn', ['label' => 'Actions']], + ]; + + static function plInfo (): array + { + return [ + 'plShortName' => _('Mail Template'), + 'plTitle' => _('Mail Template'), + 'plDescription' => _('Manages mails templates'), + 'plIcon' => 'geticon.php?context=types&icon=user&size=48', + 'plManages' => ['mailTemplate'], + 'plSection' => 'conf', + 'plPriority' => 30, + 'plProvidedAcls' => [], + ]; + } + + protected function configureActions () + { + global $config; + + $createMenu = []; + + foreach ($this->objectTypes as $type) { + $infos = objects::infos($type); + $img = 'geticon.php?context=actions&icon=document-new&size=16'; + if (isset($infos['icon'])) { + $img = $infos['icon']; + } + $createMenu[] = new Action( + 'new_'.$type, $infos['name'], $img, + '0', 'newEntry', + [$infos['aclCategory'].'/'.$infos['mainTab'].'/c'] + ); + } + + $this->registerAction( + new SubMenuAction( + 'new', _('Create'), 'geticon.php?context=actions&icon=document-new&size=16', + $createMenu + ) + ); + + // Add export actions + $exportMenu = []; + foreach ($this->exporters as $action => $exporter) { + $exportMenu[] = new Action( + $action, $exporter['label'], $exporter['image'], + '0', 'export' + ); + } + $this->registerAction( + new SubMenuAction( + 'export', _('Export list'), 'geticon.php?context=actions&icon=document-export&size=16', + $exportMenu + ) + ); + + $this->registerAction( + new Action( + 'edit', _('Edit'), 'geticon.php?context=actions&icon=document-edit&size=16', + '+', 'editEntry' + ) + ); + $this->actions['edit']->setSeparator(TRUE); + + if (!$this->skipCpHandler) { + $this->registerAction( + new Action( + 'cut', _('Cut'), 'geticon.php?context=actions&icon=edit-cut&size=16', + '+', 'copyPasteHandler', + ['dr'] + ) + ); + $this->registerAction( + new Action( + 'copy', _('Copy'), 'geticon.php?context=actions&icon=edit-copy&size=16', + '+', 'copyPasteHandler', + ['r'] + ) + ); + $this->registerAction( + new Action( + 'paste', _('Paste'), 'geticon.php?context=actions&icon=edit-paste&size=16', + '0', 'copyPasteHandler', + ['w'] + ) + ); + $this->actions['paste']->setEnableFunction([$this, 'enablePaste']); + } + + $this->registerAction( + new Action( + 'remove', _('Remove'), 'geticon.php?context=actions&icon=edit-delete&size=16', + '+', 'removeRequested', + ['d'] + ) + ); + + if (!static::$skipSnapshots && ($config->get_cfg_value('enableSnapshots') == 'TRUE')) { + $this->registerAction( + new Action( + 'snapshot', _('Create snapshot'), 'geticon.php?context=actions&icon=snapshot&size=16', + '1', 'createSnapshotDialog', + ['/SnapshotHandler/c'] + ) + ); + $this->registerAction( + new Action( + 'restore', _('Restore snapshot'), 'geticon.php?context=actions&icon=document-restore&size=16', + '*', 'restoreSnapshotDialog', + ['w', '/SnapshotHandler/r'] + ) + ); + $this->actions['snapshot']->setSeparator(TRUE); + $this->actions['restore']->setEnableFunction([$this, 'enableSnapshotRestore']); + } + + + /* Actions from footer are not in any menus and do not need a label */ + $this->registerAction(new HiddenAction('apply', 'applyChanges')); + $this->registerAction(new HiddenAction('save', 'saveChanges')); + $this->registerAction(new HiddenAction('cancel', 'cancelEdit')); + $this->registerAction(new HiddenAction('cancelDelete', 'cancelEdit')); + $this->registerAction(new HiddenAction('removeConfirmed', 'removeConfirmed')); + if (!$this->skipConfiguration) { + $this->registerAction(new HiddenAction('configure', 'configureDialog')); + } + } + + +} diff --git a/plugins/admin/tasks/class_tasksColumn.inc b/plugins/admin/tasks/class_tasksColumn.inc new file mode 100644 index 0000000000000000000000000000000000000000..d3009a144a3699c9a87d03fe6ef5f03da1335f41 --- /dev/null +++ b/plugins/admin/tasks/class_tasksColumn.inc @@ -0,0 +1,68 @@ +<?php +/* + This code is part of FusionDirectory (http://www.fusiondirectory.org/) + + Copyright (C) 2011-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. +*/ + +/*! + * \brief Column rendering Tasks columns + */ +class TasksColumn extends Column +{ + // Keep in mind this method is being called for each value. + protected function renderSingleValue (ListingEntry $entry, string $value): string + { + if ($value == '') { + return ' '; + } else { + switch ($this->attributes[0]) { + case 'fdTasksStatus': + return static::filterStatus(intval($value)); + + case 'fdTasksMailObject': + return "Mail Object"; + + case 'fdTasksScheduleDate': + // Z is added to value to match ldap generaliseztime + $datetime = (new LdapGeneralizedTime)->fromString($value.'Z'); + $result = $datetime->format('Y-m-d H:i:s'); + return $result; + + default: + return parent::renderSingleValue($entry, $value); + } + } + } + + static function filterStatus (int $status = NULL): string + { + // A call towards a status map would be interesting here. + switch ($status) { + case 1 : + return "Created"; + + case 2 : + return "Processed"; + + default : + return "Error Encountered"; + + } + } + +} diff --git a/plugins/admin/tasks/class_tasksManagement.inc b/plugins/admin/tasks/class_tasksManagement.inc new file mode 100644 index 0000000000000000000000000000000000000000..b59b90fcfa9917b90d7655baa218a8144dacfff4 --- /dev/null +++ b/plugins/admin/tasks/class_tasksManagement.inc @@ -0,0 +1,60 @@ +<?php +/* + This code is part of FusionDirectory (http://www.fusiondirectory.org/) + Copyright (C) 2011-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 tasksManagement extends management +{ + + /* + * LinkColumn exists by class collumn + * TasksColumn is a new class for Tasks bassed on argonaut column definition + */ + public static $columns = [ + ['LinkColumn', ['attributes' => 'cn', 'label' => 'Tasks']], + //below fdTasksMailObject must be change to have a type defined within task creation (new ldap attributes ?hidden) + ['TasksColumn', ['attributes' => 'fdTasksMailObject', 'label' => 'Types']], + ['TasksColumn', ['attributes' => 'fdTasksScheduleDate', 'label' => 'Schedule']], + //below fdTasksStatus attribute needs to be calculated based on the type of the task. + ['TasksColumn', ['attributes' => 'fdTasksStatus', 'label' => 'Status']], + ['Column', ['attributes' => 'fdTasksCreationDate', 'label' => 'Creation Date']], + ['ActionsColumn', ['label' => 'Actions']], + ]; + + static function plInfo () + { + return [ + 'plShortName' => _('Tasks'), + 'plDescription' => _('Provide a mechanism to create and manage tasks'), + 'plTitle' => _('Tasks'), + 'plIcon' => 'geticon.php?context=applications&icon=argonaut&size=48', + 'plSection' => 'conf', + 'plPriority' => 40, + 'plManages' => ['tasks'], + 'plProvidedAcls' => [], + ]; + } + + protected function setUpListing () + { + /* Set baseMode to FALSE */ + $this->listing = new managementListing($this, FALSE); + + } + +} diff --git a/plugins/config/class_macroConfig.inc b/plugins/config/class_macroConfig.inc new file mode 100644 index 0000000000000000000000000000000000000000..656647444907a250027c2388b5c3c28793eced80 --- /dev/null +++ b/plugins/config/class_macroConfig.inc @@ -0,0 +1,100 @@ +<?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 simplePlugin +{ + static function plInfo (): array + { + return [ + 'plShortName' => _('Macro'), + 'plDescription' => _('FusionDirectory macro configuration tool'), + 'plObjectClass' => ['fdMacroConf'], + 'plObjectType' => ['configuration'], + + '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' => _('Mail Object'), + 'attrs' => [ + new SetAttribute( + new CompositeAttribute( + _('Macro definitions'), + 'fdMacroMail', + [ + new SelectAttribute( + '', _('Macro type'), + 'fdMacroTypes', TRUE + ), + new StringAttribute( + _('Macros User Definition'), _('Macro that will be used'), + 'fdMacroOption', TRUE, '' + ), + ], + '/^{(.+)}(.*)$/', + '{%s}%s', + '', + _('Macro settings (wrap the macro with % sign)') + ) + ), + ] + ], + ]; + } + + function __construct ($dn = NULL, $object = NULL, $parent = NULL, $mainTab = FALSE) + { + global $config; + + parent::__construct($dn, $object, $parent, $mainTab); + + /* supannTelephonePrive */ + $MacroTypes = [ + 'LOGIN' => _('Login'), + 'UID' => _('UID'), + 'TOKEN' => _('Token'), + ]; + foreach ($config->get_cfg_value('MacroTypes', []) as $line) { + list($type,$label) = explode(':', $line, 2); + $MacroTypes[$type] = $label; + } + $this->attributesAccess['fdMacroMail']->attribute->attributes[0]->setChoices( + array_keys($MacroTypes), + array_values($MacroTypes) + ); + + } + +} + diff --git a/plugins/config/mailtemplate/class_mailTemplateConfig.inc b/plugins/config/mailtemplate/class_mailTemplateConfig.inc new file mode 100644 index 0000000000000000000000000000000000000000..a1a2e8957ed6635ba889de9367e8a2fa09ef0f8f --- /dev/null +++ b/plugins/config/mailtemplate/class_mailTemplateConfig.inc @@ -0,0 +1,52 @@ +<?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 mailTemplateConfig extends multiPluginSection +{ + static function plInfo (): array + { + return [ + 'plShortName' => _('mail template configuration'), + 'plDescription' => _('FusionDirectory mail template plugin configuration'), + 'plObjectClass' => ['fdMailTemplateConf'], + 'plCategory' => ['configuration'], + 'plObjectType' => ['smallConfig'], + + 'plProvidedAcls' => parent::generatePlProvidedAcls(static::getAttributesInfo()) + ]; + } + + static function getAttributesInfo (): array + { + return [ + 'mailTemplateConf' => [ + 'name' => _('Mail Template'), + 'attrs' => [ + new StringAttribute( + _('Mail Template RDN'), _('Branch in which Directory Base, mails templates will be stored'), + 'fdMailTemplateRDN', TRUE, + 'ou=mailTemplate' + ), + ] + ], + ]; + } +} +