/**
  * Return a count and sum of donations for a given period.
  *
  * @global  WPDB $wpdb
  * @param   string $period
  * @param   string[] $statuses
  * @return  array
  * @access  public
  * @since   1.2.0
  */
 public function get_donations_summary_by_period($period = '', $statuses = array())
 {
     global $wpdb;
     if (empty($statuses)) {
         $statuses = charitable_get_approval_statuses();
     }
     list($status_clause, $parameters) = $this->get_donation_status_clause($statuses);
     array_unshift($parameters, $period);
     $sql = "SELECT COALESCE( SUM( cd.amount ), 0 ) as amount, COUNT( cd.donation_id ) as count\n                    FROM {$wpdb->prefix}charitable_campaign_donations cd\n                    INNER JOIN {$wpdb->posts} p ON p.ID = cd.donation_id\n                    WHERE p.post_date LIKE %s\n                    {$status_clause};";
     $results = $wpdb->get_results($wpdb->prepare($sql, $parameters));
     $result = $results[0];
     if ($this->is_comma_decimal()) {
         $result = $this->sanitize_amounts($result);
     }
     return $result;
 }
 /**
  * Returns the donation statuses that signify a donation was complete.
  *
  * By default, this is just 'charitable-completed'. However, 'charitable-preapproval'
  * is also counted.
  *
  * @return  string[]
  * @access  public
  * @since   1.0.0
  * @deprecated 1.4.0
  */
 public function get_approval_statuses()
 {
     charitable_get_deprecated()->deprecated_function(__METHOD__, '1.4.0', 'charitable_get_approval_statuses');
     return charitable_get_approval_statuses();
 }
 * Register Charitable emails.
 *
 * @see     Charitable_Emails::register_emails()
 */
add_action('init', array(Charitable_Emails::get_instance(), 'register_emails'));
/**
 * Send the Donation Receipt and Donation Notification emails.
 * 
 * Both of these emails are sent immediately a donation has been completed.
 *
 * @see     Charitable_Email_Donation_Receipt::send_with_donation_id()
 * @see     Charitable_Email_New_Donation::send_with_donation_id()
 */
add_action('charitable_after_save_donation', array('Charitable_Email_Donation_Receipt', 'send_with_donation_id'));
add_action('charitable_after_save_donation', array('Charitable_Email_New_Donation', 'send_with_donation_id'));
foreach (charitable_get_approval_statuses() as $status) {
    add_action($status . '_' . Charitable::DONATION_POST_TYPE, array('Charitable_Email_Donation_Receipt', 'send_with_donation_id'));
    add_action($status . '_' . Charitable::DONATION_POST_TYPE, array('Charitable_Email_New_Donation', 'send_with_donation_id'));
}
/**
 * Send the Campaign Ended email.
 *
 * This email can be sent to any recipients, within 24 hours after a campaign has reached its end date.
 *
 * @see     Charitable_Email_Campaign_End::send_with_campaign_id()
 */
add_action('charitable_campaign_end', array('Charitable_Email_Campaign_End', 'send_with_campaign_id'));
/**
 * Enable & disable emails.
 *
 * @see     Charitable_Emails::handle_email_settings_request()
/**
 * Returns whether the passed status is an confirmed status.
 *
 * @param   string $key
 * @return  boolean
 * @since   1.4.0
 */
function charitable_is_approved_status($status)
{
    return in_array($status, charitable_get_approval_statuses());
}
 /**
  * A method used to join the campaign donations table on the campaigns query.
  *
  * @param 	string $join_statement
  * @return  string
  * @access  public
  * @static
  * @since   1.0.0
  */
 public static function join_campaign_donations_table($join_statement)
 {
     global $wpdb;
     $statuses = charitable_get_approval_statuses();
     $statuses = array_filter($statuses, 'charitable_is_valid_donation_status');
     $statuses = "'" . implode("','", $statuses) . "'";
     $join_statement .= " LEFT JOIN ( SELECT cd1.campaign_donation_id, cd1.donation_id, cd1.donor_id, cd1.amount, cd1.campaign_id\n                FROM {$wpdb->prefix}charitable_campaign_donations cd1 \n                INNER JOIN {$wpdb->posts} po1 ON cd1.donation_id = po1.ID\n                WHERE po1.post_status IN ( {$statuses} )\n\t\t\t) cd ON cd.campaign_id = {$wpdb->posts}.ID";
     return $join_statement;
 }