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['ddns-update-style']= 'none';
}
$this->advanced->setAutoStatements(array("default-lease-time", "max-lease-time", "authoritative", "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", "");
}
/* Show main page */
$display= $smarty->fetch(get_template_path('dhcp_service.tpl', TRUE)).$this->network->execute();
/* Merge arrays for advanced view */
$this->fix_options();
foreach (array("options", "statements") as $type){
$this->advanced->$type= $this->$type + $this->network->$type;;
}
$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(get_post($val));
} else {
unset ($this->statements[$tval]);
}
}
if (isset($_POST['authoritative'])){
$this->statements['authoritative']= "";
} else {
unset($this->statements['authoritative']);
}
dhcpPlugin::save_object();
}
/* Check values */
function check()
{
$message= array();
if (!is_id($this->statements['default-lease-time'])){
$message[]= _('Default lease time needs to be numeric.');
}
if (!is_id($this->statements['max-lease-time'])){
$message[]= _('Maximum lease time needs to be numeric.');
}
if ($this->statements['default-lease-time'] > $this->statements['max-lease-time']){
$message[]= _('Default lease time needs to smaller than the maximum lease time.');
}
/* Check external plugins */
$net= $this->network->check();
$adv= $this->advanced->check();
$message= array_merge($message, $net, $adv);
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->removeOption('server-name');
$this->attrs['dhcpOption'][]= "server-name $server_name";
return ($this->attrs);
}
}
// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
?>