Code

Updated Todo
[gosa.git] / plugins / admin / groups / class_groupManagement.inc
index 8171e55022998354d11c65629d587d3b87ce7b6b..4e21b8bdff40fa088b9b921763681680ef0fbd2e 100644 (file)
@@ -56,6 +56,9 @@ class groupManagement extends plugin
 
   function execute()
   {
+       /* Call parent execute */
+       plugin::execute();
+
     /* Save data */
     $groupfilter= get_global("groupfilter");
     $s_action   = "";
@@ -389,7 +392,7 @@ class groupManagement extends plugin
 
 
     $divlist->SetSummary(_("This table displays all groups, in the selected tree."));
-    $divlist->SetEntriesPerPage(20);
+    $divlist->SetEntriesPerPage(0);
 
     foreach($this->departments as $key=> $val){
 
@@ -406,10 +409,10 @@ class groupManagement extends plugin
       }
 
 
-      $field1 = array("string" => "<img src='images/".$non_empty."folder.png' alt='department'>");
+      $field1 = array("string" => "<img src='images/".$non_empty."folder.png' alt='department'>","attach"=>"style='text-align:center;width:20px;'");
       $field2 = array("string" => sprintf($linkopen,base64_encode($key),$val));
       $field3 = array("string" => "&nbsp;");
-      $field4 = array("string" => "&nbsp;","attach"=>"style='text-align:right;border:none'");
+      $field4 = array("string" => "&nbsp;","attach"=>"style='text-align:right;border:none;width:48px;'");
 
       $divlist->AddEntry(array($field1,$field2,$field3,$field4));
     }
@@ -434,10 +437,10 @@ class groupManagement extends plugin
       }else{
         $desc = " - [ ".$val['description'][0]." ]";
       }      
-      $field1 = array("string" => sprintf($userimg,$val['dn']),"attach"=>"style='width:20px;align:middle;'");
+      $field1 = array("string" => sprintf($userimg,$val['dn']),"attach"=>"style='width:20px;text-align:center;'");
       $field2 = array("string" => sprintf($editlink,$key,($val['cn']['0'].$desc)),"attach"=>$title);
-      $field3 = array("string" => $posix."&nbsp;".$enviro."&nbsp;".$mail."&nbsp;".$samba."&nbsp;".$appl."&nbsp;".$phone);  
-      $field4 = array("string" => preg_replace("/%KEY%/", $key, $actions),"attach"=>"style='text-align:right;border:none;width:32px;'");
+      $field3 = array("string" => $posix."&nbsp;".$enviro."&nbsp;".$mail."&nbsp;".$samba."&nbsp;".$appl."&nbsp;".$phone,"attach"=>"style='text-align:left;width:136px;'");  
+      $field4 = array("string" => preg_replace("/%KEY%/", $key, $actions),"attach"=>"style='text-align:right;border:none;width:48px;'");
       
       $divlist->AddEntry(array($field1,$field2,$field3,$field4));    
     }
@@ -463,121 +466,7 @@ 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()
+  function reload($CreatePosixsList=false)
   {
     /* Get config */
     $groupfilter= get_global('groupfilter');
@@ -639,22 +528,27 @@ foreach ($res as $value){
      * We also need to search for the departments
      * So we are able to navigate like in konquerer
      */
-    $res3 =  get_list2($this->ui->subtreeACL, "(&(|(ou=$regex)(description=$regex))(objectClass=gosaDepartment))",
-                              FALSE, $base, array("ou", "description"), TRUE);
-
-    $this->departments= array();
-    $tmp = array();
-    foreach ($res3 as $value){
-      $tmp[strtolower($value['dn']).$value['dn']]=$value;
-    }
-    ksort($tmp);
-    foreach($tmp as $value){
-      if($value["description"][0]!=".."){
-        $this->departments[$value['dn']]=convert_department_dn2($value['dn'])." - [".$value["description"][0]."]";
-      }else{
-        $this->departments[$value['dn']]=$value["description"][0];
+
+    /* Only needed if we are in GroupManagement */
+    if(!$CreatePosixsList){
+      $res3 =  get_list2($this->ui->subtreeACL, "(&(|(ou=$regex)(description=$regex))(objectClass=gosaDepartment))",
+          FALSE, $base, array("ou", "description"), TRUE);
+      $this->departments= array();
+      $tmp = array();
+      foreach ($res3 as $value){
+        $tmp[strtolower($value['dn']).$value['dn']]=$value;
+      }
+      ksort($tmp);
+      foreach($tmp as $value){
+        if($value["description"][0]!=".."){
+          $this->departments[$value['dn']]=convert_department_dn2($value['dn'])." - [".$value["description"][0]."]";
+        }else{
+          $this->departments[$value['dn']]=$value["description"][0];
+        }
       }
     }
+    /*  Ende department generation
+     */
 
     /* Generate grouplist */
     if ($filter != ""){
@@ -663,6 +557,9 @@ foreach ($res as $value){
         $filter= "(&(|(memberUID=" . $groupfilter['guser'] . ")(cn=" . $groupfilter['guser'] . "))$filter)";
       }
     }
+
+    /* Depending on $CreatePosixsList we have to create different lists */
+
     if ($groupfilter['subsearch'] == "checked"){
       $res= get_list($this->ui->subtreeACL, "$filter", FALSE, $base, array("cn", "description", "gidNumber"), TRUE);
     } else {
@@ -687,15 +584,40 @@ foreach ($res as $value){
     }
 
     $tmp=array();
-    foreach($this->grouplist as $tkey => $val ){
-      $tmp[strtolower($val['cn'][0]).$val['cn'][0]]=$val;
-    }
-    ksort($tmp);
-    $this->grouplist=array();
-    foreach($tmp as $val){
-      $this->grouplist[]=$val;
+
+    /* If true ; this result is used for posix tab, group membership selection. */
+    if($CreatePosixsList){
+
+      /* Addd to array */
+      foreach($this->grouplist as $tkey => $val ){
+        $tmp[strtolower($val['cn'][0]).$val['cn'][0]]=$val;
+      }
+      
+      /* Sort index */
+      ksort($tmp);
+
+      /* Recreate index array[dn]=cn[description]*/
+      $this->grouplist=array();
+      foreach($tmp as $val){
+        if(isset($val['description'])){
+          $this->grouplist[$val['dn']]=$val['cn'][0]."&nbsp;[".$val['description'][0]."]";
+        }else{
+          $this->grouplist[$val['dn']]=$val['cn'][0];
+        }
+      }
+    }else{
+  
+      /* Create result for group management listbox*/
+      foreach($this->grouplist as $tkey => $val ){
+        $tmp[strtolower($val['cn'][0]).$val['cn'][0]]=$val;
+      }
+      ksort($tmp);
+      $this->grouplist=array();
+      foreach($tmp as $val){
+        $this->grouplist[]=$val;
+      }
+      reset ($this->grouplist);
     }
-    reset ($this->grouplist);
   }
 
   function remove_from_parent()