advanced->setAutoStatements(array("server-identifier", "default-lease-time", "max-lease-time", "min-lease-time", "authoritative", "deny unknown-clients", "deny bootp", "deny booting", "allow unknown-clients", "allow bootp", "allow booting")); } function execute() { $smarty= get_smarty(); /* Assign ACLs */ $smarty->assign("acl",$this->parent->getacl("")); /* Fill template */ $smarty->assign ("cn", set_post($this->cn)); foreach (array("server-identifier", "default-lease-time", "max-lease-time", "min-lease-time") as $attr){ $name = preg_replace('/-/', '_', $attr); $smarty->assign($name, set_post($this->statements->get($attr))); } if ($this->statements->exists("authoritative")){ $smarty->assign("authoritative", "checked"); } else { $smarty->assign("authoritative", ""); } $allow = $this->statements->get("allow"); if(!is_array($allow)) $allow=array($allow); foreach(array( "unknown-clients" => "allow_unknown_state", "bootp" => "allow_bootp_state", "booting" => "allow_booting_state") as $state => $target){ if(in_array_strict($state,$allow)){ $smarty->assign($target,"checked"); }else{ $smarty->assign($target,""); } } /* Show main page */ $display= $smarty->fetch(get_template_path('dhcp_sharedNetwork.tpl', TRUE,dirname(__FILE__))).$this->network->execute(); /* Remove states configured by checkboxes. */ foreach(array("deny unknown-clients", "deny bootp", "deny booting", "allow unknown-clients", "allow bootp", "allow booting") as $name){ if($this->statements->exists($name)){ $this->statements->remove($name); } } $display.= $this->advanced->execute(); /* Add footer */ $display.= "
"; if(preg_match("/w/",$this->parent->getacl(""))){ $display.= " "; } $display.= ""; $display.= "
"; return ($display); } function remove_from_parent() { } /* Save data to object */ function save_object() { /* Check permissions, don't touch anything if we do not have write permissions */ if (!preg_match("/w/",$this->parent->getacl(""))){ dhcpPlugin::save_object(); }elseif(isset($_POST['cn'])){ $this->cn= get_post('cn'); dhcpPlugin::save_object(); foreach (array("server-identifier", "default-lease-time", "max-lease-time", "min-lease-time") as $attr){ if (isset($_POST[$attr]) && $_POST[$attr] != ""){ $this->statements->set($attr,get_post($attr)); } else { $this->statements->removeAll($attr); } } if (isset($_POST["authoritative"])){ $this->statements->set("authoritative", ""); } else { $this->statements->removeAll("authoritative"); } $this->statements->removeAll("deny"); $this->statements->removeAll("allow"); foreach(array("unknown-clients", "bootp", "booting") as $name){ if (isset($_POST[$name])){ $this->statements->add("allow",$name); } else { $this->statements->add("deny",$name); } } } } /* Check values */ function check() { $message= array(); $cache = $this->parent->dhcpObjectCache; /* All required fields are set? */ if ($this->cn == ""){ $message[]= msgPool::required(_("Name")); } /* Check lease times */ foreach (array("default-lease-time" => _("Default lease time"), "max-lease-time" => _("Max. lease time"), "min-lease-time" => _("Min. lease time")) as $key => $val){ if ($this->statements->exists($key) && $this->statements->get($key) != "" && !tests::is_id($this->statements->get($key))){ $message[]= msgPool::invalid($val,$this->statements->get($key),"/[0-9]/"); } } /* cn already used? */ if ($this->orig_cn != $this->cn || $this->new){ foreach($cache as $dn => $dummy){ if (preg_match("/^cn=".$this->cn.",/", $dn) && count($dummy)){ $message[]= msgPool::duplicated(_("Name")); break; } } } /* Check external plugins */ $net= $this->network->check(); $adv= $this->advanced->check(); $message= array_merge($message, $net, $adv); return $message; } /* Save to LDAP */ function save() { dhcpPlugin::save(); return ($this->attrs); } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?>