PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / trunk
GiveWP – Donation Plugin and Fundraising Platform vtrunk
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 / FormBuilder / BlockModels / DonationAmountBlockModel.php
give / src / FormBuilder / BlockModels Last commit date
DonationAmountBlockModel.php 2 years ago
DonationAmountBlockModel.php
228 lines
1 <?php
2
3 namespace Give\FormBuilder\BlockModels;
4
5 use Give\Framework\Blocks\BlockModel;
6 use Give\Subscriptions\ValueObjects\SubscriptionPeriod;
7
8 /**
9 * This is a decorator for the Block Model block "givewp/donation-amount".
10 *
11 * @since 3.0.0
12 */
13 class DonationAmountBlockModel
14 {
15 /**
16 * @var BlockModel
17 */
18 public $block;
19
20 /**
21 * @since 3.0.0
22 */
23 public function __construct(BlockModel $block)
24 {
25 $this->block = $block;
26 }
27
28 /**
29 * @since 3.0.0
30 */
31 public function getAttribute($name)
32 {
33 return $this->block->getAttribute($name);
34 }
35
36 /**
37 * @since 3.0.0
38 */
39 public function hasAttribute($name): bool
40 {
41 return $this->block->hasAttribute($name);
42 }
43
44 /**
45 * @since 3.0.0
46 */
47 public function setAttribute(string $name, $value): self
48 {
49 $this->block->setAttribute($name, $value);
50
51 return $this;
52 }
53
54 /**
55 * @since 3.0.0
56 */
57 public function getLabel(): string
58 {
59 return $this->block->getAttribute('label');
60 }
61
62 /**
63 * @since 3.12.0 Changed the return type to an array of OptionsProps
64 * @since 3.0.0
65 *
66 * @return array ['label' => string, 'value' => string, 'checked' => bool][]
67 */
68 public function getLevels(): array
69 {
70 return array_map(static function ($level) {
71 return [
72 'label' => htmlspecialchars($level['label'] ?? ''),
73 'value' => (float)filter_var(
74 $level['value'] ?? '',
75 FILTER_SANITIZE_NUMBER_FLOAT,
76 FILTER_FLAG_ALLOW_FRACTION
77 ),
78 'checked' => (bool)filter_var($level['checked'] ?? false, FILTER_VALIDATE_BOOLEAN),
79 ];
80 }, $this->block->getAttribute('levels'));
81 }
82
83 /**
84 * @since 3.12.0
85 */
86 public function isDescriptionEnabled(): bool
87 {
88 return $this->block->getAttribute('descriptionsEnabled') === true;
89 }
90
91 /**
92 * @return bool
93 */
94 public function isRecurringFixed(): bool
95 {
96 return count($this->block->getAttribute('recurringBillingPeriodOptions')) === 1 && $this->block->getAttribute(
97 'recurringEnableOneTimeDonations'
98 ) === false;
99 }
100
101 /**
102 * @since 3.0.0
103 */
104 public function getRecurringBillingInterval(): int
105 {
106 return (int)$this->block->getAttribute('recurringBillingInterval');
107 }
108
109 /**
110 * @since 3.0.0
111 */
112 public function getRecurringLengthOfTime(): int
113 {
114 return (int)$this->block->getAttribute('recurringLengthOfTime');
115 }
116
117 /**
118 * @since 3.0.0
119 */
120 public function getRecurringOptInDefaultBillingPeriod(): string
121 {
122 return $this->block->getAttribute('recurringOptInDefaultBillingPeriod');
123 }
124
125 /**
126 * @since 3.0.0
127 */
128 public function getRecurringBillingPeriodOptions(): array
129 {
130 return $this->block->getAttribute('recurringBillingPeriodOptions');
131 }
132
133 /**
134 * @since 3.0.0
135 */
136 public function isRecurringEnableOneTimeDonations(): bool
137 {
138 return $this->block->getAttribute('recurringEnableOneTimeDonations') === true;
139 }
140
141 /**
142 * @since 3.0.0
143 */
144 public function isRecurringEnabled(): bool
145 {
146 return $this->block->getAttribute('recurringEnabled') === true;
147 }
148
149 /**
150 * @since 3.0.0
151 */
152 public function setRecurringEnabled(bool $enabled = true): self
153 {
154 return $this->setAttribute('recurringEnabled', $enabled);
155 }
156
157 /**
158 * @since 3.0.0
159 */
160 public function setRecurringEnableOneTimeDonations(bool $enabled = true): self
161 {
162 return $this->setAttribute('recurringEnableOneTimeDonations', $enabled);
163 }
164
165 /**
166 * @since 3.0.0
167 */
168 public function setRecurringBillingInterval(int $interval): self
169 {
170 return $this->setAttribute('recurringBillingInterval', $interval);
171 }
172
173 /**
174 * @since 3.0.0
175 */
176 public function setRecurringLengthOfTime(int $lengthOfTime): self
177 {
178 return $this->setAttribute('recurringLengthOfTime', $lengthOfTime);
179 }
180
181 /**
182 * @since 3.0.0
183 */
184 public function setRecurringBillingPeriodOptions(SubscriptionPeriod ...$options): self
185 {
186 return $this->setAttribute(
187 'recurringBillingPeriodOptions',
188 array_values(
189 array_map(static function (SubscriptionPeriod $option) {
190 return $option->getValue();
191 }, $options)
192 )
193 );
194 }
195
196 /**
197 * @since 3.0.0
198 */
199 public function setRecurringOptInDefaultBillingPeriod(SubscriptionPeriod $period): self
200 {
201 return $this->setAttribute('recurringOptInDefaultBillingPeriod', $period->getValue());
202 }
203
204 /**
205 * @since 3.0.0
206 */
207 public function isCustomAmountEnabled(): bool
208 {
209 return $this->block->getAttribute('customAmount') === true;
210 }
211
212 /**
213 * @since 3.0.0
214 */
215 public function getPriceOption(): string
216 {
217 return $this->block->getAttribute('priceOption');
218 }
219
220 /**
221 * @since 3.0.0
222 */
223 public function getSetPrice(): int
224 {
225 return $this->block->getAttribute('setPrice');
226 }
227 }
228