diff --git a/trunk/gosa-plugins/fai/admin/fai/class_askClassName.inc b/trunk/gosa-plugins/fai/admin/fai/class_askClassName.inc
index 6b9c49649e97ad30f53ec4ed00244fe5b4cbd324..7cac6536d9e0fb4ee7fe594fac025cea642661ae 100644 (file)
$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"));
}
if(in_array($this->ClassName,$this->forbidden)){
$message[]= msgPool::duplicated(_("Name"));
}
-
- /* Check if the given ClassName is already used in another administrative unit */
- $parent_tag = $this->get_gosaUnitTag($this->parent->base);
-
- $ldap= $this->config->get_ldap_link();
- $filter = "(&(cn=".$this->ClassName.")(!(gosaUnitTag=".$parent_tag.")))";
- $ldap->search($filter, array("dn","gosaUnitTag"));
-
- if ($ldap->count() > 0) {
- $entry = $ldap->fetch();
-
- /* Find out which administrative unit is using the classname */
- $ldap->cd($this->config->current['BASE']);
- $filter = "(&(objectClass=gosaAdministrativeUnit)(gosaUnitTag=".$entry['gosaUnitTag'][0]."))";
- $ldap->search($filter, array('dn', 'ou'));
+ 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.")(!(FAIstate=|removed)))";
+ $base = $rdn . $this->parent->fai_release;
+ $ldap->cd($base);
+ $ldap->search($filter, array("dn","gosaUnitTag"));
if ($ldap->count() > 0) {
$entry = $ldap->fetch();
- $used_by = $entry['ou'][0];
- } else {
- $used_by = $entry['gosaUnitTag'][0];
- }
-
- $message[]= sprintf(_("This FAI class name is already in use by the administrative unit '%s'."), $used_by);
-
- }
+ /* Find out which administrative unit is using the classname */
+ $ldap->cd($this->config->current['BASE']);
+ $filter = "(&(objectClass=gosaAdministrativeUnit)(gosaUnitTag=".$entry['gosaUnitTag'][0]."))";
+ $ldap->search($filter, array('dn', 'ou'));
+
+ if ($ldap->count() > 0) {
+ $entry = $ldap->fetch();
+ $used_by = $entry['ou'][0];
+ } else {
+ $used_by = $entry['gosaUnitTag'][0];
+ }
+
+ $message[]= sprintf(_("This FAI class name is already in use by the administrative unit '%s'."), $used_by);
+ }
+ }
return ($message);
}