diff --git a/lam/HISTORY b/lam/HISTORY
index 46d6b60d..9a8b547d 100644
--- a/lam/HISTORY
+++ b/lam/HISTORY
@@ -1,4 +1,5 @@
September 2012 3.9
+ - Kolab 2.4 support
- LAM Pro
-> support RFC2307bis automount entries
-> read-only fields in self service
diff --git a/lam/lib/modules/kolabUser.inc b/lam/lib/modules/kolabUser.inc
index 7a1f6edf..98cf75c0 100644
--- a/lam/lib/modules/kolabUser.inc
+++ b/lam/lib/modules/kolabUser.inc
@@ -78,47 +78,27 @@ class kolabUser extends baseModule {
// managed object classes
$return['objectClasses'] = array('kolabInetOrgPerson');
// managed attributes
- $return['attributes'] = array('c', 'alias', 'kolabHomeServer', 'kolabHomeMTA', 'kolabDelegate',
- 'cyrus-userquota', 'kolabInvitationPolicy', 'kolabFreeBusyFuture', 'kolabDeleteflag');
+ $return['attributes'] = array('alias', 'mailHost', 'kolabDelegate', 'kolabInvitationPolicy', 'kolabDeleteflag');
// profile options
$profileContainer = new htmlTable();
- $profileContainer->addElement(new htmlTableExtendedInputField(_('Mail server'), 'kolab_homeServer', null, 'homeServer'), true);
- $profileContainer->addElement(new htmlTableExtendedInputField(_('Country'), 'kolab_country', null, 'country'), true);
- $profileContainer->addElement(new htmlTableExtendedInputField(_('Free/Busy interval'), 'kolab_freeBusy', null, 'freeBusy'), true);
- $profileContainer->addElement(new htmlTableExtendedInputField(_('Mail quota'), 'kolab_quota', null, 'quota'), true);
+ $profileContainer->addElement(new htmlTableExtendedInputField(_('Mail server'), 'kolab_mailHost', null, 'mailHost'), true);
$return['profile_options'] = $profileContainer;
// profile checks
- $return['profile_checks']['kolab_homeServer'] = array(
+ $return['profile_checks']['kolab_mailHost'] = array(
'type' => 'ext_preg',
'regex' => 'DNSname',
- 'error_message' => $this->messages['homeServer'][0]);
- $return['profile_checks']['kolab_country'] = array(
- 'type' => 'ext_preg',
- 'regex' => 'country',
- 'error_message' => $this->messages['country'][0]);
- $return['profile_checks']['kolab_freeBusy'] = array(
- 'type' => 'ext_preg',
- 'regex' => 'digit',
- 'error_message' => $this->messages['freeBusy'][0]);
- $return['profile_checks']['kolab_quota'] = array(
- 'type' => 'ext_preg',
- 'regex' => 'digit',
- 'error_message' => $this->messages['quota'][0]);
+ 'error_message' => $this->messages['mailHost'][0]);
// profile mappings
$return['profile_mappings'] = array(
- 'kolab_homeServer' => 'kolabHomeServer',
- 'kolab_country' => 'c',
- 'kolab_freeBusy' => 'kolabFreeBusyFuture',
- 'kolab_quota' => 'cyrus-userquota'
+ 'kolab_mailHost' => 'mailHost',
);
// self service field settings
$return['selfServiceFieldSettings'] = array(
- 'kolabFreeBusyFuture' => _('Free/Busy interval'),
'kolabDelegate' => _('Delegates'),
'kolabInvitationPolicy' => _('Invitation policy')
);
// possible self service read-only fields
- $return['selfServiceReadOnlyFields'] = array('kolabFreeBusyFuture', 'kolabDelegate', 'kolabInvitationPolicy');
+ $return['selfServiceReadOnlyFields'] = array('kolabDelegate', 'kolabInvitationPolicy');
// help Entries
$return['help'] = array(
'invPol' => array(
@@ -145,22 +125,10 @@ class kolabUser extends baseModule {
"Headline" => _("Email alias list"), 'attr' => 'alias',
"Text" => _("This is a comma separated list of eMail aliases.")
),
- 'country' => array(
- "Headline" => _("Country"), 'attr' => 'c',
- "Text" => _("The country name of the user.")
- ),
- 'homeServer' => array(
- "Headline" => _("Mailbox home server"), 'attr' => 'kolabHomeServer',
+ 'mailHost' => array(
+ "Headline" => _("Mailbox home server"), 'attr' => 'mailHost',
"Text" => _("The name of the server where the mailbox is located.")
),
- 'freeBusy' => array(
- "Headline" => _("Free/Busy interval"), 'attr' => 'kolabFreeBusyFuture',
- "Text" => _("This is the time limit (in days) for other users who want to check future appointments. If you leave this blank the default (60 days) will be set.")
- ),
- 'quota' => array(
- "Headline" => _("Mail quota"), 'attr' => 'cyrus-userquota',
- "Text" => _("The Cyrus mail quota for users in MBytes, leave blank for unlimited space.")
- ),
'deleteFlag' => array(
"Headline" => _("Mark for deletion"), 'attr' => 'kolabDeleteflag',
"Text" => _("This will set a special flag on the account which tells Kolabd to remove it. Use this to cleanly delete Kolab accounts (e.g. this removes mail boxes).")
@@ -174,15 +142,9 @@ class kolabUser extends baseModule {
'example' => 'user@domain:ACT_ALWAYS_ACCEPT,user2@domain:ACT_MANUAL'
),
array(
- 'name' => 'kolabUser_country',
- 'description' => _('Country'),
- 'help' => 'country',
- 'example' => _('Germany')
- ),
- array(
- 'name' => 'kolabUser_homeServer',
+ 'name' => 'kolabUser_mailHost',
'description' => _('Mailbox home server'),
- 'help' => 'homeServer',
+ 'help' => 'mailHost',
'example' => 'localhost',
'required' => true
),
@@ -198,28 +160,13 @@ class kolabUser extends baseModule {
'help' => 'delegateList',
'example' => 'user@domain,user2@domain'
),
- array(
- 'name' => 'kolabUser_freeBusy',
- 'description' => _('Free/Busy interval'),
- 'help' => 'freeBusy',
- 'example' => '60'
- ),
- array(
- 'name' => 'kolabUser_quota',
- 'description' => _('Mail quota'),
- 'help' => 'quota',
- 'example' => '300'
- )
);
// available PDF fields
$return['PDF_fields'] = array(
'invPol' => _('Invitation policy'),
- 'country' => _('Country'),
- 'homeServer' => _('Mailbox home server'),
+ 'mailHost' => _('Mailbox home server'),
'aliases' => _('Email aliases'),
'delegate' => _('Delegates'),
- 'freeBusy' => _('Free/Busy interval'),
- 'quota' => _('Mail quota')
);
return $return;
}
@@ -232,16 +179,10 @@ class kolabUser extends baseModule {
$this->messages['invPol'][1] = array('ERROR', _('Account %s:') . ' kolabUser_invPol', _('Policy list has invalid format!'));
$this->messages['alias'][0] = array('ERROR', _('Email alias is invalid!')); // third array value is set dynamically
$this->messages['alias'][1] = array('ERROR', _('Account %s:') . ' kolabUser_aliases', _('Email alias list has invalid format!'));
- $this->messages['country'][0] = array('ERROR', _('Country name is invalid!')); // third array value is set dynamically
- $this->messages['country'][1] = array('ERROR', _('Account %s:') . ' kolabUser_country', _('Country name is invalid!'));
- $this->messages['homeServer'][0] = array('ERROR', _('Mailbox home server name is invalid!')); // third array value is set dynamically
- $this->messages['homeServer'][1] = array('ERROR', _('Account %s:') . ' kolabUser_homeServer', _('Mailbox home server name is invalid!'));
- $this->messages['homeServer'][2] = array('ERROR', _('Mailbox home server name is empty!'), '');
+ $this->messages['mailHost'][0] = array('ERROR', _('Mailbox home server name is invalid!')); // third array value is set dynamically
+ $this->messages['mailHost'][1] = array('ERROR', _('Account %s:') . ' kolabUser_mailHost', _('Mailbox home server name is invalid!'));
+ $this->messages['mailHost'][2] = array('ERROR', _('Mailbox home server name is empty!'));
$this->messages['delegate'][0] = array('ERROR', _('Account %s:') . ' kolabUser_delegate', _('Unknown delegate address: %s'));
- $this->messages['freeBusy'][0] = array('ERROR', _('Free/Busy interval must be a number!')); // third array value is set dynamically
- $this->messages['freeBusy'][1] = array('ERROR', _('Account %s:') . ' kolabUser_freeBusy', _('Free/Busy interval must be a number!'));
- $this->messages['quota'][0] = array('ERROR', _('Mail quota must be a number!')); // third array value is set dynamically
- $this->messages['quota'][1] = array('ERROR', _('Account %s:') . ' kolabUser_quota', _('Mail quota must be a number!'));
}
/**
@@ -268,7 +209,7 @@ class kolabUser extends baseModule {
$return->addElement($message, true);
}
}
- if (!$attrsI['mail'][0]) {
+ if (!isset($attrsI['mail'][0])) {
$message = new htmlStatusMessage('ERROR', _("Please enter an email address on this page: %s"), '', array($this->getAccountContainer()->getAccountModule('inetOrgPerson')->get_alias()));
$message->colspan = 5;
$return->addElement($message, true);
@@ -279,43 +220,21 @@ class kolabUser extends baseModule {
return $return;
}
$basicPartContainer = new htmlTable();
- // country
- $country = '';
- if (isset($this->attributes['c'][0])) {
- $country = $this->attributes['c'][0];
- }
- $basicPartContainer->addElement(new htmlTableExtendedInputField(_('Country'), 'country', $country, 'country'), true);
// mailbox server
- if (!isset($this->orig['kolabHomeServer'][0])) { // value currently not set
- $homeServer = '';
- if (isset($this->attributes['kolabHomeServer'][0])) {
- $homeServer = $this->attributes['kolabHomeServer'][0];
+ if (!isset($this->orig['mailHost'][0])) { // value currently not set
+ $mailHost = '';
+ if (isset($this->attributes['mailHost'][0])) {
+ $mailHost = $this->attributes['mailHost'][0];
}
- $serverInput = new htmlTableExtendedInputField(_('Mailbox home server'), 'homeServer', $homeServer, 'homeServer');
+ $serverInput = new htmlTableExtendedInputField(_('Mailbox home server'), 'mailHost', $mailHost, 'mailHost');
$serverInput->setRequired(true);
$basicPartContainer->addElement($serverInput, true);
}
else { // input is unchangable when set
$basicPartContainer->addElement(new htmlOutputText(_('Mailbox home server')));
- $basicPartContainer->addElement(new htmlOutputText($this->orig['kolabHomeServer'][0]));
- $basicPartContainer->addElement(new htmlHelpLink('homeServer'), true);
+ $basicPartContainer->addElement(new htmlOutputText($this->attributes['mailHost'][0]));
+ $basicPartContainer->addElement(new htmlHelpLink('mailHost'), true);
}
- // Cyrus mail quota
- $userquota = '';
- if (isset($this->attributes['cyrus-userquota'][0])) {
- $userquota = $this->attributes['cyrus-userquota'][0];
- }
- $userquotaInput = new htmlTableExtendedInputField(_('Mail quota'), 'quota', $userquota, 'quota');
- $userquotaInput->setValidationRule(htmlElement::VALIDATE_NUMERIC);
- $basicPartContainer->addElement($userquotaInput, true);
- // free/busy future
- $freebusyfuture = '';
- if (isset($this->attributes['kolabFreeBusyFuture'][0])) {
- $freebusyfuture = $this->attributes['kolabFreeBusyFuture'][0];
- }
- $freebusyfutureInput = new htmlTableExtendedInputField(_('Free/Busy interval'), 'freeBusy', $freebusyfuture, 'freeBusy');
- $freebusyfutureInput->setValidationRule(htmlElement::VALIDATE_NUMERIC);
- $basicPartContainer->addElement($freebusyfutureInput, true);
$return->addElement($basicPartContainer, true);
// invitation policies
$return->addElement(new htmlSubTitle(_('Invitation policy')), true);
@@ -416,28 +335,17 @@ class kolabUser extends baseModule {
else {
if (isset($_POST['form_subpage_kolabUser_deleteUser_open'])) return array();
$this->attributes['kolabInvitationPolicy'] = array();
- // country
- if (isset($_POST['country'])) {
- if (($_POST['country'] == "") || get_preg($_POST['country'], 'country')) {
- $this->attributes['c'][0] = $_POST['country'];
- }
- else {
- $message = $this->messages['country'][0];
- $message[] = $_POST['country'];
- $errors[] = $message;
- }
- }
// mailbox server
- if (isset($_POST['homeServer'])) {
- if ($_POST['homeServer'] == "") {
- $errors[] = $this->messages['homeServer'][2];
+ if (isset($_POST['mailHost'])) {
+ if ($_POST['mailHost'] == "") {
+ $errors[] = $this->messages['mailHost'][2];
}
- elseif (get_preg($_POST['homeServer'], 'DNSname')) {
- $this->attributes['kolabHomeServer'][0] = $_POST['homeServer'];
+ elseif (get_preg($_POST['mailHost'], 'DNSname')) {
+ $this->attributes['mailHost'][0] = $_POST['mailHost'];
}
else {
- $message = $this->messages['homeServer'][0];
- $message[] = $_POST['homeServer'];
+ $message = $this->messages['mailHost'][0];
+ $message[] = $_POST['mailHost'];
$errors[] = $message;
}
}
@@ -528,28 +436,6 @@ class kolabUser extends baseModule {
$this->attributes['kolabDelegate'][] = $_POST['delegate'];
}
$this->attributes['kolabDelegate'] = array_unique($this->attributes['kolabDelegate']);
- // free/busy future
- if (isset($_POST['freeBusy'])) {
- if (($_POST['freeBusy'] == "") || get_preg($_POST['freeBusy'], 'digit')) {
- $this->attributes['kolabFreeBusyFuture'][0] = $_POST['freeBusy'];
- }
- else {
- $message = $this->messages['freeBusy'][0];
- $message[] = $_POST['freeBusy'];
- $errors[] = $message;
- }
- }
- // Cyrus mail quota
- if (isset($_POST['quota'])) {
- if (($_POST['quota'] == "") || get_preg($_POST['quota'], 'digit')) {
- $this->attributes['cyrus-userquota'][0] = $_POST['quota'];
- }
- else {
- $message = $this->messages['quota'][0];
- $message[] = $_POST['quota'];
- $errors[] = $message;
- }
- }
}
return $errors;
}
@@ -576,7 +462,7 @@ class kolabUser extends baseModule {
function process_deleteUser() {
if (isset($_POST['form_subpage_kolabUser_attributes_confirm'])) {
// set delete flag
- $this->attributes['kolabDeleteflag'][0] = $this->attributes['kolabHomeServer'][0];
+ $this->attributes['kolabDeleteflag'][0] = $this->attributes['mailHost'][0];
}
}
@@ -642,24 +528,13 @@ class kolabUser extends baseModule {
for ($i = 0; $i < sizeof($rawAccounts); $i++) {
// add object class
if (!in_array("kolabInetOrgPerson", $partialAccounts[$i]['objectClass'])) $partialAccounts[$i]['objectClass'][] = "kolabInetOrgPerson";
- // country
- if ($rawAccounts[$i][$ids['kolabUser_country']] != "") {
- if (get_preg($rawAccounts[$i][$ids['kolabUser_country']], 'country')) {
- $partialAccounts[$i]['c'] = $rawAccounts[$i][$ids['kolabUser_country']];
- }
- else {
- $errMsg = $this->messages['country'][1];
- array_push($errMsg, array($i));
- $messages[] = $errMsg;
- }
- }
// mailbox server
- if ($rawAccounts[$i][$ids['kolabUser_homeServer']] != "") {
- if (get_preg($rawAccounts[$i][$ids['kolabUser_homeServer']], 'DNSname')) {
- $partialAccounts[$i]['kolabHomeServer'] = $rawAccounts[$i][$ids['kolabUser_homeServer']];
+ if ($rawAccounts[$i][$ids['kolabUser_mailHost']] != "") {
+ if (get_preg($rawAccounts[$i][$ids['kolabUser_mailHost']], 'DNSname')) {
+ $partialAccounts[$i]['mailHost'] = $rawAccounts[$i][$ids['kolabUser_mailHost']];
}
else {
- $errMsg = $this->messages['homeServer'][1];
+ $errMsg = $this->messages['mailHost'][1];
array_push($errMsg, array($i));
$messages[] = $errMsg;
}
@@ -735,28 +610,6 @@ class kolabUser extends baseModule {
}
}
}
- // free/busy
- if ($rawAccounts[$i][$ids['kolabUser_freeBusy']] != "") {
- if (get_preg($rawAccounts[$i][$ids['kolabUser_freeBusy']], 'digit')) {
- $partialAccounts[$i]['kolabFreeBusyFuture'] = $rawAccounts[$i][$ids['kolabUser_freeBusy']];
- }
- else {
- $errMsg = $this->messages['freeBusy'][1];
- array_push($errMsg, array($i));
- $messages[] = $errMsg;
- }
- }
- // Cyrus mail quota
- if ($rawAccounts[$i][$ids['kolabUser_quota']] != "") {
- if (get_preg($rawAccounts[$i][$ids['kolabUser_quota']], 'digit')) {
- $partialAccounts[$i]['cyrus-userquota'] = $rawAccounts[$i][$ids['kolabUser_quota']];
- }
- else {
- $errMsg = $this->messages['quota'][1];
- array_push($errMsg, array($i));
- $messages[] = $errMsg;
- }
- }
}
return $messages;
}
@@ -768,21 +621,9 @@ class kolabUser extends baseModule {
*/
function get_pdfEntries() {
$return = array();
- // country
- if (isset($this->attributes['c'][0])) {
- $return['kolabUser_country'][0] = '' . _('Country') . '' . $this->attributes['c'][0] . '';
- }
// mail server
- if (isset($this->attributes['kolabHomeServer'][0])) {
- $return['kolabUser_homeServer'][0] = '' . _('Mailbox home server') . '' . $this->attributes['kolabHomeServer'][0] . '';
- }
- // mail quota
- if (isset($this->attributes['cyrus-userquota'][0])) {
- $return['kolabUser_quota'][0] = '' . _('Mail quota') . '' . $this->attributes['cyrus-userquota'][0] . '';
- }
- // free/busy
- if (isset($this->attributes['kolabFreeBusyFuture'][0])) {
- $return['kolabUser_freeBusy'][0] = '' . _('Free/Busy interval') . '' . $this->attributes['kolabFreeBusyFuture'][0] . '';
+ if (isset($this->attributes['mailHost'][0])) {
+ $return['kolabUser_mailHost'][0] = '' . _('Mailbox home server') . '' . $this->attributes['mailHost'][0] . '';
}
// invitation policies
if (isset($this->attributes['kolabInvitationPolicy'][0])) {
@@ -832,20 +673,6 @@ class kolabUser extends baseModule {
return array();
}
$return = array();
- // free/busy future
- if (in_array('kolabFreeBusyFuture', $fields)) {
- $kolabFreeBusyFuture = '';
- if (isset($attributes['kolabFreeBusyFuture'][0])) {
- $kolabFreeBusyFuture = $attributes['kolabFreeBusyFuture'][0];
- }
- $kolabFreeBusyFutureField = new htmlInputField('kolabUser_kolabFreeBusyFuture', $kolabFreeBusyFuture);
- if (in_array('kolabFreeBusyFuture', $readOnlyFields)) {
- $kolabFreeBusyFutureField = new htmlOutputText($kolabFreeBusyFuture);
- }
- $return['kolabFreeBusyFuture'] = new htmlTableRow(array(
- new htmlOutputText(_('Free/Busy interval')), $kolabFreeBusyFutureField
- ));
- }
// delegates
if (in_array('kolabDelegate', $fields)) {
$delegates = array();
@@ -972,17 +799,6 @@ class kolabUser extends baseModule {
}
$attributeNames = array(); // list of attributes which should be checked for modification
$attributesNew = $attributes;
- // kolabFreeBusyFuture
- if (in_array('kolabFreeBusyFuture', $fields) && !in_array('kolabFreeBusyFuture', $readOnlyFields)) {
- $attributeNames[] = 'kolabFreeBusyFuture';
- if (isset($_POST['kolabUser_kolabFreeBusyFuture']) && ($_POST['kolabUser_kolabFreeBusyFuture'] != '')) {
- if (!get_preg($_POST['kolabUser_kolabFreeBusyFuture'], 'digit')) $return['messages'][] = $this->messages['freeBusy'][0];
- else $attributesNew['kolabFreeBusyFuture'][0] = $_POST['kolabUser_kolabFreeBusyFuture'];
- }
- elseif (isset($attributes['kolabFreeBusyFuture'])) {
- $attributesNew['kolabFreeBusyFuture'] = array();
- }
- }
// delegates
if (in_array('kolabDelegate', $fields) && !in_array('kolabDelegate', $readOnlyFields)) {
$attributeNames[] = 'kolabDelegate';