Commit 391cb40d authored by Côme Chilliet's avatar Côme Chilliet
Browse files

:ambulance: fix(user-reminder) Add an option to use alternate addresses as well

This adds an option to use alternate addresses as well, and makes sure
 the order in which email fields are checked is consistent for users
 and managers

issue #5756
Showing with 28 additions and 6 deletions
+28 -6
......@@ -59,6 +59,11 @@ class userReminderConfig extends simplePlugin
'fdUserReminderEmail', TRUE,
'to.be@chang.ed'
),
new BooleanAttribute (
_('Allow use of alternate addresses'), _('Whether the field gosaMailAlternateAddress should be used as well to send reminders'),
'fdUserReminderUseAlternate', TRUE,
TRUE
),
)
),
'emailppolicy' => array(
......
......@@ -89,6 +89,12 @@ attributetype ( 1.3.6.1.4.1.38414.59.1.14 NAME 'fdUserReminderPpolicyAlertBody'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.38414.59.1.15 NAME 'fdUserReminderUseAlternate'
DESC 'FusionDirectory - Use alternate addresses'
EQUALITY booleanMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
SINGLE-VALUE )
# Object Class
objectclass ( 1.3.6.1.4.1.38414.59.2.1 NAME 'fdUserReminderPluginConf'
......@@ -101,4 +107,4 @@ objectclass ( 1.3.6.1.4.1.38414.59.2.1 NAME 'fdUserReminderPluginConf'
fdUserReminderConfirmationSubject $ fdUserReminderConfirmationBody $
fdUserReminderAlertSubject $ fdUserReminderAlertBody $
fdUserReminderPpolicyAlertSubject $ fdUserReminderPpolicyAlertBody $
fdUserReminderForwardPpolicyAlert ) )
fdUserReminderForwardPpolicyAlert $ fdUserReminderUseAlternate ) )
......@@ -34,6 +34,7 @@ class expiredUserPostpone extends standAlonePage
$this->mail_subject = $config->get_cfg_value('userReminderConfirmationSubject', '');
$this->mail_body = $config->get_cfg_value('userReminderConfirmationBody', '');
$this->from_mail = $config->get_cfg_value('userReminderEmail');
$this->use_alternate = ($config->get_cfg_value('userReminderUseAlternate', 'TRUE') == 'TRUE');
return TRUE;
}
......@@ -151,10 +152,12 @@ class expiredUserPostpone extends standAlonePage
$manager_dn = $userTabs->getBaseObject()->manager;
if (isset($userTabs->by_object['mailAccount'])) {
$email_address = $userTabs->by_object['mailAccount']->mail;
} elseif (isset($userTabs->by_object['personalInfo']) && !empty($userTabs->by_object['personalInfo']->fdPrivateMail)) {
$email_address = $userTabs->by_object['personalInfo']->fdPrivateMail;
} elseif ($this->use_alternate && isset($userTabs->by_object['mailAccount']) && !empty($userTabs->by_object['mailAccount']->gosaMailAlternateAddress)) {
$email_address = reset($userTabs->by_object['mailAccount']->gosaMailAlternateAddress);
} elseif (isset($userTabs->by_object['supannAccount']) && !empty($userTabs->by_object['supannAccount']->supannAutreMail)) {
$email_address = reset($userTabs->by_object['supannAccount']->supannAutreMail);
} elseif (isset($userTabs->by_object['personalInfo']) && !empty($userTabs->by_object['personalInfo']->fdPrivateMail)) {
$email_address = $userTabs->by_object['personalInfo']->fdPrivateMail;
}
$manager_mail = '';
......@@ -167,9 +170,17 @@ class expiredUserPostpone extends standAlonePage
}
}
if (!empty($manager_dn)) {
$ldap->cat($manager_dn, array('cn', 'mail'));
if (($attrs = $ldap->fetch()) && isset($attrs['mail'][0])) {
$manager_mail = $attrs['mail'][0];
$ldap->cat($manager_dn, array('cn', 'mail', 'gosaMailAlternateAddress', 'supannAutreMail', 'fdPrivateMail'));
if ($attrs = $ldap->fetch()) {
if (!empty($attrs['mail'][0])) {
$manager_mail = $attrs['mail'][0];
} elseif ($this->use_alternate && !empty($attrs['gosaMailAlternateAddress'][0])) {
$manager_mail = $attrs['gosaMailAlternateAddress'][0];
} elseif (!empty($attrs['supannAutreMail'][0])) {
$manager_mail = $attrs['supannAutreMail'][0];
} elseif (!empty($attrs['fdPrivateMail'][0])) {
$manager_mail = $attrs['fdPrivateMail'][0];
}
}
}
}
......
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