initTime = microtime(TRUE); $this->parent = $parent; $this->options = new dhcpOption(); $this->statements = new dhcpOption(); /* Load statements / options */ if (is_array($attrs)){ $this->dn= $attrs['dn']; $this->cn= $attrs['cn'][0]; $this->new= FALSE; /* Load options */ if (isset($attrs['dhcpOption'])){ foreach($attrs['dhcpOption'] as $opt){ $this->options->add(trim($opt)); } } /* Load statements */ if (isset($attrs['dhcpStatements'])){ foreach($attrs['dhcpStatements'] as $opt){ $this->statements->add(trim($opt)); } } } else { /* We keep the parent dn here if it's new */ $this->dn= $attrs; $this->new= TRUE; } /* Load network module */ $this->network= new dhcpNetwork(); $this->network->options= &$this->options; $this->network->statements= &$this->statements; $this->advanced= new dhcpAdvanced(); $this->advanced->options= &$this->options; $this->advanced->statements= &$this->statements; $this->network->parent = $parent; $this->advanced->parent = $parent; /* Save CN for later reference */ $this->orig_cn= $this->cn; // Create statistic table entry stats::log('plugin', $class = get_class($this), $category = array($this->acl_category), $action = 'open', $amount = 1, $duration = (microtime(TRUE) - $this->initTime)); } function execute() { plugin::execute(); return (""); } function remove_from_parent() { } /* Save data to object */ function save_object() { # // CHECK # foreach (array("filename", "next-server","get-lease-hostnames","use-host-decl-names") as $toberemoved){ # unset($this->statements[$toberemoved]); # } /* Save sub-objects */ $this->network->save_object(); $this->advanced->save_object(); } /* Check values */ function check() { $message= array(); return $message; } /* Save to LDAP */ function save() { /* Add cn if we're new */ if ($this->new){ $this->dn= "cn=".$this->cn.",".$this->dn; } else { $this->dn= "cn=".$this->cn.preg_replace('/^cn=[^,]+/', '', $this->dn); } /* Assemble new entry - options */ $this->attrs['dhcpOption']= $this->options->save(); /* Assemble new entry - statements */ $this->attrs['dhcpStatements']= $this->statements->save(); /* Move dn to the result */ $this->attrs['dn']= $this->dn; $this->attrs['cn']= array($this->cn); $this->attrs['objectClass']= $this->objectclasses; $this->attrs['MODIFIED']= TRUE; return ($this->attrs); } function removeAttrs($name, $type) { $new= array(); foreach ($this->attrs[$type] as $value){ if (!preg_match("/^$name /", $value)){ $new[]= $value; } } $this->attrs[$type]= $new; } function removeOption($name) { $this->removeAttrs($name, 'dhcpOption'); } function removeStatement($name) { $this->removeAttrs($name, 'dhcpStatement'); } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?>