/** * 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; }