X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=plugins%2Fadmin%2Fsystems%2Fclass_selectUserToPrinterDialog.inc;h=8f1c8eca2a56ca190b6ee79423b2894097994226;hb=ecabf2056dc1350d73115d5fa226676be30017d6;hp=cde125b4731f5ba5af7d3b43f95ca9d93fe046f9;hpb=50a3e307ef6126cf694acd715f13028fb2a89485;p=gosa.git diff --git a/plugins/admin/systems/class_selectUserToPrinterDialog.inc b/plugins/admin/systems/class_selectUserToPrinterDialog.inc index cde125b47..8f1c8eca2 100644 --- a/plugins/admin/systems/class_selectUserToPrinterDialog.inc +++ b/plugins/admin/systems/class_selectUserToPrinterDialog.inc @@ -18,8 +18,10 @@ class selectUserToPrinterDialog extends plugin var $searchObjects = ""; var $searchAttrs = ""; var $searchAppend = ""; + var $baseAddition = ""; var $type = ""; - + var $search_cat = ""; + function selectUserToPrinterDialog ($config, $dn= NULL,$type=false ) { plugin::plugin ($config, $dn); @@ -30,21 +32,29 @@ class selectUserToPrinterDialog extends plugin $this->searchObjects = "(objectClass=gosaAccount)(!(uid=*$))"; $this->searchAttrs = array("cn","uid"); $this->searchAppend = "uid"; + $this->baseAddition = get_people_ou(); + $this->search_cat = "users"; ;break; case "AddGroup" : $this->searchObjects = "(objectClass=posixGroup)"; $this->searchAttrs = array("cn","description"); $this->searchAppend = "cn"; + $this->baseAddition = get_groups_ou(); + $this->search_cat = "groups"; ;break; case "AddAdminUser" : $this->searchObjects = "(objectClass=gosaAccount)(!(uid=*$))"; $this->searchAttrs = array("cn","uid"); $this->searchAppend = "uid"; + $this->baseAddition = get_people_ou(); + $this->search_cat = "users"; ;break; case "AddAdminGroup" : $this->searchObjects = "(objectClass=posixGroup)"; $this->searchAttrs = array("cn","description"); $this->searchAppend = "cn"; + $this->baseAddition = get_groups_ou(); + $this->search_cat = "groups"; ;break; } $this->type = $type; @@ -70,27 +80,62 @@ class selectUserToPrinterDialog extends plugin $this->regex=preg_replace("/\*\*/","*",$this->regex); } - $this->deplist=array_flip($this->config->departments); + /* Get all departments within this subtree */ + $base = $this->config->current['BASE']; + $deps_res= get_list("(&(|(ou=*)(description=*))(objectClass=gosaDepartment))", array("users","groups"), $this->config->current['BASE'], + array("ou", "description"), GL_SIZELIMIT | GL_SUBSEARCH); + + /* Load possible departments */ + $ui = get_userinfo(); + + /* Allowed user departments */ + $udeps = $ui->get_module_departments("users"); + + /* Allowed groups department */ + $gdeps = $ui->get_module_departments("groups"); + + /* Combine both arrays */ + $tdeps = array_unique(array_merge($udeps,$gdeps)); + + /* Create usable departments array */ + $ids = $this->config->idepartments; + $deps = array(); + foreach($deps_res as $dep){ + if(isset($ids[$dep['dn']]) && in_array_ics($dep['dn'], $tdeps)){ + $value = $ids[$dep['dn']]; + $deps[$dep['dn']] = $value; + } + } + if(!isset($deps[$this->depselect])){ + $this->depselect = key($deps); + } + + + + $tmp_printers= $this->getPrinter(); + natcasesort($tmp_printers); $smarty->assign("regexPrinter" , $this->regex); - $smarty->assign("deplistPrinter" , $this->deplist); + $smarty->assign("deplistPrinter" , $deps);;//deplist); $smarty->assign("depselectPrinter" , $this->depselect); - $smarty->assign("gotoPrinters" , $this->getPrinter()); - $smarty->assign("gotoPrinterKeys" , array_flip($this->getPrinter())); + $smarty->assign("gotoPrinters" , $tmp_printers); + $smarty->assign("gotoPrinterKeys" , array_flip($tmp_printers)); $smarty->assign("apply" , apply_filter()); $smarty->assign("alphabet" , generate_alphabet()); $smarty->assign("search_image" , get_template_path('images/search.png')); $smarty->assign("tree_image" , get_template_path('images/tree.png')); $smarty->assign("infoimage" , get_template_path('images/info.png')); $smarty->assign("launchimage" , get_template_path('images/small_filter.png')); - $smarty->assign("deplist" , $this->config->idepartments); + $smarty->assign("deplist" , $deps); $display.= $smarty->fetch(get_template_path('selectUserToPrinterDialog.tpl', TRUE,dirname(__FILE__))); return($display); } function check(){ - $message=array(); + /* Call common method to give check the hook */ + $message= plugin::check(); + if(empty($_POST['gotoPrinter'])){ $message[] = _("Please select a printer or press cancel."); } @@ -115,10 +160,14 @@ class selectUserToPrinterDialog extends plugin function getPrinter($detailed = false) { $a_return=array(); - $ldap = $this->config->get_ldap_link(); - $ldap->cd($this->depselect); - $ldap->search("(&".$this->searchObjects."(cn=".$this->regex."))",$this->searchAttrs); - while($printer = $ldap->fetch()){ + + $filter = "(&".$this->searchObjects."(cn=".$this->regex."))"; + $base = $this->baseAddition.$this->depselect; + $attrs = $this->searchAttrs; + $cat = $this->search_cat; + + $res = get_list($filter,$cat,$base,$attrs); + foreach($res as $printer){ if(($detailed ==true)){ if(isset($printer[$this->searchAppend])){ $a_return[$printer[$this->searchAppend][0]] = $printer; @@ -137,9 +186,5 @@ class selectUserToPrinterDialog extends plugin } } - - - - // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?>