Code

Include personal title in cn/dn
[gosa.git] / plugins / personal / environment / class_hotplugDialog.inc
index fee4b846ec1583d512819c29d662e62c141492fe..8bf8ae2980bec583493876f364ae755aef0f1a73 100644 (file)
@@ -9,30 +9,36 @@ class hotplugDialog extends plugin
 
   /* attribute list for save action */
   var $ignore_account       = TRUE;
-  var $attributes           = array("HOT_name","HOT_description","HOT_id");
+  var $attributes           = array("HOT_name","HOT_description","HOT_id","HOT_produkt","HOT_vendor");
   var $objectclasses        = array("whatever");
   var $use_existing         = false;  
 
   var $HOT_name                 = "";
   var $HOT_description          = "";
   var $HOT_id                   = "";
+  var $HOT_produkt              = "";
+  var $HOT_vendor               = "";
 
   var $hotplugDevices           = ""; 
   var $hotplugDeviceList        = array(); 
   var $regex                    = "*";
   var $depselect                = "/";
   var $deplist                  = "/";
+  var $skipThese                = array();
 
-
-
-  function hotplugDialog ($config, $dn= NULL,$use_existing=false )
+  function hotplugDialog ($config, $dn= NULL,$use_existing=false ,$skipThese = array())
   {
     $this->use_existing = $use_existing;
+    $this->skipThese    = $skipThese;
     plugin::plugin ($config, $dn);
+    $this->depselect = $this->config->current['BASE'];
   }
 
   function execute()
   {
+       /* Call parent execute */
+       plugin::execute();
+
     /* Fill templating stuff */
     $smarty= get_smarty();
     $display= "";
@@ -53,7 +59,7 @@ class hotplugDialog extends plugin
         $this->regex=preg_replace("/\*\*/","*",$this->regex);
       }
 
-      $this->deplist=array_flip($this->config->departments);
+      $this->deplist=$this->config->idepartments;
 
       $this->hotplugDevices = $this->getHotplugs();
       $smarty->assign("regexHot"    ,$this->regex);
@@ -63,8 +69,7 @@ class hotplugDialog extends plugin
       $smarty->assign("alphabet", generate_alphabet());
       $smarty->assign("search_image", get_template_path('images/search.png'));
       $smarty->assign("tree_image", get_template_path('images/tree.png'));
-      $smarty->assign("infoimage", get_template_path('images/info.png'));
-      $smarty->assign("launchimage", get_template_path('images/launch.png'));
+      $smarty->assign("launchimage", get_template_path('images/small_filter.png'));
       $smarty->assign("deplist", $this->config->idepartments);
 
 
@@ -87,32 +92,59 @@ class hotplugDialog extends plugin
   function save_object()
   {
     if(isset($_POST['dialogissubmitted'])){
+      plugin::save_object();
       foreach($this->attributes as $s_attr){
         if(isset($_POST[$s_attr])){
-          $this->$s_attr = $_POST[$s_attr];
+          if(in_array($s_attr,array("HOT_produkt","HOT_vendor"))){
+            $this->$s_attr = strtolower(stripslashes($_POST[$s_attr]));
+          }else{
+            $this->$s_attr = stripslashes($_POST[$s_attr]);
+          }
         }else{
           $this->$s_attr = false;
         }
       }
-      plugin::save_object();
     }
   }
 
 
+  /* check if given str in like this 0xffff*/
+  function is_2byteHex($str)
+  {
+    return !strlen($str) || preg_match("/^(0x|x|)[a-f0-9][a-f0-9][a-f0-9][a-f0-9]/i",$str);
+  }
+
+
   /* Check supplied data */
   function check()
   {
-    $message= array();
+    /* Call common method to give check the hook */
+    $message= plugin::check();
+
     if(!$this->use_existing){
-      if((empty($this->HOT_name))||(preg_match("/[^a-z0-9]/i",$this->HOT_name))){
-        $message[]=_("Please specify a valid name.");
+
+      if(empty($this->HOT_name)||(preg_match("/[^a-z0-9]/i",$this->HOT_name))){
+        $message[]=_("Please specify a valid name. Only 0-9 a-Z is allowed.");
       }
-      if((empty($this->HOT_description))||(preg_match("/[^a-z0-9!\"?.,;:-_\(\) ]/i",$this->HOT_description))){
-        $message[]=_("Please specify a valid description.");
+      if(preg_match("/[^a-z0-9!\"?.,;:-_\(\) ]/i",$this->HOT_description)){
+        $message[]=_("Invalid character in description. Please specify a valid description.");
       }
-      if((empty($this->HOT_id))){
+
+      if(empty($this->HOT_id) || preg_match("/[\|\*]/i",$this->HOT_id)){
         $message[]=_("Please specify a valid id.");
       }
+      if(empty($this->HOT_vendor) || !$this->is_2byteHex($this->HOT_vendor)){
+        $message[]=_("Please specify a valid vendor id. (2 byte hex like '0xFFFF')");
+      }
+      if(empty($this->HOT_produkt) || !$this->is_2byteHex($this->HOT_produkt)){
+        $message[]=_("Please specify a valid product id. (2 byte hex like '0xFFFF')");
+      }
+      $ldap = $this->config->get_ldap_link();
+      $ldap->search("(&(objectClass=gotoEnvironment)(gotoHotplugDevice=".$this->HOT_name."*))",array("gotoHotplugDevice"));
+      if($ldap->count()){
+        $message[]=_("An Entry with this name already exists.");
+      }
+
     }else{
       if((!isset($_POST['hotplugName']))||(empty($_POST['hotplugName']))){
         $message[] = _("Please select an entry or press cancel.");
@@ -129,14 +161,18 @@ class hotplugDialog extends plugin
     /* return generated entry from input fields*/
     if(!$this->use_existing){
       $a_return=array();
-      $a_return['name']= $this->HOT_name; 
-      $a_return['description']= $this->HOT_description; 
-      $a_return['id']= $this->HOT_id;
+      $a_return[$this->HOT_name]['name']        = $this->HOT_name; 
+      $a_return[$this->HOT_name]['description'] = $this->HOT_description; 
+      $a_return[$this->HOT_name]['id']          = $this->HOT_id;
+      $a_return[$this->HOT_name]['produkt']     = $this->HOT_produkt;
+      $a_return[$this->HOT_name]['vendor']      = $this->HOT_vendor;
       return($a_return); 
     }else{
-      //return selected entry from select box
-      $entry = $this->hotplugDeviceList[$_POST['hotplugName']];
-      return $entry;
+      $entries = array();
+      foreach($_POST['hotplugName'] as $name){
+        $entries[$name] = $this->hotplugDeviceList[$name];
+      }
+      return $entries;
     }
   }
 
@@ -144,7 +180,14 @@ class hotplugDialog extends plugin
     $ldap= $this->config->get_ldap_link();
     $ldap->cd($this->depselect);
 
-    $ldap->search("(&(objectClass=gotoEnvironment)(gotoHotplugDevice=".$this->regex."))",array("gotoHotplugDevice")); 
+    /* Set tag attribute if we've tagging activated */
+    $tag= "";
+    $ui= get_userinfo();
+    if ($ui->gosaUnitTag != "" && isset($this->config->current['STRICT_UNITS']) &&
+        preg_match('/TRUE/i', $this->config->current['STRICT_UNITS'])){
+      $tag= "(gosaUnitTag=".$ui->gosaUnitTag.")";
+    }
+    $ldap->search("(&(objectClass=gotoEnvironment)$tag(gotoHotplugDevice=".$this->regex."))",array("gotoHotplugDevice")); 
 
     $a_return = array();  
     $this->hotplugDeviceList = array();
@@ -156,12 +199,27 @@ class hotplugDialog extends plugin
           $tmp = split("\|",$device);
           
           if(preg_match("/^".str_replace("*","",$this->regex).".*/i",$tmp[0])){
+  
+            if(in_array($tmp[0],$this->skipThese)) continue;
+
             $a_return[$tmp[0]]= $tmp[0]." [".$tmp[1]."] ".$tmp[2];
             
             $tmp2['name']         = $tmp[0];
-            $tmp2['description'] = $tmp[1];
+            $tmp2['description']  = $tmp[1];
             $tmp2['id']           = $tmp[2];
 
+            /* Produkt ID */
+            if(!isset($tmp[3])){
+              $tmp[3] = "";
+            }
+            /* Vendor ID */
+            if(!isset($tmp[4])){
+              $tmp[4] = "";
+            }
+
+            $tmp2['produkt']      = $tmp[3];
+            $tmp2['vendor']       = $tmp[4];
+
             $this->hotplugDeviceList[$tmp[0]]=$tmp2;
           }
         }