diff --git a/gosa-plugins/mail/personal/mail/class_mail-methods-cyrus.inc b/gosa-plugins/mail/personal/mail/class_mail-methods-cyrus.inc
index 147a5d1f49cf1aba372d6de11ee6106f470d8b8b..dc1bc39c8bad24c5ded282d1d304c48d79854a01 100644 (file)
protected $quota_loaded = FALSE;
/* Allow modification of account_ids for existing mail accounts */
- protected $modifyableMail = FALSE;
+ protected $modifyableMail = FALSE;
+
+ /* Allow modification of the mail server attribute existing mail accounts */
+ protected $modifyableServer = FALSE;
/* Enforces same value for 'mail' as used for 'cn' */
protected $mailEqualsCN = FALSE;
if (!isset($this->ServerList[$this->MailServer])){
$this->error = _("Mail server for this account is invalid!");
@DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,
- "<b>The selected mail server '".$this->MailServer."' is invalid.</b>","");
+ "<b>IMAP: The selected mail server '".$this->MailServer."' is invalid.</b>","");
return(FALSE);
} else {
$cfg= $this->ServerList[$this->MailServer];
$list = @imap_listmailbox($this->imap_handle, $cfg["connect"], $this->account_id);
$res = is_array($list) && count($list);
if($res){
- @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"","<b>Account exists in imap server.</b>");
+ @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"","<b>IMAP: Account exists in imap server.</b>");
}else{
- @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"","<b>Account seems NOT to exists in imap server.</b>");
+ @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"","<b>IMAP: Account seems NOT to exists in imap server.</b>");
}
return($res);
}
$quota = "(".$this->quotaUsage." / ".$this->quotaValue.")";
}
@DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, $quota ,
- "<b>Successfully received account quota</b>");
+ "<b>IMAP: Successfully received account quota</b>");
}else{
@DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, imap_last_error() ,
- "<b>Failed to receive account quota</b>");
+ "<b>IMAP: Failed to receive account quota</b>");
}
}
msg_dialog::display(_("IMAP error"), sprintf(_("Cannot modify IMAP mailbox quota: %s"),
'<br><br><i>'.imap_last_error().'</i>'), ERROR_DIALOG);
@DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "<b>".$this->account_id.": (".$debug_number.")</b>" ,
- "<b>Set account quota</b> on server '".$this->MailServer."' <b>".imap_last_error()."</b>");
+ "<b>IMAP: Set account quota</b> on server '".$this->MailServer."' <b>".imap_last_error()."</b>");
return (FALSE);
}
@DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "<b>".$this->account_id.": (".$debug_number.")</b>" ,
- "<b>Set account quota</b> on server :".$this->MailServer);
+ "<b>IMAP: Set account quota</b> on server :".$this->MailServer);
return (TRUE);
}
$list = imap_listmailbox($this->imap_handle, $cfg["connect"], $this->account_id);
if ($list === FALSE){
@DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "<b>".$this->account_id."</b>" ,
- "<b>Add/Update account</b> on server :".$this->MailServer);
+ "<b>IMAP: Add/Update account</b> on server :".$this->MailServer);
if (!imap_createmailbox($this->imap_handle, $cfg["connect"]. $this->account_id)){
$this->error = imap_last_error();
return(FALSE);
$result[] = $str;
}
@DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,trim(implode($result,", "),", "),
- "<b>Received mailbox folders.</b>");
+ "<b>IMAP: Received mailbox folders.</b>");
$this->error = imap_last_error();
}else{
@DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,imap_last_error(),
- "<b>Cannot receive mailbox folders.</b>");
+ "<b>IMAP: Cannot receive mailbox folders.</b>");
$this->error = imap_last_error();
return(array());
}
if (!function_exists('imap_getacl')){
$this->error = _("The module imap_getacl is not implemented!");
@DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"The imap_getacl module is missing!",
- "<b>Cannot set folder acls.</b>");
+ "<b>IMAP: Cannot set folder acls.</b>");
return($folder_acls);
}
$folder_acls[$user] = $acl;
}
+ /* Merge given ACL with acl mapping
+ This ensures that no ACL will accidentally overwritten by gosa.
+ */
+ foreach($folder_acls as $user => $acl){
+ if(!isset($this->acl_mapping[$acl])){
+ $this->acl_mapping[$acl] = $acl;
+ }
+ }
+
return($folder_acls);
}
if (!function_exists('imap_getacl')){
$this->error = _("The module imap_getacl is not implemented!");
@DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"The imap_getacl module is missing!",
- "<b>Cannot set folder acls.</b>");
+ "<b>IMAP: Cannot set folder acls.</b>");
return(FALSE);
}
$userid = strtolower($userid);
imap_setacl ($this->imap_handle, $folder_id, $userid, "");
@DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,$folder_id." -> ".$userid,
- "<b>Removing folder permissions.</b>");
+ "<b>IMAP: Removing folder permissions.</b>");
}
}
}
foreach ($permissions as $user => $acl){
imap_setacl ($this->imap_handle, $folder_id, $user, $acl);
@DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,$folder_id." -> ".$user.": ".$acl,
- "<b>Setting new folder permissions.</b>");
+ "<b>IMAP: Setting new folder permissions.</b>");
}
}
return(TRUE);
@DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,$sieve->error_raw ,"<b>SIEVE: login failed.</b>");
$this->error = $sieve->error_raw;
return(FALSE);
- }else{
- @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "Options: ".$cfg["sieve_option"] ,
- "SIEVE: <b>login successfull.</b>");
}
/* Build spamlevel. Spamassassin tags mails with "*" for each integer
if(!$sieve->sieve_getscript("gosa")){
$this->error = sprintf(_("Cannot retrieve SIEVE script: %s"),to_string($sieve->error_raw));
@DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,$sieve->error_raw ,
- "SIEVE: <b>Connot read 'gosa' sieve script.</b>");
+ "<b>SIEVE: Connot read 'gosa' sieve script.</b>");
$this->error = $sieve->error_raw;
return(FALSE);
- }else{
- @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,$sieve->error_raw ,
- "SIEVE: <b>Sieve script named 'gosa' found.</b>");
}
$is_valid_script = FALSE;
if($is_valid_script || strlen($script) == 0 || empty($script)){
@DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"" ,
- "SIEVE: Sieve script 'gosa' was a valid GOsa script and will be replaced.");
+ "<b>SIEVE</b>: Sieve script 'gosa' was a valid GOsa script and will be replaced.");
}else{
$new_name = "non_gosa_".date("Ymd_H-i-s");
$sieve->sieve_sendscript($new_name, $script);
@DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,$this->sieve->error_raw ,
- "SIEVE: Non GOsa sieve script. <b>Creating backup of the current sieve script '".$new_name."'.</b>");
+ "<b>SIEVE</b>: Non GOsa sieve script. <b>Creating backup of the current sieve script '".$new_name."'.</b>");
}
}
}
if (!$sieve->sieve_sendscript("gosa", $script)){
$this->error = sprintf(_("Cannot store SIEVE script: %s"), to_string($sieve->error_raw));
@DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "Error was: ".to_string($sieve->error_raw) ,
- "SIEVE: <b>Writing new Sieve script failed!</b>");
+ "<b>SIEVE: Writing new Sieve script failed!</b>");
return(FALSE);
- }else{
- @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"<b>Successfully written!</b>" ,
- "SIEVE: <b>NEW sieve script 'gosa' contains '".strlen($script)."' characters.</b>");
}
if(!$sieve->sieve_setactivescript("gosa")){
return(FALSE);
}
- @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"","SIEVE: <b>Logout</b>");
$sieve->sieve_logout();
}
}