diff --git a/plugins/admin/groups/class_groupGeneric.inc b/plugins/admin/groups/class_groupGeneric.inc
index fa59242979149b057449fd45f58db6c3ebb2c39f..8858285e8947b7618882d8f19a783f514c52f905 100644 (file)
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;
$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){
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);
/* 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(
$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.";
}
/* 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;
}