X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-core%2Finclude%2Fclass_configRegistry.inc;h=d97aa66ae8aa2676e76ef3fa22ea049444d72760;hb=5c2d01aab3c13cca9f03b4983a3a00b4ea47ae51;hp=22e3e16c2264a9a80c937a316c7373f88b925f1b;hpb=0998bc227b3037c4f3f79ef60aa34e3811b853a3;p=gosa.git diff --git a/gosa-core/include/class_configRegistry.inc b/gosa-core/include/class_configRegistry.inc index 22e3e16c2..d97aa66ae 100644 --- a/gosa-core/include/class_configRegistry.inc +++ b/gosa-core/include/class_configRegistry.inc @@ -12,7 +12,6 @@ class configRegistry{ function __construct($config) { - restore_error_handler(); $this->config = &$config; $this->reload(); } @@ -89,13 +88,13 @@ class configRegistry{ // Register Post Events (postmodfiy,postcreate,postremove,checkhook) if(isset($def['plShortName'])){ $this->classToName[$cname] = $def['plShortName']; - $data = array('name' => 'postcreate','type' => 'string'); + $data = array('name' => 'postcreate','type' => 'command'); $this->register($cname, $data); - $data = array('name' => 'postremove','type' => 'string'); + $data = array('name' => 'postremove','type' => 'command'); $this->register($cname, $data); - $data = array('name' => 'postmodify','type' => 'string'); + $data = array('name' => 'postmodify','type' => 'command'); $this->register($cname, $data); - $data = array('name' => 'checkhook', 'type' => 'string'); + $data = array('name' => 'check', 'type' => 'command'); $this->register($cname, $data); } @@ -218,6 +217,26 @@ class gosaProperty $this->_restoreCurrentValue(); } + function check() + { + $val = $this->getValue(TRUE); + $return = TRUE; + if($this->mandatory && empty($val)){ + msg_dialog::display(_("Error"), msgPool::required(_($this->name)), ERROR_DIALOG); + $return = FALSE; + } + + $check = $this->getCheck(); + if(!empty($val) && !empty($check)){ + $res = call_user_func(preg_split("/::/", $this->check),$messages=TRUE, $this->class,$this->name,$val, $this->type); + if(!$res){ + msg_dialog::display(_("Error"), msgPool::invalid(_($this->name)), ERROR_DIALOG); + $return = FALSE; + } + } + return($return); + } + static function isBool($message,$class,$name,$value, $type) { return(in_array($value,array('true','false',''))); @@ -245,12 +264,12 @@ class gosaProperty static function isDn($message,$class,$name,$value, $type) { - return(TRUE); + return(preg_match("/^([a-z]*=[^=,]*,)*[^=]*=[^=]*$/i", $value)); } static function isRdn($message,$class,$name,$value, $type) { - return(TRUE); + return(preg_match("/^([a-z]*=[^=,]*,)*[^=]*=[^=]*$/i", $value)); } private function _restoreCurrentValue() @@ -290,7 +309,9 @@ class gosaProperty function setValue($str) { - if($this->value != $str){ + if(in_array($this->getStatus(), array('modified'))){ + $this->tmp_value = $str; + }elseif($this->value != $str){ $this->setStatus('modified'); $this->tmp_value = $str; }