Code

Re-run translations
[gosa.git] / gosa-core / plugins / admin / sudo / class_sudoOptions.inc
index 7cb9fbebbae6d26933b347760961e0977c6167a9..b9954a50378420366cee8404d3b8a6a01de68947 100644 (file)
@@ -138,7 +138,7 @@ class sudoOption extends plugin
         /* Create internal sudoOption object */
         $option = array();
         $option['NAME']   = $opt;
-        $option['VALUE']  = array($value);
+        $option['VALUE']  = $value;
         $option['NEGATE'] = $negation;
 
         /*  Special handling for mixed flag types. 
@@ -149,30 +149,26 @@ class sudoOption extends plugin
           if(empty($value)){
             $option['NEGATE'] = FALSE;
             if($negation){
-              $option['VALUE'] = array(0 => "FALSE");
+              $option['VALUE'] = "FALSE";
             }else{
-              $option['VALUE'] = array(0 => "TRUE");
+              $option['VALUE'] = "TRUE";
             }
           }
         }
 
-        if($this->options[$opt]['TYPE'] == "LISTS"){
-           $this->sudoOption[$opt][] = $option;
-        }
-
         /* Special handling for BOOLEAN values */
         if(in_array($this->options[$opt]['TYPE'],array("BOOLEAN"))){
           $option['NEGATE'] = FALSE;
           if($negation){
-            $option['VALUE'] = array(0 => "FALSE");
+            $option['VALUE'] = "FALSE";
           }else{
-            $option['VALUE'] = array(0 => "TRUE");
+            $option['VALUE'] = "TRUE";
           }
         }
 
         /* Append values */
         if(!isset($this->sudoOption[$opt])){
-          $this->sudoOption[$opt] = $option;
+          $this->sudoOption[$opt][] = $option;
         }
       }
     }
@@ -188,23 +184,15 @@ class sudoOption extends plugin
      *****/
     foreach($_POST as $name => $value){
 
-      if(preg_match("/^negListOption_/",$name)){
-        $opt = preg_replace("/^negListOption_/","",$name);
+      if(preg_match("/^negOption_/",$name)){
+
+        $opt = preg_replace("/^negOption_/","",$name);
         $opt = preg_replace("/_[^_]*$/","",$opt);
         $id  = preg_replace("/^.*_([0-9])*$/","\\1",$opt);
         $opt = preg_replace("/_[0-9]*$/","",$opt);
 
         if(isset($this->sudoOption[$opt][$id])){
-          $this->sudoOption[$opt][$id]['NEGATE'] = !$this->sudoOption[$opt][$id]['NEGATE']; 
-        }
-        break;
-      }
-
-      if(preg_match("/^negOption_/",$name)){
-        $opt = preg_replace("/^negOption_/","",$name);
-        $opt = preg_replace("/_[^_]*$/","",$opt);
-        if(isset($this->sudoOption[$opt])){
-          $val = $this->sudoOption[$opt]['VALUE'][0];
+          $val = $this->sudoOption[$opt][$id]["VALUE"];
 
           /*****
             Negate STRING_BOOL && BOOL_INTEGER
@@ -212,20 +200,20 @@ class sudoOption extends plugin
           if(in_array($this->options[$opt]['TYPE'],array('STRING_BOOL','BOOL_INTEGER'))){
             if(in_array($val, array("TRUE","FALSE"))){
               if($val == "TRUE"){
-                $this->sudoOption[$opt]['VALUE'][0] = "FALSE";
+                $this->sudoOption[$opt][$id]["VALUE"] = "FALSE";
               }else{
-                $this->sudoOption[$opt]['VALUE'][0] = "TRUE";
+                $this->sudoOption[$opt][$id]["VALUE"] = "TRUE";
               }
             }else{
-               $this->sudoOption[$opt]['NEGATE'] = !$this->sudoOption[$opt]['NEGATE']; 
+               $this->sudoOption[$opt][$id]['NEGATE'] = !$this->sudoOption[$opt][$id]['NEGATE']; 
             }
           }
 
           /*****
             Negate STRING / INTEGER
            *****/
-          if(in_array($this->options[$opt]['TYPE'],array('STRING','INTEGER'))){
-            $this->sudoOption[$opt]['NEGATE'] = !$this->sudoOption[$opt]['NEGATE']; 
+          if(in_array($this->options[$opt]['TYPE'],array('STRING','INTEGER','LISTS'))){
+            $this->sudoOption[$opt][$id]['NEGATE'] = !$this->sudoOption[$opt][$id]['NEGATE']; 
           }
 
           /*****
@@ -233,9 +221,9 @@ class sudoOption extends plugin
            *****/
           if(in_array($this->options[$opt]['TYPE'],array('BOOLEAN'))){
             if($val == "TRUE"){
-              $this->sudoOption[$opt]['VALUE'][0] = "FALSE";
+              $this->sudoOption[$opt][$id]["VALUE"] = "FALSE";
             }else{
-              $this->sudoOption[$opt]['VALUE'][0] = "TRUE";
+              $this->sudoOption[$opt][$id]["VALUE"] = "TRUE";
             }
           }
         }
@@ -245,21 +233,9 @@ class sudoOption extends plugin
       /*****
         Remove options
        *****/
-      if(preg_match("/^delOption_/",$name)){
+      if(preg_match("/^delOption/",$name)){
         $opt = preg_replace("/^delOption_/","",$name);
         $opt = preg_replace("/_[^_]*$/","",$opt);
-        if(isset($this->sudoOption[$opt])){
-          unset($this->sudoOption[$opt]);
-        }
-        break;
-      }
-
-      /*****
-        Remove LISTS options
-       *****/
-      if(preg_match("/^delListOption/",$name)){
-        $opt = preg_replace("/^delListOption_/","",$name);
-        $opt = preg_replace("/_[^_]*$/","",$opt);
         $id  = preg_replace("/^.*_([0-9])*$/","\\1",$opt);
         $opt = preg_replace("/_[0-9]*$/","",$opt);
 
@@ -296,74 +272,66 @@ class sudoOption extends plugin
       $opt = get_post("option");
 
       /* Append attribute only once, lists are handled below */
-      if(isset($this->options[$opt]) && !isset($this->sudoOption[$opt])){
-        $type = $this->options[$opt]['TYPE'];
-        $val  = array($this->options[$opt]['DEFAULT']);
-        $option = array("NAME" => $opt, "VALUE" => $val , "NEGATE" => FALSE);
-
-        if($type == "LISTS"){
-          $this->sudoOption[$opt][] = $option;
-        }else{
-          $this->sudoOption[$opt] = $option;
-        }
-      }elseif(isset($this->options[$opt]) && isset($this->sudoOption[$opt]) && $this->options[$opt]['TYPE'] == "LISTS"){
+      if(isset($this->options[$opt])){
         $type = $this->options[$opt]['TYPE'];
-        $val  = array($this->options[$opt]['DEFAULT']);
+        $val  = $this->options[$opt]['DEFAULT'];
         $option = array("NAME" => $opt, "VALUE" => $val , "NEGATE" => FALSE);
         $this->sudoOption[$opt][] = $option;
       }
     }
 
-    foreach($this->sudoOption as $name => $opt){
+    foreach($this->sudoOption as $name => $opts){
+      foreach($opts as $id => $opt){
 
-      /****
-        Get posted value for BOOLEAN
-       ****/
-      if(in_array($this->options[$name]['TYPE'],array("BOOLEAN"))){
-        if(isset($_POST['option_value__'.$name])){
-          $this->sudoOption[$name]['VALUE'][0] = get_post('option_value__'.$name);
+        /****
+          Get posted value for BOOLEAN
+         ****/
+        if(in_array($this->options[$name]['TYPE'],array("BOOLEAN"))){
+          if(isset($_POST['option_value__'.$name.'_'.$id])){
+            $this->sudoOption[$name][$id]["VALUE"] = get_post('option_value__'.$name.'_'.$id);
+          }
         }
-      }
 
-      /****
-        Get posted value for STRING / INTEGER
-       ****/
-      if(in_array($this->options[$name]['TYPE'],array("STRING","INTEGER"))){
-        if(isset($_POST['option_value__'.$name])){
-          $this->sudoOption[$name]['VALUE'][0] = get_post('option_value__'.$name);
+        /****
+          Get posted value for STRING / INTEGER
+         ****/
+        if(in_array($this->options[$name]['TYPE'],array("STRING","INTEGER"))){
+          if(isset($_POST['option_value__'.$name.'_'.$id])){
+            $this->sudoOption[$name][$id]["VALUE"] = get_post('option_value__'.$name.'_'.$id);
+          }
         }
-      }
 
-      /****
-        Get posted value for STRING_BOOL / BOOL_INTEGER
-       ****/
-      if(in_array($this->options[$name]['TYPE'],array("BOOL_INTEGER","STRING_BOOL"))){
-        if(isset($_POST['option_selection__'.$name])){
-          $sel = get_post('option_selection__'.$name);
-          $val = "";
-          if(isset($_POST['option_value__'.$name])){
-            $val = get_post('option_value__'.$name);
-          }
+        /****
+          Get posted value for STRING_BOOL / BOOL_INTEGER
+         ****/
+        if(in_array($this->options[$name]['TYPE'],array("BOOL_INTEGER","STRING_BOOL"))){
+          if(isset($_POST['option_selection__'.$name.'_'.$id])){
+            $sel = get_post('option_selection__'.$name.'_'.$id);
+            $val = "";
+            if(isset($_POST['option_value__'.$name.'_'.$id])){
+              $val = get_post('option_value__'.$name.'_'.$id);
+            }
 
-          if($sel == "FALSE" || $sel == "TRUE"){
-            $this->sudoOption[$name]['VALUE'] = array($sel);
-            $this->sudoOption[$name]['NEGATE'] = FALSE;
-          }else{
-            $this->sudoOption[$name]['VALUE'] = array($val);
+            if($sel == "FALSE" || $sel == "TRUE"){
+              $this->sudoOption[$name][$id]['VALUE'] = $sel;
+              $this->sudoOption[$name][$id]['NEGATE'] = FALSE;
+            }else{
+              $this->sudoOption[$name][$id]['VALUE'] = $val;
+            }
           }
         }
-      }
 
-      /****
-        Get posted value for LISTS
-       ****/
-      if(in_array($this->options[$name]['TYPE'],array("LISTS"))){
-        foreach($this->sudoOption[$name] as $entry_key => $entry){
-          if(isset($_POST['list_value__'.$name.'_'.$entry_key])){
-            $val = get_post('list_value__'.$name.'_'.$entry_key);
-            $this->sudoOption[$name][$entry_key]['VALUE'][0] = $val;
-          }
-        } 
+        /****
+          Get posted value for LISTS
+         ****/
+        if(in_array($this->options[$name]['TYPE'],array("LISTS"))){
+          foreach($this->sudoOption[$name] as $entry_key => $entry){
+            if(isset($_POST['list_value__'.$name.'_'.$entry_key])){
+              $val = get_post('list_value__'.$name.'_'.$entry_key);
+              $this->sudoOption[$name][$entry_key]["VALUE"] = $val;
+            }
+          } 
+        }
       }
     }
   }
@@ -374,67 +342,74 @@ class sudoOption extends plugin
     plugin::save(); 
 
     $this->attrs['sudoOption'] = array();
-    foreach($this->sudoOption as $name => $opt){
+    foreach($this->sudoOption as $name => $opts){
+      foreach($opts as $id => $opt){
 
-      $type   = $this->options[$name]['TYPE'];
+        $type   = $this->options[$name]['TYPE'];
+        $neg    = $opt['NEGATE'];
+        $value  = $opt['VALUE'];
+        $option = "";
 
-      if($type=="LISTS"){
-        foreach($this->sudoOption[$name] as $entry_key => $entry){
-          $val =  $entry['VALUE'][0];
-          if(empty($val)){
+        /****
+          Save LISTS 
+         ****/
+        if($type=="LISTS"){
+          if(empty($value)){
             $option = $name;
           }else{
-            $option = $name."=".$val;
+            $option = $name."=".$value;
           }
-          if($entry['NEGATE']){
+          if($neg){
             $option = "!".$option;
           }
-          $this->attrs['sudoOption'][] = $option;
-        }
-        continue;
-      }
-
-      $neg    = $opt['NEGATE'];
-      $value  = $opt['VALUE'][0];
-      $option = "";
-
-      /****
-        Save BOOLEAN
-       ****/
-      if(in_array($type,array("BOOLEAN"))){ 
-        $option = $name;
-        if($value == "FALSE"){
-          $option = "!".$option;
         }
-      }
 
-      /****
-        Save STRING / INTEGER
-       ****/
-      if(in_array($type,array("STRING","INTEGER"))){ 
-        $option = $name."=".$value;
-        if($neg){
-          $option = "!".$option;
+        /****
+          Save BOOLEAN
+         ****/
+        if(in_array($type,array("BOOLEAN"))){ 
+          $option = $name;
+          if($value == "FALSE"){
+            $option = "!".$option;
+          }
         }
-      }
 
-      /****
-        Save STRING_BOOL / BOOL_INTEGER
-       ****/
-      if(in_array($type,array("STRING_BOOL","BOOL_INTEGER"))){
-        if($value == "FALSE"){
-          $option = "!".$name;
-        }elseif($value == "TRUE"){
-          $option = $name;
-        }else{
-          $option = $name."=".$value;
+        /****
+          Save STRING / INTEGER
+         ****/
+        if(in_array($type,array("STRING","INTEGER"))){ 
+          if(!empty($value)){
+            $option = $name."=".$value;
+          }else{
+            $option = $name; 
+          }
           if($neg){
             $option = "!".$option;
           }
         }
-      }
 
-      $this->attrs['sudoOption'][] = $option;
+        /****
+          Save STRING_BOOL / BOOL_INTEGER
+         ****/
+        if(in_array($type,array("STRING_BOOL","BOOL_INTEGER"))){
+          if($value == "FALSE"){
+            $option = "!".$name;
+          }elseif($value == "TRUE"){
+            $option = $name;
+          }else{
+            if(!empty($value)){
+              $option = $name."=".$value;
+            }else{
+              $option = $name; 
+            }
+            if($neg){
+              $option = "!".$option;
+            }
+          }
+        }
+
+        $this->attrs['sudoOption'][] = $option;
+      }
     }
     $this->cleanup();
     $ldap = $this->config->get_ldap_link();