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