PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / trunk
GiveWP – Donation Plugin and Fundraising Platform vtrunk
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 / src / Donors / CustomFields / Controllers / DonorDetailsController.php
give / src / Donors / CustomFields / Controllers Last commit date
DonorDetailsController.php 1 year ago
DonorDetailsController.php
75 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 4.0.0 return array_filter to reduce null values
39 * @since 3.2.2 added array fallback when no donations are found
40 * @since 3.0.0
41 *
42 * @param Donor $donor
43 *
44 * @return DonationForm[]
45 */
46 protected function getUniqueDonationFormsForDonor(Donor $donor): array
47 {
48 $formIds = array_map(static function (Donation $donation) {
49 return $donation->formId;
50 }, $donor->donations()->getAll() ?? []);
51
52 $formIds = array_filter($formIds, static function ($formId) {
53 return !give(DonationFormRepository::class)->isLegacyForm($formId);
54 });
55
56 return array_filter(array_map(static function ($formId) {
57 return DonationForm::find($formId);
58 }, array_unique($formIds)));
59 }
60
61 /**
62 * @since 3.0.0
63 *
64 * @param DonationForm $form
65 *
66 * @return array
67 */
68 protected function getDisplayedDonorMetaFieldsForForm(DonationForm $form): array
69 {
70 return array_filter($form->schema()->getFields(), static function ($field) {
71 return $field->shouldShowInAdmin() && $field->shouldStoreAsDonorMeta();
72 });
73 }
74 }
75