PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.13.2
GiveWP – Donation Plugin and Fundraising Platform v4.13.2
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 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 / ServiceProvider.php
give / src / Donors Last commit date
Actions 9 months ago CustomFields 1 year ago DataTransferObjects 1 year ago Endpoints 10 months ago Exceptions 2 years ago Factories 1 year ago ListTable 9 months ago Migrations 1 year ago Models 1 year ago Repositories 10 months ago ValueObjects 11 months ago ViewModels 11 months ago resources 9 months ago DonorStatisticsQuery.php 11 months ago DonorsAdminPage.php 9 months ago DonorsQuery.php 11 months ago ServiceProvider.php 9 months ago
ServiceProvider.php
121 lines
1 <?php
2
3 namespace Give\Donors;
4
5 use Give\DonationForms\Models\DonationForm;
6 use Give\Donors\Actions\CreateUserFromDonor;
7 use Give\Donors\Actions\LoadDonorAdminOptions;
8 use Give\Donors\Actions\SendDonorUserRegistrationNotification;
9 use Give\Donors\Actions\UpdateAdminDonorDetails;
10 use Give\Donors\CustomFields\Controllers\DonorDetailsController;
11 use Give\Donors\Exceptions\FailedDonorUserCreationException;
12 use Give\Donors\ListTable\DonorsListTable;
13 use Give\Donors\Migrations\AddPhoneColumn;
14 use Give\Donors\Models\Donor;
15 use Give\Donors\Repositories\DonorNotesRepository;
16 use Give\Donors\Repositories\DonorRepositoryProxy;
17 use Give\Framework\Migrations\MigrationsRegister;
18 use Give\Helpers\Hooks;
19 use Give\Log\Log;
20 use Give\ServiceProviders\ServiceProvider as ServiceProviderInterface;
21 use Give_Donor as LegacyDonor;
22
23 /**
24 * @since 2.19.6
25 */
26 class ServiceProvider implements ServiceProviderInterface
27 {
28 /**
29 * @inheritDoc
30 */
31 public function register()
32 {
33 give()->singleton('donors', DonorRepositoryProxy::class);
34 give()->singleton('donorNotes', DonorNotesRepository::class);
35 give()->singleton(DonorsListTable::class, function () {
36 $listTable = new DonorsListTable();
37 Hooks::doAction('givewp_donors_list_table', $listTable);
38
39 return $listTable;
40 });
41 }
42
43 /**
44 * @inheritDoc
45 *
46 * @since 3.7.0 Register "AddPhoneColumn" migration and add the "give_admin_donor_details_updating" action
47 */
48 public function boot()
49 {
50 $userId = get_current_user_id();
51 $showLegacy = DonorsAdminPage::isShowingNewDetailsPage() ? false : get_user_meta($userId, '_give_donors_archive_show_legacy', true);
52 // only register new admin page if user hasn't chosen to use the old one or is trying to access the new donor details page
53 if (empty($showLegacy)) {
54 Hooks::addAction('admin_menu', DonorsAdminPage::class, 'registerMenuItem', 30);
55 } elseif (DonorsAdminPage::isShowing()) {
56 Hooks::addAction('admin_head', DonorsAdminPage::class, 'renderReactSwitch');
57 }
58
59 $this->addCustomFieldsToDonorDetails();
60 $this->enforceDonorsAsUsers();
61
62 give(MigrationsRegister::class)->addMigrations([
63 AddPhoneColumn::class,
64 ]);
65
66 Hooks::addAction('give_admin_donor_details_updating', UpdateAdminDonorDetails::class, '__invoke', 10, 2);
67
68 $this->loadDonorAdminOptions();
69 }
70
71 /**
72 * @since 3.0.0
73 */
74 private function addCustomFieldsToDonorDetails()
75 {
76 add_action('give_donor_after_tables', static function (LegacyDonor $legacyDonor) {
77 /** @var Donor $donor */
78 $donor = Donor::find($legacyDonor->id);
79
80 echo (new DonorDetailsController())->show($donor);
81 });
82 }
83
84 /**
85 * Hook into the donor creation process to ensure that donors are also users.
86 * @since 3.2.0
87 */
88 protected function enforceDonorsAsUsers()
89 {
90 add_action('givewp_donate_controller_donor_created', function (Donor $donor, $formId) {
91 if (!$donor->userId) {
92 try {
93 give(CreateUserFromDonor::class)->__invoke($donor);
94
95 if (DonationForm::find($formId)->settings->registrationNotification) {
96 give(SendDonorUserRegistrationNotification::class)->__invoke($donor);
97 }
98 } catch (FailedDonorUserCreationException $e) {
99 Log::error($e->getLogMessage(), [
100 'donor' => $donor,
101 'previous' => $e->getPrevious(),
102 ]);
103 }
104 }
105 }, 10, 2);
106 }
107
108 /**
109 * @since 4.6.1 Move to admin_enqueue_scripts hook
110 * @since 4.4.0
111 */
112 private function loadDonorAdminOptions()
113 {
114 add_action('admin_enqueue_scripts', function () {
115 if (DonorsAdminPage::isShowingDetailsPage()) {
116 give(LoadDonorAdminOptions::class)();
117 }
118 });
119 }
120 }
121