X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;ds=inline;f=plugins%2Fadmin%2Fogroups%2Fclass_ogroupManagement.inc;h=1cbeb8d93517d1294329a6ab7003290c2c2c2ba2;hb=513518cdfce4dc5fd7ed4fa41e398d2dbe5cfaa0;hp=15eb4b5065983558a72ee751426c622d1b14eb61;hpb=f47171d3de6038165bfb60760a6c2ae8bc562af1;p=gosa.git
diff --git a/plugins/admin/ogroups/class_ogroupManagement.inc b/plugins/admin/ogroups/class_ogroupManagement.inc
index 15eb4b506..1cbeb8d93 100644
--- a/plugins/admin/ogroups/class_ogroupManagement.inc
+++ b/plugins/admin/ogroups/class_ogroupManagement.inc
@@ -73,15 +73,16 @@ class ogroupManagement extends plugin
/* Prepare template */
$smarty= get_smarty();
- /* Save data */
$ogroupfilter= get_global("ogroupfilter");
+ $s_action = "";
+ $s_entry = "";
foreach( array("depselect", "regex") as $type){
if (isset($_POST[$type])){
$ogroupfilter[$type]= $_POST[$type];
}
}
- if (isset($_POST['depselect'])){
+ if (isset($_POST['regex'])){
foreach( array("usergroups", "groupgroups", "appgroups", "depgroups",
"servergroups", "wsgroups", "prtgroups", "tcgroups", "fongroups") as $type){
@@ -99,23 +100,88 @@ class ogroupManagement extends plugin
}
$ogroupfilter['regex']= $s;
}
- register_global("ogroupfilter", $ogroupfilter);
- /* Prepare formular */
- if (!isset($this->ogroup) &&
- !isset($_POST['new_group']) &&
- !isset($_POST['delete_group']) &&
- !isset($_POST['select_group'])){
- $this->reload();
+ /* Test Posts */
+ foreach($_POST as $key => $val){
+ // Post for delete
+ if(preg_match("/group_del.*/",$key)){
+ $s_action = "del";
+ $s_entry = preg_replace("/group_".$s_action."_/i","",$key);
+ // Post for edit
+ }elseif(preg_match("/group_edit_.*/",$key)){
+ $s_action="edit";
+ $s_entry = preg_replace("/group_".$s_action."_/i","",$key);
+ // Post for new
+ }elseif(preg_match("/dep_back.*/i",$key)){
+ $s_action="back";
+ }elseif(preg_match("/group_new.*/",$key)){
+ $s_action="new";
+ }elseif(preg_match("/dep_home.*/i",$key)){
+ $s_action="home";
+ }elseif(preg_match("/group_tplnew.*/i",$key)){
+ $s_action="new_tpl";
+ }elseif(preg_match("/group_chgpw.*/i",$key)){
+ $s_action="change_pw";
+ $s_entry = preg_replace("/group_chgpw_/i","",$key);
+ }elseif(preg_match("/dep_root.*/i",$key)){
+ $s_action="root";
+ }
+ }
+ $s_entry = preg_replace("/_.$/","",$s_entry);
+
+ /* Department changed? */
+ if(isset($_POST['depselect']) && $_POST['depselect']){
+ $ogroupfilter['depselect']= $_POST['depselect'];
+ }
+
+ /* Start for New List Managment */
+ if(isset($_GET['act'])&&($_GET['act']=="dep_open")){
+ $s_action="open";
+ $s_entry = base64_decode($_GET['dep_id']);
+ $ogroupfilter['depselect']= "".$this->config->departments[trim($s_entry)];
+ }
+
+ /* If Backbutton is Posted */
+ if($s_action=="back"){
+ $base_back = preg_replace("/^[^,]+,/","",$ogroupfilter['depselect']);
+ $base_back = convert_department_dn($base_back);
+
+ if(isset($this->config->departments[trim($base_back)])){
+ $ogroupfilter['depselect']= $this->config->departments[trim($base_back)];
+ }else{
+ $ogroupfilter['depselect']= $this->config->departments["/"];
+ }
+ register_global("ogroupfilter", $ogroupfilter);
+ }
+
+ /* Homebutton is posted */
+ if($s_action=="home"){
+ $ogroupfilter['depselect']=(preg_replace("/^[^,]+,/","",$this->ui->dn));
+ $ogroupfilter['depselect']=(preg_replace("/^[^,]+,/","",$ogroupfilter['depselect']));
+ }
+
+ /* root posted */
+ if($s_action=="root"){
+ $ogroupfilter['depselect']=($this->config->current['BASE']);
}
+ // Edit if
+ if((isset($_GET['act']))&&($_GET['act']=="edit_entry")){
+ $s_action ="edit";
+ $s_entry = $_GET['id'];
+ }
+
+ register_global("ogroupfilter", $ogroupfilter);
+
+ $this->reload();
+
/* Check for exeeded sizelimit */
if (($message= check_sizelimit()) != ""){
return($message);
}
/* New group? */
- if (isset($_POST['new_group'])){
+ if ($s_action=="new"){
/* By default we set 'dn' to 'new', all relevant plugins will
react on this. */
@@ -127,10 +193,10 @@ class ogroupManagement extends plugin
$this->ogroup->set_acl(array(':all'));
}
- if (isset($_POST['delete_group']) && isset($_POST['grouplist'])){
+ if ($s_action=="del"){
/* Get 'dn' from posted 'uid' */
- $this->dn= trim($_POST['grouplist']);
+ $this->dn= $this->ogrouplist[$s_entry]['dn'];
/* Load permissions for selected 'dn' and check if
we're allowed to remove this 'dn' */
@@ -194,10 +260,10 @@ class ogroupManagement extends plugin
unset($_SESSION['objectinfo']);
}
- if ((isset($_POST['select_group']) || (isset($_POST['edit_helper']) && $_POST['edit_helper'] == "1")) && isset($_POST['grouplist']) && $_POST['grouplist'] != ""){
+ if ($s_action=="edit"){
/* Get 'dn' from posted 'uid', must be unique */
- $this->dn= trim($_POST['grouplist']);
+ $this->dn= $this->ogrouplist[$s_entry]['dn'];
/* Check locking, save current plugin in 'back_plugin', so
the dialog knows where to return. */
@@ -275,6 +341,113 @@ class ogroupManagement extends plugin
return ($display);
}
+ /* Prepare departments */
+ $options= "";
+ foreach ($this->config->idepartments as $key => $value){
+ if ($ogroupfilter['depselect'] == $key){
+ $options.= "";
+ } else {
+ $options.= "";
+ }
+ }
+
+ // Managment
+ $listhead = "
";
+
+
+ $actions = "";
+ $actions.= "";
+
+ // Defining Links
+ $linkopen = "%s";
+
+ // image Buttons
+ $editlink = "%s";
+ $userimg = "";
+
+ // Extension images
+ $mailimg = "";
+
+ // Space
+ $empty = "";
+
+ // List Setup
+ $divlist = new divlist("ogroubstab");
+ $divlist->SetHeader(array(
+ array("string" => " ","attach"=>"style='width:20px;'"),
+ array("string" => _("Name of object groups")." / "._("Departments")),
+ array("string" => _("Properties") ,"attach"=>"style='width:50px;'"),
+ array("string" => _("Actions") ,"attach"=>"style='width:50px;border:none;'")
+ ));
+
+
+ $divlist->SetSummary(_("This table displays all groups, in the selected tree."));
+ $divlist->SetEntriesPerPage(20);
+
+ foreach($this->departments as $key=> $val){
+
+ if(!isset($this->config->departments[trim($key)])){
+ $this->config->departments[trim($key)]="";
+ }
+
+ $non_empty="";
+ $keys= str_replace("/","\/",$key);
+ foreach($this->config->departments as $keyd=>$vald ){
+ if(preg_match("/".$keys."\/.*/",$keyd)){
+ $non_empty="full";
+ }
+ }
+
+
+
+ $field1 = array("string" => "");
+ $field2 = array("string" => sprintf($linkopen,base64_encode($key),$val));
+ $field3 = array("string" => " ");
+ $field4 = array("string" => " ","attach"=>"style='text-align:right;border:none'");
+
+ $divlist->AddEntry(array($field1,$field2,$field3,$field4));
+ }
+
+ // Assigning ogroups
+ foreach($this->ogrouplist as $key => $val){
+
+ if(isset($val['mail'])){
+ $mail = $mailimg;
+ }else{
+ $mail = $empty;
+ }
+
+ $title = "title='dn : ".$val['dn']."'";
+
+ if(!isset($val['description'][0])){
+ $desc = "";
+ }else{
+ $desc = " - [ ".$val['description'][0]." ]";
+ }
+ $field1 = array("string" => "");
+ $field2 = array("string" => sprintf($editlink,$key,($val['cn']['0'].$desc)),"attach"=>$title);
+ $field3 = array("string" => $this->convert_list($val)." ".$mail);
+ $field4 = array("string" => preg_replace("/%KEY%/", $key, $actions),"attach"=>"style='text-align:right;border:none'");
+
+ $divlist->AddEntry(array($field1,$field2,$field3,$field4));
+ }
+
+
+
+
+
+
/* Show main page */
$smarty->assign("search_image", get_template_path('images/search.png'));
$smarty->assign("tree_image", get_template_path('images/tree.png'));
@@ -282,7 +455,8 @@ class ogroupManagement extends plugin
$smarty->assign("launchimage", get_template_path('images/launch.png'));
$smarty->assign("deplist", $this->config->idepartments);
- $smarty->assign("groups", $this->convert_list($this->grouplist));
+ $smarty->assign("groupshead", $listhead);
+ $smarty->assign("groups", $divlist->DrawList());
foreach( array("usergroups", "groupgroups", "appgroups", "depgroups",
"servergroups", "wsgroups", "prtgroups", "tcgroups", "fongroups", "regex", "depselect") as $type){
@@ -299,35 +473,42 @@ class ogroupManagement extends plugin
function convert_list($input)
{
$temp= "";
- $conv= array( "U" => "select_user.png",
- "G" => "select_groups.png",
- "A" => "select_application.png",
- "D" => "select_department.png",
- "S" => "select_server.png",
- "F" => "select_phone.png",
- "W" => "select_workstation.png",
- "T" => "select_terminal.png",
- "P" => "select_printer.png");
-
- foreach ($input as $key => $value){
-
- /* Assemble picture */
- $type= $value['type'];
- if (isset($type[0])){
- $p1= $conv[$type[0]];
- } else {
- $p1= "empty.png";
- }
- if (isset($type[1])){
- $p2= $conv[$type[1]];
- } else {
- $p2= "empty.png";
- }
- /* Generate output */
- $temp= "\n".$temp;
- }
+ $conv= array(
+ "U" => array("select_user.png",_("User")),
+ "G" => array("select_groups.png",_("Group")),
+ "A" => array("select_application.png",_("Application")),
+ "D" => array("select_department.png",_("Department")),
+ "S" => array("select_server.png",_("Server")),
+ "F" => array("select_phone.png",_("Phone")),
+ "W" => array("select_workstation.png",_("Workstation")),
+ "T" => array("select_terminal.png",_("Terminal")),
+ "P" => array("select_printer.png",_("Printer")));
+
+ /* Assemble picture */
+ $type= $input['gosaGroupObjects'][0];
+ $type= preg_replace("/[^A-Z]/i","",$type);
+ if (isset($type[0])){
+ $p1['pic']= $conv[$type[0]][0];
+ $p1['tit']= $conv[$type[0]][1];
+ $p1['alt']= $type[0];
+ } else {
+ $p1['pic']= "empty.png";
+ $p1['tit']= "";
+ $p1['alt']= "";
+ }
+ if (isset($type[1])){
+ $p2['pic']= $conv[$type[1]][0];
+ $p2['alt']= $type[1];
+ $p2['tit']= $conv[$type[1]][1];
+ } else {
+ $p2['pic']= "empty.png";
+ $p2['alt']= "";
+ $p2['tit']= "";
+ }
+ $temp = "";
+ $temp.= "";
return ($temp);
}
@@ -348,9 +529,9 @@ class ogroupManagement extends plugin
}
/* User filter? */
- $this->grouplist= array();
+ $this->oogrouplist= array();
- /* Generate grouplist filter */
+ /* Generate oogrouplist filter */
$filter= "";
if ($ogroupfilter['usergroups'] == "checked"){
@@ -386,22 +567,55 @@ class ogroupManagement extends plugin
} else {
$filter= "(&(cn=$regex)(objectClass=gosaGroupOfNames))";
}
- $res= get_list($this->ui->subtreeACL, "$filter", TRUE, $base, array("cn", "description", "gosaGroupObjects"), TRUE);
- foreach ($res as $value){
- $pictype= preg_replace('/[\[\]]/', '', $value["gosaGroupObjects"][0]);
- $sortstring= preg_split('//', $pictype, -1, PREG_SPLIT_NO_EMPTY);
- sort($sortstring);
- $pictype= implode("", $sortstring);
- if (isset($value["description"][0])){
- $this->grouplist[$value["dn"]]= array("text" => $value["cn"][0]." [".
- $value["description"][0]."]", "type" => $pictype);
- } else {
- $this->grouplist[$value["dn"]]= array("text" => $value["cn"][0],
- "type" => $pictype);
+
+ $groups = ($this->config->current['GROUPS']);
+
+ $res= get_list($this->ui->subtreeACL, "$filter",FALSE, $groups.",".$base, array("*"), TRUE);
+ $this->ogrouplist= $res;
+ ksort ($this->ogrouplist);
+ reset ($this->ogrouplist);
+
+
+ /* NEW LIST MANAGMENT
+ * We also need to search for the departments
+ * So we are able to navigate like in konquerer
+ */
+ $base2 = preg_replace("/ou=people,/i","",$base);
+
+ $res3 = get_list2($this->ui->subtreeACL, "(&(|(ou=$regex)(description=$regex))(objectClass=gosaDepartment))",
+ TRUE, $base2, 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];
}
}
- ksort ($this->grouplist);
- reset ($this->grouplist);
+ /* END NEW LIST MANAGMENT
+ */
+
+ $tmp=array();
+ foreach($this->ogrouplist as $tkey => $val ){
+ $tmp[strtolower($val['cn'][0]).$val['cn'][0]]=$val;
+ }
+ ksort($tmp);
+ $this->ogrouplist=array();
+ foreach($tmp as $val){
+ $this->ogrouplist[]=$val;
+ }
+ reset ($this->ogrouplist);
+
+
+
}
}