X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=plugins%2Fadmin%2Fsystems%2Fclass_workstationStartup.inc;h=07a925b61fed2d0d44e97c36b1ccb5ff5f66c9ac;hb=e99742e600fa6fa4b514d9209ee7641ea51260c5;hp=4bc1a46c0ff1dea0f1f7e82bbb4a8174bd935a79;hpb=475588d03afa8401cf37d95a69262f82ba66197c;p=gosa.git diff --git a/plugins/admin/systems/class_workstationStartup.inc b/plugins/admin/systems/class_workstationStartup.inc index 4bc1a46c0..07a925b61 100644 --- a/plugins/admin/systems/class_workstationStartup.inc +++ b/plugins/admin/systems/class_workstationStartup.inc @@ -20,7 +20,7 @@ class workstartup extends plugin var $FAIclass = array(); var $FAIclasses = array(); var $FAIclassInfo = array(); - var $FAIdebianMirror = array(); + var $FAIdebianMirror = "auto"; /* attribute list for save action */ @@ -46,18 +46,32 @@ class workstartup extends plugin /* Creating a list of valid Mirrors * none will not be saved to ldap. */ - $this->FAIdebianMirrors = array("none"=>_("none")); + $this->FAIdebianMirrors = array(); $ldap = $this->config->get_ldap_link(); $ldap->cd($this->config->current['BASE']); - $ldap->search("(objectClass=FAIrepository)",array("FAIdebianMirror")); + $ldap->search("(objectClass=FAIrepositoryServer)",array("FAIrepository")); /* attach all attributes with "index => cn" to avoid multiple entries */ + $ret = array(); while($attr = $ldap->fetch()){ - if(isset($attr['FAIdebianMirror'])){ - $this->FAIdebianMirrors[$attr['FAIdebianMirror'][0]]=$attr['FAIdebianMirror'][0]; + if(isset($attr['FAIrepository'])){ + + unset($attr['FAIrepository']['count']); + + foreach($attr['FAIrepository'] as $rep){ + $tmp = split("\|",$rep); + $str = ""; + if(count($tmp)==4){ + $sections = split(",",$tmp[3]); + $str = $tmp[0]; + $ret[$str]=$sections; + } + } } - } - + } + ksort($ret); + $this->FAIdebianMirrors = $ret; + /* Get arrays */ foreach (array("gotoModules", "gotoAutoFs", "gotoFilesystem") as $val){ if (isset($this->attrs["$val"]["count"])){ @@ -110,7 +124,7 @@ class workstartup extends plugin /* Search all FAI objects */ $ldap->search("(| (objectClass=FAIpackageList)(objectClass=FAItemplate) (objectClass=FAIvariable)(objectClass=FAIscript)(objectClass=FAIhook)(objectClass=FAIprofile) - (objectClass=FAIpartitionTable))",array("objectClass","cn"),true); + (objectClass=FAIpartitionTable))",array("*"),true); /* Sort all entries, and attach elementtype. * To be able to show the types in the listbox. */ @@ -119,6 +133,7 @@ class workstartup extends plugin if(in_array('FAIpackageList',$attr['objectClass'])){ $tmp2[$cn]['FAIpackageList']['obj'] = 'FAIpackageList'; $tmp2[$cn]['FAIpackageList']['kzl'] = 'Pl'; + $tmp2[$cn]['FAIpackageList']['sec'] = $attr['FAIdebianSection']; $this->FAIclasses[$attr['cn'][0]]=$attr['cn'][0]; } if(in_array('FAItemplate',$attr['objectClass'])){ @@ -152,6 +167,9 @@ class workstartup extends plugin $this->FAIclasses[$attr['cn'][0]]=$attr['cn'][0]; } } + if(is_array($this->FAIclasses)){ + natcasesort($this->FAIclasses); + } $this->FAIclassInfo = $tmp2; @@ -179,6 +197,7 @@ class workstartup extends plugin foreach($this->FAIclasses as $class){ $str = ""; $skip = false; + if(isset($this->FAIclassInfo[$class])){ foreach($this->FAIclassInfo[$class] as $objs){ $str .= $objs['kzl']." "; @@ -266,7 +285,7 @@ class workstartup extends plugin } if(($sort_type)&&(!$sort)){ - $value = preg_replace("/_.*$/i","",preg_replace("/".$sort_type."/i","",$name)); + $value = base64_decode(preg_replace("/_.*$/i","",preg_replace("/".$sort_type."/i","",$name))); $sort = true; $last = -1; @@ -314,7 +333,7 @@ class workstartup extends plugin if(preg_match("/fai_remove/i",$name)){ - $value = preg_replace("/_.*$/i","",preg_replace("/fai_remove_/i","",$name)); + $value = base64_decode(preg_replace("/_.*$/i","",preg_replace("/fai_remove_/i","",$name))); unset($this->FAIclass[$value]); } } @@ -383,14 +402,15 @@ class workstartup extends plugin $str_up = "  "; $str_down = "  "; $str_remove = "  "; - $str_empty = "  "; + $str_empty = "  \"\""; $i = 1; + foreach($this->FAIclass as $class){ if($i==1){ - $str = $str_down.$str_empty.$str_remove; + $str = $str_empty.$str_down.$str_remove; }elseif($i == count($this->FAIclass)){ - $str = $str_empty.$str_up.$str_remove; + $str = $str_up.$str_empty.$str_remove; }else{ $str = $str_up.$str_down.$str_remove; } @@ -398,12 +418,12 @@ class workstartup extends plugin $div->AddEntry(array( array("string"=>$class), - array("string"=>preg_replace("/\%s/",$class,$str),"attach"=>"style='width:50px;border-right:none;'") + array("string"=>preg_replace("/\%s/",base64_encode($class),$str),"attach"=>"style='width:50px;border-right:none;'") )); } $smarty->assign("FAIScriptlist",$div->DrawList()); - $smarty->assign("FAIdebianMirrors",$this->FAIdebianMirrors); + $smarty->assign("FAIdebianMirrors",$this->getFAIdebianMirrors()); $smarty->assign("FAIclasses",$this->selectFriendlyClasses()); $smarty->assign("FAIclassesKeys",array_flip($this->selectFriendlyClasses())); $smarty->assign("FAIclassKeys",$this->FAIclass); @@ -436,43 +456,45 @@ class workstartup extends plugin function remove_from_parent() { - /* - $ldap= $this->config->get_ldap_link(); - $ldap->rmdir($this->dn); - show_ldap_error($ldap->get_error()); $this->handle_post_events("remove"); - */ + } - /* Depending on the baseobject (Ogroup / WS) we - * use another set of objectClasses - * In case of WS itself, we use "array("GOhard", "FAIobject");" - * if we are currently editing from ogroup menu we use (array("gotWorkstationTemplate","GOhard", "FAIobject")) - */ - if(isset($this->parent->by_object['ogroup'])){ - $this->objectclasses = array("gotoWorkstationTemplate","GOhard", "FAIobject"); - }elseif(isset($this->parent->by_object['workgeneric'])){ - $this->objectclasses = array("GOhard", "FAIobject"); - }else{ - print "unknown"; - exit(); + function getFAIdebianMirrors() + { + $ret = array(); + $ret['auto']=_("automatic"); + $secs = array(); + if(is_array($this->FAIclass)){ + foreach($this->FAIclass as $classes){ + if(isset($this->FAIclassInfo[ $classes]['FAIpackageList']['sec'])){ + if(isset($this->FAIclassInfo[ $classes]['FAIpackageList']['sec']['count'])){ + unset($this->FAIclassInfo[ $classes]['FAIpackageList']['sec']['count']); + } + if(is_array($this->FAIclassInfo[ $classes]['FAIpackageList']['sec'])){ + foreach($this->FAIclassInfo[ $classes]['FAIpackageList']['sec'] as $sec => $value){ + $secs[$value]= $value; + } + } + } + } } - - $ldap= $this->config->get_ldap_link(); - plugin::remove_from_parent(); - - /* Remove additional attributes.*/ - foreach(array("gotoModules", "gotoAutoFs", "gotoFilesystem") as $attr){ - $this->attrs [$attr] = array(); + if(is_array($this->FAIdebianMirrors)){ + foreach($this->FAIdebianMirrors as $mirr=>$sections){ + $allok = true; + foreach($secs as $sec){ + if(!in_array($sec,$sections)){ + $allok = false; + } + } + if($allok){ + $ret[$mirr]=$mirr; + } + } } - - $ldap->cd($this->dn); - $ldap->modify($this->attrs); - show_ldap_error($ldap->get_error()); - + return($ret); } - /* Save data to object */ function save_object() { @@ -587,7 +609,7 @@ class workstartup extends plugin if($this->FAIdebianMirror == "none"){ $this->FAIdebianMirror = ""; } - + if((count($this->attrs['FAIclass'])==0)&&(empty($this->FAIdebianMirror))){ $tmp = array(); foreach($this->attrs['objectClass'] as $class){