X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=plugins%2Fadmin%2Fogroups%2Fclass_ogroupManagement.inc;h=1cbeb8d93517d1294329a6ab7003290c2c2c2ba2;hb=513518cdfce4dc5fd7ed4fa41e398d2dbe5cfaa0;hp=9313b771725f4d42c06eb2ee368d8149471e6c28;hpb=8fdd72002a469e9d2958d02fea7436c54f24d4db;p=gosa.git diff --git a/plugins/admin/ogroups/class_ogroupManagement.inc b/plugins/admin/ogroups/class_ogroupManagement.inc index 9313b7717..1cbeb8d93 100644 --- a/plugins/admin/ogroups/class_ogroupManagement.inc +++ b/plugins/admin/ogroups/class_ogroupManagement.inc @@ -60,7 +60,6 @@ class ogroupManagement extends plugin "servergroups" => "checked", "wsgroups" => "checked", "prtgroups" => "checked", - "emptygroups" => "checked", "tcgroups" => "checked", "fongroups" => "checked", "depselect" => $base, @@ -74,19 +73,17 @@ class ogroupManagement extends plugin /* Prepare template */ $smarty= get_smarty(); - /* Save data */ - if (is_global("ogroupfilter")){ - $ogroupfilter= get_global("ogroupfilter"); - } else { - $ogroupfilter= array(); - } + $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'])){ - foreach( array("usergroups", "groupgroups", "appgroups", "depgroups", "emptygroups", + if (isset($_POST['regex'])){ + foreach( array("usergroups", "groupgroups", "appgroups", "depgroups", "servergroups", "wsgroups", "prtgroups", "tcgroups", "fongroups") as $type){ if (isset($_POST[$type])) { @@ -103,15 +100,80 @@ 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()) != ""){ @@ -119,7 +181,7 @@ class ogroupManagement extends plugin } /* 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. */ @@ -131,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' */ @@ -198,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. */ @@ -279,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 = "
". + "  ". + "  ". + "  ". + "  ". + " ". + "  ". + _("Current base")." ". + "  ". + "
"; + + + $actions = ""; + $actions.= ""; + + // Defining Links + $linkopen = "%s"; + + // image Buttons + $editlink = "%s"; + $userimg = "User"; + + // Extension images + $mailimg = "M"; + + // 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" => ""._("Department").""); + $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" => ""._("Object group").""); + $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')); @@ -286,9 +455,10 @@ 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", "emptygroups", + foreach( array("usergroups", "groupgroups", "appgroups", "depgroups", "servergroups", "wsgroups", "prtgroups", "tcgroups", "fongroups", "regex", "depselect") as $type){ $smarty->assign("$type", $ogroupfilter[$type]); } @@ -303,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 = "".$p1["; + $temp.= "".$p2["; return ($temp); } @@ -352,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"){ @@ -384,31 +561,61 @@ class ogroupManagement extends plugin if ($ogroupfilter['fongroups'] == "checked"){ $filter.= "(gosaGroupObjects=*F*)"; } - if ($ogroupfilter['emptygroups'] == "checked"){ - $filter.= "(gosaGroupObjects=[])"; - } if ($filter != ""){ $filter= "(&(cn=$regex)(objectClass=gosaGroupOfNames)(|$filter))"; } 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); + + + } }