From 199336867024e653082df4fd96e034e24d704cad Mon Sep 17 00:00:00 2001 From: hickert Date: Fri, 28 May 2010 11:50:49 +0000 Subject: [PATCH] Updated winstation -Allow to add IP and MAC info git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@18785 594d385d-05f5-0310-b6e9-bd551577e9d8 --- .../admin/systems/samba/class_winGeneric.inc | 37 +++++++++++++++++-- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/gosa-plugins/samba/admin/systems/samba/class_winGeneric.inc b/gosa-plugins/samba/admin/systems/samba/class_winGeneric.inc index 1d537005f..3b234198e 100644 --- a/gosa-plugins/samba/admin/systems/samba/class_winGeneric.inc +++ b/gosa-plugins/samba/admin/systems/samba/class_winGeneric.inc @@ -51,7 +51,6 @@ class wingeneric extends plugin plugin::plugin ($config, $dn, $parent); $this->netConfigDNS = new termDNS($this->config,$this,$this->objectclasses,FALSE,"uid"); $this->netConfigDNS->cn = preg_replace("/\\\$\$/","",$this->uid); - $this->netConfigDNS->objectclasses=array("ipHost","ieee802Device"); $this->netConfigDNS->MACisMust = FALSE; $this->netConfigDNS->IPisMust = FALSE; @@ -253,6 +252,26 @@ class wingeneric extends plugin $this->attrs['objectClass'][] = "gosaAdministrativeUnitTag"; } + $curOcs = $this->attrs['objectClass']; + $this->cleanup(); + + // Prepare list of object classes + $ocs = array(); + if(!empty($this->netConfigDNS->macAddress)){ + $ocs [] = 'ieee802Device'; + }else{ + $curOcs = array_remove_entries(array('ieee802Device'), $curOcs); + $this->attrs['macAddress'] = array(); + } + if(!empty($this->netConfigDNS->ipHostNumber)){ + $ocs [] = 'ipHost'; + }else{ + $curOcs = array_remove_entries(array('ipHost'), $curOcs); + $this->attrs['ipHostNumber'] = array(); + } + + $this->attrs['objectClass']=$curOcs; + /* Write back to ldap */ $ldap= $this->config->get_ldap_link(); if ($this->orig_dn == 'new'){ @@ -268,17 +287,27 @@ class wingeneric extends plugin } $ldap->cd($this->dn); - $this->cleanup(); $ldap->modify ($this->attrs); new log("modify","winworkstation/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); $this->handle_post_events("modify"); } - $this->netConfigDNS->cn = preg_replace("/\\\$\$/","",$this->uid); - $this->netConfigDNS->save(); if (!$ldap->success()){ msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); } + + // Prepare list of object classes + $ocs = array(); + if(!empty($this->netConfigDNS->macAddress)){ + $ocs [] = 'ieee802Device'; + } + if(!empty($this->netConfigDNS->ipHostNumber)){ + $ocs [] = 'ipHost'; + } + + $this->netConfigDNS->objectclasses=$ocs; + $this->netConfigDNS->cn = preg_replace("/\\\$\$/","",$this->uid); + $this->netConfigDNS->save(); } /* Return plugin informations for acl handling -- 2.30.2