X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=plugins%2Fadmin%2Fgroups%2Fclass_groupGeneric.inc;h=dba7c496a53745fb9410f59249b686eb368ce143;hb=bfaaf679dd6eaabbc8e0b581b465179dbe7d9319;hp=61a63131439c63402c0361fbb53458343999457d;hpb=d89695abd134aab8e37d455828c0b03198d7d315;p=gosa.git diff --git a/plugins/admin/groups/class_groupGeneric.inc b/plugins/admin/groups/class_groupGeneric.inc index 61a631314..dba7c496a 100644 --- a/plugins/admin/groups/class_groupGeneric.inc +++ b/plugins/admin/groups/class_groupGeneric.inc @@ -1,4 +1,5 @@ samba3= ($config->current['SAMBAVERSION'] == 3); @@ -154,7 +157,9 @@ class group extends plugin $this->base= dn2base($ui->dn); } } else { - $this->base= preg_replace ("/^[^,]+,[^,]+,/", "", $this->dn); + + /* Get object base */ + $this->base =preg_replace ("/^[^,]+,".normalizePreg(get_groups_ou())."/","",$this->dn); } /* This is always an account */ @@ -420,6 +425,7 @@ class group extends plugin } } if(!empty($filter)){ + $ldap->cd($this->config->current['BASE']); $ldap->search("(&(objectClass=gosaAccount)(!(objectClass=gosaUserTemplate))(|".$filter."))",array("uid","sn","givenName")); while($attrs = $ldap->fetch()){ $this->members[$attrs['uid'][0]] = $this->createResultName($attrs); @@ -437,7 +443,16 @@ class group extends plugin /* Create display list of users matching regex & filter */ $this->displayUsers = array(); - $filter = "(&(objectClass=gosaAccount)(!(objectClass=gosaUserTemplate))(!(uid=*$))(|(uid=".$regex.")(sn=".$regex.")(givenName=".$regex.")))"; + + /* Set tag attribute if we've tagging activated */ + $tag= ""; + $ui= get_userinfo(); + if ($ui->gosaUnitTag != "" && isset($this->config->current['STRICT_UNITS']) && + preg_match('/TRUE/i', $this->config->current['STRICT_UNITS'])){ + $tag= "(gosaUnitTag=".$ui->gosaUnitTag.")"; + } + + $filter = "(&(objectClass=gosaAccount)$tag(!(objectClass=gosaUserTemplate))(!(uid=*$))(|(uid=".$regex.")(sn=".$regex.")(givenName=".$regex.")))"; /* Search in current tree or within subtrees depending on the checkbox from filter section */ if($gufilter['SubSearchGroup']){ @@ -491,7 +506,7 @@ class group extends plugin $ldap= $this->config->get_ldap_link(); $ldap->rmdir($this->dn); - show_ldap_error($ldap->get_error()); + show_ldap_error($ldap->get_error(), _("Removing group failed")); /* Delete references to object groups */ $ldap->cd ($this->config->current['BASE']); @@ -663,7 +678,7 @@ class group extends plugin /* Save data. Using 'modify' implies that the entry is already present, use 'add' for new entries. So do a check first... */ - $ldap->cat ($this->dn); + $ldap->cat ($this->dn, array('dn')); if ($ldap->fetch()){ /* Modify needs array() to remove values :-( */ if (!count ($this->memberUid)){ @@ -688,7 +703,7 @@ class group extends plugin $ldap->$mode($this->attrs); $ret= 0; - if (show_ldap_error($ldap->get_error())){ + if (show_ldap_error($ldap->get_error(), _("Saving group failed"))){ $ret= 1; } @@ -800,15 +815,15 @@ 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){ - print_red(_("Too many users, can't allocate a free ID!")); + /* check if id reached maximum of 32 bit*/ + if ($id >= pow(2,32)){ + echo _("Too many users, can't allocate a free ID!"); exit; } }