Code

Added toggling of remove flag for packages
[gosa.git] / plugins / admin / fai / class_faiPackageEntry.inc
index c5c53d20d1f44dcf68ab943bccf8e19d5ea32acc..a8c78aeb39310843101f8bf0606c40f84ca6aab6 100644 (file)
@@ -11,47 +11,54 @@ class faiPackageEntry extends plugin
   var $ignore_account= TRUE;
   var $attributes   = array();
   var $objectclasses= array();
-  var $strID        = "";  
+  var $pkgs        = array();  
 
   var $buffer       = array();
   var $categories   = array();
-  var $searchStrPKG = "Please enter your search string here";
+  var $searchStrPKG = "";
   var $selected     = array();
 
   /* Array with available class names */
   var $FAIAllclasses        = array();
 
-  function faiPackageEntry ($config, $dn= NULL,$strID=false,$selected=array())
+  function faiPackageEntry ($config, $dn= NULL,$pkgs,$selected=array())
   {
     plugin::plugin ($config, $dn);
-    $this->strID = $strID;
+    
+    $this->pkgs=$pkgs;
 
     if(isset($_SESSION['searchStrPKG'])){
       $this->searchStrPKG=$_SESSION['searchStrPKG'];
     }
-
     $this->selected=$selected;
+
+    $this->searchStrPKG= _("Please enter your search string here");
   }
 
   function execute()
   {
+       /* Call parent execute */
+       plugin::execute();
+
     /* Fill templating stuff */
     $smarty     = get_smarty();
     $display = "";
 
     $divlist = new divlist("PackageEntry");
     $divlist->SetSummary(_("This list displays all assigned package names for this repository settings."));
-    $divlist->SetEntriesPerPage(20);
-    $divlist->SetHeader(array(array("string"=>" "),
-                              array("string"=>"Name"),
-                              array("string"=>"Version"),
-                              array("string"=>"Description","attach"=>"style='border-right:0px;'")));
+    $divlist->SetEntriesPerPage(0);
+    $divlist->SetHeight("650px;");
+    $divlist->SetHeader(array(array("string" => " ", "attach" => "style='text-align:center;width:20px;'"),
+                              array("string" => "Name", "attach" => "style='width:180px;'"),
+                              array("string" => "Version", "attach" ),
+                              array("string" => "Description", "attach" => "style='width:240px;border-right:0px;text-align:left;'")));
 
     if(isset($_GET['search'])){
       $this->searchStrPKG= $_GET['search']."*";
     }
+    
+    $pkgs= $this->pkgs;
 
-    $pkgs = $this->genPkgs();
     unset($this->categories);
     foreach($pkgs as $name => $entry){
       $cat = $entry[2];
@@ -70,10 +77,16 @@ class faiPackageEntry extends plugin
       } 
     }
 
-    ksort($this->categories);
+    $this->searchStrPKG = preg_replace("/^\+/","",$this->searchStrPKG);
+    if(empty($this->searchStrPKG)){
+      $this->searchStrPKG = "*";
+    }
+
+    @ksort($this->categories);
 
-    $CHKS = "<table><tr><input type='hidden' value='chkchange' name='chkchange'>";
-    $i = 0; 
+$CHKS = "<input type='hidden' value='chkchange' name='chkchange'><table summary=''><tr>";
+    $i = 0;
+    if(is_array($this->categories)) 
     foreach($this->categories as $cat => $selected){
       if($i == 3){
         $CHKS .="</tr><tr>";
@@ -86,7 +99,7 @@ class faiPackageEntry extends plugin
         $CHKS .="<td><input type='checkbox' value='1' name='CAT".$cat."' onclick='document.mainform.submit()'>&nbsp;".$cat."&nbsp;</td>";
       }
     }
-    $CHKS .= "</td></tr></table>";
+    $CHKS .= "</tr></table>";
 
 
     foreach($_POST as $name => $value){
@@ -105,20 +118,27 @@ class faiPackageEntry extends plugin
       }
     }
 
+    $cnt = 0; 
     foreach($pkgs as $pkg){
-      if(preg_match("/^".str_replace("*",".*",$this->searchStrPKG)."/i",$pkg[0])){
+      if($cnt > 200) {
+        print_red(sprintf(_("Your specified search string '%s' returned too many results. Only the first 200 entries are shown, to keep the memory usage low."),$this->searchStrPKG));
+        break;
+      }
+      if((preg_match("/^".str_replace("*",".*",$this->searchStrPKG)."/i",$pkg[0]))||
+         (preg_match("/^".str_replace("*",".*",$this->searchStrPKG)."/i",$pkg[3]))){
         if($this->categories[$pkg[2]]){
           if(in_array($pkg[0],$this->selected)){
             $check = " checked ";
           }else{
             $check = "";
           }
-          $chkbox = "<input type='checkbox' value='1' name='use_".base64_encode($pkg[0])."' ".$check." onclick='document.mainform.submit()'>
+          $cnt ++ ;
+          $chkbox = "<input type='checkbox' value='1' name='use_".base64_encode($pkg[0])."' ".$check.">
                    <input type='hidden' value='1' name='wasonpage_".base64_encode($pkg[0])."'>";
-          $divlist->AddEntry(array(array("string"=>$chkbox),
-                                 array("string"=>$pkg[0]),
-                               array("string"=>$pkg[1]),
-                               array("string"=>$pkg[3],"attach"=>"style='border-right:0px'")));
+          $divlist->AddEntry(array(array("string"=>$chkbox, "attach" => "style='text-align:center;width:20px;'"),
+                               array("string"=>$pkg[0], "attach" => "style='width:180px;'"),
+                               array("string"=>htmlentities($pkg[1])),
+                               array("string"=>htmlentities($pkg[3]), "attach" => "style='width:221px;border-right:0px;text-align:left;'")));
         }
       }
     }
@@ -161,7 +181,9 @@ class faiPackageEntry extends plugin
   /* Check supplied data */
   function check()
   {
-    $message= array();
+    /* Call common method to give check the hook */
+    $message= plugin::check();
+        
     return ($message);
   }
 
@@ -169,41 +191,6 @@ class faiPackageEntry extends plugin
   {
     return($this->selected);
   }
-
-    /* Generate listbox friendly SubObject list
-  */
-  function genPkgs(){
-    /* Generate a list off available packages for this mirror, section and release
-     */
-    $strID = $this->strID;    // This var contains the path to the parsed package file
-    
-    /* Open the packelist */
-    $fp = fopen($strID,"r");  
-    $a_ret = array();
-    $this->buffer = array();
-    /* Only read this file if it wasn't read before */
-    if(!isset($this->buffer[$strID])){
-      $str = "";
-      /* Parse every line and create an array */
-      while(!feof($fp)){
-        $str= fgets($fp,512);
-        $stra= split("\|",$str);
-        if(count($stra)==4){
-          $a_ret[$stra[0]] = $stra;
-          }
-        }
-        /* Save our Data, to avoid reading it again */
-      $this->buffer[$strID]=$a_ret;
-
-      ksort($a_ret);
-
-      return($a_ret);
-    }else{
-      return $this->buffer[$strID];
-    }
-  }
-
-
 }
 // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
 ?>