implemented except upload

This commit is contained in:
Roland Gruber 2017-06-05 09:42:00 +02:00
parent 7260bb5267
commit bc3e1d4856
1 changed files with 67 additions and 78 deletions

View File

@ -202,12 +202,11 @@ class courierMailAccount extends baseModule {
* This function fills the error message array with messages * This function fills the error message array with messages
*/ */
public function load_Messages() { public function load_Messages() {
$this->messages['mailbox'][] = array('ERROR', _('The mailbox folder is not valid.')); // third array value is set dynamically $this->messages['mailhost'][0] = array('ERROR', _('The mail host is not valid.')); // third array value is set dynamically
$this->messages['mailhost'][] = array('ERROR', _('The Mailhost is not valid')); // third array value is set dynamically $this->messages['quota'][0] = array('ERROR', _('The quota must be entered as a floating point number.')); // third array value is set dynamically
$this->messages['quota'][] = array('ERROR', _('The quota must be entered as a floating point number.')); // third array value is set dynamically $this->messages['quota'][1] = array('ERROR', _('The quota must be entered as one of four formats: 1000, 1000S, 1000k, 1000kB.')); // third array value is set dynamically
$this->messages['quota'][] = array('ERROR', _('The quota must be entered as one of four formats: 1000, 1000S, 1000k, 1000kB.')); // third array value is set dynamically $this->messages['homeDirectory'][0] = array('ERROR', _('Homedirectory contains invalid characters.')); // third array value is set dynamically
$this->messages['virtMailRoot'][] = array('ERROR', _('The virtual mail root must be a file path')); // third array value is set dynamically $this->messages['homeDirectory'][1] = array('ERROR', _('Account %s:') . ' courierMailAccount_homeDirectory', _('Homedirectory contains invalid characters.'));
$this->messages['homeDirectory'][] = array('ERROR', _('The home directory must be a file path')); // third array value is set dynamically
} }
/** /**
@ -234,20 +233,10 @@ class courierMailAccount extends baseModule {
// home directory // home directory
$this->addSimpleInputTextField($return, 'homeDirectory', _('Home directory'), true); $this->addSimpleInputTextField($return, 'homeDirectory', _('Home directory'), true);
} }
// show current mailBox // show current mailBox
$this->addSimpleInputTextField($return, 'mailbox', _('Mailbox folder')); $this->addSimpleInputTextField($return, 'mailbox', _('Mailbox folder'));
// mail host input // mail host input
$this->addSimpleInputTextField($return, 'mailhost', _('Mailbox host')); $this->addSimpleInputTextField($return, 'mailhost', _('Mailbox host'));
// check boxes for account access control
$disableimap = isset($this->attributes['disableimap'][0]) && ($this->attributes['disableimap'][0] != 0);
$return->addElement(new htmlTableExtendedInputCheckbox('disableimap', $disableimap, _('Disable IMAP use'), 'disableimap'), true);
$disablepop3 = isset($this->attributes['disablepop3'][0]) && ($this->attributes['disablepop3'][0] != 0);
$return->addElement(new htmlTableExtendedInputCheckbox('disablepop3', $disablepop3, _('Disable POP3 use'), 'disablepop3'), true);
$disablewebmail = isset($this->attributes['disablewebmail'][0]) && ($this->attributes['disablewebmail'][0] != 0);
$return->addElement(new htmlTableExtendedInputCheckbox('disablewebmail', $disablewebmail, _('Disable Webmail use'), 'disablewebmail'), true);
$disableshared = isset($this->attributes['disableshared'][0]) && ($this->attributes['disableshared'][0] != 0);
$return->addElement(new htmlTableExtendedInputCheckbox('disableshared', $disableshared, _('Disable Shared Folder use'), 'disableshared'), true);
// quota with selection for unit of measure // quota with selection for unit of measure
$unitIndex = 2; $unitIndex = 2;
$value = 0; $value = 0;
@ -268,9 +257,21 @@ class courierMailAccount extends baseModule {
$selected = array( $selected = array(
$units[$unitIndex] $units[$unitIndex]
); );
$tempTable->addElement(new htmlSelect('quotaUnit', $units, $selected)); $unitSelect = new htmlSelect('quotaUnit', $units, $selected);
$unitSelect->setSortElements(false);
$tempTable->addElement($unitSelect);
$return->addElement($tempTable); $return->addElement($tempTable);
$return->addElement(new htmlHelpLink('quota'), true); $return->addElement(new htmlHelpLink('quota'), true);
// check boxes for account access control
$disableimap = isset($this->attributes['disableimap'][0]) && ($this->attributes['disableimap'][0] != 0);
$return->addElement(new htmlTableExtendedInputCheckbox('disableimap', $disableimap, _('Disable IMAP use'), 'disableimap'), true);
$disablepop3 = isset($this->attributes['disablepop3'][0]) && ($this->attributes['disablepop3'][0] != 0);
$return->addElement(new htmlTableExtendedInputCheckbox('disablepop3', $disablepop3, _('Disable POP3 use'), 'disablepop3'), true);
$disablewebmail = isset($this->attributes['disablewebmail'][0]) && ($this->attributes['disablewebmail'][0] != 0);
$return->addElement(new htmlTableExtendedInputCheckbox('disablewebmail', $disablewebmail, _('Disable Webmail use'), 'disablewebmail'), true);
$disableshared = isset($this->attributes['disableshared'][0]) && ($this->attributes['disableshared'][0] != 0);
$return->addElement(new htmlTableExtendedInputCheckbox('disableshared', $disableshared, _('Disable Shared Folder use'), 'disableshared'), true);
// remove extension
$return->addElement(new htmlSpacer(null, '20px'), true); $return->addElement(new htmlSpacer(null, '20px'), true);
$remButton = new htmlButton('remObjectClass', _('Remove Courier mail extension')); $remButton = new htmlButton('remObjectClass', _('Remove Courier mail extension'));
$remButton->colspan = 3; $remButton->colspan = 3;
@ -304,115 +305,83 @@ class courierMailAccount extends baseModule {
} }
return array(); return array();
} }
// skip processing if extension is not active // skip processing if extension is not active
if (!$this->isExtensionEnabled()) { if (!$this->isExtensionEnabled()) {
return array(); return array();
} }
$this->getAccountContainer()->replaceWildcardsInPOST(array('homeDirectory', 'mailbox'));
$errors = array(); $errors = array();
// check new mailbox // check new mailbox
$this->attributes['mailbox'] = array(); $this->attributes['mailbox'][0] = $_POST['mailbox'];
if (isset($_POST['mailbox']) && ($_POST['mailbox'] != "")) { // quota
$attrs = $this->getAccountContainer()->getAccountModule('inetOrgPerson')->getAttributes();
$mailbox = str_replace('$email', $attrs['mail'][0], $_POST['mailbox']);
// check for valid path
if (!get_preg($mailbox, 'filePath')) {
$message = $this->messages['mailbox'][0];
$message[] = $mailbox;
$errors[] = $message;
}
$this->attributes['mailbox'][] = $mailbox;
}
$this->attributes['quota'] = array();
$units = array( $units = array(
'B', 'kB', 'MB', 'B', 'kB', 'MB',
'GB', 'TB', 'PB', 'EB' 'GB', 'TB', 'PB', 'EB'
); );
// check new quota // check new quota
if (isset($_POST['quotaValue'])) { if (isset($_POST['quotaValue'])) {
if (is_numeric($_POST['quotaValue']) && in_array($_POST['quotaUnit'], $units)) { if (is_numeric($_POST['quotaValue']) && in_array($_POST['quotaUnit'], $units)) {
if ($_POST['quotaValue'] > 0) { if ($_POST['quotaValue'] > 0) {
$power = array_search($_POST['quotaUnit'], $units); $power = array_search($_POST['quotaUnit'], $units);
$this->attributes['quota'][] = $_POST['quotaValue'] * pow(1000, $power) . "S"; $this->attributes['quota'][0] = $_POST['quotaValue'] * pow(1000, $power) . "S";
} }
else { elseif (isset($this->attributes['quota'])) {
unset($this->attributes['quota']); unset($this->attributes['quota']);
} }
} }
else { else {
$message = $this->messages['courier'][1]; $message = $this->messages['quota'][0];
$message[] = $_POST['quotaValue']; $message[] = $_POST['quotaValue'];
$errors[] = $message; $errors[] = $message;
} }
} }
else { elseif (isset($this->attributes['quota'])) {
unset($this->attributes['quota']); unset($this->attributes['quota']);
} }
// mail host
$this->attributes['mailhost'] = array(); if (!empty($_POST['mailhost'])) {
if (isset($_POST['mailhost']) && ($_POST['mailhost'] != "")) { // must be a valid host name
// Must be a valid host name $this->attributes['mailhost'][0] = $_POST['mailhost'];
if (!get_preg($this->attributes['mailhost'][0] = $_POST['mailhost'], 'hostname')) { if (!get_preg($this->attributes['mailhost'][0], 'hostname')) {
$message = $this->messages['mailhost'][0]; $message = $this->messages['mailhost'][0];
$message[] = $_POST['mailhost']; $message[] = $_POST['mailhost'];
$errors[] = $message; $errors[] = $message;
} }
$this->attributes['mailhost'][] = $_POST['mailhost'];
} }
else { elseif (isset($this->attributes['mailhost'])) {
unset($this->attributes['mailhost']); unset($this->attributes['mailhost']);
} }
// disable IMAP
$this->attributes['disableimap'][0] = 0; $this->attributes['disableimap'][0] = 0;
if (isset($_POST['disableimap'])) { if (isset($_POST['disableimap'])) {
$this->attributes['disableimap'][0] = 1; $this->attributes['disableimap'][0] = 1;
} }
// disable POP3
$this->attributes['disablepop3'][0] = 0; $this->attributes['disablepop3'][0] = 0;
if (isset($_POST['disablepop3'])) { if (isset($_POST['disablepop3'])) {
$this->attributes['disablepop3'][0] = 1; $this->attributes['disablepop3'][0] = 1;
} }
// disable Webmail
$this->attributes['disablewebmail'][0] = 0; $this->attributes['disablewebmail'][0] = 0;
if (isset($_POST['disablewebmail'])) { if (isset($_POST['disablewebmail'])) {
$this->attributes['disablewebmail'][0] = 1; $this->attributes['disablewebmail'][0] = 1;
} }
// disable shared folder
$this->attributes['disableshared'][0] = 0; $this->attributes['disableshared'][0] = 0;
if (isset($_POST['disableshared'])) { if (isset($_POST['disableshared'])) {
$this->attributes['disableshared'][0] = 1; $this->attributes['disableshared'][0] = 1;
} }
// home directory
$this->attributes['disableshared'][0] = 0;
if (isset($_POST['disableshared'])) {
$this->attributes['disableshared'][0] = 1;
}
if ($this->isUnixDisabled($this->getAccountContainer()->get_type()->getModules())) { if ($this->isUnixDisabled($this->getAccountContainer()->get_type()->getModules())) {
// check new home directory // check new home directory
$this->attributes['homeDirectory'] = array(); $this->attributes['homeDirectory'][0] = $_POST['homeDirectory'];
if (isset($_POST['homeDirectory']) && ($_POST['homeDirectory'] != "")) { // check for valid path
$attrs = $this->getAccountContainer()->getAccountModule('inetOrgPerson')->getAttributes(); if (!get_preg($this->attributes['homeDirectory'][0], 'filePath')) {
$mailbox = str_replace('$email', $attrs['mail'][0], $_POST['homeDirectory']); $message = $this->messages['homeDirectory'][0];
// check for valid path $message[] = $this->attributes['homeDirectory'][0];
if (!get_preg($mailbox, 'filePath')) { $errors[] = $message;
$message = $this->messages['homeDirectory'][0];
$message[] = $mailbox;
$errors[] = $message;
}
$this->attributes['homeDirectory'][] = $mailbox;
} }
} }
return $errors; return $errors;
} }
@ -454,12 +423,32 @@ class courierMailAccount extends baseModule {
$return = array(); $return = array();
$this->addSimplePDFField($return, 'mailbox', _('User mailbox')); $this->addSimplePDFField($return, 'mailbox', _('User mailbox'));
$this->addSimplePDFField($return, 'mailhost', _('User mail host')); $this->addSimplePDFField($return, 'mailhost', _('User mail host'));
$this->addSimplePDFField($return, 'quota', _('User mail quota'));
$this->addSimplePDFField($return, 'disableimap', _('IMAP access disabled'));
$this->addSimplePDFField($return, 'disablepop3', _('POP3 access disabled'));
$this->addSimplePDFField($return, 'disablewebmail', _('Webmail access disabled'));
$this->addSimplePDFField($return, 'disableshared', _('Shared folder access disabled'));
$this->addSimplePDFField($return, 'homeDirectory', _('Home directory')); $this->addSimplePDFField($return, 'homeDirectory', _('Home directory'));
$disableOptions = array(
'disableimap' => _('IMAP access disabled'),
'disablepop3' => _('POP3 access disabled'),
'disablewebmail' => _('Webmail access disabled'),
'disableshared' => _('Shared folder access disabled')
);
foreach ($disableOptions as $attrName => $label) {
$value = _('No');
if (isset($this->attributes[$attrName][0]) && ($this->attributes[$attrName][0] == '1')) {
$value = _('Yes');
}
$this->addPDFKeyValue($return, $attrName, $label, $value);
}
// quota
$unitIndex = 2;
$value = 0;
if (isset($this->attributes['quota'][0]) && (strlen($this->attributes['quota'][0]) > 0)) {
$unitIndex = floor(log(substr($this->attributes['quota'][0], 0, -1), 1000));
$value = round((float) (substr($this->attributes['quota'][0], 0, -1)) / pow(1000, $unitIndex), 2);
}
$units = array(
'B', 'kB', 'MB', 'GB',
'TB', 'PB', 'EB'
);
$this->addPDFKeyValue($return, 'quota', _('User mail quota'), $value . $units[$unitIndex]);
return $return; return $return;
} }