PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.3.1
GiveWP – Donation Plugin and Fundraising Platform v4.3.1
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 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / DonationForms / DonationFormDataQuery.php
give / src / DonationForms Last commit date
Actions 1 year ago AsyncData 1 year ago Blocks 1 year ago Controllers 1 year ago DataTransferObjects 1 year ago Exceptions 1 year ago Factories 1 year ago FormDesigns 1 year ago FormPage 1 year ago Listeners 1 year ago Migrations 1 year ago Models 2 years ago OrphanedForms 1 year ago Properties 1 year ago Repositories 1 year ago Routes 1 year ago Rules 1 year ago Shortcodes 2 years ago V2 1 year ago ValueObjects 1 year ago ViewModels 1 year ago resources 1 year ago DonationFormDataQuery.php 1 year ago DonationFormsAdminPage.php 1 year ago DonationQuery.php 1 year ago ServiceProvider.php 1 year ago SubscriptionQuery.php 2 years ago
DonationFormDataQuery.php
127 lines
1 <?php
2
3 namespace Give\DonationForms;
4
5 use Give\Donations\ValueObjects\DonationMetaKeys;
6 use Give\Framework\QueryBuilder\JoinQueryBuilder;
7 use Give\Framework\QueryBuilder\QueryBuilder;
8
9 /**
10 * Class used for loading the number of donors, donations and revenue amounts for multiple forms
11 *
12 * @since 4.3.0
13 */
14 class DonationFormDataQuery extends QueryBuilder
15 {
16 /**
17 * @since 4.3.0
18 */
19 private function __construct()
20 {
21 $this->select(['formId.meta_value', 'form_id']);
22 $this->whereIn('donation.post_status', ['publish', 'give_subscription']);
23 $this->groupBy('form_id');
24 }
25
26
27 /**
28 * Donations query for campaigns
29 *
30 * @param int[] $formIds
31 */
32 public static function donations(array $formIds): DonationFormDataQuery
33 {
34 return (new self())
35 ->from('posts', 'donation')
36 ->where('post_type', 'give_payment')
37 ->joinDonationMeta(DonationMetaKeys::FORM_ID, 'formId')
38 ->joinDonationMeta(DonationMetaKeys::MODE, 'paymentMode')
39 ->whereIn('formId.meta_value', $formIds)
40 ->where('paymentMode.meta_value', give_is_test_mode() ? 'test' : 'live');
41 }
42
43 /**
44 * Subscriptions query for forms
45 *
46 * @since 4.3.0
47 *
48 * @param int[] $formIds
49 */
50 public static function subscriptions(array $formIds): DonationFormDataQuery
51 {
52 return (new self())
53 ->from('give_subscriptions', 'subscription')
54 ->join(function (JoinQueryBuilder $builder) {
55 $builder
56 ->leftJoin('posts', 'donation')
57 ->on('subscription.parent_payment_id', 'donation.ID');
58 })
59 ->joinDonationMeta(DonationMetaKeys::FORM_ID, 'formId')
60 ->whereIn('formId.meta_value', $formIds)
61 ->where('payment_mode', give_is_test_mode() ? 'test' : 'live')
62 ->where('donation.post_type', 'give_payment');
63 }
64
65 /**
66 * Returns a calculated sum of the intended amounts (without recovered fees) for the donations.
67 *
68 * @since 4.3.0
69 */
70 public function collectIntendedAmounts(): ?array
71 {
72 return (clone $this)
73 ->select('SUM(IFNULL(amount.meta_value, 0) - IFNULL(feeAmountRecovered.meta_value, 0)) as sum')
74 ->joinDonationMeta(DonationMetaKeys::AMOUNT, 'amount')
75 ->joinDonationMeta(DonationMetaKeys::FEE_AMOUNT_RECOVERED, 'feeAmountRecovered')
76 ->getAll(ARRAY_A);
77 }
78
79 /**
80 * Returns a calculated sum of the initial amounts
81 *
82 * @since 4.3.0
83 */
84 public function collectInitialAmounts(): ?array
85 {
86 return (clone $this)
87 ->select('SUM(initial_amount) as sum')
88 ->getAll(ARRAY_A);
89 }
90
91 /**
92 * @since 4.3.0
93 */
94 public function collectDonations(): ?array
95 {
96 return (clone $this)
97 ->select('COUNT(donation.ID) as count')
98 ->getAll(ARRAY_A);
99 }
100
101 /**
102 * @since 4.3.0
103 */
104 public function collectDonors(): ?array
105 {
106 return (clone $this)
107 ->select('COUNT(DISTINCT donorId.meta_value) as count')
108 ->joinDonationMeta(DonationMetaKeys::DONOR_ID, 'donorId')
109 ->getAll(ARRAY_A);
110 }
111
112 /**
113 * @since 4.3.0
114 */
115 private function joinDonationMeta($key, $alias): self
116 {
117 $this->join(function (JoinQueryBuilder $builder) use ($key, $alias) {
118 $builder
119 ->leftJoin('give_donationmeta', $alias)
120 ->on('donation.ID', $alias . '.donation_id')
121 ->andOn($alias . '.meta_key', $key, true);
122 });
123
124 return $this;
125 }
126 }
127