X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=plugins%2Fadmin%2Fgroups%2Fclass_groupAcl.inc;h=363ef2eac585a994ec0ff8b868695c24954393e5;hb=6420c1233ef8781e96f767f1dc4ebd075b412494;hp=279d937530b6578ff39cf3e45458288365eb8e50;hpb=84d2c065af9ce3f287fef380606a593a0cda5a81;p=gosa.git diff --git a/plugins/admin/groups/class_groupAcl.inc b/plugins/admin/groups/class_groupAcl.inc index 279d93753..363ef2eac 100644 --- a/plugins/admin/groups/class_groupAcl.inc +++ b/plugins/admin/groups/class_groupAcl.inc @@ -20,14 +20,17 @@ class acl extends plugin var $current_acl= ""; var $selfflag= FALSE; + var $gosaSubtreeACL; /* attribute list for save action */ - var $attributes= array(); + var $attributes= array("gosaSubtreeACL"); var $objectclasses= array("gosaObject"); - function acl ($config, $dn= NULL) + var $CopyPasteVars = array("current_acl"); + + function acl ($config, $dn= NULL, $parent= NULL) { - plugin::plugin($config, $dn); + plugin::plugin($config, $dn, $parent); /* WorkAround */ include "acl_definition.inc"; @@ -94,8 +97,9 @@ class acl extends plugin $ldap= $this->config->get_ldap_link(); $ldap->cd($this->dn); - $ldap->modify($this->attrs); - show_ldap_error($ldap->get_error()); + $this->cleanup(); + $ldap->modify ($this->attrs); + show_ldap_error($ldap->get_error(), _("Removing ACL information failed")); } @@ -112,7 +116,7 @@ class acl extends plugin if ($this->object == "all"){ $this->current_acl= preg_replace ( "/[,]?all[,]?/", "", $this->current_acl); } - $this->current_acl= preg_replace ( "/[,]?$this->object#[^,]*[,]?/", "", $this->current_acl); + $this->current_acl= preg_replace ( "/(^|[^a-z0-9A-Z])$this->object#[^,]*[,]?/", "", $this->current_acl); /* assemble new attributes */ $attrs= ""; @@ -133,13 +137,13 @@ class acl extends plugin } /* append information */ - if ($this->current_acl != "" && $attrs != ""){ - $this->current_acl.= ","; - } if ($attrs != ""){ $tmp= $this->object; $attrs= $tmp.$attrs; } + if ($this->current_acl != "" && $attrs != ""){ + $this->current_acl.= ","; + } $this->current_acl.= $attrs; if (preg_match("/all#all/", $this->current_acl)){ $this->current_acl= "all"; @@ -157,7 +161,6 @@ class acl extends plugin } else { $this->selfflag= FALSE; } - } @@ -189,8 +192,10 @@ class acl extends plugin /* Modify class */ $ldap->cd($this->dn); - $ldap->modify($this->attrs); - show_ldap_error($ldap->get_error()); + $this->cleanup(); + $ldap->modify ($this->attrs); + + show_ldap_error($ldap->get_error(), _("Saving ACL information failed")); }