Verified Commit 35fc0364 authored by dockx thibault's avatar dockx thibault
Browse files

:sparkles: Feat(Tasks) - Dashboard v0.8

Mail Tasks can now select the proper mail object type
required, making selection of differents emails type possible.
Showing with 78 additions and 15 deletions
+78 -15
...@@ -328,41 +328,47 @@ attributetype ( 1.3.6.1.4.1.38414.89.1.8 NAME 'fdTasksEmailSender' ...@@ -328,41 +328,47 @@ attributetype ( 1.3.6.1.4.1.38414.89.1.8 NAME 'fdTasksEmailSender'
EQUALITY caseExactMatch EQUALITY caseExactMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
attributetype ( 1.3.6.1.4.1.38414.89.1.9 NAME 'fdTasksMailType'
DESC 'Fusion Directory - Type of Mail attribute required'
EQUALITY caseExactMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
SINGLE-VALUE )
##### Tasks Granular ##### ##### Tasks Granular #####
attributetype ( 1.3.6.1.4.1.38414.89.1.9 NAME 'fdTasksGranularStatus' attributetype ( 1.3.6.1.4.1.38414.89.1.10 NAME 'fdTasksGranularStatus'
DESC 'Fusion Directory - Task Status' DESC 'Fusion Directory - Task Status'
EQUALITY caseExactMatch EQUALITY caseExactMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
attributetype ( 1.3.6.1.4.1.38414.89.1.10 NAME 'fdTasksGranularSchedule' attributetype ( 1.3.6.1.4.1.38414.89.1.11 NAME 'fdTasksGranularSchedule'
DESC 'Scheduling of the Task - required processed date' DESC 'Scheduling of the Task - required processed date'
EQUALITY caseExactIA5Match EQUALITY caseExactIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
attributetype ( 1.3.6.1.4.1.38414.89.1.11 NAME 'fdTasksGranularMaster' attributetype ( 1.3.6.1.4.1.38414.89.1.12 NAME 'fdTasksGranularMaster'
DESC 'Fusion Directory - Tasks Master objects' DESC 'Fusion Directory - Tasks Master objects'
EQUALITY caseExactMatch EQUALITY caseExactMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
SINGLE-VALUE ) SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.38414.89.1.12 NAME 'fdTasksGranularType' attributetype ( 1.3.6.1.4.1.38414.89.1.13 NAME 'fdTasksGranularType'
DESC 'Fusion Directory - Tasks Type' DESC 'Fusion Directory - Tasks Type'
EQUALITY caseExactMatch EQUALITY caseExactMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
SINGLE-VALUE ) SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.38414.89.1.13 NAME 'fdTasksGranularMail' attributetype ( 1.3.6.1.4.1.38414.89.1.14 NAME 'fdTasksGranularMail'
DESC 'Fusion Directory - Emails recipients if object mail' DESC 'Fusion Directory - Emails recipients if object mail'
EQUALITY caseExactMatch EQUALITY caseExactMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
attributetype ( 1.3.6.1.4.1.38414.89.1.14 NAME 'fdTasksGranularMailFrom' attributetype ( 1.3.6.1.4.1.38414.89.1.15 NAME 'fdTasksGranularMailFrom'
DESC 'Fusion Directory - Emails sender if object mail' DESC 'Fusion Directory - Emails sender if object mail'
EQUALITY caseExactMatch EQUALITY caseExactMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
attributetype ( 1.3.6.1.4.1.38414.89.1.15 NAME 'fdTasksGranularRef' attributetype ( 1.3.6.1.4.1.38414.89.1.16 NAME 'fdTasksGranularRef'
DESC 'Fusion Directory - Reference towards a CN (E.g Mail Template)' DESC 'Fusion Directory - Reference towards a CN (E.g Mail Template)'
EQUALITY caseExactMatch EQUALITY caseExactMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
...@@ -461,7 +467,7 @@ objectclass (1.3.6.1.4.1.38414.89.2.2 NAME 'fdTasksMail' ...@@ -461,7 +467,7 @@ objectclass (1.3.6.1.4.1.38414.89.2.2 NAME 'fdTasksMail'
DESC 'FusionDirectory - Tasks objects Mail' DESC 'FusionDirectory - Tasks objects Mail'
SUP top AUXILIARY SUP top AUXILIARY
MUST ( fdTasksMailObject $ fdTasksEmailSender ) MUST ( fdTasksMailObject $ fdTasksEmailSender )
MAY ( fdTasksMailUsers $ fdTasksEmailsFromDN ) ) MAY ( fdTasksMailUsers $ fdTasksEmailsFromDN $ fdTasksMailType ) )
objectclass (1.3.6.1.4.1.38414.89.2.3 NAME 'fdTasksGranular' objectclass (1.3.6.1.4.1.38414.89.2.3 NAME 'fdTasksGranular'
DESC 'FusionDirectory - Tasks granular objects' DESC 'FusionDirectory - Tasks granular objects'
......
...@@ -74,6 +74,15 @@ class tasksMail extends simplePlugin ...@@ -74,6 +74,15 @@ class tasksMail extends simplePlugin
'fdTasksMailUsers', TRUE 'fdTasksMailUsers', TRUE
), ),
], ],
],
'tasksMailType' => [
'name' => _('Type of e-mail address desired'),
'attrs' => [
new SelectAttribute(
_('Mail Type - If not found, priority will apply'), _('Mail Type Object Selection'),
'fdTasksMailType', FALSE
),
],
] ]
]; ];
} }
...@@ -93,6 +102,18 @@ class tasksMail extends simplePlugin ...@@ -93,6 +102,18 @@ class tasksMail extends simplePlugin
} }
asort($tmpSearch); asort($tmpSearch);
$this->attributesAccess['fdTasksMailObject']->setChoices(array_keys($tmpSearch), array_values($tmpSearch)); $this->attributesAccess['fdTasksMailObject']->setChoices(array_keys($tmpSearch), array_values($tmpSearch));
$mailAttrTypes = [
'mail' => 'mail - [gosaMailAccount primary]',
'gosaMailAlternateAddress' => 'gosaMailAlternateAddress',
'gosaMailForwardingAddress' => 'gosaMailForwardingAddress',
'supannAutreMail' => 'supannAutreMail',
'supannMailPerso' => 'supannMailPerso',
'supannMailPrive' => 'supannMailPrive'
];
$this->attributesAccess['fdTasksMailType']->setChoices(array_keys($mailAttrTypes), array_values($mailAttrTypes));
} }
/* /*
...@@ -102,15 +123,47 @@ class tasksMail extends simplePlugin ...@@ -102,15 +123,47 @@ class tasksMail extends simplePlugin
public function update (): bool public function update (): bool
{ {
parent::update(); parent::update();
$this->setEmailsFromSelectedDN();
// get the value of type mail desired and if null set default
$mailAttr = $this->attributesAccess['fdTasksMailType']->getValue();
if (empty($mailAttr)) {
$mailAttr = 'mail';
}
// create a method which return the objectype and attribute names required
$mailObject = $this->getMailObject($mailAttr);
// send the objectype and attrs name to the below method
$this->setEmailsFromSelectedDN($mailObject, $mailAttr);
return TRUE; return TRUE;
} }
/*
* Return the objectype searched for by setEmailFromSelectedDN
*/
public function getMailObject (string $mailAttr) : string
{
switch ($mailAttr) {
case 'mail' :
case 'gosaMailAlternateAddress' :
case 'gosaMailForwardingAddress':
return 'gosaMailAccount';
case 'supannAutreMail' :
case 'supannMailPerso' :
case 'supannMailPrive' :
return 'supannPerson';
default :
return 'gosaMailAccount';
}
}
/* /*
* Populate the fdTasksEmailsFromDN attribute with related mails addresses. * Populate the fdTasksEmailsFromDN attribute with related mails addresses.
*/ */
public function setEmailsFromSelectedDN () : void public function setEmailsFromSelectedDN ($mailObject, $mailAttr) : void
{ {
global $config; global $config;
...@@ -124,15 +177,19 @@ class tasksMail extends simplePlugin ...@@ -124,15 +177,19 @@ class tasksMail extends simplePlugin
foreach ($this->attributesAccess['fdTasksMailUsers']->getValue() as $dn) { foreach ($this->attributesAccess['fdTasksMailUsers']->getValue() as $dn) {
$ldap->cd($dn); $ldap->cd($dn);
$filter = "(objectClass=gosaMailAccount)";
$attrs = ["mail"]; // filter and attributes should be equals to the arguments passed to this method
$filter = "(objectClass=$mailObject)";
$attrs = [$mailAttr];
$ldap->search($filter, $attrs); $ldap->search($filter, $attrs);
$info = $ldap->fetch(); $info = $ldap->fetch();
// To be developped properly to take Supann and other Mail attributes into consideration. if (!empty($info[$mailAttr][0]) && isset($info[$mailAttr][0])) {
if (!empty($info["mail"][0]) && isset($info["mail"][0])) { // In case of private supann mail, remove the prefix
$mailList[] = $info["mail"][0]; $mailList[] = preg_replace('/.+?(?=supann)/', '', $info[$mailAttr][0]);
// A possible enhancement is to recall itself with another mailObject / attr
} }
} }
$this->attributesAccess['fdTasksEmailsFromDN']->setValue(array_values($mailList)); $this->attributesAccess['fdTasksEmailsFromDN']->setValue(array_values($mailList));
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment