PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.15.3
GiveWP – Donation Plugin and Fundraising Platform v4.15.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 / Subscriptions / SubscriptionQuery.php
give / src / Subscriptions Last commit date
Actions 7 months ago DataTransferObjects 8 months ago Endpoints 5 months ago Factories 8 months ago LegacyListeners 3 years ago ListTable 7 months ago Migrations 8 months ago Models 8 months ago Repositories 8 months ago ValueObjects 8 months ago ViewModels 5 months ago resources 7 months ago ServiceProvider.php 5 months ago SubscriptionQuery.php 9 months ago SubscriptionsAdminPage.php 9 months ago
SubscriptionQuery.php
188 lines
1 <?php
2
3 namespace Give\Subscriptions;
4
5 use Give\Donations\ValueObjects\DonationMetaKeys;
6 use Give\Donors\ValueObjects\DonorMetaKeys;
7 use Give\Framework\Models\ModelQueryBuilder;
8 use Give\Framework\QueryBuilder\JoinQueryBuilder;
9 use Give\Subscriptions\Models\Subscription;
10
11 /**
12 * @since 4.8.0
13 */
14 class SubscriptionQuery
15 {
16 /**
17 * @var ModelQueryBuilder<Subscription>
18 */
19 protected $query;
20
21 /**
22 * @since 4.8.0
23 */
24 public function __construct()
25 {
26 $this->query = Subscription::query();
27 }
28
29 /**
30 * Clone the query with all current conditions applied
31 *
32 * @since 4.8.0
33 */
34 public function clone(): self
35 {
36 $cloned = new self();
37
38 // Copy the internal query state by cloning the ModelQueryBuilder
39 $cloned->query = clone $this->query;
40
41 return $cloned;
42 }
43
44 /**
45 * Delegates methods not defined locally to the underlying query.
46 *
47 * @since 4.8.0
48 *
49 * @return mixed
50 */
51 public function __call(string $method, array $args)
52 {
53 if (method_exists($this, $method)) {
54 return $this->$method(...$args);
55 }
56
57 return $this->query->$method(...$args);
58 }
59
60 /**
61 * @since 4.8.0
62 */
63 public function selectDonorNames(): self
64 {
65 $this->query->attachMeta(
66 'give_donormeta',
67 'customer_id',
68 'donor_id',
69 [DonorMetaKeys::FIRST_NAME, 'firstName'],
70 [DonorMetaKeys::LAST_NAME, 'lastName']
71 );
72
73 return $this;
74 }
75
76 /**
77 * @since 4.8.0
78 */
79 public function whereCampaignId(int $campaignId): self
80 {
81 $this->query->join(function (JoinQueryBuilder $builder) use ($campaignId) {
82 $builder->innerJoin('give_donationmeta', 'donationMetaCampaignId')
83 ->on('donationMetaCampaignId.meta_key', DonationMetaKeys::CAMPAIGN_ID, true)
84 ->andOn('donationMetaCampaignId.meta_value', $campaignId, true)
85 ->andOn('donationMetaCampaignId.donation_id', 'parent_payment_id');
86 });
87
88 return $this;
89 }
90
91 /**
92 * @since 4.8.0
93 */
94 public function excludeAnonymousDonors(): self
95 {
96 $this->query->join(function (JoinQueryBuilder $builder) {
97 $builder->innerJoin('give_donationmeta', 'donationMetaAnonymous')
98 ->on('donationMetaAnonymous.meta_key', DonationMetaKeys::ANONYMOUS, true)
99 ->andOn('donationMetaAnonymous.meta_value', '0')
100 ->andOn('donationMetaAnonymous.donation_id', 'parent_payment_id');
101 });
102
103 return $this;
104 }
105
106 /**
107 * @since 4.8.0
108 */
109 public function whereDonorId(int $donorId): self
110 {
111 $this->query->where('customer_id', $donorId);
112
113 return $this;
114 }
115
116 /**
117 * @since 4.8.0
118 */
119 public function whereMode(string $mode): self
120 {
121 $this->query->where('payment_mode', $mode);
122
123 return $this;
124 }
125
126 /**
127 * @since 4.8.0
128 *
129 * @param $status string|array
130 */
131 public function whereStatus($status): self
132 {
133 if (is_array($status)) {
134 $this->query->whereIn('status', $status);
135 } else {
136 $this->query->where('status', $status);
137 }
138
139 return $this;
140 }
141
142 /**
143 * @since 4.8.0
144 */
145 public function limit(int $limit): self
146 {
147 $this->query->limit($limit);
148
149 return $this;
150 }
151
152 /**
153 * @since 4.8.0
154 */
155 public function offset(int $offset): self
156 {
157 $this->query->offset($offset);
158
159 return $this;
160 }
161
162 /**
163 * @since 4.8.0
164 */
165 public function orderBy(string $column, string $direction = 'ASC'): self
166 {
167 $this->query->orderBy($column, $direction);
168
169 return $this;
170 }
171
172 /**
173 * @since 4.8.0
174 */
175 public function getAll(): array
176 {
177 return $this->query->getAll() ?? [];
178 }
179
180 /**
181 * @since 4.8.0
182 */
183 public function count(): int
184 {
185 return $this->query->count();
186 }
187 }
188