Server IP : 192.158.238.246 / Your IP : 18.118.217.142 Web Server : LiteSpeed System : Linux uniform.iwebfusion.net 4.18.0-553.27.1.lve.1.el8.x86_64 #1 SMP Wed Nov 20 15:58:00 UTC 2024 x86_64 User : jenniferflocom ( 1321) PHP Version : 8.1.32 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /proc/7779/cwd/plugins/give/src/Donors/CustomFields/Controllers/ |
Upload File : |
<?php namespace Give\Donors\CustomFields\Controllers; use Give\DonationForms\Models\DonationForm; use Give\DonationForms\Repositories\DonationFormRepository; use Give\Donations\Models\Donation; use Give\Donors\CustomFields\Views\DonorDetailsView; use Give\Donors\Models\Donor; use function array_reduce; /** * TODO: move into donors domain * @since 3.0.0 */ class DonorDetailsController { /** * @since 3.0.0 */ public function show(Donor $donor): string { $forms = $this->getUniqueDonationFormsForDonor($donor); if (!$forms) { return ''; } $fields = array_reduce($forms, function ($fields, DonationForm $form) { return $fields + $this->getDisplayedDonorMetaFieldsForForm($form); }, []); return (new DonorDetailsView($donor, $fields))->render(); } /** * @since 3.2.2 added array fallback when no donations are found * @since 3.0.0 * * @param Donor $donor * * @return DonationForm[] */ protected function getUniqueDonationFormsForDonor(Donor $donor): array { $formIds = array_map(static function (Donation $donation) { return $donation->formId; }, $donor->donations()->getAll() ?? []); $formIds = array_filter($formIds, static function ($formId) { return !give(DonationFormRepository::class)->isLegacyForm($formId); }); return array_map(static function ($formId) { return DonationForm::find($formId); }, array_unique($formIds)); } /** * @since 3.0.0 * * @param DonationForm $form * * @return array */ protected function getDisplayedDonorMetaFieldsForForm(DonationForm $form): array { return array_filter($form->schema()->getFields(), static function ($field) { return $field->shouldShowInAdmin() && $field->shouldStoreAsDonorMeta(); }); } }