PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.0.4
GiveWP – Donation Plugin and Fundraising Platform v3.0.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
73 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.0.0
39 *
40 * @param Donor $donor
41 *
42 * @return DonationForm[]
43 */
44 protected function getUniqueDonationFormsForDonor(Donor $donor): array
45 {
46 $formIds = array_map(static function (Donation $donation) {
47 return $donation->formId;
48 }, $donor->donations);
49
50 $formIds = array_filter($formIds, static function ($formId) {
51 return !give(DonationFormRepository::class)->isLegacyForm($formId);
52 });
53
54 return array_map(static function ($formId) {
55 return DonationForm::find($formId);
56 }, array_unique($formIds));
57 }
58
59 /**
60 * @since 3.0.0
61 *
62 * @param DonationForm $form
63 *
64 * @return array
65 */
66 protected function getDisplayedDonorMetaFieldsForForm(DonationForm $form): array
67 {
68 return array_filter($form->schema()->getFields(), static function ($field) {
69 return $field->shouldShowInAdmin() && $field->shouldStoreAsDonorMeta();
70 });
71 }
72 }
73