Code

Updated preg_matches
[gosa.git] / plugins / admin / systems / class_glpiManufacturer.inc
index a29a601c751f9fa6e62ec4d7e31b338700d8ee39..9ae1ea8003b2c5214d303c747443f7c15d41a05b 100644 (file)
@@ -28,21 +28,40 @@ class glpiManufacturer extends plugin
   var $email      ="";
   var $ID         =-1;
 
-  function glpiManufacturer($config, $dn= NULL)
+  function glpiManufacturer($config, $dn= NULL, $parent= NULL)
   {
-    plugin::plugin ($config, $dn);
+    plugin::plugin ($config, $dn, $parent);
     $this->ui = get_userinfo();  
   }
 
   function execute()
   {
+    plugin::execute();
     $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";
@@ -51,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";
@@ -67,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;
@@ -84,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);
@@ -95,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){
@@ -121,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]);
       }
     }
   }