PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.9.0
GiveWP – Donation Plugin and Fundraising Platform v4.9.0
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 / Campaigns / CampaignSubscriptionQuery.php
give / src / Campaigns Last commit date
Actions 9 months ago Blocks 9 months ago Controllers 9 months ago DataTransferObjects 1 year ago Factories 1 year ago ListTable 1 year ago Migrations 9 months ago Models 1 year ago Repositories 9 months ago Shortcodes 10 months ago ValueObjects 1 year ago ViewModels 1 year ago resources 9 months ago CampaignDonationQuery.php 11 months ago CampaignSubscriptionQuery.php 1 year ago CampaignsAdminPage.php 1 year ago CampaignsDataQuery.php 11 months ago ServiceProvider.php 9 months ago
CampaignSubscriptionQuery.php
110 lines
1 <?php
2
3 namespace Give\Campaigns;
4
5 use DateTimeInterface;
6 use Give\Campaigns\Models\Campaign;
7 use Give\Donations\ValueObjects\DonationMetaKeys;
8 use Give\Framework\QueryBuilder\JoinQueryBuilder;
9 use Give\Framework\QueryBuilder\QueryBuilder;
10
11 /**
12 * @since 4.0.0
13 */
14 class CampaignSubscriptionQuery extends QueryBuilder
15 {
16 /**
17 * @since 4.0.0
18 */
19 public function __construct(Campaign $campaign)
20 {
21 $this->from('give_subscriptions', 'subscription');
22
23 // Include only current payment "mode"
24 $this->where('payment_mode', give_is_test_mode() ? 'test' : 'live');
25
26 // Include only valid statuses
27 $this->joinDonation('donation');
28 $this->whereIn('donation.post_status', ['publish', 'give_subscription']);
29
30 // Include only forms associated with the Campaign.
31 $this->joinDonationMeta(DonationMetaKeys::CAMPAIGN_ID, 'campaignId');
32 $this->where('campaignId.meta_value', $campaign->id);
33
34 }
35
36 /**
37 * @since 4.0.0
38 */
39 public function between(DateTimeInterface $startDate, DateTimeInterface $endDate): self
40 {
41 $query = clone $this;
42 $query->whereBetween(
43 'created',
44 $startDate->format('Y-m-d H:i:s'),
45 $endDate->format('Y-m-d H:i:s')
46 );
47 return $query;
48 }
49
50 /**
51 * Returns a calculated sum of the intended amounts (without recovered fees) for the donations.
52 *
53 * @since 4.0.0
54 *
55 * @return int|float
56 */
57 public function sumInitialAmount()
58 {
59 return (clone $this)->sum('initial_amount');
60 }
61
62 /**
63 * @since 4.0.0
64 */
65 public function countDonations(): int
66 {
67 return (clone $this)->count('donation.ID');
68 }
69
70 /**
71 * @since 4.0.0
72 */
73 public function countDonors(): int
74 {
75 $query = clone $this;
76 $query->joinDonationMeta(DonationMetaKeys::DONOR_ID, 'donorId');
77 return $query->count('DISTINCT donorId.meta_value');
78 }
79
80 /**
81 * @since 4.0.0
82 */
83 public function joinDonation($alias): self
84 {
85 $this->join(function (JoinQueryBuilder $builder) use ($alias) {
86 $builder
87 ->leftJoin('posts', $alias)
88 ->on('subscription.parent_payment_id', $alias . '.ID');
89 });
90 $this->where($alias . '.post_type', 'give_payment');
91
92 return $this;
93 }
94
95 /**
96 * An opinionated join method for the donation meta table.
97 * @since 4.0.0
98 */
99 public function joinDonationMeta($key, $alias): self
100 {
101 $this->join(function (JoinQueryBuilder $builder) use ($key, $alias) {
102 $builder
103 ->leftJoin('give_donationmeta', $alias)
104 ->on('subscription.parent_payment_id', $alias . '.donation_id')
105 ->andOn($alias . '.meta_key', $key, true);
106 });
107 return $this;
108 }
109 }
110