'', 'title' => __( 'Name', 'give' ), 'form_category' => __( 'Categories', 'give' ), 'form_tag' => __( 'Tags', 'give' ), 'price' => __( 'Amount', 'give' ), 'goal' => __( 'Goal', 'give' ), 'donations' => __( 'Donations', 'give' ), 'earnings' => __( 'Income', 'give' ), 'shortcode' => __( 'Shortcode', 'give' ), 'date' => __( 'Date', 'give' ), ); // Does the user want categories / tags? if ( ! give_is_setting_enabled( give_get_option( 'categories', 'disabled' ) ) ) { unset( $give_form_columns['form_category'] ); } if ( ! give_is_setting_enabled( give_get_option( 'tags', 'disabled' ) ) ) { unset( $give_form_columns['form_tag'] ); } return apply_filters( 'give_forms_columns', $give_form_columns ); } add_filter( 'manage_edit-give_forms_columns', 'give_form_columns' ); /** * Render Give Form Columns * * @since 1.0 * * @param string $column_name Column name * @param int $post_id Give Form (Post) ID * * @return void */ function give_render_form_columns( $column_name, $post_id ) { if ( get_post_type( $post_id ) == 'give_forms' ) { switch ( $column_name ) { case 'form_category': echo get_the_term_list( $post_id, 'give_forms_category', '', ', ', '' ); break; case 'form_tag': echo get_the_term_list( $post_id, 'give_forms_tag', '', ', ', '' ); break; case 'price': if ( give_has_variable_prices( $post_id ) ) { echo give_price_range( $post_id ); } else { echo give_price( $post_id, false ); printf( '', esc_attr( $post_id ), esc_attr( give_get_form_price( $post_id ) ) ); } break; case 'goal': if ( give_is_setting_enabled( give_get_meta( $post_id, '_give_goal_option', true ) ) ) { echo give_admin_form_goal_stats( $post_id ); } else { _e( 'No Goal Set', 'give' ); } printf( '', esc_attr( $post_id ), give_get_form_goal( $post_id ) ); break; case 'donations': if ( current_user_can( 'view_give_form_stats', $post_id ) ) { printf( '%2$s', esc_url( admin_url( 'edit.php?post_type=give_forms&page=give-payment-history&form_id=' . $post_id ) ), give_get_form_sales_stats( $post_id ) ); } else { echo '-'; } break; case 'earnings': if ( current_user_can( 'view_give_form_stats', $post_id ) ) { printf( '%2$s', esc_url( admin_url( 'edit.php?post_type=give_forms&page=give-reports&tab=forms&form-id=' . $post_id ) ), give_currency_filter( give_format_amount( give_get_form_earnings_stats( $post_id ), array( 'sanitize' => false ) ) ) ); } else { echo '-'; } break; case 'shortcode': $shortcode = sprintf( '[give_form id="%s"]', absint( $post_id ) ); printf( '', esc_attr( $shortcode ), esc_attr( $shortcode ), esc_html__( 'Copy Shortcode', 'give' ) ); break; }// End switch(). }// End if(). } add_action( 'manage_posts_custom_column', 'give_render_form_columns', 10, 2 ); /** * Registers the sortable columns in the list table * * @since 1.0 * * @param array $columns Array of the columns * * @return array $columns Array of sortable columns */ function give_sortable_form_columns( $columns ) { $columns['price'] = 'amount'; $columns['sales'] = 'sales'; $columns['earnings'] = 'earnings'; $columns['goal'] = 'goal'; $columns['donations'] = 'donations'; return $columns; } add_filter( 'manage_edit-give_forms_sortable_columns', 'give_sortable_form_columns' ); /** * Sorts Columns in the Forms List Table * * @since 1.0 * * @param array $vars Array of all the sort variables. * * @return array $vars Array of all the sort variables. */ function give_sort_forms( $vars ) { // Check if we're viewing the "give_forms" post type. if ( ! isset( $vars['post_type'] ) || ! isset( $vars['orderby'] ) || 'give_forms' !== $vars['post_type'] ) { return $vars; } switch ( $vars['orderby'] ) { // Check if 'orderby' is set to "sales". case 'sales': $vars = array_merge( $vars, array( 'meta_key' => '_give_form_sales', 'orderby' => 'meta_value_num', ) ); break; // Check if "orderby" is set to "earnings". case 'earnings': $vars = array_merge( $vars, array( 'meta_key' => '_give_form_earnings', 'orderby' => 'meta_value_num', ) ); break; // Check if "orderby" is set to "price/amount". case 'amount': $multi_level_meta_key = ( 'asc' === $vars['order'] ) ? '_give_levels_minimum_amount' : '_give_levels_maximum_amount'; $vars['orderby'] = 'meta_value_num'; $vars['meta_query'] = array( 'relation' => 'OR', array( 'key' => $multi_level_meta_key, 'type' => 'NUMERIC', ), array( 'key' => '_give_set_price', 'type' => 'NUMERIC', ) ); break; // Check if "orderby" is set to "goal". case 'goal': $vars = array_merge( $vars, array( 'meta_key' => '_give_set_goal', 'orderby' => 'meta_value_num', ) ); break; // Check if "orderby" is set to "donations". case 'donations': $vars = array_merge( $vars, array( 'meta_key' => '_give_form_sales', 'orderby' => 'meta_value_num', ) ); break; }// End switch(). return $vars; } /** * Sets restrictions on author of Forms List Table * * @since 1.0 * * @param array $vars Array of all sort variables. * * @return array Array of all sort variables. */ function give_filter_forms( $vars ) { if ( isset( $vars['post_type'] ) && 'give_forms' == $vars['post_type'] ) { // If an author ID was passed, use it if ( isset( $_REQUEST['author'] ) && ! current_user_can( 'view_give_reports' ) ) { $author_id = $_REQUEST['author']; if ( (int) $author_id !== get_current_user_id() ) { wp_die( esc_html__( 'You do not have permission to view this data.', 'give' ), esc_html__( 'Error', 'give' ), array( 'response' => 403, ) ); } $vars = array_merge( $vars, array( 'author' => get_current_user_id(), ) ); } } return $vars; } /** * Form Load * * Sorts the form columns. * * @since 1.0 * @return void */ function give_forms_load() { add_filter( 'request', 'give_sort_forms' ); add_filter( 'request', 'give_filter_forms' ); } add_action( 'load-edit.php', 'give_forms_load', 9999 ); /** * Remove Forms Month Filter * * Removes the default drop down filter for forms by date. * * @since 1.0 * * @param array $dates The preset array of dates. * * @global $typenow The post type we are viewing. * @return array Empty array disables the dropdown. */ function give_remove_month_filter( $dates ) { global $typenow; if ( $typenow == 'give_forms' ) { $dates = array(); } return $dates; } add_filter( 'months_dropdown_results', 'give_remove_month_filter', 99 ); /** * Updates price when saving post * * @since 1.0 * @since 2.1.4 If the donation amount is less than the Minimum amount then set the donation amount as Donation minimum amount. * * @param int $post_id Download (Post) ID * * @return int|null */ function give_price_save_quick_edit( $post_id ) { if ( ! isset( $_POST['post_type'] ) || 'give_forms' !== $_POST['post_type'] ) { return; } if ( ! current_user_can( 'edit_post', $post_id ) ) { return $post_id; } if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) { return $post_id; } if ( isset( $_REQUEST['_give_regprice'] ) ) { give_update_meta( $post_id, '_give_set_price', give_sanitize_amount_for_db( strip_tags( stripslashes( $_REQUEST['_give_regprice'] ) ) ) ); } // Override the Donation minimum amount. if ( isset( $_REQUEST['_give_custom_amount'], $_REQUEST['_give_set_price'], $_REQUEST['_give_price_option'], $_REQUEST['_give_custom_amount_range'] ) && 'set' === $_REQUEST['_give_price_option'] && give_is_setting_enabled( $_REQUEST['_give_custom_amount'] ) && give_maybe_sanitize_amount( $_REQUEST['_give_set_price'] ) < give_maybe_sanitize_amount( $_REQUEST['_give_custom_amount_range']['minimum'] ) ) { give_update_meta( $post_id, '_give_custom_amount_range_minimum', give_sanitize_amount_for_db( $_REQUEST['_give_set_price'] ) ); } } add_action( 'save_post', 'give_price_save_quick_edit' ); /** * Process bulk edit actions via AJAX * * @since 1.0 * @return void */ function give_save_bulk_edit() { $post_ids = ( isset( $_POST['post_ids'] ) && ! empty( $_POST['post_ids'] ) ) ? $_POST['post_ids'] : array(); if ( ! empty( $post_ids ) && is_array( $post_ids ) ) { $price = isset( $_POST['price'] ) ? strip_tags( stripslashes( $_POST['price'] ) ) : 0; foreach ( $post_ids as $post_id ) { if ( ! current_user_can( 'edit_post', $post_id ) ) { continue; } if ( ! empty( $price ) ) { give_update_meta( $post_id, '_give_set_price', give_sanitize_amount_for_db( $price ) ); } } } die(); } add_action( 'wp_ajax_give_save_bulk_edit', 'give_save_bulk_edit' );