Code

fixed problem with klicking apply more than once
[gosa.git] / plugins / admin / systems / class_glpiManufacturer.inc
index eaaaaa94185ce06c67a40fba3494b9e1783bdd3e..120818a5ddc7839b1b52c753c21d7da1ec59d8de 100644 (file)
@@ -40,10 +40,28 @@ class glpiManufacturer extends plugin
     $smarty  = get_smarty();
     $display = "";
 
+    /* Remove enterprise from db */
     if((isset($_POST['remove_manu']))&&(isset($_POST['manufacturer']))){
-      $this->parent->handle->removeEnterprise($_POST['manufacturer']);
+
+      $tmp = $this->parent->handle->is_manufacturerUsed($_POST['manufacturer']);
+      if(count($tmp)){
+
+        $names = "";
+        foreach($tmp as $name){
+          $names .= ", ".$name;
+        }
+        $names = preg_replace("/^, /","",$names);
+        $names = trim($names);
+        if(count($tmp) == 3){
+          $names .= " ...";
+        }
+        print_red(sprintf(_("You can't delete this manufacturer, it is still in use by these system(s) '%s'"),$names));
+      }else{
+        $this->parent->handle->removeEnterprise($_POST['manufacturer']);
+      }
     }
 
+    /* Add new Manufactuer : Open dialog with empty fields */
     if(isset($_POST['add_manu'])){
       $this->editMode = true;
       $this->Edit_Add = "add";
@@ -52,6 +70,7 @@ class glpiManufacturer extends plugin
       }
     }
 
+    /* Edit existing manuatctuerer data */
     if((isset($_POST['edit_manu']))&&(isset($_POST['manufacturer']))){
       $this->editMode = true;
       $this->Edit_Add = "edit";
@@ -68,12 +87,13 @@ class glpiManufacturer extends plugin
       $this->ID = $_POST['manufacturer'];
     }
 
+    /* close Dialog without saving */
     if(isset($_POST['close_manufacturer'])){
       $this->editMode=false;
     }
 
+    /* close dialog an save all changes / adds */
     if(isset($_POST['save_manufacturer'])){
-
       $tmp = array();
       foreach($this->attributes as $attrs){
         $tmp[$attrs]=$this->$attrs;
@@ -85,6 +105,22 @@ class glpiManufacturer extends plugin
         $allok = false;
       }
 
+      $attr = $this->parent->handle->getEnterprises();
+
+      if($this->ID == -1 ){
+        if(in_array($tmp['name'],$attr)){
+          $allok = false;
+          print_red(_("Specified name is already in use, please choose another one."));
+        }
+      }else{
+        unset($attr[$this->ID]);
+        if(in_array($tmp['name'],$attr)){
+          $allok = false;
+          print_red(_("Specified name is already in use, please choose another one."));
+        }
+      }
+
+      /* all checks are ok , so save changes */
       if($allok){
         if($this->Edit_Add == "add"){
           $this->parent->handle->addEnterprise($tmp);
@@ -96,6 +132,7 @@ class glpiManufacturer extends plugin
       }
     }
 
+    /* As long as this war is true, we have to display the edit dialog */
     if($this->editMode == true){
       $this->save_object();
       foreach($this->attributes as $attrs){
@@ -122,7 +159,7 @@ class glpiManufacturer extends plugin
   {
     foreach($this->attributes as $attr){
       if(isset($_POST[$attr])){
-        $this->$attr = $_POST[$attr];
+        $this->$attr = stripslashes($_POST[$attr]);
       }
     }
   }