/**
  * 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;
 }
Ejemplo n.º 3
0
" />
		</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>
Ejemplo n.º 7
0
 public function test_get_valid_donation_statuses()
 {
     $this->assertCount(5, charitable_get_valid_donation_statuses());
 }
Ejemplo n.º 8
0
<?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());
}