Code

update
[gosa.git] / plugins / admin / systems / class_workstationStartup.inc
index 1653aab8e11d34db74a31a03148fd289a4e5a635..07a925b61fed2d0d44e97c36b1ccb5ff5f66c9ac 100644 (file)
@@ -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,19 +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 */
-    $this->FAIdebianMirrors['auto']=_("automatic");
+    $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"])){
@@ -111,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.
      */
@@ -120,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'])){
@@ -153,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;
 
@@ -180,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']." "; 
@@ -267,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;
@@ -315,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]);
       }
     }
@@ -384,9 +402,10 @@ class workstartup extends plugin
     $str_up     = " &nbsp;<input type='image' src='images/sort_up.png'    name='sort_up_%s'    value='%s'>";
     $str_down   = " &nbsp;<input type='image' src='images/sort_down.png'  name='sort_down_%s'  value='%s'>";
     $str_remove = " &nbsp;<input type='image' src='images/edittrash.png'  name='fai_remove_%s' value='%s'>";
-    $str_empty  = " &nbsp;<img src='images/empty.png'i width='7'>"; 
+    $str_empty  = " &nbsp;<img src='images/empty.png' alt=\"\" width='7'>"; 
 
     $i = 1;
+
     foreach($this->FAIclass as $class){
       if($i==1){
         $str = $str_empty.$str_down.$str_remove;
@@ -399,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);
@@ -441,6 +460,41 @@ class workstartup extends plugin
   }
 
 
+  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;
+            }
+          }
+        }
+      }
+    }
+    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;
+        }
+      }
+    }
+    return($ret);
+  }
+
   /* Save data to object */
   function save_object()
   {