Code

Correctly display and save PPDs when an option is not translated. (TRAC #5063)
[gosa.git] / trunk / gosa-plugins / goto / admin / systems / ppd / class_ppdManager.inc
index db3e50c60c90f55c7887a7cc7c35fae716af36ae..4a6d16556e00330cab372ada37b23a165a77a666 100644 (file)
@@ -162,7 +162,12 @@ class ppdManager
        }
 
        function loadProperties($ppdFile)
-       {
+  {
+    if(!(filesize($ppdFile))) {
+      trigger_error(_('Parsing PPD file failed - File has 0 bytes'));
+      return;
+    }
+
                $group= "";
                $option= "";
                $properties= array();
@@ -274,8 +279,16 @@ class ppdManager
                                /* Possible value? */
                                if (preg_match("@^\*$eoption\s+@", $line)){
 #*PageSize Letter/US Letter: "<>setpagedevice"
-                                       $c= preg_replace("@^\*$eoption\s+([^/]+).*$@", "$1", $line);
+                                       /* Options can have one of 2 forms:
+                                          *OptionName OptionValue/TranslationOfValue: ...
+                                          *OptionName OptionValue: ...
+                                          i.e. there may be a translation or not.
+                                       */
+                                       $c= preg_replace("@^\*$eoption\s+([^/:]+).*$@", "$1", $line);
                                        $d= preg_replace("@^\*$eoption\s+[^/]+/([^:]+).*$@", "$1", $line);
+                                       if ($d == $line) { /* if there is no translation, use untranslated value*/
+                                               $d = "$c";
+                                       }
                                        if(empty($group)){
                                                $properties["NO_SECTION"][$option][trim($c)]= trim($d);
                                        }else{
@@ -290,7 +303,12 @@ class ppdManager
        }
 
        function loadDescription($ppdFile)
-       {
+  {
+    if(!(filesize($ppdFile))) {
+      trigger_error(_('Parsing PPD file failed - File has 0 bytes'));
+      return;
+    }
+
                $ppdDesc = array();
                                
                /* Only parse complete PPD file again, if it was changed */