PluginProbe
GiveWP – Donation Plugin and Fundraising Platform / 4.18.0
GiveWP – Donation Plugin and Fundraising Platform v4.18.0
4.18.0 4.17.0 4.16.9 4.16.8.1 4.16.8 4.16.7.2 4.16.7.1 4.16.7 4.16.6.1 4.16.6 4.16.5.1 4.16.5 4.16.4 4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 All 257 releases
give / includes / donors / class-give-donor-stats.php

class-give-donor-stats.php in GiveWP – Donation Plugin and Fundraising Platform 4.18.0, at includes/donors/class-give-donor-stats.php

118 lines 2.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Donor stats
4 *
5 * Note: Currently wr are working on this API. This is internal use only
6 *
7 * @package Give
8 * @subpackage Classes/Donor/Stats
9 * @copyright Copyright (c) 2018, GiveWP
10 * @license https://opensource.org/licenses/gpl-license GNU Public License
11 * @since 2.2.0
12 */
13 class Give_Donor_Stats {
14 /**
15 * Instance.
16 *
17 * @since 2.2.0
18 * @access private
19 * @var
20 */
21 private static $instance;
22
23 /**
24 * Singleton pattern.
25 *
26 * @since 2.2.0
27 * @access private
28 */
29 private function __construct() {
30 }
31
32
33 /**
34 * Get instance.
35 *
36 * @since 2.2.0
37 * @access public
38 * @return Give_Donor_Stats
39 */
40 public static function get_instance() {
41 if ( null === static::$instance ) {
42 self::$instance = new static();
43 }
44
45 return self::$instance;
46 }
47
48 /**
49 * Get total donated amount
50 *
51 * @since 2.2.0
52 * @access public
53 *
54 * @param array $args
55 *
56 * @return string
57 */
58 public static function donated( $args = array() ) {
59 global $wpdb;
60 $donation_id_col = Give()->payment_meta->get_meta_type() . '_id';
61
62 $donated_amount = 0;
63
64 if ( empty( $args['donor'] ) ) {
65 return $donated_amount;
66 }
67
68 $args['output'] = 'posts';
69 $args['status'] = 'publish';
70 $args['fields'] = 'ids';
71 $args['number'] = - 1;
72
73 $donation_query = new Give_Payments_Query( $args );
74 $donations = $donation_query->get_payments();
75 $donation_id_str = implode( '\',\'', $donations );
76
77 $query = "SELECT {$donation_id_col} as id, meta_value as total
78 FROM {$wpdb->donationmeta}
79 WHERE meta_key='_give_payment_total'
80 AND {$donation_id_col} IN ('{$donation_id_str}')";
81
82 $donated_amounts = $wpdb->get_results( $query, ARRAY_A );
83
84 if ( ! empty( $donated_amounts ) ) {
85 foreach ( $donated_amounts as $donation ) {
86 // Do not include anonymous donation in calculation.
87 if ( give_is_anonymous_donation( $donation['id'] ) ) {
88 continue;
89 }
90
91 $currency_code = give_get_payment_currency_code( $donation['id'] );
92
93 /**
94 * Filter the donation amount
95 * Note: this filter documented in payments/functions.php:give_donation_amount()
96 *
97 * @since 2.1
98 */
99 $formatted_amount = apply_filters(
100 'give_donation_amount',
101 give_format_amount( $donation['total'], array( 'currency' => $currency_code ) ),
102 $donation['total'],
103 $donation['id'],
104 array(
105 'type' => 'stats',
106 'currency' => false,
107 'amount' => false,
108 )
109 );
110
111 $donated_amount += (float) give_maybe_sanitize_amount( $formatted_amount, array( 'currency' => $currency_code ) );
112 }
113 }
114
115 return $donated_amount;
116 }
117 }
118