X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=branches%2Fold%2Fgosa-plugins%2Fgoto%2Fadmin%2Fsystems%2Fgoto%2Fclass_selectUserToPrinterDialog.inc;fp=branches%2Fold%2Fgosa-plugins%2Fgoto%2Fadmin%2Fsystems%2Fgoto%2Fclass_selectUserToPrinterDialog.inc;h=9c9c5cbf41b8cfa310a92eaedb84dab165bdd67b;hb=cff5b6e974405f455a90de3a3fc6cc7b084ffe10;hp=0000000000000000000000000000000000000000;hpb=2ad05dfc09e8a07d6e6886604458f475c9c8f2f8;p=gosa.git diff --git a/branches/old/gosa-plugins/goto/admin/systems/goto/class_selectUserToPrinterDialog.inc b/branches/old/gosa-plugins/goto/admin/systems/goto/class_selectUserToPrinterDialog.inc new file mode 100644 index 000000000..9c9c5cbf4 --- /dev/null +++ b/branches/old/gosa-plugins/goto/admin/systems/goto/class_selectUserToPrinterDialog.inc @@ -0,0 +1,193 @@ +depselect = $this->config->current['BASE']; + + switch($type){ + case "AddUser" : + $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; + + } + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + /* Fill templating stuff */ + $smarty= get_smarty(); + $display= ""; + + if(isset($_POST['dialogissubmitted'])){ + $this->regex=$_POST['regexPrinter']; + $this->depselect = $_POST['depselectPrinter']; + } + $this->subtree= isset($_POST['SubSearch']); + + if((isset($_GET['search']))&&(!empty($_GET['search']))){ + $this->regex=$_GET['search']."*"; + $this->regex=preg_replace("/\*\*/","*",$this->regex); + } + + + /* Get all departments within this subtree */ + $base = $this->config->current['BASE']; + $deps_res[] = array("dn"=>$this->config->current['BASE']); + $deps_res= array_merge($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" , $deps);;//deplist); + $smarty->assign("depselectPrinter" , $this->depselect); + $smarty->assign("gotoPrinters" , array_values($tmp_printers)); + $smarty->assign("gotoPrinterKeys" , array_keys($tmp_printers)); + $smarty->assign("apply" , apply_filter()); + $smarty->assign("alphabet" , generate_alphabet()); + $smarty->assign("search_image" , get_template_path('images/lists/search.png')); + $smarty->assign("tree_image" , get_template_path('images/lists/search-subtree.png')); + $smarty->assign("infoimage" , get_template_path('images/info.png')); + $smarty->assign("launchimage" , get_template_path('images/lists/action.png')); + $smarty->assign("deplist" , $deps); + $smarty->assign("subtree", $this->subtree?"checked":""); + + $display.= $smarty->fetch(get_template_path('selectUserToPrinterDialog.tpl', TRUE,dirname(__FILE__))); + return($display); + } + + function check(){ + /* Call common method to give check the hook */ + $message= plugin::check(); + + if(empty($_POST['gotoPrinter'])){ + $message[] = _("Please select a printer or press cancel."); + } + return $message; + } + + /* Save to LDAP */ + function save() + { + $a_return['type']=$this->type; + + foreach($_POST['gotoPrinter'] as $name){ + $data = $this->getPrinter(true); + $a_return[$name]= $data[$name]; + } + return($a_return); + } + + /* This function generates the Printerlist + * All printers are returned that match regex and and depselect + */ + function getPrinter($detailed = false) + { + $a_return=array(); + + $filter = "(&".$this->searchObjects."(cn=".$this->regex."))"; + $base = $this->baseAddition.$this->depselect; + $attrs = $this->searchAttrs; + $cat = $this->search_cat; + + if ($this->subtree){ + $res= get_list($filter,$cat,$this->depselect,$attrs, GL_SUBSEARCH); + } else { + $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; + } + }else{ + if(isset($printer[$this->searchAppend])){ + if(isset($printer['description'][0])){ + $a_return[$printer[$this->searchAppend][0]] = $printer['cn'][0]." - ".$printer['description'][0]; + }else{ + $a_return[$printer[$this->searchAppend][0]] = $printer['cn'][0]; + } + } + } + } + return($a_return); + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?>