new){ /* Load attributes */ $this->dhcpPrimaryDN= $attrs['dhcpPrimaryDN'][0]; } else { /* We keep the parent dn here if it's new */ $this->statements['default-lease-time']= 600; $this->statements['max-lease-time']= 1700; $this->statements['authoritative']= TRUE; $this->statements['get-lease-hostnames']= 'on'; $this->statements['ddns-update-style']= 'none'; } $this->advanced->setAutoStatements(array("default-lease-time", "max-lease-time", "authoritative", "get-lease-hostnames", "server-identifier", "ddns-update-style")); $this->advanced->setAutoOptions(array("server-name")); /* Save for later action */ $this->orig_dhcpPrimaryDN= $this->dhcpPrimaryDN; } function execute() { /* Show main page */ $smarty= get_smarty(); $smarty->assign('ddns_styles', $this->ddns_styles); foreach (array('max_lease_time', 'default_lease_time', 'ddns_update_style') as $value){ if (isset($this->statements[preg_replace('/_/', '-', $value)])){ $smarty->assign("$value", $this->statements[preg_replace('/_/', '-', $value)]); } else { $smarty->assign("$value", ""); } } if (isset($this->statements['authoritative'])){ $smarty->assign("authoritative", "checked"); } else { $smarty->assign("authoritative", ""); } if (isset($this->statements['get-lease-hostnames']) && preg_match('/on/i', $this->statements['get-lease-hostnames'])){ $smarty->assign("get_lease_hostnames", "checked"); } else { $smarty->assign("get_lease_hostnames", ""); } /* Show main page */ $display= $smarty->fetch(get_template_path('dhcp_service.tpl', TRUE)).$this->network->execute(); /* Merge arrays for advanced view */ foreach (array("options", "statements") as $type){ $tmp= array_merge($this->$type, $this->network->$type); $this->advanced->$type= $tmp; } $display.= $this->advanced->execute(); /* Merge back for removals */ foreach (array("options", "statements") as $type){ $this->$type= $this->advanced->$type; $this->network->$type= $this->advanced->$type; } /* Add footer */ $display.= "
". " 
"; return ($display); } function remove_from_parent() { } /* Save data to object */ function save_object() { /* No need to save in the first time */ if (!isset($_POST['ddns_update_style'])){ return; } /* Save remaining attributes */ foreach (array('max_lease_time', 'default_lease_time', 'ddns_update_style') as $val){ $tval= preg_replace('/_/', '-', $val); if ($_POST[$val] != ""){ $this->statements[$tval]= validate($_POST[$val]); } else { unset ($this->statements[$tval]); } } if (isset($_POST['authoritative'])){ $this->statements['authoritative']= ""; } else { unset($this->statements['authoritative']); } if (isset($_POST['get_lease_hostnames'])){ $this->statements['get-lease-hostnames']= "on"; } else { $this->statements['get-lease-hostnames']= "off"; } dhcpPlugin::save_object(); } /* Check values */ function check() { $message= array(); return $message; } /* Save to LDAP */ function save() { global $config; $this->attrs= array(); /* Get and set server name */ $ldap= $config->get_ldap_link(); $ldap->cat($this->dhcpPrimaryDN, array('cn')); $res= $ldap->fetch(); $server_name= $res['cn'][0]; dhcpPlugin::save(); $this->attrs['dhcpPrimaryDN']= array($this->dhcpPrimaryDN); $this->attrs['dhcpOption'][]= "server-name $server_name"; return ($this->attrs); } } ?>