X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=plugins%2Fadmin%2Fsystems%2Fclass_workstationGeneric.inc;h=e3900e931c2e1b098d02dd8be6be11886fd7e4c1;hb=499786c811063a46a322b65d28c19234800e4262;hp=4604c98a77c16c7965795458e083127982d3c129;hpb=dab41343df7dce7d6cc4d3a9a6f1d9828ac99b1a;p=gosa.git diff --git a/plugins/admin/systems/class_workstationGeneric.inc b/plugins/admin/systems/class_workstationGeneric.inc index 4604c98a7..e3900e931 100644 --- a/plugins/admin/systems/class_workstationGeneric.inc +++ b/plugins/admin/systems/class_workstationGeneric.inc @@ -28,6 +28,7 @@ class workgeneric extends plugin var $FAIscript= ""; var $didAction= FALSE; var $FAIstate= ""; + var $view_logged = FALSE; /* Needed values and lists */ var $base= ""; @@ -50,10 +51,11 @@ class workgeneric extends plugin "ghGfxAdapter", "ghSoundAdapter", "gotoLastUser", "l","FAIscript"); var $objectclasses= array("top", "gotoWorkstation", "GOhard"); - var $mapActions = array("reboot" => "localboot", + var $mapActions = array("reboot" => "", "localboot" => "localboot", + "halt" => "", "instant_update" => "softupdate", - "update" => "sceduledupdate", + "update" => "scheduledupdate", "reinstall" => "install", "rescan" => "", "memcheck" => "memcheck", @@ -62,6 +64,8 @@ class workgeneric extends plugin var $fai_activated = FALSE; + var $member_of_ogroup = FALSE; + function workgeneric ($config, $dn= NULL, $parent= NULL) { $tmp = search_config($config->data,"faiManagement","CLASS"); @@ -70,6 +74,14 @@ class workgeneric extends plugin } plugin::plugin ($config, $dn, $parent); + + if(!isset($this->parent->by_object['ogroup'])){ + $ldap = $this->config->get_ldap_link(); + $ldap->cd ($this->config->current['BASE']); + $ldap->search("(&(objectClass=gotoWorkstationTemplate)(member=".$this->dn."))",array("cn")); + $this->member_of_ogroup = $ldap->count() >= 1; + } + $this->netConfigDNS = new termDNS($this->config,$this->dn,$this->objectclasses); /* Read arrays */ @@ -98,6 +110,11 @@ class workgeneric extends plugin $this->gotoNtpServer=array(); } + /* You can't inherit the NTP service, if we are not member in an object group */ + if(!$this->member_of_ogroup){ + $this->inheritTimeServer = FALSE; + } + /* Create available ntp options */ $tmp = $this->config->data['SERVERS']['NTP']; $this->gotoNtpServers = array(); @@ -121,16 +138,12 @@ class workgeneric extends plugin $tmp = $this->config->data['SERVERS']['SYSLOG']; foreach($tmp as $server){ $visible = $server; - if($server == "default") { + if($server == "default" && $this->member_of_ogroup) { $visible = "["._("inherited")."]"; } $this->gotoSyslogServers[$server] = $visible; } - if($this->is_account){ - @log::log("view","workstation/".get_class($this),$this->dn); - } - /* Save 'dn' for later referal */ $this->orig_dn= $this->dn; } @@ -153,6 +166,11 @@ class workgeneric extends plugin /* Call parent execute */ plugin::execute(); + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","workstation/".get_class($this),$this->dn); + } + /* Do we need to flip is_account state? */ if(isset($_POST['modify_state'])){ if($this->is_account && $this->acl_is_removeable()){ @@ -180,8 +198,8 @@ class workgeneric extends plugin $res = $ldap->fetch(); $attrs = array(); - $attrs['FAIstate'] = ""; - if(isset($this->mapActions[$_POST['saction']])){ + $attrs['FAIstate'] = $this->FAIstate; + if(isset($this->mapActions[$_POST['saction']]) && $this->mapActions[$_POST['saction']] != ""){ $attrs['FAIstate'] = $this->mapActions[$_POST ['saction']]; } @@ -323,6 +341,7 @@ class workgeneric extends plugin /* tell smarty the inherit checkbox state */ $smarty->assign("inheritTimeServer",$this->inheritTimeServer); + $smarty->assign("member_of_ogroup",$this->member_of_ogroup); /* Show main page */ $smarty->assign("netconfig", $this->netConfigDNS->execute()); @@ -336,11 +355,11 @@ class workgeneric extends plugin $this->netConfigDNS->remove_from_parent(); $ldap= $this->config->get_ldap_link(); $ldap->rmdir($this->dn); - @log::log("remove","workstation/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + new log("remove","workstation/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); show_ldap_error($ldap->get_error(), sprintf(_("Removing of system workstation/generic with dn '%s' failed."),$this->dn)); /* Optionally execute a command after we're done */ - $this->handle_post_events("remove", array("macAddress" => $this->netConfigDNS->macAddress,"ipHostNumber" => $this->netConfigDNS-ipHostNumber)); + $this->handle_post_events("remove", array("macAddress" => $this->netConfigDNS->macAddress,"ipHostNumber" => $this->netConfigDNS->ipHostNumber)); /* Delete references to object groups */ $ldap->cd ($this->config->current['BASE']); @@ -351,6 +370,10 @@ class workgeneric extends plugin $og->save (); } } + + if(isset($_POST["inheritAll"])){ + $this->set_everything_to_inherited(); + } } @@ -377,13 +400,16 @@ class workgeneric extends plugin /* Set inherit mode */ if((isset($_POST['workgeneric_posted'])) && ($this->acl_is_writeable("gotoNtpServer"))){ - if(isset($_POST["inheritTimeServer"])){ + if(isset($_POST["inheritTimeServer"]) && $this->member_of_ogroup){ $this->inheritTimeServer = true; }else{ $this->inheritTimeServer = false; } } - + + if(isset($_POST["inheritAll"])){ + $this->set_everything_to_inherited(); + } } @@ -496,7 +522,7 @@ class workgeneric extends plugin $ldap->create_missing_trees(preg_replace('/^[^,]+,/', '', $this->dn)); $ldap->cd($this->dn); $ldap->add($this->attrs); - @log::log("create","workstation/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + new log("create","workstation/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); show_ldap_error($ldap->get_error(), sprintf(_("Saving of system workstation/generic with dn '%s' failed."),$this->dn)); if(!$this->didAction){ $this->handle_post_events("add",array("macAddress" => $this->netConfigDNS->macAddress,"ipHostNumber" => $this->netConfigDNS->ipHostNumber)); @@ -508,7 +534,7 @@ class workgeneric extends plugin $ldap->cd($this->dn); $this->cleanup(); $ldap->modify ($this->attrs); - @log::log("modify","workstation/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + new log("modify","workstation/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); if(!$this->didAction){ $this->handle_post_events("modify",array("macAddress" => $this->netConfigDNS->macAddress,"ipHostNumber" => $this->netConfigDNS->ipHostNumber)); @@ -526,6 +552,57 @@ class workgeneric extends plugin } + /* Display generic part for server copy & paste */ + function getCopyDialog() + { + $vars = array("cn"); + $smarty = get_smarty(); + $smarty->assign("cn" ,$this->cn); + $smarty->assign("object","workstation"); + $str = $smarty->fetch(get_template_path("paste_generic.tpl",TRUE)); + $ret = array(); + $ret['string'] = $str; + $ret['status'] = ""; + return($ret); + } + + + function saveCopyDialog() + { + if(isset($_POST['cn'])){ + $this->cn = $_POST['cn']; + } + } + + + function PrepareForCopyPaste($source) + { + plugin::PrepareForCopyPaste($source); + if(isset($source['macAddress'][0])){ + $this->netConfigDNS->macAddress = $source['macAddress'][0]; + } + if(isset($source['ipHostNumber'][0])){ + $this->netConfigDNS->ipHostNumber = $source['ipHostNumber'][0]; + } + + /* Create used ntp server array */ + $this->gotoNtpServer= array(); + if(isset($source['gotoNtpServer'])){ + $this->inheritTimeServer = false; + unset($source['gotoNtpServer']['count']); + foreach($source['gotoNtpServer'] as $server){ + $this->gotoNtpServer[$server] = $server; + } + } + + /* Set inherit checkbox state */ + if((in_array("default",$this->gotoNtpServer)) || (count($this->gotoNtpServer)==0)){ + $this->inheritTimeServer = true; + $this->gotoNtpServer=array(); + } + } + + /* Return plugin informations for acl handling #FIXME FAIscript seams to ununsed within this class... */ function plInfo() @@ -551,7 +628,26 @@ class workgeneric extends plugin )); } -} + function set_everything_to_inherited() + { + $this->gotoSyslogServer = "default"; + $this->inheritTimeServer = TRUE; + + /* Set workstation service attributes to inherited */ + if($this->member_of_ogroup && isset($this->parent->by_object['workservice'])){ + foreach(array("gotoXKbLayout","gotoXKbModel","gotoXKbVariant", + "gotoXResolution","gotoXColordepth","gotoXMouseType","gotoXMouseport") as $name){ + $this->parent->by_object['workservice']->$name = "default"; + } + } -// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: + /* Set workstation startup attributes to inherited */ + if($this->member_of_ogroup && isset($this->parent->by_object['workstartup'])){ + $this->parent->by_object['workstartup']->gotoBootKernel = "default-inherited"; + $this->parent->by_object['workstartup']->gotoLdapServer = "default-inherited"; + $this->parent->by_object['workstartup']->FAIdebianMirror= "inherited"; + } + } +} + // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?>