PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.16.3
GiveWP – Donation Plugin and Fundraising Platform v4.16.3
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 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 / build / Campaigns / Blocks / CampaignDonors / render.php
give / build / Campaigns / Blocks / CampaignDonors Last commit date
block.json 1 year ago render.php 5 months ago
render.php
74 lines
1 <?php
2
3 namespace Give\Campaigns\Blocks\CampaignDonors;
4
5 use Give\Campaigns\CampaignDonationQuery;
6 use Give\Campaigns\Models\Campaign;
7 use Give\Campaigns\Repositories\CampaignRepository;
8 use Give\Donations\ValueObjects\DonationMetaKeys;
9 use Give\Donors\ValueObjects\DonorMetaKeys;
10
11 /**
12 * @since 4.2.0 remove SQL casting
13 * @since 4.0.0
14 *
15 * @var array $attributes
16 */
17
18 if ( ! isset($attributes['campaignId'])) {
19 return;
20 }
21
22 /** @var Campaign $campaign */
23 $campaign = give(CampaignRepository::class)->getById($attributes['campaignId']);
24
25 if ( ! $campaign) {
26 return;
27 }
28
29 $sortBy = $attributes['sortBy'] ?? 'top-donors';
30 $query = (new CampaignDonationQuery($campaign))
31 ->joinDonationMeta(DonationMetaKeys::DONOR_ID, 'donorIdMeta')
32 ->joinDonationMeta(DonationMetaKeys::AMOUNT, 'amountMeta')
33 ->joinDonationMeta(DonationMetaKeys::FEE_AMOUNT_RECOVERED, 'feeAmountRecovered')
34 ->joinDonationMeta(DonationMetaKeys::FIRST_NAME, 'donorName')
35 ->joinDonationMeta(DonationMetaKeys::ANONYMOUS, 'anonymousMeta')
36 ->leftJoin('give_donors', 'donorIdMeta.meta_value', 'donors.id', 'donors')
37 ->leftJoin('give_donormeta', 'donorIdMeta.meta_value', 'donorMeta.donor_id', 'donorMeta')
38 ->limit($attributes['donorsPerPage'] ?? 5);
39
40 if ($sortBy === 'top-donors') {
41 $query->select(
42 'donorIdMeta.meta_value as id',
43 'SUM(amountMeta.meta_value - IFNULL(feeAmountRecovered.meta_value, 0)) AS amount',
44 'MAX(donorName.meta_value) AS name',
45 'anonymousMeta.meta_value as isAnonymous',
46 'donors.email as email',
47 'donorMeta.meta_value as avatarId'
48 )
49 ->where('donorMeta.meta_key', DonorMetaKeys::AVATAR_ID)
50 ->groupBy('donorIdMeta.meta_value')
51 ->orderBy('amount', 'DESC');
52 } else {
53 $query->joinDonationMeta(DonationMetaKeys::COMPANY, 'companyMeta')
54 ->select(
55 'donation.ID as donationID',
56 'donorIdMeta.meta_value as id',
57 'companyMeta.meta_value as company',
58 'donation.post_date as date',
59 'amountMeta.meta_value - IFNULL(feeAmountRecovered.meta_value, 0) as amount',
60 'donorName.meta_value as name',
61 'anonymousMeta.meta_value as isAnonymous',
62 'donors.email as email',
63 'donorMeta.meta_value as avatarId'
64 )
65 ->where('donorMeta.meta_key', DonorMetaKeys::AVATAR_ID)
66 ->orderBy('donation.ID', 'DESC');
67 }
68
69 if ( ! $attributes['showAnonymous']) {
70 $query->where('anonymousMeta.meta_value', '1', '!=');
71 }
72
73 (new CampaignDonorsBlockViewModel($campaign, $query->getAll(), $attributes))->render();
74