Code

Updated in
[gosa.git] / gosa-core / plugins / admin / groups / class_group.inc
index 72eec6a9ee6eb08cbcb0e50737aa6315739db931..45658dd418130d36035769c57f35190bac97eceb 100644 (file)
@@ -127,7 +127,7 @@ class group extends plugin
     }
 
     /* 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;
     }
 
@@ -499,14 +499,14 @@ class group extends plugin
     $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);
@@ -650,7 +650,7 @@ class group extends plugin
 
     /* 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 ++;
@@ -1276,12 +1276,12 @@ class group extends plugin
     $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;
     }
@@ -1314,7 +1314,7 @@ class group extends plugin
 
     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];
         }
       }
@@ -1327,6 +1327,49 @@ class group extends plugin
   {
     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(); 
     } 
@@ -1353,7 +1396,7 @@ class group extends plugin
 
     /* 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;
       }
     }