Code

fixed posics group add ...
authorhickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8>
Tue, 2 Aug 2005 08:39:55 +0000 (08:39 +0000)
committerhickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8>
Tue, 2 Aug 2005 08:39:55 +0000 (08:39 +0000)
git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@1044 594d385d-05f5-0310-b6e9-bd551577e9d8

plugins/admin/groups/class_groupManagement.inc
plugins/personal/posix/class_posixAccount.inc

index ae0356d769ab973a9bf383fe9c3dd4c4d71ff1c4..cc4a0d0d7dffb724c0cdd173d1b75a429283242a 100644 (file)
@@ -458,6 +458,125 @@ class groupManagement extends plugin
   }
 
 
+
+  function reload2()
+  {
+    /* Get config */
+    $groupfilter= get_global('groupfilter');
+
+    /* Set base for all searches */
+    $base= $groupfilter['depselect'];
+
+    /* Regex filter? */
+    if ($groupfilter['regex'] != ""){
+      $regex= $groupfilter['regex'];
+    } else {
+      $regex= "*";
+    }
+
+    /* User filter? */
+    $filter= "";
+    $error= "";
+    $error2= "";
+    $this->grouplist= array();
+
+    /* What are primary groups? */
+    $primaries= array();
+    $ldap= $this->config->get_ldap_link(TRUE);
+    $ldap->cd($base);
+    $ldap->search("(&(uid=$regex)(!(uid=*$))(objectClass=posixAccount)(gidNumber=*))", array("gidNumber", "cn"));
+    $error= $ldap->error;
+    while ($attrs= $ldap->fetch()){
+      $primaries[$attrs['gidNumber'][0]]= $attrs['cn'][0];
+    }
+
+    if ($groupfilter['primarygroups'] == "checked"){
+      $filter.= "(&(objectClass=posixGroup)(|";
+      foreach ($primaries as $gidNumber => $cn){
+        $filter.= "(gidNumber=$gidNumber)";
+      }
+      $filter.= "))";
+    } else {
+      $filter.= "(&(objectClass=posixGroup)(!(|";
+      foreach ($primaries as $gidNumber => $cn){
+        $filter.= "(gidNumber=$gidNumber)";
+      }
+      $filter.= ")))";
+    }
+ /* Set filter depending on selection */
+    $sfilter= "";
+    if ($groupfilter['appgroups'] == "checked"){
+      $filter.= "(objectClass=gosaApplicationGroup)";
+    }
+    if ($this->config->current['SAMBAVERSION'] == 3){
+      if ($groupfilter['primarygroups'] != "checked"){
+        $sfilter= "(objectClass=sambaGroupMapping)";
+      } elseif ($groupfilter['sambagroups'] == "checked"){
+        $filter.= "(objectClass=sambaGroupMapping)";
+      }
+    }
+
+    if ($groupfilter['mailgroups'] == "checked"){
+      $filter.= "(objectClass=gosaMailAccount)";
+    }
+    if ($groupfilter['functionalgroups'] == "checked"){
+      $ldap->cd($base);
+      $ldap->set_size_limit($_SESSION['size_limit']);
+      $ldap->search("(&(cn=$regex)(objectClass=posixGroup)(!(|(objectClass=gosaMailAccount)(objectClass=gosaApplicationGroup)$sfilter)))", array("cn",      "gidNumber", "description"));
+      $error2= $ldap->error;
+      while ($attrs= $ldap->fetch()){
+        if (!isset($primaries[$attrs['gidNumber'][0]])){
+          if (isset($attrs["description"][0])){
+            $this->grouplist[$attrs["dn"]]= $attrs["cn"][0]." [".
+              $attrs["description"][0]."]";
+          } else {
+            $this->grouplist[$attrs["dn"]]= $attrs["cn"][0];
+          }
+        }
+      }
+    }
+
+    /* Generate grouplist */
+    if ($filter != ""){
+      $filter= "(&(cn=$regex)(objectClass=posixGroup)(|$filter))";
+      if ($groupfilter['guser'] != ""){
+        $filter= "(&(|(memberUID=" . $groupfilter['guser'] . ")(cn=" . $groupfilter['guser'] . "))$filter)";
+      }
+    }
+    if ($groupfilter['subsearch'] == "checked"){
+      $res= get_list($this->ui->subtreeACL, "$filter", TRUE, $base, array("cn", "description", "gidNumber"), TRUE);
+    } else {
+      $base= get_groups_ou().$base;
+      $res= get_list($this->ui->subtreeACL, "$filter", FALSE, $base, array("cn", "description", "gidNumber"), TRUE);
+    }
+    if (preg_match("/size limit/i", $error) || preg_match("/size limit/i", $error2)){
+      $_SESSION['limit_exceeded']= TRUE;
+    }
+
+   foreach ($res as $value){
+      if (isset($value["description"][0])){
+        $this->grouplist[$value["dn"]]= $value["cn"][0]." [".
+          $value["description"][0]."]";
+      } else {
+        $this->grouplist[$value["dn"]]= $value["cn"][0];
+      }
+    }
+
+    natcasesort ($this->grouplist);
+    reset ($this->grouplist);
+  }
+
+
+
+
+
+
+
+
+
+
+
+
   function reload()
   {
     /* Get config */
index e1f65bfcc3017532105fdff4c12f37b0ad759a41..12d537833164c42d3b1734b84183fabd00a47078 100644 (file)
@@ -38,6 +38,7 @@ class posixAccount extends plugin
   var $accessTo= array();
   var $trustModel= "";
 
+  var $glist=array();
   var $status= "";
   var $loginShellList= array();
   var $groupMembership= array();
@@ -395,7 +396,7 @@ class posixAccount extends plugin
       register_global("groupfilter", $groupfilter);
 
       /* Calculate actual groups */
-      $gd->reload();
+      $gd->reload2();
       $glist= array();
       foreach ($gd->grouplist as $key => $value){
         if (!isset($this->groupMembership[$key])){
@@ -403,7 +404,6 @@ class posixAccount extends plugin
         }
       }
 
-      /* Show dialog */
       $smarty->assign("groups", $glist);
       $smarty->assign("search_image", get_template_path('images/search.png'));
       $smarty->assign("launchimage", get_template_path('images/small_filter.png'));
@@ -933,6 +933,13 @@ class posixAccount extends plugin
 
 
   /* Add posix user to some groups */
+  function addGroup2 ($groups){
+    print "Haleluja".$groups;
+    print_a($this->groupMembership);
+    $this->groupMembership[$this->glist[$groups]['dn']]= $this->glist[$groups]['cn'][0];
+  }
+  
+
   function addGroup ($groups)
   {
     /* include global link_info */
@@ -1032,7 +1039,14 @@ class posixAccount extends plugin
 
   }
 
+
+
 }
 
 // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
+
+
+
+
+
 ?>