PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.3.2
GiveWP – Donation Plugin and Fundraising Platform v4.3.2
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 2 years ago Controllers 1 year ago CustomFields 1 year ago DataTransferObjects 2 years ago Endpoints 1 year ago Exceptions 2 years ago Factories 2 years ago ListTable 1 year ago Migrations 1 year ago Models 2 years ago Repositories 1 year ago ValueObjects 1 year ago resources 1 year ago DonorsAdminPage.php 1 year ago ServiceProvider.php 2 years ago
ServiceProvider.php
108 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\SendDonorUserRegistrationNotification;
8 use Give\Donors\Actions\UpdateAdminDonorDetails;
9 use Give\Donors\CustomFields\Controllers\DonorDetailsController;
10 use Give\Donors\Exceptions\FailedDonorUserCreationException;
11 use Give\Donors\ListTable\DonorsListTable;
12 use Give\Donors\Migrations\AddPhoneColumn;
13 use Give\Donors\Models\Donor;
14 use Give\Donors\Repositories\DonorRepositoryProxy;
15 use Give\Framework\Migrations\MigrationsRegister;
16 use Give\Helpers\Hooks;
17 use Give\Log\Log;
18 use Give\ServiceProviders\ServiceProvider as ServiceProviderInterface;
19 use Give_Donor as LegacyDonor;
20
21 /**
22 * @since 2.19.6
23 */
24 class ServiceProvider implements ServiceProviderInterface
25 {
26
27 /**
28 * @inheritDoc
29 */
30 public function register()
31 {
32 give()->singleton('donors', DonorRepositoryProxy::class);
33 give()->singleton(DonorsListTable::class, function () {
34 $listTable = new DonorsListTable();
35 Hooks::doAction('givewp_donors_list_table', $listTable);
36
37 return $listTable;
38 });
39 }
40
41 /**
42 * @inheritDoc
43 *
44 * @since 3.7.0 Register "AddPhoneColumn" migration and add the "give_admin_donor_details_updating" action
45 */
46 public function boot()
47 {
48 $userId = get_current_user_id();
49 $showLegacy = get_user_meta($userId, '_give_donors_archive_show_legacy', true);
50 // only register new admin page if user hasn't chosen to use the old one
51 if (empty($showLegacy)) {
52 Hooks::addAction('admin_menu', DonorsAdminPage::class, 'registerMenuItem', 30);
53
54 if (DonorsAdminPage::isShowing()) {
55 Hooks::addAction('admin_enqueue_scripts', DonorsAdminPage::class, 'loadScripts');
56 }
57 } elseif (DonorsAdminPage::isShowing()) {
58 Hooks::addAction('admin_head', DonorsAdminPage::class, 'renderReactSwitch');
59 }
60
61 $this->addCustomFieldsToDonorDetails();
62 $this->enforceDonorsAsUsers();
63
64 give(MigrationsRegister::class)->addMigrations([
65 AddPhoneColumn::class,
66 ]);
67
68 Hooks::addAction('give_admin_donor_details_updating', UpdateAdminDonorDetails::class, '__invoke', 10, 2);
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