16 import(
'lib.pkp.classes.form.validation.FormValidator');
50 function __construct(&$form, $field, $type, $message, $userFunction, $additionalArguments = array(), $complementReturn =
false, $fields = array(), $isLocaleField =
false) {
51 parent::__construct($form, $field, $type, $message);
52 $this->_fields = $fields;
53 $this->_errorFields = array();
54 $this->_isLocaleField = $isLocaleField;
55 $this->_userFunction = $userFunction;
56 $this->_additionalArguments = $additionalArguments;
57 $this->_complementReturn = $complementReturn;
91 if (!is_array($data))
return false;
94 foreach ($data as $key => $value) {
96 if ($this->
getType() == FORM_VALIDATOR_OPTIONAL_VALUE && ($value == array() || $value ==
''))
continue;
98 if (count($this->_fields) == 0) {
100 $ret = call_user_func_array($this->_userFunction, array_merge(array($value, $key), $this->_additionalArguments));
102 $ret = call_user_func_array($this->_userFunction, array_merge(array($value), $this->_additionalArguments));
104 $ret = $this->_complementReturn ? !$ret : $ret;
108 $this->_errorFields[$key] = $this->
getField().
"[{$key}]";
110 array_push($this->_errorFields, $this->
getField().
"[{$key}]");
115 if (!is_array($value)) {
118 $this->_errorFields[$key] = $this->
getField().
"[{$key}]";
120 array_push($this->_errorFields, $this->
getField().
"[{$key}]");
125 foreach ($this->_fields as $field) {
127 if ($this->
getType() == FORM_VALIDATOR_OPTIONAL_VALUE) {
128 if (!isset($value[$field]) || $value[$field] == array() or $value[$field] ==
'')
continue;
132 if (!array_key_exists($field, $value)) $value[$field] =
null;
136 $ret = call_user_func_array($this->_userFunction, array_merge(array($value[$field], $key), $this->_additionalArguments));
138 $ret = call_user_func_array($this->_userFunction, array_merge(array($value[$field]), $this->_additionalArguments));
140 $ret = $this->_complementReturn ? !$ret : $ret;
144 if (!isset($this->_errorFields[$key])) $this->_errorFields[$key] = array();
145 array_push($this->_errorFields[$key], $this->
getField().
"[{$key}][{$field}]");
147 array_push($this->_errorFields, $this->
getField().
"[{$key}][{$field}]");