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