diff --git a/gosa-core/plugins/admin/groups/class_group.inc b/gosa-core/plugins/admin/groups/class_group.inc
index 72eec6a9ee6eb08cbcb0e50737aa6315739db931..45658dd418130d36035769c57f35190bac97eceb 100644 (file)
}
/* Set mail flag */
- if (isset($this->attrs['objectClass']) && in_array('gosaMailAccount', $this->attrs['objectClass'])){
+ if (isset($this->attrs['objectClass']) && in_array_strict('gosaMailAccount', $this->attrs['objectClass'])){
$this->has_mailAccount= TRUE;
}
$smarty->assign("memberUid_Some",$this->memberUid_used_by_some);
foreach($this->attributes as $val){
- if(in_array($val,$this->multi_boxes)){
+ if(in_array_strict($val,$this->multi_boxes)){
$smarty->assign("use_".$val,TRUE);
}else{
$smarty->assign("use_".$val,FALSE);
}
}
foreach(array("base","smbgroup","groupType","sambaDomainName","fon_group","nagios_group","trustmode") as $val){
- if(in_array($val,$this->multi_boxes)){
+ if(in_array_strict($val,$this->multi_boxes)){
$smarty->assign("use_".$val,TRUE);
}else{
$smarty->assign("use_".$val,FALSE);
/* Fetch all users and skip already used users */
foreach($res as $attrs){
- if(in_array($attrs['uid'][0], $this->memberUid)) {
+ if(in_array_strict($attrs['uid'][0], $this->memberUid)) {
continue;
}
$i ++;
$ret = plugin::get_multi_edit_values();
foreach(array("base","smbgroup","groupType","sambaDomainName","fon_group","nagios_group") as $attr){
- if(in_array($attr,$this->multi_boxes)){
+ if(in_array_strict($attr,$this->multi_boxes)){
$ret[$attr] = $this->$attr;
}
}
- if(in_array("trustmode",$this->multi_boxes)){
+ if(in_array_strict("trustmode",$this->multi_boxes)){
$ret['trustModel'] = $this->trustModel;
$ret['accessTo'] = $this->accessTo;
}
if (isset($all['memberUid'])){
for ($i= 0; $i<$all['memberUid']['count']; $i++){
- if(!in_array($all['memberUid'][$i],$this->memberUid)){
+ if(!in_array_strict($all['memberUid'][$i],$this->memberUid)){
$this->memberUid_used_by_some[$all['memberUid'][$i]]= $all['memberUid'][$i];
}
}
{
plugin::PrepareForCopyPaste($source);
+ /* Get samba Domain in case of samba 3 */
+ if ($this->sambaSID != ""){
+ $this->SID= preg_replace ("/-[^-]+$/", "", $this->sambaSID);
+ $ldap= $this->config->get_ldap_link();
+ $ldap->cd($this->config->current['BASE']);
+ $ldap->search ("(&(objectClass=sambaDomain)(sambaSID=$this->SID))",array("sambaAlgorithmicRidBase"));
+ if ($ldap->count() != 0){
+ $attrs= $ldap->fetch();
+ if(isset($attrs['sambaAlgorithmicRidBase'])){
+ $this->ridBase= $attrs['sambaAlgorithmicRidBase'][0];
+ } else {
+ $this->ridBase= $this->config->get_cfg_value("sambaRidBase");
+ }
+
+ /* Get domain name for SID */
+ $this->sambaDomainName= "DEFAULT";
+ foreach ($this->config->data['SERVERS']['SAMBA'] as $key => $val){
+ if ($val['SID'] == $this->SID){
+ $this->sambaDomainName= $key;
+ break;
+ }
+ }
+ } else {
+ if ($this->config->get_cfg_value("sambaRidBase") != ""){
+ $this->sambaDomainName= "DEFAULT";
+ $this->ridBase= $this->config->get_cfg_value("sambaRidBase");
+ $this->SID= $this->config->get_cfg_value("sid");
+ } else {
+ msg_dialog::display(_("Configuration error"), _("Cannot find group SID in your configuration!"), ERROR_DIALOG);
+ }
+ }
+
+ /* Get group type */
+ $this->groupType= (int)substr(strrchr($this->sambaSID, "-"), 1);
+ if ($this->groupType < 500 || $this->groupType > 553){
+ $this->groupType= 0;
+ }
+ $this->oldgroupType= $this->groupType;
+ }
+
+
+ // Detect samba groups and adapt its values.
+ $this->smbgroup = in_array_strict('sambaGroupMapping', $source['objectClass']);
if ($this->smbgroup) {
$this->sambaSID = $this->getSambaSID();
}
/* Update groupMembership, keep optinal group */
foreach($attrs['memberUid_used_by_some'] as $uid){
- if(in_array($uid,$this->memberUid)){
+ if(in_array_strict($uid,$this->memberUid)){
$users[$uid] = $uid;
}
}