PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.4.0
GiveWP – Donation Plugin and Fundraising Platform v4.4.0
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 1 year ago CustomFields 1 year ago DataTransferObjects 1 year ago Endpoints 1 year ago Exceptions 2 years ago Factories 1 year ago ListTable 1 year ago Migrations 1 year ago Models 1 year ago Repositories 1 year ago ValueObjects 1 year ago ViewModels 1 year ago resources 1 year ago DonorStatisticsQuery.php 1 year ago DonorsAdminPage.php 1 year ago DonorsQuery.php 1 year ago ServiceProvider.php 1 year ago
ServiceProvider.php
126 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\LoadDonorOptions;
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 /**
30 * @inheritDoc
31 */
32 public function register()
33 {
34 give()->singleton('donors', DonorRepositoryProxy::class);
35 give()->singleton('donorNotes', DonorNotesRepository::class);
36 give()->singleton(DonorsListTable::class, function () {
37 $listTable = new DonorsListTable();
38 Hooks::doAction('givewp_donors_list_table', $listTable);
39
40 return $listTable;
41 });
42 }
43
44 /**
45 * @inheritDoc
46 *
47 * @since 3.7.0 Register "AddPhoneColumn" migration and add the "give_admin_donor_details_updating" action
48 */
49 public function boot()
50 {
51 $userId = get_current_user_id();
52 $showLegacy = get_user_meta($userId, '_give_donors_archive_show_legacy', true);
53 // only register new admin page if user hasn't chosen to use the old one
54 if (empty($showLegacy)) {
55 Hooks::addAction('admin_menu', DonorsAdminPage::class, 'registerMenuItem', 30);
56 } elseif (DonorsAdminPage::isShowing()) {
57 Hooks::addAction('admin_head', DonorsAdminPage::class, 'renderReactSwitch');
58 }
59
60 $this->addCustomFieldsToDonorDetails();
61 $this->enforceDonorsAsUsers();
62
63 give(MigrationsRegister::class)->addMigrations([
64 AddPhoneColumn::class,
65 ]);
66
67 Hooks::addAction('give_admin_donor_details_updating', UpdateAdminDonorDetails::class, '__invoke', 10, 2);
68
69 $this->registerDonorEntity();
70 $this->loadDonorOptions();
71 }
72
73 /**
74 * @since 3.0.0
75 */
76 private function addCustomFieldsToDonorDetails()
77 {
78 add_action('give_donor_after_tables', static function (LegacyDonor $legacyDonor) {
79 /** @var Donor $donor */
80 $donor = Donor::find($legacyDonor->id);
81
82 echo (new DonorDetailsController())->show($donor);
83 });
84 }
85
86 /**
87 * Hook into the donor creation process to ensure that donors are also users.
88 * @since 3.2.0
89 */
90 protected function enforceDonorsAsUsers()
91 {
92 add_action('givewp_donate_controller_donor_created', function (Donor $donor, $formId) {
93 if (!$donor->userId) {
94 try {
95 give(CreateUserFromDonor::class)->__invoke($donor);
96
97 if (DonationForm::find($formId)->settings->registrationNotification) {
98 give(SendDonorUserRegistrationNotification::class)->__invoke($donor);
99 }
100 } catch (FailedDonorUserCreationException $e) {
101 Log::error($e->getLogMessage(), [
102 'donor' => $donor,
103 'previous' => $e->getPrevious(),
104 ]);
105 }
106 }
107 }, 10, 2);
108 }
109
110 /**
111 * @since 4.4.0
112 */
113 private function registerDonorEntity()
114 {
115 Hooks::addAction('init', Actions\RegisterDonorEntity::class);
116 }
117
118 /**
119 * @since 4.4.0
120 */
121 private function loadDonorOptions()
122 {
123 Hooks::addAction('init', LoadDonorOptions::class);
124 }
125 }
126