PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.19.4
GiveWP – Donation Plugin and Fundraising Platform v3.19.4
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 / Donors / CustomFields / Controllers / DonorDetailsController.php
give / src / Donors / CustomFields / Controllers Last commit date
DonorDetailsController.php 2 years ago
DonorDetailsController.php
74 lines
1 <?php
2
3 namespace Give\Donors\CustomFields\Controllers;
4
5 use Give\DonationForms\Models\DonationForm;
6 use Give\DonationForms\Repositories\DonationFormRepository;
7 use Give\Donations\Models\Donation;
8 use Give\Donors\CustomFields\Views\DonorDetailsView;
9 use Give\Donors\Models\Donor;
10
11 use function array_reduce;
12
13 /**
14 * TODO: move into donors domain
15 * @since 3.0.0
16 */
17 class DonorDetailsController
18 {
19 /**
20 * @since 3.0.0
21 */
22 public function show(Donor $donor): string
23 {
24 $forms = $this->getUniqueDonationFormsForDonor($donor);
25
26 if (!$forms) {
27 return '';
28 }
29
30 $fields = array_reduce($forms, function ($fields, DonationForm $form) {
31 return $fields + $this->getDisplayedDonorMetaFieldsForForm($form);
32 }, []);
33
34 return (new DonorDetailsView($donor, $fields))->render();
35 }
36
37 /**
38 * @since 3.2.2 added array fallback when no donations are found
39 * @since 3.0.0
40 *
41 * @param Donor $donor
42 *
43 * @return DonationForm[]
44 */
45 protected function getUniqueDonationFormsForDonor(Donor $donor): array
46 {
47 $formIds = array_map(static function (Donation $donation) {
48 return $donation->formId;
49 }, $donor->donations()->getAll() ?? []);
50
51 $formIds = array_filter($formIds, static function ($formId) {
52 return !give(DonationFormRepository::class)->isLegacyForm($formId);
53 });
54
55 return array_map(static function ($formId) {
56 return DonationForm::find($formId);
57 }, array_unique($formIds));
58 }
59
60 /**
61 * @since 3.0.0
62 *
63 * @param DonationForm $form
64 *
65 * @return array
66 */
67 protected function getDisplayedDonorMetaFieldsForForm(DonationForm $form): array
68 {
69 return array_filter($form->schema()->getFields(), static function ($field) {
70 return $field->shouldShowInAdmin() && $field->shouldStoreAsDonorMeta();
71 });
72 }
73 }
74