PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.5.13
GiveWP – Donation Plugin and Fundraising Platform v2.5.13
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 / includes / admin / forms / dashboard-columns.php
give / includes / admin / forms Last commit date
class-give-form-duplicator.php 6 years ago class-metabox-form-data.php 6 years ago dashboard-columns.php 6 years ago metabox.php 7 years ago
dashboard-columns.php
577 lines
1 <?php
2 /**
3 * Dashboard Columns
4 *
5 * @package GIVE
6 * @subpackage Admin/Forms
7 * @copyright Copyright (c) 2016, GiveWP
8 * @license https://opensource.org/licenses/gpl-license GNU Public License
9 * @since 1.0
10 */
11
12 // Exit if accessed directly.
13 if ( ! defined( 'ABSPATH' ) ) {
14 exit;
15 }
16
17
18 /**
19 * Give Forms Columns
20 *
21 * Defines the custom columns and their order
22 *
23 * @since 1.0
24 *
25 * @param array $give_form_columns Array of forms columns
26 *
27 * @return array $form_columns Updated array of forms columns
28 * Post Type List Table
29 */
30 function give_form_columns( $give_form_columns ) {
31
32 // Standard columns
33 $give_form_columns = array(
34 'cb' => '<input type="checkbox"/>',
35 'title' => __( 'Name', 'give' ),
36 'form_category' => __( 'Categories', 'give' ),
37 'form_tag' => __( 'Tags', 'give' ),
38 'price' => __( 'Amount', 'give' ),
39 'goal' => __( 'Goal', 'give' ),
40 'donations' => __( 'Donations', 'give' ),
41 'earnings' => __( 'Income', 'give' ),
42 'shortcode' => __( 'Shortcode', 'give' ),
43 'date' => __( 'Date', 'give' ),
44 );
45
46 // Does the user want categories / tags?
47 if ( ! give_is_setting_enabled( give_get_option( 'categories', 'disabled' ) ) ) {
48 unset( $give_form_columns['form_category'] );
49 }
50 if ( ! give_is_setting_enabled( give_get_option( 'tags', 'disabled' ) ) ) {
51 unset( $give_form_columns['form_tag'] );
52 }
53
54 return apply_filters( 'give_forms_columns', $give_form_columns );
55 }
56
57 add_filter( 'manage_edit-give_forms_columns', 'give_form_columns' );
58
59 /**
60 * Render Give Form Columns
61 *
62 * @since 1.0
63 *
64 * @param string $column_name Column name
65 * @param int $post_id Give Form (Post) ID
66 *
67 * @return void
68 */
69 function give_render_form_columns( $column_name, $post_id ) {
70 if ( get_post_type( $post_id ) == 'give_forms' ) {
71
72 switch ( $column_name ) {
73 case 'form_category':
74 echo get_the_term_list( $post_id, 'give_forms_category', '', ', ', '' );
75 break;
76 case 'form_tag':
77 echo get_the_term_list( $post_id, 'give_forms_tag', '', ', ', '' );
78 break;
79 case 'price':
80 if ( give_has_variable_prices( $post_id ) ) {
81 echo give_price_range( $post_id );
82 } else {
83 echo give_price( $post_id, false );
84 printf( '<input type="hidden" class="formprice-%1$s" value="%2$s" />', esc_attr( $post_id ), esc_attr( give_get_form_price( $post_id ) ) );
85 }
86 break;
87 case 'goal':
88 if ( give_is_setting_enabled( give_get_meta( $post_id, '_give_goal_option', true ) ) ) {
89
90 echo give_admin_form_goal_stats( $post_id );
91
92 } else {
93 _e( 'No Goal Set', 'give' );
94 }
95
96 printf(
97 '<input type="hidden" class="formgoal-%1$s" value="%2$s" />',
98 esc_attr( $post_id ),
99 give_get_form_goal( $post_id )
100 );
101
102 break;
103 case 'donations':
104 if ( current_user_can( 'view_give_form_stats', $post_id ) ) {
105 printf(
106 '<a href="%1$s">%2$s</a>',
107 esc_url( admin_url( 'edit.php?post_type=give_forms&page=give-payment-history&form_id=' . $post_id ) ),
108 give_get_form_sales_stats( $post_id )
109 );
110 } else {
111 echo '-';
112 }
113 break;
114 case 'earnings':
115 if ( current_user_can( 'view_give_form_stats', $post_id ) ) {
116 printf(
117 '<a href="%1$s">%2$s</a>',
118 esc_url( admin_url( 'edit.php?post_type=give_forms&page=give-reports&tab=forms&form-id=' . $post_id ) ),
119 give_currency_filter( give_format_amount( give_get_form_earnings_stats( $post_id ), array( 'sanitize' => false ) ) )
120 );
121 } else {
122 echo '-';
123 }
124 break;
125 case 'shortcode':
126 $shortcode = sprintf( '[give_form id="%s"]', absint( $post_id ) );
127 printf(
128 '<button
129 type="button"
130 class="button hint-tooltip hint--top js-give-shortcode-button"
131 aria-label="%1$s"
132 data-give-shortcode="%2$s">
133 <span class="dashicons dashicons-admin-page"></span>
134 <span class="give-button-text"> %3$s</span>
135 </button>',
136 esc_attr( $shortcode ),
137 esc_attr( $shortcode ),
138 esc_html__( 'Copy Shortcode', 'give' )
139 );
140 break;
141 }// End switch().
142 }// End if().
143 }
144
145 add_action( 'manage_posts_custom_column', 'give_render_form_columns', 10, 2 );
146
147 /**
148 * Registers the sortable columns in the list table
149 *
150 * @since 1.0
151 *
152 * @param array $columns Array of the columns
153 *
154 * @return array $columns Array of sortable columns
155 */
156 function give_sortable_form_columns( $columns ) {
157 $columns['price'] = 'amount';
158 $columns['sales'] = 'sales';
159 $columns['earnings'] = 'earnings';
160 $columns['goal'] = 'goal';
161 $columns['donations'] = 'donations';
162
163 return $columns;
164 }
165
166 add_filter( 'manage_edit-give_forms_sortable_columns', 'give_sortable_form_columns' );
167
168 /**
169 * Sorts Columns in the Forms List Table
170 *
171 * @since 1.0
172 *
173 * @param array $vars Array of all the sort variables.
174 *
175 * @return array $vars Array of all the sort variables.
176 */
177 function give_sort_forms( $vars ) {
178 // Check if we're viewing the "give_forms" post type.
179 if ( ! isset( $vars['post_type'] ) || ! isset( $vars['orderby'] ) || 'give_forms' !== $vars['post_type'] ) {
180 return $vars;
181 }
182
183 switch ( $vars['orderby'] ) {
184 // Check if 'orderby' is set to "sales".
185 case 'sales':
186 $vars = array_merge(
187 $vars,
188 array(
189 'meta_key' => '_give_form_sales',
190 'orderby' => 'meta_value_num',
191 )
192 );
193 break;
194
195 // Check if "orderby" is set to "earnings".
196 case 'earnings':
197 $vars = array_merge(
198 $vars,
199 array(
200 'meta_key' => '_give_form_earnings',
201 'orderby' => 'meta_value_num',
202 )
203 );
204 break;
205
206 // Check if "orderby" is set to "price/amount".
207 case 'amount':
208 $multi_level_meta_key = ( 'asc' === $vars['order'] ) ? '_give_levels_minimum_amount' : '_give_levels_maximum_amount';
209
210 $vars['orderby'] = 'meta_value_num';
211 $vars['meta_query'] = array(
212 'relation' => 'OR',
213 array(
214 'key' => $multi_level_meta_key,
215 'type' => 'NUMERIC',
216 ),
217 array(
218 'key' => '_give_set_price',
219 'type' => 'NUMERIC',
220 ),
221 );
222
223 break;
224
225 // Check if "orderby" is set to "goal".
226 case 'goal':
227 $meta_key = give_has_upgrade_completed( 'v240_update_form_goal_progress' )
228 ? '_give_form_goal_progress'
229 : '_give_set_goal'; // Backward compatibility
230
231 $vars = array_merge(
232 $vars,
233 array(
234 'meta_key' => $meta_key,
235 'orderby' => 'meta_value_num',
236 )
237 );
238 break;
239
240 // Check if "orderby" is set to "donations".
241 case 'donations':
242 $vars = array_merge(
243 $vars,
244 array(
245 'meta_key' => '_give_form_sales',
246 'orderby' => 'meta_value_num',
247 )
248 );
249 break;
250 }// End switch().
251
252 return $vars;
253 }
254
255 /**
256 * Sets restrictions on author of Forms List Table
257 *
258 * @since 1.0
259 *
260 * @param array $vars Array of all sort variables.
261 *
262 * @return array Array of all sort variables.
263 */
264 function give_filter_forms( $vars ) {
265 if ( isset( $vars['post_type'] ) && 'give_forms' == $vars['post_type'] ) {
266
267 // If an author ID was passed, use it
268 if ( isset( $_REQUEST['author'] ) && ! current_user_can( 'view_give_reports' ) ) {
269
270 $author_id = $_REQUEST['author'];
271 if ( (int) $author_id !== get_current_user_id() ) {
272 wp_die(
273 esc_html__( 'You do not have permission to view this data.', 'give' ), esc_html__( 'Error', 'give' ), array(
274 'response' => 403,
275 )
276 );
277 }
278 $vars = array_merge(
279 $vars,
280 array(
281 'author' => get_current_user_id(),
282 )
283 );
284
285 }
286 }
287
288 return $vars;
289 }
290
291 /**
292 * Form Load
293 *
294 * Sorts the form columns.
295 *
296 * @since 1.0
297 * @return void
298 */
299 function give_forms_load() {
300 add_filter( 'request', 'give_sort_forms' );
301 add_filter( 'request', 'give_filter_forms' );
302 }
303
304 add_action( 'load-edit.php', 'give_forms_load', 9999 );
305
306 /**
307 * Remove Forms Month Filter
308 *
309 * Removes the default drop down filter for forms by date.
310 *
311 * @since 1.0
312 *
313 * @param array $dates The preset array of dates.
314 *
315 * @global $typenow The post type we are viewing.
316 * @return array Empty array disables the dropdown.
317 */
318 function give_remove_month_filter( $dates ) {
319 global $typenow;
320
321 if ( $typenow == 'give_forms' ) {
322 $dates = array();
323 }
324
325 return $dates;
326 }
327
328 add_filter( 'months_dropdown_results', 'give_remove_month_filter', 99 );
329
330 /**
331 * Updates price when saving post
332 *
333 * @since 1.0
334 * @since 2.1.4 If the donation amount is less than the Minimum amount then set the donation amount as Donation minimum amount.
335 *
336 * @param int $post_id Download (Post) ID
337 *
338 * @return int|null
339 */
340 function give_price_save_quick_edit( $post_id ) {
341 if ( ! isset( $_POST['post_type'] ) || 'give_forms' !== $_POST['post_type'] ) {
342 return;
343 }
344 if ( ! current_user_can( 'edit_post', $post_id ) ) {
345 return $post_id;
346 }
347 if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
348 return $post_id;
349 }
350
351 if ( isset( $_REQUEST['_give_regprice'] ) ) {
352 give_update_meta( $post_id, '_give_set_price', give_sanitize_amount_for_db( strip_tags( stripslashes( $_REQUEST['_give_regprice'] ) ) ) );
353 }
354
355 // Override the Donation minimum amount.
356 if (
357 isset( $_REQUEST['_give_custom_amount'], $_REQUEST['_give_set_price'], $_REQUEST['_give_price_option'], $_REQUEST['_give_custom_amount_range'] )
358 && 'set' === $_REQUEST['_give_price_option']
359 && give_is_setting_enabled( $_REQUEST['_give_custom_amount'] )
360 && give_maybe_sanitize_amount( $_REQUEST['_give_set_price'] ) < give_maybe_sanitize_amount( $_REQUEST['_give_custom_amount_range']['minimum'] )
361 ) {
362 give_update_meta( $post_id, '_give_custom_amount_range_minimum', give_sanitize_amount_for_db( $_REQUEST['_give_set_price'] ) );
363 }
364 }
365
366 add_action( 'save_post', 'give_price_save_quick_edit' );
367
368 /**
369 * Function is used to filter the query for search result.
370 *
371 * @since 2.4.0
372 *
373 * @param $wp WP WordPress environment instance (passed by reference).
374 */
375 function give_form_search_query_filter( $wp ) {
376
377 if (
378 isset( $wp->query_vars['post_type'] )
379 && 'give_forms' == $wp->query_vars['post_type']
380 && isset( $_GET['give-forms-goal-filter'] )
381 ) {
382
383 $wp->query_vars['date_query'] =
384 array(
385 'after' => ! empty( $_GET['start-date'] ) ? date( 'Y-m-d', strtotime( give_clean( $_GET['start-date'] ) ) ) : false,
386 'before' => ! empty( $_GET['end-date'] ) ? date( 'Y-m-d 23:59:59 ', strtotime( give_clean( $_GET['end-date'] ) ) ) : false,
387 'inclusive' => true,
388 );
389 switch ( $_GET['give-forms-goal-filter'] ) {
390 case 'goal_in_progress':
391 $wp->query_vars['meta_query'] =
392 array(
393 'relation' => 'AND',
394 array(
395 'key' => '_give_form_goal_progress',
396 'value' => array( 1, 99 ),
397 'compare' => 'BETWEEN',
398 'type' => 'NUMERIC',
399 ),
400 );
401
402 break;
403 case 'goal_achieved':
404 $wp->query_vars['meta_query'] =
405 array(
406 'relation' => 'AND',
407 array(
408 'key' => '_give_form_goal_progress',
409 'value' => 100,
410 'compare' => '>=',
411 'type' => 'NUMERIC',
412 ),
413 );
414 break;
415 case 'goal_not_set':
416 $wp->query_vars['meta_query'] =
417 array(
418 'relation' => 'OR',
419 array(
420 'key' => '_give_goal_option',
421 'value' => 'disabled',
422 'compare' => '=',
423 ),
424 array(
425 'key' => '_give_goal_option',
426 'compare' => 'NOT EXISTS',
427 ),
428 );
429 break;
430 }
431 }
432 }
433
434 add_action( 'parse_request', 'give_form_search_query_filter' );
435
436 /**
437 * function is used to search give forms by ID or title.
438 *
439 * @since 2.4.0
440 *
441 * @param $query WP_Query the WP_Query instance (passed by reference).
442 */
443
444 function give_search_form_by_id( $query ) {
445 // Verify that we are on the give forms list page.
446 if (
447 empty( $query->query_vars['post_type'] )
448 || 'give_forms' !== $query->query_vars['post_type']
449 ) {
450 return;
451 }
452
453 if ( '' !== $query->query_vars['s'] && is_search() ) {
454 if ( absint( $query->query_vars['s'] ) ) {
455 // Set the post id value
456 $query->set( 'p', $query->query_vars['s'] );
457 // Reset the search value
458 $query->set( 's', '' );
459 }
460 }
461 }
462
463 add_filter( 'pre_get_posts', 'give_search_form_by_id' );
464
465 /**
466 * Outputs advanced filter html in Give forms list admin screen.
467 *
468 * @sicne 2.4.0
469 *
470 * @param $which
471 */
472 function give_forms_advanced_filter( $which ) {
473 /* @var stdClass $screen */
474 $screen = get_current_screen();
475
476 if ( 'edit' !== $screen->parent_base || 'give_forms' !== $screen->post_type ) {
477 return;
478 }
479
480 // Apply this only on a specific post type
481 if ( 'top' !== $which ) {
482 return;
483 }
484
485 $start_date = isset( $_GET['start-date'] ) ? strtotime( give_clean( $_GET['start-date'] ) ) : '';
486 $end_date = isset( $_GET['end-date'] ) ? strtotime( give_clean( $_GET['end-date'] ) ) : '';
487 $search = isset( $_GET['s'] ) ? give_clean( $_GET['s'] ) : '';
488 $give_forms_goal_filter = isset( $_GET['give-forms-goal-filter'] ) ? $_GET['give-forms-goal-filter'] : '';
489 ?>
490 <div id="give-forms-advanced-filter" class="give-filters">
491 <div class="give-filter give-filter-search">
492 <input type="text" id="give-forms-search-input" placeholder="<?php _e( 'Form Name or ID', 'give' ); ?>" name="s" value="<?php echo $search; ?>">
493 <?php
494 submit_button(
495 __( 'Search', 'give' ), 'button', false, false, array(
496 'ID' => 'form-search-submit',
497 )
498 );
499 ?>
500 </div>
501 <div id="give-payment-date-filters">
502 <div class="give-filter give-filter-half">
503 <label for="start-date"
504 class="give-start-date-label"><?php _e( 'Start Date', 'give' ); ?></label>
505 <input type="text"
506 id="start-date"
507 name="start-date"
508 class="give_datepicker"
509 autocomplete="off"
510 value="<?php echo $start_date ? date_i18n( give_date_format(), $start_date ) : ''; ?>"
511 data-standard-date="<?php echo $start_date ? date( 'Y-m-d', $start_date ) : $start_date; ?>"
512 placeholder="<?php _e( 'Start Date', 'give' ); ?>"
513 />
514 </div>
515 <div class="give-filter give-filter-half">
516 <label for="end-date" class="give-end-date-label"><?php _e( 'End Date', 'give' ); ?></label>
517 <input type="text"
518 id="end-date"
519 name="end-date"
520 class="give_datepicker"
521 autocomplete="off"
522 value="<?php echo $end_date ? date_i18n( give_date_format(), $end_date ) : ''; ?>"
523 data-standard-date="<?php echo $end_date ? date( 'Y-m-d', $end_date ) : $end_date; ?>"
524 placeholder="<?php _e( 'End Date', 'give' ); ?>"
525 />
526 </div>
527 </div>
528 <div id="give-payment-form-filter" class="give-filter">
529 <label for="give-donation-forms-filter"
530 class="give-donation-forms-filter-label"><?php _e( 'Goal', 'give' ); ?></label>
531 <select id="give-forms-goal-filter" name="give-forms-goal-filter" class="give-forms-goal-filter">
532 <option value="any_goal_status"
533 <?php
534 if ( 'any_goal_status' === $give_forms_goal_filter ) {
535 echo 'selected';
536 }
537 ?>
538 ><?php _e( 'Any Goal Status', 'give' ); ?></option>
539 <option value="goal_achieved"
540 <?php
541 if ( 'goal_achieved' === $give_forms_goal_filter ) {
542 echo 'selected';
543 }
544 ?>
545 ><?php _e( 'Goal Achieved', 'give' ); ?></option>
546 <option value="goal_in_progress"
547 <?php
548 if ( 'goal_in_progress' === $give_forms_goal_filter ) {
549 echo 'selected';
550 }
551 ?>
552 ><?php _e( 'Goal In Progress', 'give' ); ?></option>
553 <option value="goal_not_set"
554 <?php
555 if ( 'goal_not_set' === $give_forms_goal_filter ) {
556 echo 'selected';
557 }
558 ?>
559 ><?php _e( 'Goal Not Set', 'give' ); ?></option>
560 </select>
561 </div>
562 <div class="give-filter">
563 <?php submit_button( __( 'Apply', 'give' ), 'secondary', '', false ); ?>
564 <?php
565 // Clear active filters button.
566 if ( ! empty( $start_date ) || ! empty( $end_date ) || ! empty( $search ) || ! empty( $give_forms_goal_filter ) ) :
567 ?>
568 <a href="<?php echo admin_url( 'edit.php?post_type=give_forms' ); ?>"
569 class="button give-clear-filters-button"><?php _e( 'Clear Filters', 'give' ); ?></a>
570 <?php endif; ?>
571 </div>
572 </div>
573 <?php
574 }
575
576 add_action( 'manage_posts_extra_tablenav', 'give_forms_advanced_filter', 10, 1 );
577