X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=plugins%2Fadmin%2Fsystems%2Fclass_terminalGeneric.inc;h=7a12d4ef91850ea358a49027ec11c368992167cc;hb=408dda1f13eaab930b68d47cca237d2c866d9aa1;hp=b3b38ac5f1b4b392f4c5d16559c093b8f7c0c31b;hpb=e7a9785c01a72325e6a618ad9e30f2e8e6b347f5;p=gosa.git diff --git a/plugins/admin/systems/class_terminalGeneric.inc b/plugins/admin/systems/class_terminalGeneric.inc index b3b38ac5f..7a12d4ef9 100644 --- a/plugins/admin/systems/class_terminalGeneric.inc +++ b/plugins/admin/systems/class_terminalGeneric.inc @@ -55,10 +55,17 @@ class termgeneric extends plugin "memcheck" => "memcheck", "sysinfo" => "sysinfo"); + var $fai_activated = FALSE; - function termgeneric ($config, $dn= NULL) + function termgeneric ($config, $dn= NULL, $parent= NULL) { - plugin::plugin ($config, $dn); + /* Check if FAI is activated */ + $tmp = search_config($config->data,"faiManagement","CLASS"); + if(!empty($tmp)){ + $this->fai_activated = TRUE; + } + + plugin::plugin ($config, $dn, $parent); $this->netConfigDNS = new termDNS($this->config,$this->dn,$this->objectclasses); /* Read arrays */ foreach (array("ghNetNic", "ghIdeDev", "ghScsiDev") as $val){ @@ -131,34 +138,37 @@ class termgeneric extends plugin if (isset($_POST['action'])){ - /* Set FAIstate */ - $ldap = $this->config->get_ldap_link(); - $ldap->cd($this->config->current['BASE']); - $ldap->cat($this->dn,array("objectClass")); - $res = $ldap->fetch(); - $attrs = array(); - $attrs['FAIstate'] = ""; - if(isset($this->mapActions[$_POST['saction']])){ - $attrs['FAIstate'] = $this->mapActions[$_POST ['saction']]; - } + if($this->fai_activated && $this->dn != "new"){ + /* Set FAIstate */ + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->cat($this->dn,array("objectClass")); + $res = $ldap->fetch(); - for($i = 0; $i < $res['objectClass']['count'] ; $i ++){ - $attrs['objectClass'][] = $res['objectClass'][$i]; - } + $attrs = array(); + $attrs['FAIstate'] = ""; + if(isset($this->mapActions[$_POST['saction']])){ + $attrs['FAIstate'] = $this->mapActions[$_POST ['saction']]; + } - if(($attrs['FAIstate'] != "") && (!in_array("FAIobject",$attrs['objectClass']))){ - $attrs['objectClass'][] = "FAIobject"; - } + for($i = 0; $i < $res['objectClass']['count'] ; $i ++){ + $attrs['objectClass'][] = $res['objectClass'][$i]; + } - if($attrs['FAIstate'] == ""){ - #FIXME we should check if FAIobject is used anymore - $attrs['FAIstate'] = array(); - } + if(($attrs['FAIstate'] != "") && (!in_array("FAIobject",$attrs['objectClass']))){ + $attrs['objectClass'][] = "FAIobject"; + } - $ldap->cd($this->dn); - $ldap->modify($attrs); - show_ldap_error($ldap->get_error()); + if($attrs['FAIstate'] == ""){ +#FIXME we should check if FAIobject is used anymore + $attrs['FAIstate'] = array(); + } + + $ldap->cd($this->dn); + $ldap->modify($attrs); + show_ldap_error($ldap->get_error()); + } switch($_POST['saction']){ case 'wake': @@ -297,7 +307,9 @@ class termgeneric extends plugin } /* Show main page */ + $this->netConfigDNS->cn= $this->cn; $smarty->assign("netconfig", $this->netConfigDNS->execute()); + $smarty->assign("fai_activated",$this->fai_activated); $smarty->assign("actionACL", chkacl($this->acl, 'action')); return($smarty->fetch (get_template_path('terminal.tpl', TRUE))); } @@ -339,8 +351,10 @@ class termgeneric extends plugin } /* Save terminal path to parent since it is used by termstartup, too */ + if(isset($this->parent->by_object['termstartup'])){ $this->parent->by_object['termstartup']->gotoTerminalPath= $this->gotoTerminalPath; + } if(isset($_POST['termgeneric_posted'])){ if(isset($_POST["inheritTimeServer"])){ @@ -357,10 +371,13 @@ class termgeneric extends plugin { /* Call common method to give check the hook */ $message= plugin::check(); - $message= array_merge($message, $this->netConfigDNS->check()); + + if($this->cn != "default"){ + $message= array_merge($message, $this->netConfigDNS->check()); + } /* Permissions for that base? */ - $this->dn= "cn=".$this->cn."ou=terminals,ou=systems,".$this->base; + $this->dn= "cn=".$this->cn.",ou=terminals,ou=systems,".$this->base; $ui= get_userinfo(); $acl= get_permissions ($this->dn, $ui->subtreeACL); @@ -375,8 +392,16 @@ class termgeneric extends plugin if ($this->orig_dn == 'new'){ $ldap= $this->config->get_ldap_link(); - $ldap->cd ($this->base); - $ldap->search ("(&(objectClass=gotoTerminal)(cn=".$this->cn."))", array("cn")); + $ldap->cd ($this->config->current['BASE']); + + /* It is possible to have a 'default' terminal on every base */ + if($this->cn == "default"){ + $ldap->cat($this->dn); + }else{ + $ldap->search ("(&(objectClass=gotoTerminal)(cn=".$this->cn."))", array("cn")); + } + + /* Check if there are some other terminals found */ if ($ldap->count() != 0){ while ($attrs= $ldap->fetch()){ if (preg_match ("/,ou=incoming,/", $ldap->getDN())){ @@ -403,6 +428,12 @@ class termgeneric extends plugin /* Save to LDAP */ function save() { + + /* Move object if requested */ + if( $this->orig_dn != 'new' && $this->dn != $this->orig_dn){ + $this->move($this->orig_dn, $this->dn); + } + plugin::save(); /* Strip out 'default' values */ @@ -457,15 +488,17 @@ class termgeneric extends plugin $ldap->add($this->attrs); $this->handle_post_events("add"); } else { - if ($this->orig_dn != $this->dn){ - $this->move($this->orig_dn, $this->dn); - } $ldap->cd($this->dn); $this->cleanup(); $ldap->modify ($this->attrs); - $this->handle_post_events("modify"); } + + /* cn=default and macAddress=- indicates that this is a template */ + if($this->cn == "default"){ + $this->netConfigDNS->macAddress = "-"; + } + $this->netConfigDNS->cn = $this->cn; $this->netConfigDNS->save($this->dn); show_ldap_error($ldap->get_error(), _("Saving terminal failed"));