index 13b378c3c2921ce70a42683ed5669132a354d7a3..03c9987d1affa5473b0e2659ecc479fc6ec661a5 100644 (file)
var $uid = ""; // User id
var $cn = ""; // cn
+ var $orig_cn = ""; // cn
var $method = "mailMethod"; // Used Mail method
var $mmethod = ""; // Contains the gosa.conf MAILMETHOD
"acl","gosaSharedFolderTarget", "gosaVacationMessage");
var $objectclasses= array("gosaMailAccount");
-
+ var $CopyPasteVars = array("quotaUsage","imapacl");
function mailgroup ($config, $dn= NULL, $ui= NULL)
{
*/
plugin::plugin($config, $dn);
+ $this->orig_cn = $this->cn;
+
/* Set mailMethod to the one defined in gosa.conf
*/
if (isset($this->config->current['MAILMETHOD'])){
$this->perms["p"]= _("external post");
$this->perms["lrsip"]= _("append");
$this->perms["lrswipcd"]= _("write");
+ $this->perms[""]= _("none");
}
function execute()
}
$display .= "<h2>Shared folder delete options</h2>
<input class='center' type='checkbox' name='remove_folder_from_imap' value='1' ".$c."
- title='"._("Remove shared folder from mail server database")."'>";
- $display .= _("Remove the shared folder and all its contents from mail server.");
+ title='"._("Remove shared folder from mail server database when entry gets removed in LDAP")."'>";
+ $display .= _("Remove the shared folder and all its contents after saving this account");
}
return ($display);
}
$Dis = " disabled ";
}
+ /* Reset given Acls to ensure that nobody can read username and acls if not allwoed */
+ if(!preg_match("/r/",$perm)){
+ $user = "";
+ $nr = "none";
+ $key = "none";
+ }
+
$tmp.= "<tr>
<td>
<input name=\"user_$nr\" size=20 maxlength=60 value=\"$user\" ".$Dis.">
}
- if ((!$this->is_template)&&(!empty($this->gosaMailServer))){
- $method= new $this->method($this->config);
- $method->fixAttributesOnStore($this);
- if (($method->connect($this->gosaMailServer))){
- $method->updateMailbox($this->uid);
- $method->setQuota($this->uid, $this->gosaMailQuota);
- $method->setSharedFolderPermissions($this->uid, $this->imapacl);
- $method->disconnect();
- }
- }
-
/* Exchange '%member%' pseudo entry */
$memberacl= $this->imapacl['%members%'];
}
}
$this->attrs['acl'] = array();
+
+
foreach($this->imapacl as $user => $acl){
- if(preg_match("/%members%/",$user) || empty($user)) continue;
-
+
+ /* Remove empty user entry, to avoid entry like this im imap
+ * "" lrs
+ */
+ if(empty($user)){
+ unset($this->imapacl[$user]);
+ }
+
+ /* Skip invalid values */
+ if(preg_match("/%members%/",$user) || empty($user)){
+ continue;
+ }
+
+ /* Append ldap acl entries */
$this->attrs['acl'][] = $user." ".$acl;
}
+ if ((!$this->is_template)&&(!empty($this->gosaMailServer))){
+ $method= new $this->method($this->config);
+ $method->fixAttributesOnStore($this);
+ if (($method->connect($this->gosaMailServer))){
+ $method->updateMailbox($this->uid);
+ $method->setQuota($this->uid, $this->gosaMailQuota);
+ $method->setSharedFolderPermissions($this->uid, $this->imapacl);
+ $method->disconnect();
+ }
+ }
+
/* Save data to LDAP */
$ldap->cd($this->dn);
$this->cleanup();
}
$ldap->cd($this->config->current['BASE']);
$ldap->search ("(&(!(objectClass=gosaUserTemplate))(objectClass=gosaMailAccount)(|(mail=".$this->mail.")(gosaMailAlternateAddress=".
- $this->mail."))(!(uid=".$this->cn."))(!(cn=".$this->cn.")))");
+ $this->mail."))(!(uid=".$this->orig_cn."))(!(cn=".$this->orig_cn.")))");
if ($ldap->count() != 0){
$message[]= _("The primary address you've entered is already in use.");
}
}
+ function PrepareForCopyPaste($source)
+ {
+ plugin::PrepareForCopyPaste($source);
+
+ /* Reset alternate mail addresses */
+ $this->gosaMailAlternateAddress = array();
+ }
+
+
/* Return plugin informations for acl handling */
function plInfo()
{