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 / templates / shortcode-goal.php
give / templates Last commit date
emails 2 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 7 months ago shortcode-form-grid.php 4 months ago shortcode-goal.php 2 days ago shortcode-login.php 6 years ago shortcode-profile-editor.php 6 years ago shortcode-receipt.php 2 years ago shortcode-register.php 8 years ago shortcode-totals-progress.php 6 years ago single-give-form.php 6 years ago
shortcode-goal.php
269 lines
1 <?php
2
3 use Give\Log\Log;
4 use Give\DonationForms\DonationQuery;
5
6 /**
7 * This template is used to display the goal with [give_goal]
8 *
9 * @since 4.16.3 Escaped the goal color when rendering the progress bar.
10 */
11
12 /**
13 * @var int $form_id form id passed from the give_show_goal_progress() context
14 * @var $args array shortcode args
15 */
16
17 if ( empty($form_id) ) {
18 Log::error('Failed to render [give_goal] shortcode.',
19 ['form_id' => $form_id,
20 'file' => '__templates/shortcode-goal.php__',
21 'line' => '10'
22 ]);
23 return false;
24 }
25
26 $form = new Give_Donate_Form( $form_id );
27
28 $goal_option = give_get_meta( $form->ID, '_give_goal_option', true );
29 // Sanity check - ensure form has pass all condition to show goal.
30 if ( ( isset( $args['show_goal'] ) && ! filter_var( $args['show_goal'], FILTER_VALIDATE_BOOLEAN ) )
31 || empty( $form->ID )
32 || ( is_singular( 'give_forms' ) && ! give_is_setting_enabled( $goal_option ) )
33 || ! give_is_setting_enabled( $goal_option ) || 0 === $form->goal ) {
34 return false;
35 }
36
37 $goal_progress_stats = give_goal_progress_stats( $form );
38 $goal_format = $goal_progress_stats['format'];
39 $color = empty($args['color']) ? give_get_meta( $form_id, '_give_goal_color', true ) : sanitize_hex_color( $args['color'] );
40 $show_text = isset( $args['show_text'] ) ? filter_var( $args['show_text'], FILTER_VALIDATE_BOOLEAN ) : true;
41 $show_bar = isset( $args['show_bar'] ) ? filter_var( $args['show_bar'], FILTER_VALIDATE_BOOLEAN ) : true;
42
43 /**
44 * @since 4.7.0 only use dates when they are set
45 * @since 3.12.0 use DonationQuery to get donation amounts
46 */
47 $form_income = 0;
48 $donationQuery = (new DonationQuery())->form($form->ID);
49
50 if (isset($args['start_date'], $args['end_date'])) {
51 if ($args['start_date'] === $args['end_date']) {
52 $form_income = $donationQuery->sumIntendedAmount();
53 } else {
54 // If end date is not set, we have to use the current datetime.
55 if (! $args['end_date']) {
56 $args['end_date'] = date('Y-m-d H:i:s');
57 }
58
59 $form_income = $donationQuery->between($args['start_date'], $args['end_date'])->sumIntendedAmount();
60 }
61 }
62
63
64 /**
65 * Allow filtering the goal stats used for this shortcode context.
66 *
67 * @since 2.23.1
68 *
69 * @param array $stats The income and goal values for this form goal.
70 * @param int $form_id Donation Form ID.
71 * @param array $goal_progress_stats The full goal progress stats.
72 * @param array $args The full list of shortcode arguments passed.
73 */
74 $shortcode_stats = apply_filters(
75 'give_goal_shortcode_stats',
76 array(
77 'income' => $form_income,
78 'goal' => $goal_progress_stats['raw_goal'],
79 ),
80 $form_id,
81 $goal_progress_stats,
82 $args
83 );
84 $income = $shortcode_stats['income'];
85 $goal = $shortcode_stats['goal'];
86
87 switch ( $goal_format ) {
88
89 case 'donation':
90 $progress = $goal ? round( ( $form->get_sales() / $goal ) * 100, 2 ) : 0;
91 $progress_bar_value = $form->get_sales() >= $goal ? 100 : $progress;
92 break;
93
94 case 'donors':
95 $progress = $goal ? round( ( give_get_form_donor_count( $form->ID ) / $goal ) * 100, 2 ) : 0;
96 $progress_bar_value = give_get_form_donor_count( $form->ID ) >= $goal ? 100 : $progress;
97 break;
98
99 case 'percentage':
100 $progress = $goal ? round( ( $income / $goal ) * 100, 2 ) : 0;
101 $progress_bar_value = $income >= $goal ? 100 : $progress;
102 break;
103
104 default:
105 $progress = $goal ? round( ( $income / $goal ) * 100, 2 ) : 0;
106 $progress_bar_value = $income >= $goal ? 100 : $progress;
107 break;
108
109 }
110
111 /**
112 * Filter the goal progress output
113 *
114 * @since 1.8.8
115 */
116 $progress = apply_filters( 'give_goal_amount_funded_percentage_output', $progress, $form_id, $form );
117 ?>
118 <div class="give-goal-progress">
119 <?php if ( ! empty( $show_text ) ) : ?>
120 <div class="raised">
121 <?php
122 if ( 'amount' === $goal_format ) :
123 /**
124 * Filter the give currency.
125 *
126 * @since 1.8.17
127 */
128 $form_currency = apply_filters( 'give_goal_form_currency', give_get_currency( $form_id ), $form_id );
129 /**
130 * Filter the income formatting arguments.
131 *
132 * @since 1.8.17
133 */
134 $income_format_args = apply_filters(
135 'give_goal_income_format_args',
136 array(
137 'sanitize' => false,
138 'currency' => $form_currency,
139 'decimal' => false,
140 ),
141 $form_id
142 );
143 /**
144 * Filter the goal formatting arguments.
145 *
146 * @since 1.8.17
147 */
148 $goal_format_args = apply_filters(
149 'give_goal_amount_format_args',
150 array(
151 'sanitize' => false,
152 'currency' => $form_currency,
153 'decimal' => false,
154 ),
155 $form_id
156 );
157 /**
158 * This filter will be used to convert the goal amounts to different currencies.
159 *
160 * @since 2.5.4
161 *
162 * @param array $amounts List of goal amounts.
163 * @param int $form_id Donation Form ID.
164 */
165 $goal_amounts = apply_filters(
166 'give_goal_amounts',
167 array(
168 $form_currency => $goal,
169 ),
170 $form_id
171 );
172 /**
173 * This filter will be used to convert the income amounts to different currencies.
174 *
175 * @since 2.5.4
176 *
177 * @param array $amounts List of goal amounts.
178 * @param int $form_id Donation Form ID.
179 */
180 $income_amounts = apply_filters(
181 'give_goal_raised_amounts',
182 array(
183 $form_currency => $income,
184 ),
185 $form_id
186 );
187 // Get human readable donation amount.
188 $income = give_human_format_large_amount( give_format_amount( $income, $income_format_args ), array( 'currency' => $form_currency ) );
189 $goal = give_human_format_large_amount( give_format_amount( $goal, $goal_format_args ), array( 'currency' => $form_currency ) );
190 // Format the human readable donation amount.
191 $formatted_income = give_currency_filter(
192 $income,
193 array(
194 'form_id' => $form_id,
195 )
196 );
197 $formatted_goal = give_currency_filter(
198 $goal,
199 array(
200 'form_id' => $form_id,
201 )
202 );
203
204 echo sprintf(
205 /* translators: 1: amount of income raised 2: goal target amount. */
206 __( '<span class="income" data-amounts="%1$s">%2$s</span> of <span class="goal-text" data-amounts="%3$s">%4$s</span> raised', 'give' ),
207 esc_attr( wp_json_encode( $income_amounts, JSON_PRETTY_PRINT ) ),
208 esc_attr( $formatted_income ),
209 esc_attr( wp_json_encode( $goal_amounts, JSON_PRETTY_PRINT ) ),
210
211 esc_attr( $formatted_goal )
212 );
213 elseif ( 'percentage' === $goal_format ) :
214
215 echo sprintf( /* translators: %s: percentage of the amount raised compared to the goal target */
216 __( '<span class="give-percentage">%s%%</span> funded', 'give' ),
217 round( $progress )
218 );
219
220 elseif ( 'donation' === $goal_format ) :
221
222 echo sprintf( /* translators: 1: total number of donations completed 2: total number of donations set as goal */
223 _n(
224 '<span class="income">%1$s</span> of <span class="goal-text">%2$s</span> donation',
225 '<span class="income">%1$s</span> of <span class="goal-text">%2$s</span> donations',
226 $goal,
227 'give'
228 ),
229
230 give_format_amount( $form->get_sales(), array( 'decimal' => false )),
231 give_format_amount( $goal, array( 'decimal' => false ))
232 );
233
234 elseif ( 'donors' === $goal_format ) :
235
236 echo sprintf( /* translators: 1: total number of donors completed 2: total number of donors set as goal */
237 _n(
238 '<span class="income">%1$s</span> of <span class="goal-text">%2$s</span> donor',
239 '<span class="income">%1$s</span> of <span class="goal-text">%2$s</span> donors',
240 $goal,
241 'give'
242 ),
243
244 give_format_amount( give_get_form_donor_count( $form->ID ), array( 'decimal' => false ) ),
245 give_format_amount( $goal, array( 'decimal' => false ) )
246 );
247
248 endif;
249 ?>
250 </div>
251 <?php endif; ?>
252
253 <?php if ( ! empty( $show_bar ) ) :
254 $style = "width:{$progress_bar_value}%";
255
256 if ( ! empty($color)) {
257 $style .= ";background: linear-gradient(180deg, {$color} 0%, {$color} 100%), linear-gradient(180deg, #fff 0%, #ccc 100%); background-blend-mode: multiply;";
258 }
259 ?>
260 <div class="progress-bar">
261 <div class="give-progress-bar" role="progressbar" aria-valuemin="0" aria-valuemax="100" aria-valuenow="<?php echo esc_attr( $progress_bar_value ); ?>">
262 <span style="<?php echo esc_attr( $style ); ?>"></span>
263 </div>
264 </div>
265 <?php endif; ?>
266
267 </div><!-- /.goal-progress -->
268
269