[TASK] Exclude StringClassNameToClassConstantRector in rector.yml
[Packages/TYPO3.CMS.git] / typo3 / sysext / extbase / Classes / Validation / Validator / DisjunctionValidator.php
1 <?php
2 namespace TYPO3\CMS\Extbase\Validation\Validator;
3
4 /*
5 * This file is part of the TYPO3 CMS project.
6 *
7 * It is free software; you can redistribute it and/or modify it under
8 * the terms of the GNU General Public License, either version 2
9 * of the License, or any later version.
10 *
11 * For the full copyright and license information, please read the
12 * LICENSE.txt file that was distributed with this source code.
13 *
14 * The TYPO3 project - inspiring people to share!
15 */
16
17 /**
18 * Validator to chain many validators in a disjunction (logical or).
19 */
20 class DisjunctionValidator extends AbstractCompositeValidator
21 {
22 /**
23 * Checks if the given value is valid according to the validators of the
24 * disjunction.
25 *
26 * So only one validator has to be valid, to make the whole disjunction valid.
27 * Errors are only returned if all validators failed.
28 *
29 * @param mixed $value The value that should be validated
30 * @return \TYPO3\CMS\Extbase\Error\Result
31 */
32 public function validate($value)
33 {
34 $validators = $this->getValidators();
35 if ($validators->count() > 0) {
36 $result = null;
37 foreach ($validators as $validator) {
38 $validatorResult = $validator->validate($value);
39 if ($validatorResult->hasErrors()) {
40 if ($result === null) {
41 $result = $validatorResult;
42 } else {
43 $result->merge($validatorResult);
44 }
45 } else {
46 if ($result === null) {
47 $result = $validatorResult;
48 } else {
49 $result->clear();
50 }
51 break;
52 }
53 }
54 } else {
55 $result = new \TYPO3\CMS\Extbase\Error\Result();
56 }
57
58 return $result;
59 }
60 }