Code

Use get_list instead of ldap->ls.
[gosa.git] / plugins / admin / groups / class_groupAcl.inc
index 8020ea24f4915d79916945246327f226791b26a2..363ef2eac585a994ec0ff8b868695c24954393e5 100644 (file)
@@ -20,19 +20,23 @@ 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";
        $this->objects= $ACLD;
-       $this->object= reset(array_keys($this->objects));
+       $tmp= array_keys($this->objects);
+       $this->object= reset($tmp);
 
        $this->selfflag= FALSE;
        if (isset($this->attrs['gosaSubtreeACL'][0])){
@@ -48,9 +52,12 @@ class acl extends plugin
 
   function execute()
   {
+       /* Call parent execute */
+       plugin::execute();
+
        /* Do we represent a valid group? */
        if (!$this->is_account && $this->parent == NULL){
-               $display= "<img src=\"images/stop.png\" align=\"middle\">&nbsp;<b>".
+               $display= "<img alt=\"\" src=\"images/stop.png\" align=\"middle\">&nbsp;<b>".
                _("This 'dn' is no acl container.")."</b>";
                return ($display);
        }
@@ -90,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"));
   }
 
 
@@ -108,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= "";
@@ -129,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";
@@ -153,7 +161,6 @@ class acl extends plugin
        } else {
                $this->selfflag= FALSE;
        }
-
   }
 
 
@@ -185,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"));
   }
 
 
@@ -202,7 +211,7 @@ class acl extends plugin
        asort ($name);
 
        # Generate checklist
-       $display.= "<table style=\"width:100%;\">\n";
+       $display.= "<table summary=\"\" style=\"width:100%;\">\n";
        $switch= 0;
        foreach ($name as $key => $val){
                if ($switch == 0){