PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.27.2
GiveWP – Donation Plugin and Fundraising Platform v2.27.2
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 / templates / shortcode-form-grid.php
give / templates Last commit date
emails 6 years ago global 6 years ago receipt 7 years ago single-give-form 6 years ago email-login-form.php 6 years ago history-donations.php 4 years ago payment-processing.php 6 years ago shortcode-donor-wall.php 3 years ago shortcode-form-grid.php 3 years ago shortcode-goal.php 3 years ago shortcode-login.php 6 years ago shortcode-profile-editor.php 6 years ago shortcode-receipt.php 5 years ago shortcode-register.php 8 years ago shortcode-totals-progress.php 6 years ago single-give-form.php 6 years ago
shortcode-form-grid.php
465 lines
1 <?php
2 /**
3 * This template is used to display the donation grid with [donation_grid]
4 */
5
6 // Exit if accessed directly.
7 use Give\Helpers\Form\Template;
8 use Give\Helpers\Form\Utils as FormUtils;
9
10 if ( ! defined( 'ABSPATH' ) ) {
11 exit;
12 }
13
14 /**
15 * List of changes
16 *
17 * @since 2.27.1 Use get_the_excerpt function to get short description of donation form to display in form grid.
18 */
19
20 $form_id = get_the_ID(); // Form ID.
21 $give_settings = $args[0]; // Give settings.
22 $atts = $args[1]; // Shortcode attributes.
23 $raw_content = ''; // Raw form content.
24 $stripped_content = ''; // Form content stripped of HTML tags and shortcodes.
25 $excerpt = ''; // Trimmed form excerpt ready for display.
26
27 $flex_direction = $atts['columns'] === '1' ? "row" : "column";
28
29 $activeTemplate = FormUtils::isLegacyForm( $form_id ) ? 'legacy' : Template::getActiveID( $form_id );
30
31 /* @var \Give\Form\Template $formTemplate */
32 $formTemplate = Give()->templates->getTemplate( $activeTemplate );
33
34 $renderTags = static function($wrapper_class, $apply_styles = true) use($form_id , $atts ) {
35 if( !taxonomy_exists( 'give_forms_tag' ) ) {
36 return '';
37 }
38
39 $tags = wp_get_post_terms($form_id,'give_forms_tag');
40
41 $tag_bg_color = ! empty( $atts['tag_background_color'] )
42 ? $atts['tag_background_color']
43 : '#69b86b';
44
45 $tag_text_color = ! empty( $atts['tag_text_color'] )
46 ? $atts['tag_text_color']
47 : '#ffffff';
48
49 $tag_container_color = count($tags) >= 1
50 ? 'rgba(0, 0, 0, 0.35)'
51 : 'none';
52
53 $tag_elements = array_map(
54 static function($term)use($tag_text_color,$tag_bg_color){
55 $style = sprintf(
56 'color: %s; background-color: %s;',
57 esc_attr($tag_text_color),
58 esc_attr($tag_bg_color)
59 );
60 return "<span style='$style'>$term->name</span>";
61 }, $tags
62 );
63
64 $tag_elements = implode('', $tag_elements);
65 $styles = sprintf(
66 "background-color: %s;",
67 $apply_styles ? esc_attr($tag_container_color) : ''
68 );
69
70 return "
71 <div class='$wrapper_class' style='$styles' >
72 $tag_elements
73 </div>
74 ";
75 };
76
77 ?>
78
79 <div class="give-grid__item">
80 <?php
81 // Print the opening anchor tag based on display style.
82 if ( 'redirect' === $atts['display_style'] ) {
83
84 $form_grid_option = give_get_meta( $form_id, '_give_form_grid_option', true );
85 $form_grid_redirect_url = esc_url(give_get_meta( $form_id, '_give_form_grid_redirect_url', true ));
86
87 $url = ( $form_grid_option === 'custom' && filter_var($form_grid_redirect_url, FILTER_VALIDATE_URL) )
88 ? $form_grid_redirect_url
89 : get_the_permalink();
90
91 printf(
92 '<a id="give-card-%1$s" onclick="return !document.body.classList.contains( \'block-editor-page\' )" class="give-card" href="%2$s">',
93 esc_attr( $form_id ),
94 esc_attr( $url )
95 );
96 } elseif ( 'modal_reveal' === $atts['display_style'] ) {
97 printf(
98 '<a id="give-card-%1$s" class="give-card js-give-grid-modal-launcher" data-effect="mfp-zoom-out" href="#give-modal-form-%1$s">',
99 esc_attr( $form_id )
100 );
101 }
102 ?>
103 <div class="give-form-grid" style="flex-direction:<?php echo esc_attr($flex_direction) ?>">
104 <?php
105 // Maybe display the featured image.
106 if (
107 give_is_setting_enabled($give_settings['form_featured_img'])
108 && ($imageSrc = $formTemplate->getFormFeaturedImage($form_id))
109 && $atts['show_featured_image']
110 && $atts['columns'] !== '1'
111 ) {
112 /*
113 * Filters the image size used in card layouts.
114 *
115 * @param string The image size.
116 * @param array Form grid attributes.
117 */
118 $image_size = apply_filters('give_form_grid_image_size', $atts['image_size'], $atts);
119 $image_attr = '';
120
121 if ('auto' !== $atts['image_height']) {
122 $image_attr = [
123 'style' => 'height: ' . $atts['image_height'],
124 ];
125 }
126
127 $image = wp_get_attachment_image( attachment_url_to_postid( $imageSrc ), $image_size, false, $image_attr );
128
129
130 echo "
131 <div class='give-form-grid-media'>
132 <div class='give-card__media'> $image </div>
133
134 {$renderTags('give-form-grid-media__tags')}
135 </div>
136 ";
137 } elseif(
138 give_is_setting_enabled($give_settings['form_featured_img'])
139 && ($imageSrc = $formTemplate->getFormFeaturedImage($form_id))
140 && $atts['show_featured_image']
141 && $atts['columns'] === '1')
142 {
143 echo "
144 <div id='row-media' class='give-form-grid-media'>
145 <img class='give-form-grid-media' src='". esc_url($imageSrc). "' alt='' />
146
147 {$renderTags('give-form-grid-media__tags')}
148 </div>
149 ";
150 }
151 ?>
152
153 <div class="give-form-grid-container">
154 <div class="give-form-grid-content">
155 <?php
156 if( !$atts['show_featured_image']){
157 echo "
158 <div class='give-form-grid-media'>
159 {$renderTags('give-form-grid-media__tags_no_image', false)}
160 </div>
161 ";
162 }
163 ?>
164
165 <?php
166
167 // Maybe display the form title.
168 if ( true === $atts['show_title'] ) {
169 printf(
170 '<h3 class="give-form-grid-content__title">%1$s</h3>',
171 $formTemplate->getFormHeading( $form_id )
172 );
173 }
174
175 // Maybe display the form excerpt.
176 if ( true === $atts['show_excerpt'] ) {
177 if ( $raw_content = get_the_excerpt( $form_id ) ) {
178 $stripped_content = wp_strip_all_tags(
179 strip_shortcodes( $raw_content )
180 );
181 } else {
182 // Get content from the form post's content field.
183 $raw_content = give_get_meta( $form_id, '_give_form_content', true );
184
185 if ( ! empty( $raw_content ) ) {
186 $stripped_content = wp_strip_all_tags(
187 strip_shortcodes( $raw_content )
188 );
189 }
190 }
191
192 // Maybe truncate excerpt.
193 if ( 0 < $atts['excerpt_length'] ) {
194 $excerpt = wp_trim_words( $stripped_content, $atts['excerpt_length'] );
195 } else {
196 $excerpt = $stripped_content;
197 }
198
199 printf( '<p class="give-form-grid-content__text">%s</p>', $excerpt );
200 }
201
202 if ($atts['show_donate_button']):
203 $button_text = ! empty($atts['donate_button_text'])
204 ? $atts['donate_button_text']
205 : give_get_meta($form_id, '_give_form_grid_donate_button_text', true);
206
207 /**
208 * @since 2.23.1 Updated the default text color for the donate button, see #6591.
209 */
210 $button_text_color = ! empty($atts['donate_button_text_color'])
211 ? $atts['donate_button_text_color']
212 : '#000000';
213 ?>
214 <button style="text-decoration-color: <?php
215 echo esc_attr($button_text_color); ?>">
216 <span style="color: <?php
217 echo esc_attr($button_text_color); ?>">
218 <?php
219 echo esc_html($button_text) ?: __('Donate', 'give'); ?>
220 </span>
221 </button>
222 <?php endif; ?>
223
224 </div>
225 <?php
226 $form = new Give_Donate_Form( $form_id );
227 $goal_option = give_get_meta( $form->ID, '_give_goal_option', true );
228
229 // Sanity check - ensure form has pass all condition to show goal.
230 $hide_goal = ( isset( $atts['show_goal'] ) && ! filter_var( $atts['show_goal'], FILTER_VALIDATE_BOOLEAN ) )
231 || empty( $form->ID )
232 || ( is_singular( 'give_forms' ) && ! give_is_setting_enabled( $goal_option ) )
233 || ! give_is_setting_enabled( $goal_option ) || 0 === $form->goal;
234
235 // Maybe display the goal progress bar.
236
237 if (!$hide_goal) :
238 $goal_progress_stats = give_goal_progress_stats( $form );
239 $goal_format = $goal_progress_stats['format'];
240 $color = $atts['progress_bar_color'];
241 $show_goal = isset( $atts['show_goal'] ) ? filter_var( $atts['show_goal'], FILTER_VALIDATE_BOOLEAN ) : true;
242 $shortcode_stats = apply_filters(
243 'give_goal_shortcode_stats',
244 array(
245 'income' => $form->get_earnings(),
246 'goal' => $goal_progress_stats['raw_goal'],
247 ),
248 $form_id,
249 $goal_progress_stats,
250 $args
251 );
252
253 $income = $shortcode_stats['income'];
254 $goal = $shortcode_stats['goal'];
255
256 switch ( $goal_format ) {
257
258 case 'donation':
259 $progress = $goal ? round( ( $form->get_sales() / $goal ) * 100, 2 ) : 0;
260 $progress_bar_value = $form->get_sales() >= $goal ? 100 : $progress;
261 break;
262
263 case 'donors':
264 $progress = $goal ? round( ( give_get_form_donor_count( $form->ID ) / $goal ) * 100, 2 ) : 0;
265 $progress_bar_value = give_get_form_donor_count( $form->ID ) >= $goal ? 100 : $progress;
266 break;
267
268 case 'percentage':
269 $progress = $goal ? round( ( $income / $goal ) * 100, 2 ) : 0;
270 $progress_bar_value = $income >= $goal ? 100 : $progress;
271 break;
272
273 default:
274 $progress = $goal ? round( ( $income / $goal ) * 100, 2 ) : 0;
275 $progress_bar_value = $income >= $goal ? 100 : $progress;
276 break;
277
278 }
279
280 ?>
281 <div class="give-form-grid-progress">
282 <?php
283 $style = "width:$progress_bar_value%;";
284 $style .= "background: linear-gradient(180deg, {$color} 0%, {$color} 100%); background-blend-mode: multiply;";
285 echo "
286 <div class='give-form-grid-progress-bar'>
287 <div class='give-progress-bar' role='progressbar' aria-valuemin='0' aria-valuemax='100' aria-valuenow='$progress_bar_value'>
288 <span style='" . esc_attr($style) . "'></span>
289 </div>
290 </div>
291 ";
292
293 ?>
294 <div class="form-grid-raised">
295 <div class="form-grid-raised__details">
296 <?php
297 if ( 'amount' === $goal_format ) :
298
299 /**
300 * Filter the give currency.
301 *
302 * @since 1.8.17
303 */
304 $form_currency = apply_filters( 'give_goal_form_currency', give_get_currency( $form_id ), $form_id );
305
306 /**
307 * Filter the income formatting arguments.
308 *
309 * @since 1.8.17
310 */
311 $income_format_args = apply_filters(
312 'give_goal_income_format_args',
313 array(
314 'sanitize' => false,
315 'currency' => $form_currency,
316 'decimal' => false,
317 ),
318 $form_id
319 );
320
321 /**
322 * Filter the goal formatting arguments.
323 *
324 * @since 1.8.17
325 */
326 $goal_format_args = apply_filters(
327 'give_goal_amount_format_args',
328 array(
329 'sanitize' => false,
330 'currency' => $form_currency,
331 'decimal' => false,
332 ),
333 $form_id
334 );
335
336 /**
337 * This filter will be used to convert the goal amounts to different currencies.
338 *
339 * @since 2.5.4
340 *
341 * @param array $amounts List of goal amounts.
342 * @param int $form_id Donation Form ID.
343 */
344 $goal_amounts = apply_filters(
345 'give_goal_amounts',
346 array(
347 $form_currency => $goal,
348 ),
349 $form_id
350 );
351
352 /**
353 * This filter will be used to convert the income amounts to different currencies.
354 *
355 * @since 2.5.4
356 *
357 * @param array $amounts List of goal amounts.
358 * @param int $form_id Donation Form ID.
359 */
360 $income_amounts = apply_filters(
361 'give_goal_raised_amounts',
362 array(
363 $form_currency => $income,
364 ),
365 $form_id
366 );
367
368 // Get human readable donation amount.
369 $income = give_human_format_large_amount( give_format_amount( $income, $income_format_args ), array( 'currency' => $form_currency ) );
370 $goal = give_human_format_large_amount( give_format_amount( $goal, $goal_format_args ), array( 'currency' => $form_currency ) );
371
372 // Format the human readable donation amount.
373 $formatted_income = give_currency_filter(
374 $income,
375 array(
376 'form_id' => $form_id,
377 )
378 );
379
380 $formatted_goal = give_currency_filter(
381 $goal,
382 array(
383 'form_id' => $form_id,
384 )
385 );
386 echo sprintf(
387 /* translators: 1: amount of income raised 2: goal target amount. */
388 __( '<span class="amount" data-amounts="%1$s">%2$s</span>
389 <span class="goal" data-amounts="%3$s">of %4$s</span>', 'give' ),
390 esc_attr( wp_json_encode( $income_amounts, JSON_PRETTY_PRINT ) ),
391 esc_attr( $formatted_income ),
392 esc_attr( wp_json_encode( $goal_amounts, JSON_PRETTY_PRINT ) ),
393 esc_attr( $formatted_goal )
394 );
395
396 elseif ( 'percentage' === $goal_format ) :
397
398 echo sprintf( /* translators: %s: percentage of the amount raised compared to the goal target */
399 __( '
400 <span class="amount">%s%%</span>
401 <span class="goal">of 100&#37;</span>', 'give' ),
402 round( $progress )
403 );
404
405 elseif ( 'donation' === $goal_format ) :?>
406
407 <span class="amount">
408 <?php echo give_format_amount( $form->get_sales(), array( 'decimal' => false ))?>
409 </span>
410
411 <span class="goal">
412 <?php echo sprintf(_n('of %s donation', 'of %s donations', $goal, 'give'),
413 give_format_amount( $goal, array( 'decimal' => false ))); ?>
414 </span>
415
416 <?php elseif ( 'donors' === $goal_format ) : ?>
417
418 <span class="amount"> <?php echo give_get_form_donor_count( $form->ID ) ?> </span>
419 <span class="goal">
420 <?php echo sprintf(_n('of %s donor', 'of %s donors', $goal, 'give'),
421 give_format_amount( $goal, array( 'decimal' => false ))); ?>
422 </span>
423 <?php endif ?>
424 </div>
425
426 <div class="form-grid-raised__details">
427 <span class="amount form-grid-raised__details_donations">
428 <?php echo give_format_amount( $form->get_sales(), array( 'decimal' => false )) ?>
429 </span>
430 <span class="goal">
431 <?php echo _n('donation', 'donations', $goal, 'give')?> </span>
432 </div>
433 </div>
434 </div>
435 <?php endif?>
436 </div>
437 </div>
438 </a>
439 <?php
440 // If modal, print form in hidden container until it is time to be revealed.
441 if ( 'modal_reveal' === $atts['display_style'] ) {
442 if (
443 ! isset($_GET['context']) // check if we are in block editor
444 && ! FormUtils::isLegacyForm( $form_id )
445 ) {
446 echo give_form_shortcode(
447 [
448 'id' => $form_id,
449 'display_style' => 'button',
450 ]
451 );
452
453 } else {
454 printf(
455 '<div id="give-modal-form-%1$s" class="give-donation-grid-item-form give-modal--slide mfp-hide">',
456 $form_id
457 );
458 give_get_donation_form( $form_id );
459 echo '</div>';
460 }
461 }
462 ?>
463 </div>
464
465