Code

Readded reload2
authorhickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8>
Fri, 28 Oct 2005 13:04:28 +0000 (13:04 +0000)
committerhickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8>
Fri, 28 Oct 2005 13:04:28 +0000 (13:04 +0000)
git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@1744 594d385d-05f5-0310-b6e9-bd551577e9d8

plugins/admin/groups/class_groupManagement.inc

index f095646177ab54d29ea599cb6a3c69a401ca69a0..8171e55022998354d11c65629d587d3b87ce7b6b 100644 (file)
@@ -463,6 +463,120 @@ class groupManagement extends plugin
     return($smarty->fetch(get_template_path('headpage.tpl', TRUE)));
   }
 
+
+
+
+
+
+
+
+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", FALSE, $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 */