PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.16.3
GiveWP – Donation Plugin and Fundraising Platform v4.16.3
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 / Views / Form / Templates / Sequoia / Actions.php
give / src / Views / Form / Templates / Sequoia Last commit date
assets 1 year ago sections 5 days ago views 1 year ago Actions.php 5 days ago Sequoia.php 1 year ago optionConfig.php 4 years ago
Actions.php
371 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 4.16.3 Escaped the checkout button label in the Sequoia template.
227 * @since 2.7.0
228 */
229 public function getCheckoutButton()
230 {
231 $label = isset($this->templateOptions['payment_information']['checkout_label']) ? $this->templateOptions['payment_information']['checkout_label'] : __(
232 'Donate Now',
233 'give'
234 );
235
236 return sprintf(
237 '<div class="give-submit-button-wrap give-clearfix">
238 <input type="submit" class="give-submit give-btn" id="give-purchase-button" name="give-purchase" value="%1$s" data-before-validation-label="Donate Now">
239 <span class="give-loading-animation"></span>
240 </div>',
241 esc_attr($label)
242 );
243 }
244
245 /**
246 * Add wrapper and introduction text to payment information section
247 *
248 * @since 2.7.0
249 *
250 * @param int $formId
251 */
252 public function getStartWrapperHTMLForPaymentSection($formId)
253 {
254 $headline = isset($this->templateOptions['payment_information']['headline']) ? $this->templateOptions['payment_information']['headline'] : __(
255 "Who's giving today?",
256 'give'
257 );
258 $description = isset($this->templateOptions['payment_information']['description']) ? $this->templateOptions['payment_information']['description'] : __(
259 'We’ll never share this information with anyone.',
260 'give'
261 );
262
263 printf(
264 '<div class="give-section payment"><div class="heading">%1$s</div><div class="subheading">%2$s</div>',
265 $headline,
266 $description
267 );
268 }
269
270 /**
271 * Close wrapper for payment information section
272 *
273 * @since 2.7.0
274 */
275 public function getCloseWrapperHTMLForPaymentSection()
276 {
277 echo '</div>';
278 }
279
280 /**
281 * Start choose amount section
282 *
283 * @since 2.7.0
284 */
285 public function getStartWrapperHTMLForAmountSection()
286 {
287 $content = isset($this->templateOptions['payment_amount']['content']) && ! empty($this->templateOptions['payment_amount']['content']) ? $this->templateOptions['payment_amount']['content'] : sprintf(
288 __(
289 '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!',
290 'give'
291 ),
292 get_bloginfo('sitename')
293 );
294 $label = ! empty($this->templateOptions['introduction']['donate_label']) ? $this->templateOptions['introduction']['donate_label'] : __(
295 'Donate Now',
296 'give'
297 );
298 $arrow = is_rtl() ? 'left' : 'right';
299 printf(
300 '<button class="give-btn advance-btn">%1$s<i class="fas fa-chevron-%2$s"></i></button></div>',
301 $label,
302 $arrow
303 );
304
305 if ( ! empty($content)) {
306 printf(
307 '<div class="give-section choose-amount"><p class="content">%1$s</p>',
308 $content
309 );
310 } else {
311 echo "<div class='give-section choose-amount'>";
312 }
313 }
314
315 /**
316 * Close choose amount section
317 *
318 * @since 2.7.0
319 */
320 public function getCloseWrapperHTMLForAmountSection()
321 {
322 $label = isset($this->templateOptions['payment_amount']['next_label']) ? $this->templateOptions['payment_amount']['next_label'] : __(
323 'Continue',
324 'give'
325 );
326 $arrow = is_rtl() ? 'left' : 'right';
327
328 printf(
329 '<button class="give-btn advance-btn">%1$s<i class="fas fa-chevron-%2$s"></i></button></div>',
330 $label,
331 $arrow
332 );
333 }
334
335 /**
336 * Append gateway labels with "Donate with "
337 *
338 * Modify gateways array returned give_get_enabled_payment_gateways, before printing
339 *
340 * @param array $gateways Array of enabled gateways
341 *
342 * @return array $gateways Array of modified enabled gateways
343 */
344 public function modifyGatewayLabels(array $gateways)
345 {
346 foreach ($gateways as $key => $value) {
347 $gateways[$key]['checkout_label'] = sprintf(
348 __('Donate with %1$s', 'give'),
349 $value['checkout_label']
350 );
351 }
352
353 return $gateways;
354 }
355
356 /**
357 * @since 2.16.0
358 * @return bool
359 */
360 private function isGoogleFontEnabled()
361 {
362 $templateOptions = FormTemplateUtils::getOptions();
363
364 // Set defaults
365 $templateOptions['visual_appearance']['google-fonts'] = ! empty($templateOptions['visual_appearance']['google-fonts']) ? $templateOptions['visual_appearance']['google-fonts'] : 'enabled';
366
367 return give_is_setting_enabled($templateOptions['visual_appearance']['google-fonts']);
368 }
369
370 }
371