/** * Get things started * * @see WP_List_Table::__construct() * @uses Charitable_Donations_Table::prepare_donation_counts() * * @access public * @since 1.0.0 */ public function __construct() { global $status, $page; $donation_post_type = get_post_type_object('donation'); // Set parent defaults parent::__construct(array('singular' => $donation_post_type->labels->singular_name, 'plural' => $donation_post_type->labels->name, 'ajax' => false)); $this->base_url = admin_url('edit.php?page=charitable-donations-table'); $this->donation_statuses = charitable_get_valid_donation_statuses(); $this->prepare_donation_counts(); $this->process_bulk_action(); }
/** * Return a set of donations, filtered by the provided arguments. * * @param array $args * @return array * @access public * @since 1.0.0 */ public function get_donations_report($args) { global $wpdb; $parameters = array(); $sql_order = $this->get_orderby_clause($args, 'ORDER BY p.post_date ASC'); $sql_where = ''; $sql_where_clauses = array(); if (isset($args['campaign_id'])) { list($campaigns_in, $campaigns_parameters) = $this->get_in_clause_params($args['campaign_id']); $sql_where_clauses[] = "cd.campaign_id IN ( {$campaigns_in} )"; $parameters = array_merge($parameters, $campaigns_parameters); } if (isset($args['status'])) { $sql_where_clauses[] = 'p.post_status = %s'; $parameters[] = $args['status']; } else { // if ALL: select all valid statuses $statuses = array_keys(charitable_get_valid_donation_statuses()); $in = $this->get_in_clause($statuses, '%s'); $sql_where_clauses[] = "p.post_status IN ( {$in} )"; $parameters = array_merge($parameters, $statuses); } if (isset($args['start_date'])) { $sql_where_clauses[] = 'p.post_date >= %s'; $parameters[] = $args['start_date']; } if (isset($args['end_date'])) { $sql_where_clauses[] = 'p.post_date <= %s'; $parameters[] = $args['end_date']; } if (!empty($sql_where_clauses)) { $sql_where = 'WHERE ' . implode(' AND ', $sql_where_clauses); } /* This is our base SQL query */ $sql = "SELECT cd.donation_id, cd.campaign_id, cd.campaign_name, cd.amount, d.email, d.first_name, d.last_name, p.post_date, p.post_content, p.post_status\n FROM {$this->table_name} cd\n INNER JOIN {$wpdb->prefix}charitable_donors d\n ON d.donor_id = cd.donor_id\n INNER JOIN {$wpdb->posts} p\n ON p.ID = cd.donation_id\n {$sql_where}\n {$sql_order}"; if (!empty($parameters)) { $sql = $wpdb->prepare($sql, $parameters); } $results = $wpdb->get_results($sql); if ($this->is_comma_decimal()) { $results = array_map(array($this, 'sanitize_amounts'), $results); } return $results; }
" /> </fieldset> <label for="charitable-donations-export-status"><?php _e('Filter by Status', 'charitable'); ?> </label> <select id="charitable-donations-export-status" name="post_status"> <option value="all" <?php selected($post_status, 'all'); ?> ><?php _e('All', 'charitable'); ?> </option> <?php foreach (charitable_get_valid_donation_statuses() as $key => $status) { ?> <option value="<?php echo esc_attr($key); ?> " <?php selected($post_status, $key); ?> ><?php echo $status; ?> </option> <?php } ?> </select>
/** * Return array of valid donations statuses. * * @return array * @access public * @since 1.0.0 * * @deprecated 1.4.0 */ public function get_valid_donation_statuses() { charitable_get_deprecated()->deprecated_function(__METHOD__, '1.4.0', 'charitable_get_valid_donation_statuses'); return charitable_get_valid_donation_statuses(); }
/** * Returns the array of view options for this campaign. * * @param array $views * @return array * @access public * @since 1.0.0 */ public function view_options($views) { $current = isset($_GET['post-status']) ? $_GET['post-status'] : ''; $statuses = charitable_get_valid_donation_statuses(); $donations = new Charitable_Donations(); $status_count = $donations->count_by_status(); $views = array(); $views['all'] = sprintf('<a href="%s"%s>%s <span class="count">(%s)</span></a>', esc_url(remove_query_arg(array('post_status', 'paged'))), 'all' === $current || '' == $current ? ' class="current"' : '', __('All', 'charitable'), $donations->count_all()); foreach ($statuses as $status => $label) { $views[$status] = sprintf('<a href="%s"%s>%s <span class="count">(%s)</span></a>', esc_url(add_query_arg(array('post_status' => $status, 'paged' => false))), $current === $status ? ' class="current"' : '', $label, isset($status_count[$status]) ? $status_count[$status]->num_donations : 0); } return $views; }
?> </th> <td><?php echo $donation->get_gateway_label(); ?> </td> </tr> <tr> <th><?php _e('Change Status', 'charitable'); ?> </th> <td> <select id="change-donation-status" name="post_status"> <?php foreach (charitable_get_valid_donation_statuses() as $status => $label) { ?> <option value="<?php echo $status; ?> " <?php selected($status, $donation->get_status()); ?> ><?php echo $label; ?> </option> <?php } ?> </select>
public function test_get_valid_donation_statuses() { $this->assertCount(5, charitable_get_valid_donation_statuses()); }
<?php /** * Display the donations widget on the dashboard. * * @author Studio 164a * @package Charitable/Admin View/Dashboard Widgets * @since 1.2.0 */ $statuses = charitable_get_valid_donation_statuses(); $donations = get_posts(array('post_type' => Charitable::DONATION_POST_TYPE, 'posts_per_page' => 5, 'post_status' => array_keys($statuses), 'fields' => 'ids')); $table = charitable_get_table('campaign_donations'); $today = $table->get_donations_summary_by_period(date('Y-m-d%')); $this_month = $table->get_donations_summary_by_period(date('Y-m%')); $last_month = $table->get_donations_summary_by_period(date('Y-m%', strtotime('-1 month'))); $this_year = $table->get_donations_summary_by_period(date('Y-%')); ?> <div class="charitable-donation-statistics"> <div class="cell"> <h3 class="amount"><?php echo charitable_format_money($today->amount); ?> </h3> <p class="summary"><?php printf(_n('%d donation %stoday%s', '%d donations %stoday%s', $today->count, 'charitable'), $today->count, '<span class="time-period">', '</span>'); ?> </p> </div> <div class="cell"> <h3 class="amount"><?php echo charitable_format_money($this_month->amount);
/** * Respond to changes in donation status. * * @param string $new_status * @param string $old_status * @param WP_Post $post * @return void * @access public * @since 1.2.0 * * @deprecated 1.4.0 */ public function handle_donation_status_change($new_status, $old_status, $post) { charitable_get_deprecated()->deprecated_function(__METHOD__, '1.4.0', __('Handled automatically when $donation->update_status() is called.', 'reach')); if (Charitable::DONATION_POST_TYPE != $post->post_type) { return; } $valid_statuses = charitable_get_valid_donation_statuses(); if ('new' == $old_status) { $message = sprintf(__('Donation status set to %s.', 'charitable'), $valid_statuses[$new_status]); } else { $message = sprintf(__('Donation status updated from %s to %s.', 'charitable'), $valid_statuses[$old_status], $valid_statuses[$new_status]); } charitable_get_donation($post->ID)->update_donation_log($message); }
/** * Create class object. * * @param mixed[] $args * @access public * @since 1.0.0 */ public function __construct($args) { $this->statuses = charitable_get_valid_donation_statuses(); add_filter('charitable_export_data_key_value', array($this, 'set_custom_field_data'), 10, 3); parent::__construct($args); }
/** * Returns whether the donation status is valid. * * @return boolean * @since 1.4.0 */ function charitable_is_valid_donation_status($status) { return array_key_exists($status, charitable_get_valid_donation_statuses()); }