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){