Code

Use get_list instead of ldap->ls.
[gosa.git] / plugins / admin / groups / class_groupAcl.inc
index 706edc95a1753f4c951769670c2a54b576a30200..363ef2eac585a994ec0ff8b868695c24954393e5 100644 (file)
@@ -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 ( "/[^a-z0-9A-Z]$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"));
   }