PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.22.3
GiveWP – Donation Plugin and Fundraising Platform v2.22.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 / Views / Form / Templates / Sequoia / Actions.php
give / src / Views / Form / Templates / Sequoia Last commit date
assets 3 years ago sections 4 years ago views 3 years ago Actions.php 4 years ago Sequoia.php 4 years ago optionConfig.php 4 years ago
Actions.php
370 lines
1 <?php
2
3 namespace Give\Views\Form\Templates\Sequoia;
4
5 use Give\Helpers\Form\Template as FormTemplateUtils;
6 use Give_Donate_Form;
7
8 /**
9 * Class Actions
10 *
11 * @package Give\Views\Form\Templates\Sequoia
12 * @since 2.7.0
13 */
14 class Actions
15 {
16
17 protected $templateOptions;
18
19 /**
20 * Initialize
21 *
22 * @since 2.7.0
23 */
24 public function init()
25 {
26 // Get Template options
27 $this->templateOptions = FormTemplateUtils::getOptions();
28
29 // Get decimal numbers option
30 $decimalNumbersOption = isset($this->templateOptions['visual_appearance']['decimals_enabled'])
31 ? $this->templateOptions['visual_appearance']['decimals_enabled']
32 : 'disabled';
33
34 // Set zero number of decimal.
35 if ('disabled' === $decimalNumbersOption) {
36 add_filter('give_get_currency_formatting_settings', [
37 $this,
38 'setupZeroNumberOfDecimalInCurrencyFormattingSetting',
39 ], 1);
40 add_filter('give_get_option_number_decimals', [$this, 'setupZeroNumberOfDecimal'], 1);
41 }
42
43 // Handle common hooks.
44 add_action('give_donation_form', [$this, 'loadCommonHooks'], 9, 2);
45
46 // Setup hooks.
47 add_action('give_pre_form_output', [$this, 'loadHooks'], 1, 3);
48
49 // Setup Stripe font Styles
50 add_filter('give_stripe_get_element_font_styles', [$this, 'setupStripeFontStyles'], 1);
51
52 // Setup Stripe base styles
53 add_filter('give_stripe_get_element_base_styles', [$this, 'setupStripeBaseStyles'], 1);
54 }
55
56 /** Set Stripe base styles consistent with Sequoia form template
57 *
58 * As per design requirement, we want to format Stripe elements to use Montserrat, with the same styling options as other text inputs.
59 *
60 * @since 2.7.0
61 *
62 * @param object $styles
63 *
64 * @return object
65 */
66 public function setupStripeBaseStyles($styles)
67 {
68 $styles = sprintf(
69 '{
70 "fontFamily": "%1$s",
71 "color": "#8d8e8e",
72 "fontWeight": 400,
73 "fontSize": "14px",
74 "::placeholder": {
75 "color": "#8d8e8e"
76 },
77 ":-webkit-autofill": {
78 "color": "#e39f48"
79 }
80 }',
81 $this->isGoogleFontEnabled() ? 'Montserrat' : 'system-ui'
82 );
83
84 return json_decode($styles);
85 }
86
87 /** Set Stripe Font styles consistent with Sequoia form template
88 *
89 * As per design requirement, we want to format Stripe elements to use Montserrat, with the same styling options as other text inputs.
90 *
91 * @since 2.7.0
92 *
93 * @param array $fontStyles
94 *
95 * @return array
96 */
97 public function setupStripeFontStyles($fontStyles)
98 {
99 return [
100 'cssSrc' => $this->isGoogleFontEnabled() ?
101 'https://fonts.googleapis.com/css2?family=Montserrat&display=swap' :
102 false,
103 ];
104 }
105
106 /**
107 * Set zero as number of decimals in currency formatting setting.
108 *
109 * As per design requirement we want to format donation amount with zero decimal whether or not number of decimal admin setting set to zero.
110 *
111 * @since 2.7.0
112 *
113 * @param array $currencyFormattingSettings
114 *
115 * @return array
116 */
117 public function setupZeroNumberOfDecimalInCurrencyFormattingSetting($currencyFormattingSettings)
118 {
119 $currencyFormattingSettings['number_decimals'] = 0;
120
121 return $currencyFormattingSettings;
122 }
123
124 /**
125 * Return zero as number of decimals setting value or currency formatting value.
126 *
127 * As per design requirement we want to format donation amount with zero decimal whether or not number of decimal admin setting set to zero.
128 *
129 * @since 2.7.0
130 * @return int
131 */
132 public function setupZeroNumberOfDecimal()
133 {
134 return 0;
135 }
136
137 /**
138 * Setup common hooks
139 *
140 * @param int $formId
141 * @param array $args
142 */
143 public function loadCommonHooks($formId, $args)
144 {
145 remove_action('give_donation_form_register_login_fields', 'give_show_register_login_fields');
146 }
147
148 /**
149 * Setup hooks
150 *
151 * @param int $formId
152 * @param array $args
153 * @param Give_Donate_Form $form
154 */
155 public function loadHooks($formId, $args, $form)
156 {
157 /**
158 * Add hooks
159 */
160 add_action('give_pre_form', [$this, 'getNavigator'], 0, 3);
161 add_action('give_post_form', [$this, 'getFooterSection'], 99998, 0);
162 add_action('give_donation_form_top', [$this, 'getIntroductionSection'], 0, 3);
163 add_action('give_donation_form_top', [$this, 'getStartWrapperHTMLForAmountSection'], 0);
164 add_action('give_donation_form_top', [$this, 'getCloseWrapperHTMLForAmountSection'], 99998);
165 add_action('give_payment_mode_top', 'give_show_register_login_fields');
166 add_action('give_payment_mode_top', [$this, 'getStartWrapperHTMLForPaymentSection'], 0);
167 add_action('give_donation_form_after_submit', [$this, 'getCloseWrapperHTMLForPaymentSection'], 999);
168
169 /**
170 * Remove actions
171 */
172 // Remove goal.
173 remove_action('give_pre_form', 'give_show_goal_progress', 10);
174
175 // Remove intermediate continue button which appears when display style is set to anything other than "onpage".
176 remove_action('give_after_donation_levels', 'give_display_checkout_button', 10);
177
178 // Hide title.
179 add_filter('give_form_title', '__return_empty_string');
180
181 // Append "Donate with " to gateway labels
182 add_filter('give_enabled_payment_gateways', [$this, 'modifyGatewayLabels']);
183 }
184
185 /**
186 * Add form navigator / header
187 *
188 * @since 2.7.0
189 *
190 * @param $formId
191 * @param $args
192 * @param $form
193 */
194 public function getNavigator($formId, $args, $form)
195 {
196 include 'sections/form-navigator.php';
197 }
198
199 /**
200 * Add introduction form section
201 *
202 * @since 2.7.0
203 *
204 * @param $formId
205 * @param $args
206 * @param $form
207 */
208 public function getIntroductionSection($formId, $args, $form)
209 {
210 include 'sections/introduction.php';
211 }
212
213 /**
214 * Add form footer
215 *
216 * @since 2.7.0
217 */
218 public function getFooterSection()
219 {
220 include 'sections/footer.php';
221 }
222
223 /**
224 * Add checkout button
225 *
226 * @since 2.7.0
227 */
228 public function getCheckoutButton()
229 {
230 $label = isset($this->templateOptions['payment_information']['checkout_label']) ? $this->templateOptions['payment_information']['checkout_label'] : __(
231 'Donate Now',
232 'give'
233 );
234
235 return sprintf(
236 '<div class="give-submit-button-wrap give-clearfix">
237 <input type="submit" class="give-submit give-btn" id="give-purchase-button" name="give-purchase" value="%1$s" data-before-validation-label="Donate Now">
238 <span class="give-loading-animation"></span>
239 </div>',
240 $label
241 );
242 }
243
244 /**
245 * Add wrapper and introduction text to payment information section
246 *
247 * @since 2.7.0
248 *
249 * @param int $formId
250 */
251 public function getStartWrapperHTMLForPaymentSection($formId)
252 {
253 $headline = isset($this->templateOptions['payment_information']['headline']) ? $this->templateOptions['payment_information']['headline'] : __(
254 "Who's giving today?",
255 'give'
256 );
257 $description = isset($this->templateOptions['payment_information']['description']) ? $this->templateOptions['payment_information']['description'] : __(
258 'We’ll never share this information with anyone.',
259 'give'
260 );
261
262 printf(
263 '<div class="give-section payment"><div class="heading">%1$s</div><div class="subheading">%2$s</div>',
264 $headline,
265 $description
266 );
267 }
268
269 /**
270 * Close wrapper for payment information section
271 *
272 * @since 2.7.0
273 */
274 public function getCloseWrapperHTMLForPaymentSection()
275 {
276 echo '</div>';
277 }
278
279 /**
280 * Start choose amount section
281 *
282 * @since 2.7.0
283 */
284 public function getStartWrapperHTMLForAmountSection()
285 {
286 $content = isset($this->templateOptions['payment_amount']['content']) && ! empty($this->templateOptions['payment_amount']['content']) ? $this->templateOptions['payment_amount']['content'] : sprintf(
287 __(
288 'How much would you like to donate? As a contributor to %s we make sure your donation goes directly to supporting our cause. Thank you for your generosity!',
289 'give'
290 ),
291 get_bloginfo('sitename')
292 );
293 $label = ! empty($this->templateOptions['introduction']['donate_label']) ? $this->templateOptions['introduction']['donate_label'] : __(
294 'Donate Now',
295 'give'
296 );
297 $arrow = is_rtl() ? 'left' : 'right';
298 printf(
299 '<button class="give-btn advance-btn">%1$s<i class="fas fa-chevron-%2$s"></i></button></div>',
300 $label,
301 $arrow
302 );
303
304 if ( ! empty($content)) {
305 printf(
306 '<div class="give-section choose-amount"><p class="content">%1$s</p>',
307 $content
308 );
309 } else {
310 echo "<div class='give-section choose-amount'>";
311 }
312 }
313
314 /**
315 * Close choose amount section
316 *
317 * @since 2.7.0
318 */
319 public function getCloseWrapperHTMLForAmountSection()
320 {
321 $label = isset($this->templateOptions['payment_amount']['next_label']) ? $this->templateOptions['payment_amount']['next_label'] : __(
322 'Continue',
323 'give'
324 );
325 $arrow = is_rtl() ? 'left' : 'right';
326
327 printf(
328 '<button class="give-btn advance-btn">%1$s<i class="fas fa-chevron-%2$s"></i></button></div>',
329 $label,
330 $arrow
331 );
332 }
333
334 /**
335 * Append gateway labels with "Donate with "
336 *
337 * Modify gateways array returned give_get_enabled_payment_gateways, before printing
338 *
339 * @param array $gateways Array of enabled gateways
340 *
341 * @return array $gateways Array of modified enabled gateways
342 */
343 public function modifyGatewayLabels(array $gateways)
344 {
345 foreach ($gateways as $key => $value) {
346 $gateways[$key]['checkout_label'] = sprintf(
347 __('Donate with %1$s', 'give'),
348 $value['checkout_label']
349 );
350 }
351
352 return $gateways;
353 }
354
355 /**
356 * @since 2.16.0
357 * @return bool
358 */
359 private function isGoogleFontEnabled()
360 {
361 $templateOptions = FormTemplateUtils::getOptions();
362
363 // Set defaults
364 $templateOptions['visual_appearance']['google-fonts'] = ! empty($templateOptions['visual_appearance']['google-fonts']) ? $templateOptions['visual_appearance']['google-fonts'] : 'enabled';
365
366 return give_is_setting_enabled($templateOptions['visual_appearance']['google-fonts']);
367 }
368
369 }
370