PluginProbe
GiveWP – Donation Plugin and Fundraising Platform / 4.16.9
GiveWP – Donation Plugin and Fundraising Platform v4.16.9
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 2.3.2 2.30.0 All 255 releases
give / src / Campaigns / Blocks / CampaignDonors / render.php

render.php in GiveWP – Donation Plugin and Fundraising Platform 4.16.9, at src/Campaigns/Blocks/CampaignDonors/render.php

74 lines 2.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
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