Code

Moved to DDC
[gosa.git] / plugins / admin / systems / class_printerPPDDialog.inc
index f944b7a0485f4bb2f7cd10a3f8fa6fc8f89c0f52..09cf862d8e5785c0f470582ef482581b7844206c 100644 (file)
@@ -76,7 +76,6 @@ class printerPPDDialog extends plugin
   }
 
 
-
   function execute()
   {
     /* Call parent execute */
@@ -96,15 +95,16 @@ class printerPPDDialog extends plugin
     
       /* Check if path is write/readable*/
       $is_r = @is_readable($path);  
-      if((!is_dir($path))||(empty($path)) || (!$is_r)){
-        print_red(sprintf(_("The specified path '%s' which results from PPD_PATH in your gosa.conf is invalid,".
-                            " can't read/write any ppd informations."),$path));
+      if(((!is_dir($path))||(empty($path)) || (!$is_r)) && (!@mkdir($path))){
+        print_red(sprintf(_("The specified path '%s' which results from PPD_PATH in your gosa.conf is invalid, can't read/write any ppd informations."),$path));
         /* Print out template */
         $display.= $smarty->fetch(get_template_path('printerPPDDialog.tpl', TRUE,dirname(__FILE__)));
         return($display);
       }
     }
 
+    // PPD selection / upload / dialog handling 
+
     /* Is there a new PPD file uploaded ? */
     if((isset($_FILES['NewPPDFile']))&&(isset($_POST['SubmitNewPPDFile']))){
       $file = ($_FILES['NewPPDFile']);
@@ -117,33 +117,17 @@ class printerPPDDialog extends plugin
       }
     }
 
-
-    /* Open a dialog that allow us to select different PPDs
-     */
+    /* Open a dialog that allow us to select different PPDs */
     if(isset($_POST['SelectPPD'])){
       $this->dialog= new printerPPDSelectionDialog($this->config,$this->dn,$this->ppdList,$this->ppdListHeader,$this->selectedPPD);
     }
 
-    /* The selection dialog fpr PPDs is canceled
-     */
+    /* The selection dialog fpr PPDs is canceled */
     if(isset($_POST['ClosePPDSelection'])){
       unset($this->dialog);
       $this->dialog=NULL;
     }
 
-    /* A new PPDs was selected in the PPDs selection Dialog
-     * Perform a Check. If everything is fine, use the new PPD.
-     */
-    if(isset($_POST['SavePPDSelection'])){
-      if(!isset($_POST['PPDselection'])){
-        print_red(_("Please select a valid ppd."));
-      }else{
-        $this->SelectPPD($_POST['PPDselection']);
-        unset($this->dialog);
-        $this->dialog=NULL;
-      }
-    }
-
     /* Div Selection */ 
     if((isset($_GET['act']))&&($_GET['act']=="use")){
       $this->SelectPPD(base64_decode($_GET['id']));
@@ -152,13 +136,14 @@ class printerPPDDialog extends plugin
 
     }
 
-    /* if a dialog is open, print the dialog instead of this class
-     */
+    /* if a dialog is open, print the dialog instead of this class */
     if($this->dialog!=NULL){
       $display = $this->dialog->execute();
       return($display);
     }
 
+    // ENDE  PPD selection / upload / dialog handling 
+
     /* Give smarty the information it needs */
     $smarty->assign("ppdString" ,$this->getPPDInformation());
     $tmp= $this->generateProperties();
@@ -327,24 +312,26 @@ class printerPPDDialog extends plugin
    */
   function getPrinterReload()
   {
-    $tmp = $this->ppdManager->getPrinterList(true);
+    if(is_readable($this->pathToPPD)){
+      $tmp = $this->ppdManager->getPrinterList(true);
 
-    $this->ppdListHeader = $this->ppdList = array();
+      $this->ppdListHeader = $this->ppdList = array();
 
-    /* Sort all available files, and create header (Vendor index) */
-    foreach($tmp as $file=>$ppd){
+      /* Sort all available files, and create header (Vendor index) */
+      foreach($tmp as $file=>$ppd){
 
-      if(preg_match("#".$this->pathToModified."#",$file)) continue;
+        if(preg_match("#".$this->pathToModified."#",$file)) continue;
 
-      $tmp2 = split("\n",$ppd);
-      if(!isset($this->ppdListHeader[$tmp2[0]])){
-        $this->ppdListHeader[$tmp2[0]]=0;
+        $tmp2 = split("\n",$ppd);
+        if(!isset($this->ppdListHeader[$tmp2[0]])){
+          $this->ppdListHeader[$tmp2[0]]=0;
+        }
+        $tmp3['name']   =preg_replace("/^ -/","",$tmp2[1]." - ".$tmp2[2]);
+        $tmp3['link']   =$file;
+        $tmp3['ppd']    =$ppd;
+        $this->ppdListHeader[$tmp2[0]]++;
+        $this->ppdList[$tmp2[0]][preg_replace("/^ -/","",$tmp2[1]." - ".$tmp2[2])]=$tmp3;
       }
-      $tmp3['name']   =preg_replace("/^ -/","",$tmp2[1]." - ".$tmp2[2]);
-      $tmp3['link']   =$file;
-      $tmp3['ppd']    =$ppd;
-      $this->ppdListHeader[$tmp2[0]]++;
-      $this->ppdList[$tmp2[0]][preg_replace("/^ -/","",$tmp2[1]." - ".$tmp2[2])]=$tmp3;
     }
   }
 
@@ -373,6 +360,7 @@ class printerPPDDialog extends plugin
     }
   }
 
+
   /* Return selected ppd path, if none is selected then false */
   function save()
   {
@@ -380,6 +368,7 @@ class printerPPDDialog extends plugin
     return($this->pathToModified.$this->selectedPPD['link']);
   }
 
+
   /* Get Information for a single PPD entry 
    * This will be shown on top of template
    */
@@ -392,6 +381,7 @@ class printerPPDDialog extends plugin
     return($str) ; 
   }
 
+
   /* Display all options from the selected ppd file */
   function generateProperties()
   { 
@@ -426,7 +416,6 @@ class printerPPDDialog extends plugin
         /* Add attributes of the current category */
         foreach($obj as $attr => $settings){
 
-
           /* Skip all entries beginning with _ */
           if($attr[0] == "_") continue;