Code

Followup commit for #774
[gosa.git] / trunk / gosa-plugins / fai / admin / fai / class_askClassName.inc
index de302bd2ad75a5fe0dfd775d99560c2a6ee72483..7cac6536d9e0fb4ee7fe594fac025cea642661ae 100644 (file)
@@ -142,6 +142,11 @@ class askClassName extends plugin
       $message[] = msgPool::invalid(_("Name"),preg_replace("/ /","_",$this->ClassName),"/[^_]/");
     }
 
+    if(preg_match("/^-/", $this->ClassName)) {
+      $message[] = sprintf(_("The specified classname '%s' is invalid. Classnames must not start with a dash."), $this->ClassName);
+
+    }
+
     if($this->ClassName == ""){
       $message[]= msgPool::required(_("Name"));
     }
@@ -151,9 +156,19 @@ class askClassName extends plugin
     }
     else {
       /* Check if the given ClassName is already used in another administrative unit */
+      switch($this->objectClass) {
+        case "FAIpartitionTable":  $rdn = get_ou('faiPartitionRDN'); break;
+        case "FAIpackageList"   :  $rdn = get_ou('faiPackageRDN'); break;
+        case "FAIscript"        :  $rdn = get_ou('faiScriptRDN'); break;
+        case "FAIvariable"      :  $rdn = get_ou('faiVariableRDN'); break;
+        case "FAIhook"          :  $rdn = get_ou('faiHookRDN'); break;
+        case "FAIprofile"       :  $rdn = get_ou('faiProfileRDN'); break;
+        case "FAItemplate"      :  $rdn = get_ou('faiTemplateRDN'); break;
+      }
       $ldap= $this->config->get_ldap_link();
-      $filter = "(cn=".$this->ClassName.")";
-      $ldap->cd($this->parent->fai_release);
+      $filter = "(&(cn=".$this->ClassName.")(!(FAIstate=|removed)))";
+      $base = $rdn . $this->parent->fai_release;
+      $ldap->cd($base);
       $ldap->search($filter, array("dn","gosaUnitTag"));
 
       if ($ldap->count() > 0) {