PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.28.0
GiveWP – Donation Plugin and Fundraising Platform v2.28.0
4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / Form / LegacyConsumer / Actions / DetermineVisibilityForRequest.php
give / src / Form / LegacyConsumer / Actions Last commit date
DetermineVisibilityForRequest.php 3 years ago UploadFilesAction.php 4 years ago
DetermineVisibilityForRequest.php
83 lines
1 <?php
2
3 namespace Give\Form\LegacyConsumer\Actions;
4
5 use Give\Framework\FieldsAPI\Field;
6 use Give\Vendors\StellarWP\FieldConditions\Contracts\Condition;
7 use Give\Vendors\StellarWP\FieldConditions\FieldCondition;
8
9 /**
10 * @since 2.27.3 change postData to an array
11 * @since 2.21.0
12 */
13 class DetermineVisibilityForRequest
14 {
15 /** @var bool */
16 const IS_VISIBLE = true;
17
18 /** @var Field */
19 private $field;
20
21 /** @var array */
22 protected $postData;
23
24 /**
25 * @since 2.27.3 add parameter and return types
26 * @since 2.21.0
27 */
28 public function __construct(Field $field, array $postData)
29 {
30 $this->field = $field;
31 $this->postData = $postData;
32 }
33
34 /**
35 * @since 2.21.0
36 */
37 public function __invoke(): bool
38 {
39 if (!$this->fieldHasVisibilityConditions()) {
40 return self::IS_VISIBLE;
41 }
42
43 $conditions = $this->field->getVisibilityConditions();
44 return array_reduce($conditions, [$this, 'reduceVisibility'], self::IS_VISIBLE);
45 }
46
47 /**
48 * @since 2.21.0
49 * @return bool
50 */
51 protected function fieldHasVisibilityConditions(): bool
52 {
53 return method_exists($this->field, 'hasVisibilityConditions')
54 && $this->field->hasVisibilityConditions();
55 }
56
57 /**
58 * @since 2.27.3 update to use FieldConditions
59 * @since 2.21.0
60 */
61 protected function reduceVisibility(bool $visibility, Condition $condition): bool
62 {
63 $result = $this->compareConditionWithOperator($condition);
64
65 return 'and' === $condition->getLogicalOperator()
66 ? $visibility && $result
67 : $visibility || $result;
68 }
69
70 /**
71 * @since 2.27.3 update to use FieldConditions
72 * @since 2.21.0
73 */
74 protected function compareConditionWithOperator(Condition $condition): bool
75 {
76 if (is_a($condition, FieldCondition::class)) {
77 return $condition->passes($this->postData);
78 }
79
80 return self::IS_VISIBLE;
81 }
82 }
83