Fix setting values by checking is_callable. Remove debug. Fix filter_regexp
parent
7511b1fd7e
commit
522dfecebe
|
@ -165,37 +165,37 @@ class ZM_Object {
|
|||
}
|
||||
|
||||
public function set($data) {
|
||||
foreach ( $data as $k => $v ) {
|
||||
if ( method_exists($this, $k) ) {
|
||||
$this->{$k}($v);
|
||||
foreach ( $data as $field => $value ) {
|
||||
if ( method_exists($this, $field) and is_callable($this, $field) ) {
|
||||
$this->{$field}($value);
|
||||
} else {
|
||||
if ( is_array($v) ) {
|
||||
if ( is_array($value) ) {
|
||||
# perhaps should turn into a comma-separated string
|
||||
$this->{$k} = implode(',', $v);
|
||||
} else if ( is_string($v) ) {
|
||||
if ( array_key_exists($k, $this->defaults) && is_array($this->defaults[$k]) && isset($this->defaults[$k]['filter_regexp']) ) {
|
||||
if ( is_array($this->defaults[$k]['filter_regexp']) ) {
|
||||
foreach ( $this->defaults[$k]['filter_regexp'] as $regexp ) {
|
||||
$this->{$k} = preg_replace($regexp, '', $trim($v));
|
||||
$this->{$field} = implode(',', $value);
|
||||
} else if ( is_string($value) ) {
|
||||
if ( array_key_exists($field, $this->defaults) && is_array($this->defaults[$field]) && isset($this->defaults[$field]['filter_regexp']) ) {
|
||||
if ( is_array($this->defaults[$feild]['filter_regexp']) ) {
|
||||
foreach ( $this->defaults[$field]['filter_regexp'] as $regexp ) {
|
||||
$this->{$field} = preg_replace($regexp, '', $trim($value));
|
||||
}
|
||||
} else {
|
||||
$this->{$k} = preg_replace($this->defaults[$k]['filter_regexp'], '', trim($v));
|
||||
$this->{$field} = preg_replace($this->defaults[$field]['filter_regexp'], '', trim($value));
|
||||
}
|
||||
} else {
|
||||
$this->{$k} = trim($v);
|
||||
$this->{$field} = trim($value);
|
||||
}
|
||||
} else if ( is_integer($v) ) {
|
||||
$this->{$k} = $v;
|
||||
} else if ( is_bool($v) ) {
|
||||
$this->{$k} = $v;
|
||||
} else if ( is_null($v) ) {
|
||||
$this->{$k} = $v;
|
||||
} else if ( is_integer($value) ) {
|
||||
$this->{$field} = $value;
|
||||
} else if ( is_bool($value) ) {
|
||||
$this->{$field} = $value;
|
||||
} else if ( is_null($value) ) {
|
||||
$this->{$field} = $value;
|
||||
} else {
|
||||
Error("Unknown type $k => $v of var " . gettype($v));
|
||||
$this->{$k} = $v;
|
||||
Error("Unknown type $field => $value of var " . gettype($value));
|
||||
$this->{$field} = $value;
|
||||
}
|
||||
} # end if method_exists
|
||||
} # end foreach $data as $k=>$v
|
||||
} # end foreach $data as $field=>$value
|
||||
} # end function set($data)
|
||||
|
||||
/* types is an array of fields telling use that the input might be a checkbox so not present in the input, but therefore has a value
|
||||
|
@ -223,11 +223,20 @@ class ZM_Object {
|
|||
foreach ( $new_values as $field => $value ) {
|
||||
|
||||
if ( method_exists($this, $field) ) {
|
||||
|
||||
if ( array_key_exists($field, $this->defaults) && is_array($this->defaults[$field]) && isset($this->defaults[$field]['filter_regexp']) ) {
|
||||
if ( is_array($this->defaults[$field]['filter_regexp']) ) {
|
||||
foreach ( $this->defaults[$field]['filter_regexp'] as $regexp ) {
|
||||
$value = preg_replace($regexp, '', trim($value));
|
||||
}
|
||||
} else {
|
||||
$value = preg_replace($this->defaults[$field]['filter_regexp'], '', trim($value));
|
||||
}
|
||||
}
|
||||
|
||||
$old_value = $this->$field();
|
||||
Logger::Debug("Checking method $field () ".print_r($old_value,true).' => ' . print_r($value,true));
|
||||
if ( is_array($old_value) ) {
|
||||
$diff = array_recursive_diff($old_value, $value);
|
||||
Logger::Debug("Checking method $field () diff isi ".print_r($diff,true));
|
||||
if ( count($diff) ) {
|
||||
$changes[$field] = $value;
|
||||
}
|
||||
|
@ -236,7 +245,6 @@ class ZM_Object {
|
|||
}
|
||||
} else if ( property_exists($this, $field) ) {
|
||||
$type = (array_key_exists($field, $this->defaults) && is_array($this->defaults[$field])) ? $this->defaults[$field]['type'] : 'scalar';
|
||||
Logger::Debug("Checking field $field => current ".
|
||||
(is_array($this->{$field}) ? implode(',',$this->{$field}) : $this->{$field}) . ' ?= ' .
|
||||
(is_array($value) ? implode(',', $value) : $value)
|
||||
);
|
||||
|
@ -245,7 +253,6 @@ class ZM_Object {
|
|||
$new_value = is_array($value) ? $value : explode(',', $value);
|
||||
|
||||
$diff = array_recursive_diff($old_value, $new_value);
|
||||
Logger::Debug("Checking value $field () diff isi ".print_r($diff,true));
|
||||
if ( count($diff) ) {
|
||||
$changes[$field] = $new_value;
|
||||
}
|
||||
|
@ -256,7 +263,7 @@ class ZM_Object {
|
|||
if ( array_key_exists($field, $this->defaults) && is_array($this->defaults[$field]) && isset($this->defaults[$field]['filter_regexp']) ) {
|
||||
if ( is_array($this->defaults[$field]['filter_regexp']) ) {
|
||||
foreach ( $this->defaults[$field]['filter_regexp'] as $regexp ) {
|
||||
$this->{$field} = preg_replace($regexp, '', trim($value));
|
||||
$value = preg_replace($regexp, '', trim($value));
|
||||
}
|
||||
} else {
|
||||
$value = preg_replace($this->defaults[$field]['filter_regexp'], '', trim($value));
|
||||
|
@ -273,7 +280,6 @@ class ZM_Object {
|
|||
$default = $this->defaults[$field];
|
||||
}
|
||||
|
||||
Logger::Debug("Checking default $field => ".
|
||||
( is_array($default) ? implode(',',$default) : $default).
|
||||
' ' .
|
||||
( is_array($value) ? implode(',', $value) : $value)
|
||||
|
@ -293,7 +299,6 @@ class ZM_Object {
|
|||
$table = $class::$table;
|
||||
|
||||
if ( $new_values ) {
|
||||
//Logger::Debug("New values" . print_r($new_values, true));
|
||||
$this->set($new_values);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue