Code

Updated css und div framework.
[gosa.git] / plugins / admin / groups / class_groupGeneric.inc
index fa59242979149b057449fd45f58db6c3ebb2c39f..8858285e8947b7618882d8f19a783f514c52f905 100644 (file)
@@ -228,7 +228,10 @@ class group extends plugin
       if($this->dialog->isClosed()){
         $this->dialog = false;
       }elseif($this->dialog->isSelected()){
-        if($this->acl_is_moveable()){
+
+        /* Check if selected base is valid */
+        $tmp = $this->get_allowed_bases();
+        if(isset($tmp[$this->dialog->isSelected()])){
           $this->base = $this->dialog->isSelected();
         }
         $this->dialog= false;
@@ -257,13 +260,6 @@ class group extends plugin
       $smarty->assign("pickupGroup",false);
     }
 
-    /* Assign base ACL */
-    $baseACL = $this->getacl("base");
-    if(!$this->acl_is_moveable()) {
-      $baseACL = preg_replace("/w/","",$baseACL);
-    }
-    $smarty->assign("baseACL",          $baseACL);
-
     /* Manage object add dialog */
     if ($this->group_dialog){
 
@@ -309,11 +305,6 @@ class group extends plugin
       return ($display);
     }
 
-    /* Bases / Departments */
-    if (isset($_POST['base'])){
-      $this->base= $_POST['base'];
-    }
-
     $smarty->assign("bases", $this->get_allowed_bases());
     $smarty->assign("base_select", $this->base);
 
@@ -531,19 +522,26 @@ class group extends plugin
     /* Save additional values for possible next step */
     if (isset($_POST['groupedit'])){
 
+      /* Create a base backup and reset the 
+          base directly after calling plugin::save_object();  
+         Base will be set seperatly a few lines below */
+      $base_tmp = $this->base;
       plugin::save_object();
+      $this->base = $base_tmp;
 
       $this->force_gid= 0;
 
-
       /* Only reset sambagroup flag if we are able to write this flag */
       if($this->acl_is_writeable("sambaGroupType")){
         $this->smbgroup = 0;
       }
 
       /* Get base selection */
-      if($this->acl_is_moveable() && isset($_POST['base'])){
-        $this->base = $_POST['base'];
+      if(isset($_POST['base'])){
+        $tmp = $this->get_allowed_bases();
+        if(isset($tmp[$_POST['base']])){
+          $this->base = $_POST['base'];
+        }
       }
 
       foreach (array(
@@ -742,10 +740,6 @@ class group extends plugin
       $new_dn= $this->dn;
     }
 
-    if ($this->orig_dn == "new" && !$this->acl_is_createable()){
-      $message[]= _("You have no permissions to create a group on this 'Base'.");
-    }
-
     /* must: cn */
     if ($this->cn == "" && $this->acl_is_writeable("cn")){
       $message[]= "The required field 'Name' is not set.";
@@ -825,14 +819,14 @@ class group extends plugin
     }
 
     /* Find out next free id near to UID_BASE */
-    for ($id= $this->config->current['UIDBASE']; $id++; $id<65000){
+    for ($id= $this->config->current['UIDBASE']; $id++; $id < pow(2,32)){
       if (!in_array($id, $ids)){
         return ($id);
       }
     }
 
-    /* Should not happen */
-    if ($id == 65000){
+    /* Check if id reached maximum */
+    if ($id >= pow(2,32)){
       print_red(_("Too many users, can't allocate a free ID!"));
       exit;
     }