Open Journal Systems  3.3.0
FormValidatorArrayCustom.inc.php
1 <?php
2 
16 import('lib.pkp.classes.form.validation.FormValidator');
17 
19 
21  var $_fields;
22 
25 
27  var $_isLocaleField;
28 
31 
34 
37 
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;
58  }
59 
60  //
61  // Setters and Getters
62  //
67  function getErrorFields() {
69  }
70 
75  function isLocaleField() {
76  return $this->_isLocaleField;
77  }
78 
79 
80  //
81  // Public methods
82  //
87  function isValid() {
88  if ($this->isEmptyAndOptional()) return true;
89 
90  $data = $this->getFieldValue();
91  if (!is_array($data)) return false;
92 
93  $isValid = true;
94  foreach ($data as $key => $value) {
95  // Bypass check for empty sub-fields if validation type is "optional"
96  if ($this->getType() == FORM_VALIDATOR_OPTIONAL_VALUE && ($value == array() || $value == '')) continue;
97 
98  if (count($this->_fields) == 0) {
99  if ($this->isLocaleField()) {
100  $ret = call_user_func_array($this->_userFunction, array_merge(array($value, $key), $this->_additionalArguments));
101  } else {
102  $ret = call_user_func_array($this->_userFunction, array_merge(array($value), $this->_additionalArguments));
103  }
104  $ret = $this->_complementReturn ? !$ret : $ret;
105  if (!$ret) {
106  $isValid = false;
107  if ($this->isLocaleField()) {
108  $this->_errorFields[$key] = $this->getField()."[{$key}]";
109  } else {
110  array_push($this->_errorFields, $this->getField()."[{$key}]");
111  }
112  }
113  } else {
114  // In the two-dimensional case we always expect a value array.
115  if (!is_array($value)) {
116  $isValid = false;
117  if ($this->isLocaleField()) {
118  $this->_errorFields[$key] = $this->getField()."[{$key}]";
119  } else {
120  array_push($this->_errorFields, $this->getField()."[{$key}]");
121  }
122  continue;
123  }
124 
125  foreach ($this->_fields as $field) {
126  // Bypass check for empty sub-sub-fields if validation type is "optional"
127  if ($this->getType() == FORM_VALIDATOR_OPTIONAL_VALUE) {
128  if (!isset($value[$field]) || $value[$field] == array() or $value[$field] == '') continue;
129  } else {
130  // Make sure that we pass in 'null' to the user function
131  // if the expected field doesn't exist in the value array.
132  if (!array_key_exists($field, $value)) $value[$field] = null;
133  }
134 
135  if ($this->isLocaleField()) {
136  $ret = call_user_func_array($this->_userFunction, array_merge(array($value[$field], $key), $this->_additionalArguments));
137  } else {
138  $ret = call_user_func_array($this->_userFunction, array_merge(array($value[$field]), $this->_additionalArguments));
139  }
140  $ret = $this->_complementReturn ? !$ret : $ret;
141  if (!$ret) {
142  $isValid = false;
143  if ($this->isLocaleField()) {
144  if (!isset($this->_errorFields[$key])) $this->_errorFields[$key] = array();
145  array_push($this->_errorFields[$key], $this->getField()."[{$key}][{$field}]");
146  } else {
147  array_push($this->_errorFields, $this->getField()."[{$key}][{$field}]");
148  }
149  }
150  }
151  }
152  }
153  return $isValid;
154  }
155 
160  function isArray() {
161  return is_array($this->getFieldValue());
162  }
163 }
164 
165 
FormValidatorArrayCustom\$_fields
$_fields
Definition: FormValidatorArrayCustom.inc.php:24
FormValidatorArrayCustom\isLocaleField
isLocaleField()
Definition: FormValidatorArrayCustom.inc.php:93
FormValidator\getField
getField()
Definition: FormValidator.inc.php:84
FormValidatorArrayCustom\$_isLocaleField
$_isLocaleField
Definition: FormValidatorArrayCustom.inc.php:36
FormValidatorArrayCustom\$_additionalArguments
$_additionalArguments
Definition: FormValidatorArrayCustom.inc.php:48
FormValidatorArrayCustom\$_userFunction
$_userFunction
Definition: FormValidatorArrayCustom.inc.php:42
FormValidatorArrayCustom\getErrorFields
getErrorFields()
Definition: FormValidatorArrayCustom.inc.php:85
FormValidatorArrayCustom\isArray
isArray()
Definition: FormValidatorArrayCustom.inc.php:178
FormValidator\getType
getType()
Definition: FormValidator.inc.php:116
FormValidatorArrayCustom\__construct
__construct(&$form, $field, $type, $message, $userFunction, $additionalArguments=array(), $complementReturn=false, $fields=array(), $isLocaleField=false)
Definition: FormValidatorArrayCustom.inc.php:68
FormValidatorArrayCustom
Form validation check with a custom user function performing the validation check of an array of fiel...
Definition: FormValidatorArrayCustom.inc.php:18
FormValidator
Class to represent a form validation check.
Definition: FormValidator.inc.php:23
FormValidatorArrayCustom\$_errorFields
$_errorFields
Definition: FormValidatorArrayCustom.inc.php:30
FormValidatorArrayCustom\isValid
isValid()
Definition: FormValidatorArrayCustom.inc.php:105
FormValidatorArrayCustom\$_complementReturn
$_complementReturn
Definition: FormValidatorArrayCustom.inc.php:54
FormValidator\isEmptyAndOptional
isEmptyAndOptional()
Definition: FormValidator.inc.php:165
FormValidator\getFieldValue
getFieldValue()
Definition: FormValidator.inc.php:154